zoukankan      html  css  js  c++  java
  • 【NX二次开发】按层查找工作部件中的对象 UF_LAYER_cycle_by_layer

    第一次调用 :返回第一个启用层中的第一个对象。 
    第二次调用 :返回下一个已启用层中的下一个对象。 
    最后一次调用:当所有对象都被耗尽时,将返回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

  • 相关阅读:
    重构二叉树
    Nlog、elasticsearch、Kibana以及logstash
    技术
    Java 的垃圾回收机制(转)
    Java并发编程:并发容器之CopyOnWriteArrayList
    深入理解Arrays.sort() (转)
    浅析java的浅拷贝和深拷贝
    gradle
    @action 注解
    如何使用mysql
  • 原文地址:https://www.cnblogs.com/KMould/p/14118522.html
Copyright © 2011-2022 走看看