【NX二次开发】查找部件中的对象 UF_OBJ_cycle_objs_in_part
返回所有层上指定类型部件中的所有对象,不管它们的当前显示状态如何。
这个例程不返回表达式、指定对象、临时(系统创建的)对象或休眠对象。
休眠对象指的是从模型中删除的对象
例如,如果你混合了一条边,那么这条边就是休眠的。WCS将不会被返回,除非它已经被保存。
注意:当指定的类型为UF_feature_type时,这个例程循环部件中的特征。
在循环查找到的对象时,不要尝试删除对象。当前对象已被删除时,尝试读取下一个
对象时,可能会出现问题。
要删除对象,可以在循环时将对象保存到一个包含对象的数组,然后在完成循环后,
使用UF_OBJ_delete_array_of_objects删除保存的对象数组。
UF_OBJ_ask_display_properties函数可以获取对象所在层、获取对象颜色、获取对象是否隐
藏、获取对象是否高亮,获取对象线宽、字体大小
查找当前工作部件下,所有体 例子:
extern DllExport void ufusr(char *param, int *returnCode, int rlen) { UF_initialize(); vector<tag_t> vBodyTags; tag_t object_tag = NULL_TAG; UF_OBJ_cycle_objs_in_part(UF_ASSEM_ask_work_part(), UF_solid_type, &object_tag); while (object_tag != NULL_TAG) { vector<tag_t>::iterator it = find(vBodyTags.begin(), vBodyTags.end(), object_tag); if (it == vBodyTags.end()) { int objType = 0, objsubType = 0; UF_OBJ_ask_type_and_subtype(object_tag, &objType, &objsubType); if (objType == UF_solid_type && objsubType == UF_solid_body_subtype) { vBodyTags.push_back(object_tag); } } UF_OBJ_cycle_objs_in_part(UF_ASSEM_ask_work_part(), UF_solid_type, &object_tag); } for (int i = 0; i < vBodyTags.size(); i++) { //vBodyTags[i] } UF_terminate(); } extern int ufusr_ask_unload(void) { return (UF_UNLOAD_IMMEDIATELY); }