NXOpen图层操作.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NXOpen图层操作

NXOpen图层操作 头文件uf_layer.h中包含了操作图层的一系列函数,这些函数能够完成如下工作: 查询工作图层; 查询分类名称,分类成员图层,以及其描述; 查询图层状态; 遍历图层; 编辑分类描述; 编辑分类下的图层; 设置图层状态; 创建、查询、或者编辑图层分类。 1. 查询和设置图层状态 图层的状态 NX中最多有256个图层,头文件中的定义如下: #define UF_LAYER_MIN_LAYER (1) #define UF_LAYER_MAX_LAYER (256) 图层有四种状态:工作,活动,不活动和参考图层,对应的定义如下: #define UF_LAYER_WORK_LAYER 1 #define UF_LAYER_ACTIVE_LAYER 2 #define UF_LAYER_REFERENCE_LAYER 3 #define UF_LAYER_INACTIVE_LAYER 4 与图层状态相关的是一个结构体UF_LAYER_status_info_s,也被定义为UF_LAYER_status_info_t类型,定义如下: struct UF_LAYER_status_info_s { int layer_number; int layer_status; }; 其中layer_number是图层值,介于UF_LAYER_MIN_LAYER和UF_LAYER_MAX_LAYER之间,亦即1-256(可包括),layer_status就是图层状态,就是前面提到的四种之一。 相关的函数有UF_LAYER_ask_work_layer、UF_LAYER_ask_status和UF_LAYER_set_status,第一个函数查询工作图层,后面两个则分别是查询和设置给定的图层状态。 下面的测试代码用于查询工作图层,并将下一个图层作为工作图层: void AskAndSetWorkLayer() { int t; char msg[80]; UF_LAYER_ask_work_layer(t); sprintf_s(msg,Work Layer is: %d,t); uc1601(msg,1); t++; if(tUF_LAYER_MAX_LAYER) t=UF_LAYER_MIN_LAYER; UF_LAYER_set_status(t,UF_LAYER_WORK_LAYER); UF_LAYER_ask_work_layer(t); sprintf_s(msg,Work Layer is: %d,t); uc1601(msg,1); } 另外一个比较有意思的函数是UF_LAYER_set_all_but_work,也是用于设置状态的,但是是除去工作图层之后的其他图层。与设置状态相关的还有UF_LAYER_set_many_layers_status函数,这个比较复杂。 2. 遍历图层 使用函数UF_LAYER_cycle_by_layer遍历一个图层,这里遍历的意思指查询位于本图层下的所有对象,函数原型如下: int UF_LAYER_cycle_by_layer(int layer_number, tag_t * object_tag) 第一个参数提供待查询的图层号,值为0-256,这时肯定有人会问,图层号不是只有1-256之间吗?是的,这里多的0并不是指的图层,而是查询所有图层。而第二个参数则是所查询到的对象的标识,在使用的时候,必须传递给一个为NULL_TAG的标识,这样能让程序知道如何工作,在第一次调用该函数的时候,返回第一个查找到的对象的标识,然后下一次调用的时候则是查找下一个对象标识,等所有的对象都查询完毕,则该变量被设置为NULL_TAG,表明查询完毕。 注意:在查询循环中,切记不要试图删除对象,这会导致查询下一个对象时出错。 下面的测试代码阐明如何查询图层22中的所有对象。 void AskObjectsOnLayer22() { int t=-1; char msg[80]; tag_t tag_obj=NULL_TAG; do { UF_LAYER_cycle_by_layer(22,tag_obj); t++; } while (tag_obj!=NULL_TAG); sprintf_s(msg,Total Object(s) on Layer 22: %d,t); uc1601(msg,1); } 由于采用的是do…while循环,因此在使用时应将统计数目设

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档