函数:

UF_MODL_ask_face_loops()  获取面的所有封闭边组合(多组edge)

UF_MODL_ask_loop_list_count() 获取loop的数量(面上孔、槽的数量+1)

UF_MODL_ask_loop_list_item() 获取loop成员,和成员有三种:外围=1, 孔槽=2, 其他=3,第四个参数为edge链

UF_MODL_ask_list_count()获取边链中边的数量

UF_MODL_ask_list_item()获取边链的成员

函数说明:使用UF_MODL_ask_loop_list_item()获取面的外围边和孔槽边,如下图

  1 #include "Text.h"
2 //设置选择的实体类型
3 static int init_proc_select_faces(UF_UI_selection_p_t select, void *user_data)
4 {
5 int errorCode = 0;
6 //只是选择面
7 int num_triples = 1; //选择类型 数量
8 UF_UI_mask_t mask_triples[] = { UF_face_type,0,0 }; //定义选择类型
9
10 errorCode = UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC, num_triples, mask_triples);
11 if (errorCode == 0)
12 {
13 return UF_UI_SEL_SUCCESS;
14 }
15 else
16 {
17 return UF_UI_SEL_FAILURE;
18 }
19 }
20
21 int Text_UI_select_faces(vector<tag_t> *vecFaces)
22 {
23 //调用API
24 char *message = "提示:选择面";
25 char *title = "标题:选择面";
26 int scope = UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY;//选取范围
27 int response;
28 int count = 0;
29 tag_p_t object;
30 UF_UI_select_with_class_dialog(message, title, scope, init_proc_select_faces, NULL, &response, &count, &object);
31 for (int i = 0; i < count; i++)
32 {
33 tag_t tagObj = object[i];
34 //取消高亮显示
35 UF_DISP_set_highlight(tagObj, 0);
36 (*vecFaces).push_back(tagObj);
37 }
38 return 0;
39 /*
40 ----------------------------------------使用方法----------------------------------------
41 vector<tag_t> vecFaces;
42 Text_UI_select_faces(&vecFaces);
43 for (int i = 0; i < vecFaces.size(); i++)
44 {
45
46 }
47 */
48 }
49
50 extern DllExport void ufusr(char *param, int *returnCode, int rlen)
51 {
52 UF_initialize();
53 vector<tag_t> vecFaces;
54 Text_UI_select_faces(&vecFaces);
55 for (int i = 0; i < vecFaces.size(); i++)
56 {
57 //面上所有的loops
58 uf_loop_t *loop_list = NULL;
59 UF_MODL_ask_face_loops(vecFaces[i],&loop_list);
60 //loops的个数
61 int loops_count = 0;
62 UF_MODL_ask_loop_list_count(loop_list, &loops_count);
63
64 vector<tag_t> vecHighlight;
65 //-------------------------------------------------------------------------
66 uc1601("即将高亮面的外围边", 1);
67 for (int j = 0; j < loops_count; j++)
68 {
69 int type = 0;
70 uf_list_t*hole_list = NULL;
71 UF_MODL_ask_loop_list_item(loop_list, j, &type, &hole_list);
72 if (type == 1)//外围=1, 孔槽=2, 其他=3
73 {
74 int hole_edge_count = 0;
75 UF_MODL_ask_list_count(hole_list, &hole_edge_count);
76
77 for (int k = 0; k < hole_edge_count; k++)
78 {
79 //链表中的边tag
80 tag_t hole_edge_tag = NULL_TAG;
81 UF_MODL_ask_list_item(hole_list, k, &hole_edge_tag);
82 UF_DISP_set_highlight(hole_edge_tag, 1);
83 vecHighlight.push_back(hole_edge_tag);
84 }
85 }
86 }
87 uc1601("即将取消高亮面的外围边", 1);
88 for (int j = 0; j < vecHighlight.size(); j++)
89 {
90 UF_DISP_set_highlight(vecHighlight[j], 0);
91 }
92 vecHighlight.clear();
93 //-------------------------------------------------------------------------
94 //-------------------------------------------------------------------------
95 uc1601("即将高亮面的孔槽边", 1);
96 for (int j = 0; j < loops_count; j++)
97 {
98 int type = 0;
99 uf_list_t*hole_list = NULL;
100 UF_MODL_ask_loop_list_item(loop_list, j, &type, &hole_list);
101 if (type == 2)//外围=1, 孔槽=2, 其他=3
102 {
103 int hole_edge_count = 0;
104 UF_MODL_ask_list_count(hole_list, &hole_edge_count);
105
106 for (int k = 0; k < hole_edge_count; k++)
107 {
108 //链表中的边tag
109 tag_t hole_edge_tag = NULL_TAG;
110 UF_MODL_ask_list_item(hole_list, k, &hole_edge_tag);
111 UF_DISP_set_highlight(hole_edge_tag, 1);
112 vecHighlight.push_back(hole_edge_tag);
113 }
114 }
115 }
116 uc1601("即将取消高亮面的孔槽边", 1);
117 for (int j = 0; j < vecHighlight.size(); j++)
118 {
119 UF_DISP_set_highlight(vecHighlight[j], 0);
120 }
121 vecHighlight.clear();
122 //-------------------------------------------------------------------------
123 }
124
125 UF_terminate();
126 }
127
128 extern int ufusr_ask_unload(void)
129 {
130 return (UF_UNLOAD_IMMEDIATELY);
131 }

NX二次开发-获取面的外围边和孔槽边的更多相关文章

  1. NX二次开发-获取面的法向向量UF_MODL_ask_face_data

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  2. NX二次开发-获取WCS坐标系的原点坐标和矩阵标识

    函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...

  3. NX二次开发-获取WCS标识

    函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 e ...

  4. NX二次开发-获取切换按钮的当前状态UF_MB_ask_toggle_state

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...

  5. NX二次开发-获取按钮的ID UF_MB_ask_button_id

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...

  6. NX二次开发-获取WCS标识UF_CSYS_ask_wcs

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...

  7. NX二次开发-获取坐标系信息UF_CSYS_ask_csys_info

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...

  8. NX二次开发-获取矩阵值UF_CSYS_ask_matrix_values

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...

  9. NX二次开发-获取工程图尺寸的值UF_DRF_ask_dim_info

    UF_initialize(); //遍历所有尺寸 ; tag_t DimTag = NULL_TAG; UF_OBJ_cycle_objs_in_part1(UF_PART_ask_display_ ...

随机推荐

  1. 每天一道面试题LeetCode 206 -- 反转链表

    LeetCode206 反转链表 思路 代码 # # @lc app=leetcode.cn id=206 lang=python3 # # [206] 反转链表 # # https://leetco ...

  2. 【DB宝51】CentOS7修改网卡名称

    目录 1.修改/etc/default/grub文件 2.修改/etc/udev/rules.d/70-persistent-net.rules文件 3.修改网卡配置文件 4.重启服务器 需求:原来的 ...

  3. SSM框架MavenWeb项目的测试

    由于SSM项目的类都是由Spring容器托管,所以直接进行用new对象调用方法进行测试是不行不通的,会出现空指针异常NullPointExpection. 因为我们的对象由spring进行托管,调用的 ...

  4. java之Map的使用

    Map的实现类有很多,其中较为常见的有HashMap,HashTable,LinkedHashMap,TreeMap,下面分别对这几个类进行简单的分析: 1.HashMap HashMap的结构数组+ ...

  5. 微服务架构开发电商系统需要用Redis、ES和MQ吗?

    如果不用什么很高大上的东西,就是有多个微服务就行这种技术架构会很难吗? 我看了一些视频,他们都用到了es.mq.redis的东西,我想不用这些东西,就简单的有多个服务,这样可行吗? 01 使用微服务你 ...

  6. C++ primer plus读书笔记——第14章 C++中的代码重用

    第14章 C++中的代码重用 1. 使用公有继承时,类可以继承接口,可能还有实现(基类的纯虚函数提供接口,但不提供实现).获得接口是is-a关系的组成部分.而使用组合,类可以获得实现,但不能获得接口. ...

  7. RTTI之typeid运算符

    1 #include <iostream> 2 #include <cstdlib> 3 #include <ctime> 4 #include <typei ...

  8. [MySQL数据库之事务、读现象、数据库锁机制、多版本控制MVCC、事务隔离机制]

    [MySQL数据库之事务.读现象.数据库锁机制.多版本控制MVCC.事务隔离机制] 事务 1.什么是事务: 事务(Transaction),顾名思义就是要做的或所做的事情,数据库事务指的则是作为单个逻 ...

  9. .NetCore&#183;集成Ocelot组件之完全解决方案

    阅文时长 | 11.04分钟 字数统计 | 17672.8字符 主要内容 | 1.前言.环境说明.预备知识 2.Ocelot基本使用 3.Ocelot功能挖掘 4.Ocelot集成其他组件 5.避坑指 ...

  10. FastDFS依赖无法导入

    FastDFS依赖无法导入 fastdfs-client-java 导入爆红 <!-- FastDFS--> <dependency> <groupId>org.c ...