• NX二次开发-UFUN遍历装配树根下面的所有子组件UF_ASSEM_ask_part_occ_children


    NX9+VS2012
    
    #include <uf.h>
    #include <uf_assem.h>
    #include <uf_ui.h>
    #include <uf_part.h>
    
    
    
    //递归遍历所有装配
    void ASSEM_cycle_all_part(tag_t parent_part_occ)
    {
        //遍历根的子组件
        tag_t* child_part_occs = NULL_TAG;
        int part_num = UF_ASSEM_ask_part_occ_children(parent_part_occ, &child_part_occs);
        for (int i = 0; i < part_num; i++)
        {
            //获取装配部件的相关信息
            char part_name[MAX_FSPEC_BUFSIZE];//零件名称
            char refset_name[UF_OBJ_NAME_BUFSIZE];//引用集名称
            char instance_name[UF_CFI_MAX_FILE_NAME_BUFSIZE];//实例名称
            double originA[3];//组件的位置
            double csys_matrix[9];//坐标系矩阵
            double transform[4][4];//转换矩阵
            UF_ASSEM_ask_component_data(child_part_occs[i], part_name, refset_name, instance_name, originA, csys_matrix, transform);
    
            UF_UI_write_listing_window(part_name);
            UF_UI_write_listing_window("
    ");
    
            ASSEM_cycle_all_part(child_part_occs[i]);
        }
    
        //释放
        UF_free(child_part_occs);
    }
    
    
    
    
    UF_initialize();
    
    //获得装配树根
    tag_t RootTag = UF_ASSEM_ask_root_part_occ(UF_PART_ask_display_part());
    
    UF_UI_open_listing_window();
    //遍历根的子组件
    tag_t* child_part_occs = NULL_TAG;
    int part_num = UF_ASSEM_ask_part_occ_children(RootTag, &child_part_occs);
    for (int i = 0; i < part_num; i++)
    {
        //获取装配部件的相关信息
        char part_name[MAX_FSPEC_BUFSIZE];//零件名称
        char refset_name[UF_OBJ_NAME_BUFSIZE];//引用集名称
        char instance_name[UF_CFI_MAX_FILE_NAME_BUFSIZE];//实例名称
        double originA[3];//组件的位置
        double csys_matrix[9];//坐标系矩阵
        double transform[4][4];//转换矩阵
        UF_ASSEM_ask_component_data(child_part_occs[i], part_name, refset_name, instance_name, originA, csys_matrix, transform);
    
        UF_UI_write_listing_window(part_name);
        UF_UI_write_listing_window("
    ");
    
        //进入递归
        ASSEM_cycle_all_part(child_part_occs[i]);
    
    }
    
    //释放
    UF_free(child_part_occs);
    
    UF_terminate();
    
    
    Caesar卢尚宇
    2020年9月19日

  • 相关阅读:
    DB2控制中心创建触发器
    将web应用迁到TongWeb
    DB2自增列数据处理
    Android 所有版本区别总结(转)
    C#强制关闭Excel进程(通过COM使用Excel时)
    Web开发中的ContentType类型大全
    Javascript中闭包(Closure)的探索(一)基本概念
    Javascript 中闭包(Closure)的探索(三)私有函数中的this
    VS2008中Web Reference和Service Reference的区别
    ASP.NET中模拟管理员用户提升权限
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/13696649.html
Copyright © 2020-2023  润新知