NX二次开发-获取面的外围边和孔槽边
时间:2020-03-24
本文章向大家介绍NX二次开发-获取面的外围边和孔槽边,主要包括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 }
原文地址:https://www.cnblogs.com/KMould/p/12557470.html
- 微信亿级用户异常检测框架的设计与实践
- 程序员必知的6点编程秘诀,编程三板斧将解决90%问题!
- JavaScript之面向对象学习三原型语法升级
- 腾讯入局物业管理,欲改造传统服务?
- JavaScript之面向对象学习五(JS原生引用类型Array、Object、String等等)的原型对象介绍
- SQL学习之分组数据Group by
- SQL学习之数据列去空格函数
- 采用DIV+CSS布局对SEO优化有何好处?
- Sublime快速入门
- SQL学习之汇总数据之聚集函数
- Sedo榜单中,域名“加密世界”CryptoWorld.com七位数夺冠
- ExtJs学习笔记(20)-利用ExtJs的Ajax与服务端WCF交互
- 2018年热点分享:比特币到底是什么?
- JVM快速入门
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 通过历史控制文件恢复Oracle数据库,只需这10步
- python应用(2):写个python程序给自己用
- 基于Prometheus+Grafana监控SQL Server数据库
- 手把手教你用R语言读取CSV文件
- 6个案例手把手教你用Python和OpenCV进行图像处理
- Android 10(Q)/11(R) 分区存储适配
- Usual*** CMS 8.0代码审计
- 由一条like语句引发的SQL注入新玩法
- 《黑神话:悟空》B站弹幕、知乎回答分析
- 12岁小读者使用Python暴力破解Wi-Fi密码
- 深度学习入门Fast.ai 2.0上线!自带中文字幕,所有笔记、资源全部免费!
- 七夕节脱单“神助攻”!AI教你写情话
- Python初学者请注意!别这样直接运行python命令,否则电脑等于“裸奔”
- 一篇文章构建你的 Node.js 知识体系
- MySQL:The CHAR and VARCHAR Types