NX二次开发-算法篇-找相切面
方法1:通过判断相邻面公共边的光顺性来找相切面
1 #include <uf.h>
2 #include <uf_modl.h>
3 #include <uf_obj.h>
4
5
6 UF_initialize();
7
8
9 //获取面的所有边
10 uf_list_p_t edge_list;
11 UF_MODL_ask_face_edges(42084, &edge_list);
12
13 //获取链表的数量
14 int count;
15 UF_MODL_ask_list_count(edge_list, &count);
16
17 for (int i = 0; i < count; i++)
18 {
19 //获取链表里的tag
20 tag_t EdgeTag = NULL_TAG;
21 UF_MODL_ask_list_item(edge_list, i, &EdgeTag);
22
23 //获取边的光顺性
24 logical is_smooth;
25 UF_MODL_ask_edge_smoothness(EdgeTag, 0, &is_smooth);
26
27 if (is_smooth == true)
28 {
29 //边找面
30 uf_list_p_t face_list;
31 UF_MODL_ask_edge_faces(EdgeTag, &face_list);
32
33 //获得链表数量
34 int face_count;
35 UF_MODL_ask_list_count(face_list, &face_count);
36 for (int j = 0; j < face_count; j++)
37 {
38 //获取链表里的tag
39 tag_t FaceTag = NULL_TAG;
40 UF_MODL_ask_list_item(face_list, j, &FaceTag);
41
42 //设置颜色
43 UF_OBJ_set_color(FaceTag, 186);
44 }
45 }
46
47 }
48
49
50 UF_terminate();

方法2:使用NXOPEN相切面方法
1 #include <uf_defs.h>
2 #include <uf_ui_types.h>
3 #include <iostream>
4 #include <NXOpen/Session.hxx>
5 #include <NXOpen/UI.hxx>
6 #include <NXOpen/NXMessageBox.hxx>
7 #include <NXOpen/Callback.hxx>
8 #include <NXOpen/NXException.hxx>
9 #include <NXOpen/BlockStyler_UIBlock.hxx>
10 #include <NXOpen/BlockStyler_BlockDialog.hxx>
11 #include <NXOpen/BlockStyler_PropertyList.hxx>
12 #include <NXOpen/BlockStyler_Group.hxx>
13 #include <NXOpen/BlockStyler_FaceCollector.hxx>
14 #include <uf.h>
15 #include <uf_obj.h>
16 #include <NXOpen/NXObjectManager.hxx>
17 #include <NXOpen/PartCollection.hxx>
18 #include <NXOpen/Face.hxx>
19 #include <NXOpen/FaceTangentRule.hxx>
20 #include <NXOpen/ScCollectorCollection.hxx>
21 #include <NXOpen/ScRuleFactory.hxx>
22
23
24 UF_initialize();
25
26 //NXOPEN初始化
27 NXOpen::Session *theSession = NXOpen::Session::GetSession();
28 NXOpen::Part *workPart(theSession->Parts()->Work());
29 NXOpen::Part *displayPart(theSession->Parts()->Display());
30
31 //选择面控件
32 PropertyList* FaceSelectProps = face_select0->GetProperties();
33 std::vector<NXOpen::TaggedObject*> faces = FaceSelectProps->GetTaggedObjectVector("SelectedObjects");
34 delete FaceSelectProps;
35 FaceSelectProps = NULL;
36
37 tag_t FaceTag = faces[0]->Tag();
38
39 //对选中的面设置颜色
40 UF_OBJ_set_color(FaceTag, 186);
41
42 //给入一个面
43 NXOpen::Face *face1(dynamic_cast<NXOpen::Face *>(NXOpen::NXObjectManager::Get(FaceTag)));
44
45 //使用NXOPEN相切面规则
46 std::vector<NXOpen::Face *> boundaryFaces1(0);
47 NXOpen::FaceTangentRule *faceTangentRule1;
48 faceTangentRule1 = workPart->ScRuleFactory()->CreateRuleFaceTangent(face1, boundaryFaces1, 0.050000000000000003);
49 std::vector<NXOpen::SelectionIntentRule *> rules1(1);
50 rules1[0] = faceTangentRule1;
51
52 NXOpen::ScCollector* scCollector1 = workPart->ScCollectors()->CreateCollector();
53 scCollector1->ReplaceRules(rules1, false);
54
55 std::vector<NXOpen::TaggedObject*> BB = scCollector1->GetObjects();
56 for (int i = 0; i < BB.size(); i++)
57 {
58 UF_OBJ_set_color(BB[i]->Tag(), 1);
59 }
60
61 UF_terminate();




NX二次开发-算法篇-找相切面的更多相关文章
- NX二次开发-算法篇-随便找个不规则的体,找出面的中心点的Z坐标最高和最低的面,高亮显示
NX9+VS2012 #include <uf.h> #include <uf_evalsf.h> #include <NXOpen/Body.hxx> #incl ...
- NX二次开发-算法篇-判断找到两个数组里不相同的对象
NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include < ...
- NX二次开发-算法篇-创建最大边界包容盒
NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...
- NX二次开发-算法篇-vector函数排序(例子:遍历所有点并排序)
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...
- NX二次开发-算法篇-冒泡排序(例子:遍历所有点并排序)
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...
- NX二次开发-UFUN体找面函数UF_MODL_ask_body_faces
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...
- NX二次开发-UFUN特征找体UF_MODL_ask_feat_body
NX11+VS2013 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建块 UF_FEATURE_SIGN ...
- NX二次开发-UFUN特征找xxx UF_MODL_ask_feat_xxx等函数(待补充)
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...
- NX二次开发-UFUN体找边UF_MODL_ask_body_edges
NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_modl.h> #include <u ...
随机推荐
- Unity 调用jar闪退 解决方案
{ https://www.cnblogs.com/YZFHKMS-X/p/11864496.html }
- Java——类的成员之五:内部类
3.6 类的成员之五:内部类 3.6.1 静态内部类 ①静态内部类可以等同看做静态变量. ②内部类重要的作用:可以访问外部类中私有的数据. ③静态内部类可以直接访问外部类的静态数据,无法直接访问成员. ...
- Yii2高级模板的安装
1.通过composer 安装高级版 C:wampwwwyii>composer create-project --prefer-dist yiisoft/yii2-app-advanced a ...
- PHP ftp_fput() 函数
定义和用法 ftp_fput() 函数上传本地一个已经打开的文件,并在 FTP 服务器上把它保存为一个文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_fput(f ...
- linux POSIX信号量
POSIX信号量机制是3种IPC机制之一,3种IPC机制源于POSIX.1的实时扩展. 创建一个新的命名信号量或者使用一个现有信号量 #include <fcntl.h> #include ...
- 【LeetCode 18】四数之和
题目链接 [题解] 两重循环枚举[i..j]这个区间 同时规定必取nums[i]和nums[j] 那么现在的问题就变成在下标为[i..j]这个区间的数字里面找两个数字使他们的和为target-nums ...
- xStream.jar踩坑指南
前言 第一次接触Xstream,是在做一个socket通信的项目,由于是二次重新开发,所以有部分代码沿用了原来的代码(改造前用的webservice),其中xml字符串转换为对象,以及对象转换为xml ...
- [7.18NOIP模拟测试5]砍树 题解(数论分块)
题面(加密) 又考没学的姿势……不带这么玩的…… 考场上打了个模拟 骗到30分滚粗了 稍加思考(滑稽)可将题面转化为: 求一个最大的$d$,使得 $\sum \limits _{i=1}^n {(\l ...
- 第十四届华中科技大学程序设计竞赛--J Various Tree
链接:https://www.nowcoder.com/acm/contest/106/J来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- git回退单个文件
git原理 Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD. gi ...