• 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日

  • 相关阅读:
    Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)
    博客园博客评论一个奇怪的现象~~这应该不是圣诞礼包
    Asp.Net Web API 2第十五课——Model Validation(模型验证)
    PostgresQL 中有没有rownum这样的,显示结果集的序号
    在postgresqlz中查看与删除索引
    Spring事务异常rollback-only
    spring之Environment
    Spring事务管理——回滚(rollback-for)控制
    类的静态方法无法使用aop拦截
    Spring/SpringBoot定义统一异常错误码返回
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/13696649.html
Copyright © 2020-2023  润新知