zoukankan      html  css  js  c++  java
  • NX二次开发-UFUN获取面的内外边界UF_MODL_ask_loop_list_item

     1     NX11+VS2013
     2     
     3     #include <uf.h>
     4     #include <uf_modl.h>
     5     #include <NXOpen/Face.hxx>
     6     #include <uf_ui.h>
     7     #include <NXOpen/NXObjectManager.hxx>
     8     #include <NXOpen/Edge.hxx>
     9 
    10 
    11     UF_initialize();
    12 
    13     //获取选择面控件选择的对象
    14     PropertyList*  FaceSelectProps = face_select0->GetProperties();
    15     std::vector<NXOpen::TaggedObject *> Faces = FaceSelectProps->GetTaggedObjectVector("SelectedObjects");
    16     delete FaceSelectProps;
    17     FaceSelectProps = NULL;
    18 
    19     for (int i = 0; i < Faces.size(); i++)
    20     {
    21         NXOpen::Face *MyFace = dynamic_cast<NXOpen::Face *>(Faces[i]);
    22 
    23         std::vector<tag_t> FaceNum;
    24         uf_loop_p_t Loop_List;
    25         UF_MODL_ask_face_loops(MyFace->Tag(), &Loop_List);//查询面的边界
    26 
    27         int LoopNum;
    28         UF_MODL_ask_loop_list_count(Loop_List, &LoopNum);//查询面的边界链表数量
    29 
    30         int LoopChildType;
    31         int Num1;
    32         uf_list_p_t LoopChildList;
    33         char msg[256];
    34         std::vector<tag_t> edge;
    35         UF_MODL_create_list(&LoopChildList);//创建链表
    36         for (int j = 0; j < LoopNum; j++)
    37         {        
    38             UF_MODL_ask_loop_list_item(Loop_List, j, &LoopChildType, &LoopChildList);//查询面的边界类型
    39             if (LoopChildType == 2)//类型为内边界的时候
    40             {                
    41                 UF_MODL_ask_list_count(LoopChildList, &Num1);//查询链表数量
    42 
    43                 for (int n = 0; n < Num1; n++)
    44                 {
    45                     tag_t objTag = NULL_TAG;
    46                     UF_MODL_ask_list_item(LoopChildList, n, &objTag);//获取链表里的tag
    47                     edge.push_back(objTag);
    48                 }
    49             }    
    50 
    51         }
    52 
    53         sprintf_s(msg, "当前有%d个孔", edge.size());
    54         uc1601(msg, 1);
    55 
    56         UF_MODL_delete_list(&LoopChildList);
    57         UF_MODL_delete_loop_list(&Loop_List);
    58     }
    59     
    60     UF_terminate();

  • 相关阅读:
    2020软件工程作业02
    自我介绍
    Requests的使用
    爬虫基本原理
    2019春总结作业
    十二周作业
    十一周作业
    第十周作业
    intellij idea 的全局搜索快捷键方法
    Oracle多表关联
  • 原文地址:https://www.cnblogs.com/nxopen2018/p/10975819.html
Copyright © 2011-2022 走看看