UG二次开发:过滤器的设置-只能选择第二个体上的面

本文介绍了在UG的二次开发中如何设置UI过滤,以便在选择操作中只允许选取特定对象的面。通过提供一个简单的UI界面示例和过滤器函数代码,展示了如何限制选择到第二个体的面上,并处理不同情况下的接受与拒绝条件。
摘要由CSDN通过智能技术生成
 在UG的二次开发中我们经常需要设置UI的过滤,来达到快速选择的目的。下面就是针对在选择中只能选择到第二个体上的面.
 首先我做啦一个简单的UI界面,如下图:
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/906be9e5e12b4cfc88ce794b93235b91.jpeg#pic_center)

然后我们开始代码,下面为过滤器函数的内容:

int sectionfittler::filter_cb(NXOpen::BlockStyler::UIBlock* block, NXOpen::TaggedObject* selectObject) //过滤器函数
{
UF_initialize();
int errorCode = 0;
try
{
int accept=UF_UI_SEL_ACCEPT;
if (block == bodySelect01)
{
std::vector<TaggedObject*> firstboy=bodySelect0->GetSelectedObjects();

	if ( firstboy[0]->Tag()==selectObject->Tag())  
	{
		accept=UF_UI_SEL_REJECT;
	}
	else
	{
      accept=UF_UI_SEL_ACCEPT;
	}
	
		return accept;
		}		
if (block == face_select0)
{
	std::vector<TaggedObject*> firstboy=bodySelect0->GetSelectedObjects();
	uf_list_t *faceslsit = NULL;
	UF_MODL_create_list (&faceslsit);    //创建列表
	int facecount=0;
	int result=0;
	if (firstboy[0]->Tag()!=NULL)
	{
	UF_MODL_ask_body_faces(firstboy[0]->Tag(),&faceslsit);
	UF_MODL_ask_list_count(faceslsit,&facecount);

	for (int i = 0; i < facecount;i++)
	{
		tag_t facetag=NULL_TAG;
		UF_MODL_ask_list_item(faceslsit,i,&facetag);
		if (selectObject->Tag()==facetag)
		{
          result=0;
		  break;
		}
		else
		{
			result=1;
		}
	}
	UF_MODL_delete_list(&faceslsit);

	if (result==0)
	{
		accept=UF_UI_SEL_REJECT;

	}
	else
	{
      accept=UF_UI_SEL_ACCEPT;
	}

			}
		return accept;
	

}	
}
 catch(exception& ex)
{
    //---- Enter your exception handling code here -----
    errorCode = 1;
    sectionfittler::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}

}

这样就完成啦对过滤器的设置;由于当时只是测试用,没有写注释,望看官海涵,效果如下:

001

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值