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_ ...
随机推荐
- 0901-生成对抗网络GAN的原理简介
0901-生成对抗网络GAN的原理简介 目录 一.GAN 概述 二.GAN 的网络结构 三.通过一个举例具体化 GAN 四.GAN 的设计细节 pytorch完整教程目录:https://www.cn ...
- 【flutter学习】基础知识(一)
今天开始学习一下flutter 学习思路:首先由一个简单的例子引出每次学习的对象,一点一点加入元素,针对于代码去了解学习详细知识. 看完本篇博客能够快速的读懂flutter简单代码. flutter ...
- 【HTML】HTML5从入门到深入(复习查漏向
HTML5从入门到深入(复习查漏向 冷知识 万维网之始:第一个网站·蒂姆伯纳斯-李 HTML5 html5文档类型声明: 头部: <!doctype html> 字符集(charset): ...
- 【python】Leetcode每日一题-不同的子序列
[python]Leetcode每日一题-不同的子序列 [题目描述] 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数. 字符串的一个 子序列 是指,通过删除一些(也可以 ...
- java 多线程 实现多个线程的顺序执行
场景 编写一个程序,启动三个线程,三个线程的name分别是A,B,C:,每个线程将自己的ID值在屏幕上打印5遍,打印顺序是ABCABC... 使用 synchronized 实现 public cla ...
- Elasticsearch入门,看这一篇就够了
目录 前言 可视化工具 kibana kibana 的安装 kibana 配置 kibana 的启动 Elasticsearch 入门操作 操作 index 创建 index 索引别名有什么用 删除索 ...
- 云空调来自 GitHub 的冷气——GitHub 热点速览 v.21.20
作者:HelloGitHub-小鱼干 万物皆可上云,air-conditioner 是上周火爆小鱼干朋友圈和公众号信息流的云空调项目.第一眼的时候,你会觉得和这个云空调还挺别致的,第二眼,si~~感到 ...
- 一文读懂 SuperEdge 云边隧道
作者 李腾飞,腾讯容器技术研发工程师,腾讯云TKE后台研发,SuperEdge核心开发成员. 杜杨浩,腾讯云高级工程师,热衷于开源.容器和Kubernetes.目前主要从事镜像仓库,Kubernete ...
- 合并两个yuv文件的C++代码
//将BasketballPass_416x240_50.yuv序列的前50帧和BlowingBubbles_416x240_50.yuv序列的前250帧合并成out.yuv //参数配置416 24 ...
- JAVA基础——标识符和数据类型
注释 单行注释 // 多行注释 /* */ 文档注释 /***/ 标识符和关键字 所有的标识符都应该以字母(A-Z或者a-z),美元符号($),或者下划线(_)开始 首字符之后可以时字母(A-Z或者a ...