函数:

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. 双非硕士的辛酸求职回忆录:第 2 篇 谈谈我是如何同时找到Java、Python、Go等开发岗和国企银行的科技岗位Offer(上篇)

    1. 双非硕士的辛酸求职之旅--谈谈我是如何同时找到Java.Python.Go等开发岗和国企银行的offer 1.1. 秋招最终情况 本人情况:双非硕,意向工作城市广深,Java和Python技术栈 ...

  2. JavaScript 包管理器 -Yarn

    Fast, reliable, and secure dependency management. 官网地址 Github 特性 离线模式:如果您之前下载了软件包,则可以在没有任何互联网连接的情况下安 ...

  3. 事后分析$\alpha$

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 事后分析 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 组织组员 ...

  4. CENTOS7network config文件不能直接bak 必须建立bak目录再bak

    CENTOS7network config文件不能直接bak 必须建立bak目录再bak

  5. Linux_磁盘管理理论概述

    一.磁盘阵列 1.什么是磁盘阵列? 1️⃣:磁盘整列就是将多块独立的磁盘组合到一起,形成容量大的磁盘组. 2️⃣:将相同的数据存放到不多个的磁盘的不同位置 2.RAID0 1️⃣:RAID0是磁盘整列 ...

  6. CentOS 7 设置时区、日期和时间

    CentOS 7 设置时区.日期和时间 changhr2013关注 2019.04.19 01:33:09字数 307阅读 139 在 CentOS 7 中,引入了一个叫 timedatectl 的设 ...

  7. VMware虚拟机性能优化

    一.ESX及vCenter服务器的优化 检查ESX物理服务器是否在兼容列表中,特别是BIOS的版本是否符合ESX版本的要求 开启ESX物理服务器硬件虚拟化技术VT-X,AMD-V 关闭BIOS中的英特 ...

  8. megacli修复raid1硬盘

    megacli修复raid1硬盘 By HKL, Tuesday 27 August 2019, 评论 [ Hardware Operating ] 使用megaraid修复raid1掉线硬盘 使用说 ...

  9. openstack宿主机故障,虚拟实例恢复

    前言: 因为机房服务器运行不稳定的原因导致计算节点挂掉,然后上面的Centos7虚拟机在迁移之后开机报错.这个解决方法同样适用于其它操作系统的虚拟机.基于镜像创建的虚拟机实例. I/O error, ...

  10. 1.5linux用户权限相关命令

    用户权限相关命令 目标 用户 和 权限 的基本概念 用户管理 终端命令 组管理 终端命令 修改权限 终端命令 01. 用户 和 权限 的基本概念 1.1 基本概念 用户 是 Linux 系统工作中重要 ...