NX二次开发-获取面的外围边和孔槽边
函数:
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二次开发-获取面的外围边和孔槽边的更多相关文章
- NX二次开发-获取面的法向向量UF_MODL_ask_face_data
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...
- NX二次开发-获取WCS坐标系的原点坐标和矩阵标识
函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...
- NX二次开发-获取WCS标识
函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 e ...
- NX二次开发-获取切换按钮的当前状态UF_MB_ask_toggle_state
NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...
- 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 ...
- NX二次开发-获取WCS标识UF_CSYS_ask_wcs
NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...
- NX二次开发-获取坐标系信息UF_CSYS_ask_csys_info
NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...
- NX二次开发-获取矩阵值UF_CSYS_ask_matrix_values
NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...
- NX二次开发-获取工程图尺寸的值UF_DRF_ask_dim_info
UF_initialize(); //遍历所有尺寸 ; tag_t DimTag = NULL_TAG; UF_OBJ_cycle_objs_in_part1(UF_PART_ask_display_ ...
随机推荐
- 在kubernetes上运行WASM负载
在kubernetes上运行WASM负载 WASM一般用在前端业务中,但目前有扩展到后端服务的趋势.本文使用Krustlet 将WASM服务部署到kubernetes. 简介 Krustlet 是一个 ...
- IOS Widget(4-1):创建可配置小组件(静态配置数据)
引言 经过前面几篇文章阅读,已经掌握开发一款小组件的基本技能了,接下来开始掌握一些相对高级一点的技能.本文创建一个可配置小组件,通过修改时间类型,让Text空间显示不同格式的时间. 本文大纲 添加 ...
- 【phpstorm】Server's certificate is not trusted
问题描述 phpstorm 一直跳出 问题解决 file-->Settings然后搜索Server Certificates,选中框打钩
- 仅用 CSS 实现多彩、智能的阴影
背景 有没有想过如何创建从前景元素中继承某些颜色的阴影效果?阅读本文并找出如何实现方法吧! 前几天我经过家得宝(Home Depot,美国家得宝公司,全球领先的家居建材用品零售商),他们正在大规模展销 ...
- Docker安装教程(超详细)
Docker安装教程(超详细) 欢迎关注博主公众号「Java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 http:// ...
- 详解Redis中两种持久化机制RDB和AOF
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Ap ...
- 企业CRM系统选型的标准有哪些?
随着市场的发展,企业开始意识到客户的重要性.越来越多的企业形成了"以客户为核心"的理念,更加注重客户数据和管理,因此CRM客户关系管理系统成为企业的首选.选择一个适合企业的CRM系 ...
- VSCode配置MSVC+VSCode使用easyx库,2021.5.13日配置
VSCode配置MSVC+VSCode使用easyx库,2021.5.13日配置~~ 想必很多人和我一样,想用vscode编程c++,easyx库不支持MinGW,一般人都是直接使用vs2019安装e ...
- [bug] Mysql 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾。
参考 https://blog.csdn.net/cherrycheng_/article/details/51251441?
- R语言执行脚本的几种命令
R CMD BATCH 和 Rscript 使用前都要先添加环境变量 把 C:\Program Files\R\R-3.3.0\bin; 加到"系统变量"的Path 值的最开始 可 ...