NX二次开发体收集器——只选择实体或片体(1)

一、创作灵感

        在nx二次开发中我们经常会用到收集器,实现对对象的操作,下面结合UI界面实现对实体或者片体进行单独选择,然后分别对实体和片体进行染色,片体为绿色,实体为红色,这样做的的目的是实现对片体、实体的条件过滤;获取收集到的对象的TAG值,便于今后开发对相应对象的操作。

二、主要内容

1、整体思路

1.1过滤条件的设置

1)由于体收集器中的SetIncludeSheetBodies()成员函数无效,不能用来设置是否包括片体,只能通过其他方法进行实现;

2)找到过滤器程序部分,通过UF_MODL_ask_body_type()函数查询相应体的类型,判断是实体还是片体,其中UF_UI_SEL_ACCEPT为接受设置,UF_UI_SEL_REJECT为拒绝设置,通过判断body_type是否是UF_MODL_SOLID_BODY实体,还是UF_MODL_SHEET_BODY片体,进行过滤。

1.2实现对收集器收集到的对象进行操作

1)在NX二次开发中都需要对对象的TAG进行操作,因此有必要对UI体收集器收集到的对象进行遍历获得其TAG(bodys[i]->Tag());

2)一般的体收集器可以对一个或多个体或者片体进行收集,因此需要for循环进行遍历;

3)通过获取片体和实体的TAG,对实体和片体进行染色,片体为绿色,实体为红色(ufnu染色或者NXopen进行染色)。

2、代码部分

        //用户定义
        #include <uf.h>
        #include <uf_modl.h>
        #include <uf_obj.h>
        #include <uf_ui.h>
        #include <NXOpen/DisplayManager.hxx>
        #include <NXOpen/DisplayModification.hxx>
        #include <NXOpen/DisplayableObject.hxx>


		//获取实体
		PropertyList*  bodySelect0Props = bodySelect0->GetProperties();
		std::vector<NXOpen::TaggedObject *> bodys = bodySelect0Props->GetTaggedObjectVector("SelectedObjects");
		delete bodySelect0Props;
		bodySelect0Props = NULL;

		//获取片体
		PropertyList*  bodySelect01Props = bodySelect01->GetProperties();
		std::vector<NXOpen::TaggedObject *> sheets = bodySelect01Props->GetTaggedObjectVector("SelectedObjects");
		delete bodySelect01Props;
		bodySelect01Props = NULL;

		UF_initialize();

		UF_UI_open_listing_window();
		char msg[256];
		for (int i = 0; i < bodys.size(); i++)
		{
			tag_t bodyTAG = bodys[i]->Tag();
			sprintf(msg, "%d\n", bodyTAG);
			UF_UI_write_listing_window(msg);
			UF_OBJ_set_color(bodyTAG, 186);
		}
		char msg1[256];
		for (int i = 0; i < sheets.size(); i++)
		{
			tag_t sheetsTAG = sheets[i]->Tag();
			sprintf(msg1, "%d\n", sheetsTAG);
			UF_UI_write_listing_window(msg);
			UF_OBJ_set_color(sheetsTAG, 36);
		}

		UF_terminate();

运行结果如下图所示:

总结

        在1.2实现对收集器收集到的对象进行操作小节可以用通过获取片体和实体的TAG,对实体和片体进行染色,片体为绿色,实体为红色(ufnu染色),但目前为止NXopen进行染色部分还不会有会的兄弟欢迎下方评论)。

  • 17
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雪公主的后妈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值