购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
本技术资料转至互联网:头文件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,第一个函数查询工作图层,后面两个则分别是查询和设置给定的图层状态。
下面的测试代码用于查询工作图层,并将下一个图层作为工作图层:

●●●请先
登陆 或
注册 后查看●●●
另外一个比较有意思的函数是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中的所有对象:

●●●请先
登陆 或
注册 后查看●●●
运行效果如下:
与图层分类中三要素相对应地,图层分类相关的编辑函数有三个,即对名称、图层和描述的编辑,函数分别为
UF_LAYER_edit_category_name、
UF_LAYER_edit_category_layer和
UF_LAYER_edit_category_descr,这里就不展开细说。
图层分类的查询函数有两个,
UF_LAYER_ask_category_tag和
UF_LAYER_ask_category_info,前者根据图层分类名称查询其图层分类标识,后者则是根据图层分类标识,去填充与之相关的UF_LAYER_category_info_t类型。
最后需要提到的是,
以前与图层分类操作的三个函数是uc5007(被UF_LAYER_create_category取代),uc5008(被UF_LAYER_ask_category_info取代),以及uc5009(被UF_LAYER_edit_category_layer取代),不应该使用uc5007-5009这三个函数,而是采用新的函数。