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_ ...
随机推荐
- ThinkPHP5中出现unserialize()报错
简述 unserialize(): Error at offset 533 of 1857 bytes 发现问题 dump一下出错的位置的变量,可以发现是缓存出了问题,改了名字的文件的路径对不上 解决 ...
- Cannot load driver class: com.mysql.jdbc.Driver
mysql-connector-java提供了mysql驱动等类库,此处必须引入此依赖,否则将会提示: Cannot load driver class: com.mysql.jdbc.Driver等 ...
- selenium之利用cookie绕过验证登录
方法一 第一步 2.第二步 方法二.重点:1.打开验证码页(登录页面):2.首次登录等待三十秒手工输入账密:3.保存cookie至excel后利用cookie脚本登录 1.导入第三方模块xlwt 2. ...
- Spring Cloud 升级之路 - 2020.0.x - 4. 使用 Eureka 作为注册中心
Eureka 目前的状态:Eureka 目前 1.x 版本还在更新,但是应该不会更新新的功能了,只是对现有功能进行维护,升级并兼容所需的依赖. Eureka 2.x 已经胎死腹中了.但是,这也不代表 ...
- 序列化-Json
常见的Json转换工具有google的gson和阿里的fastgson.目前主流策略:POJO序列化成JSON字符串用Gson库,JSON字符串反序列化为POJO,用fastJson库. Netty中 ...
- 【BUAA软工】Alpha阶段测试报告
vLab-online项目Alpha阶段测试报告 项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:Alpha阶段测试报告 测试报告 测试发现的bug 在测试过程中发现了多少Bug? 我 ...
- [DB] 数据库概述
基本概念 关系模型:包括关系数据结构.关系操作集合.关系完整性约束三部分 关系型数据库:建立在关系模型基础上的数据库.由多张能互相联接的二维行列表格组成. 非关系型数据库(Nosql(Not Only ...
- [bug] python matplotlib 中文乱码
参考 matplotlib解决不显示中文问题 https://www.jianshu.com/p/b02ec7dc39dd
- 【转载】ltp压力测试结果分析脚本
博客园 首页 新随笔 联系 管理 订阅 随笔- 8 文章- 0 评论- 0 ltp压力测试结果分析脚本 最近工作性质发生了改变,在做操作系统方面的测试.接手的第一个任务是做ltp stres ...
- 提高IO输出速度
用DMA内存到内存的模式,直接把Gpio_data的数据循环的搬到GPIOC的BSRR寄存器上来控制GPIOC上电平的翻转,这样使得GPIO的速度达到了最快,输出70ns的脉宽,这已经是达到了DMA总 ...