• NX二次开发-UFUN获得装配树根tag UF_ASSEM_ask_root_part_occ


    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日

  • 相关阅读:
    cocoapods使用遇到的一些问题
    so
    UITextField的各种属性方法介绍
    <<第1章 初识JAVA>>
    《第16章 复习》
    《第17章 图书管理系统》
    《第15章 字符串》
    《第13章 猜拳游戏》
    《第14章 带参数的方法》
    《第12章 类的无参方法》
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/13696620.html
Copyright © 2020-2023  润新知