- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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循环,因此在使用时应将统计数目设
您可能关注的文档
最近下载
- 完整八年级物理综合实践活动课教案.docx
- 高考英语一轮复习知识清单(全国通用):专题20 语法填空介词100题(精练)解析版.docx VIP
- 110kV〜750kV架空输电线路施工及验收规范.docx VIP
- 2021-2022年国家开放大学电大法学《实用法律基础》课程考试打印版完美打印版 英语网考资料.doc
- 奥迪A6电路图之发动机BAT.pdf
- 2023年4月自考02207电气传动与可编程控制器PLC试题及答案含解析.pdf
- 医院普外科课件.pptx
- 游戏策划方案-数值策划笔试题.docx VIP
- 高考英语一轮复习知识清单:专题08 语法填空不定式100题(全国通用)解析版.docx VIP
- drillwork2005操作手册.ppt
文档评论(0)