首页 > 其他 > 详细

【NX二次开发】按层查找工作部件中的对象 UF_LAYER_cycle_by_layer

时间:2020-12-11 09:23:00      阅读:40      评论:0      收藏:0      [点我收藏+]

第一次调用 :返回第一个启用层中的第一个对象。 
第二次调用 :返回下一个已启用层中的下一个对象。 
最后一次调用:当所有对象都被耗尽时,将返回object_tag = NULL_TAG。 

在循环数据库时,不要尝试删除对象。 
当 当前对象已被删除时,尝试读取下一个对象时,可能会出现问题。 
要删除对象,保存一个包含对象的数组,然后在完成循环后,使用 
UF_OBJ_delete_array_of_objects删除保存的对象数组。 

查找当前工作部件下,工作图层中的所有体 例子:

extern DllExport void ufusr(char *param, int *returnCode, int rlen)
{
    UF_initialize();

    vector<tag_t> vBodyTags;
    tag_t object_tag = NULL_TAG;

    int iWorkLayer = 0;
    UF_LAYER_ask_work_layer(&iWorkLayer);
    UF_LAYER_cycle_by_layer(iWorkLayer, &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_LAYER_cycle_by_layer(iWorkLayer, &object_tag);
    }
    for (int i = 0; i < vBodyTags.size(); i++)
    {
        //vBodyTags[i]
    }
    UF_terminate();
}
extern int ufusr_ask_unload(void)
{
    return (UF_UNLOAD_IMMEDIATELY);
}

 

【NX二次开发】查找部件中的对象 UF_OBJ_cycle_objs_in_part

【NX二次开发】按层查找工作部件中的对象 UF_LAYER_cycle_by_layer

原文:https://www.cnblogs.com/KMould/p/14118522.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!