方法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二次开发-算法篇-找相切面的更多相关文章

  1. NX二次开发-算法篇-随便找个不规则的体,找出面的中心点的Z坐标最高和最低的面,高亮显示

    NX9+VS2012 #include <uf.h> #include <uf_evalsf.h> #include <NXOpen/Body.hxx> #incl ...

  2. NX二次开发-算法篇-判断找到两个数组里不相同的对象

    NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include < ...

  3. NX二次开发-算法篇-创建最大边界包容盒

    NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...

  4. NX二次开发-算法篇-vector函数排序(例子:遍历所有点并排序)

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...

  5. NX二次开发-算法篇-冒泡排序(例子:遍历所有点并排序)

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...

  6. NX二次开发-UFUN体找面函数UF_MODL_ask_body_faces

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  7. NX二次开发-UFUN特征找体UF_MODL_ask_feat_body

    NX11+VS2013 #include <uf.h> #include <uf_modl.h> UF_initialize(); //创建块 UF_FEATURE_SIGN ...

  8. NX二次开发-UFUN特征找xxx UF_MODL_ask_feat_xxx等函数(待补充)

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  9. NX二次开发-UFUN体找边UF_MODL_ask_body_edges

    NX11+VS2013 #include <uf.h> #include <uf_ui.h> #include <uf_modl.h> #include <u ...

随机推荐

  1. Java基础之ArrayList类

    一.ArrayList ArrayList继承了AbstractList分别实现了List.RandomAccess(随机访问).Cloneable(可被克隆(复制的意思)). Serializabl ...

  2. 【leetcode】957. Prison Cells After N Days

    题目如下: There are 8 prison cells in a row, and each cell is either occupied or vacant. Each day, wheth ...

  3. go声明和初始化

    go声明和初始化 当我们第一次看见变量和声明时,我们仅仅看见一些内置的类型,比如整型和字符串.现在我们将学习结构体,并且我们会深入学习包括指针的内容. 通过一种最简单的方式去创建一个结构体值类型: g ...

  4. 贪心——cf708b

    先求0,1的个数,然后贪心输出01即可 #include<bits/stdc++.h> using namespace std; #define ll long long ll a,b,c ...

  5. vue2 核心概念

    一.vue变量 所有的 vue变量 ,必须在data:中有注册(哪怕内容是空,相当于声明这个是变量,是vue变量而不是js变量).这里的变量也可以运算.(注意:所有的框架一定要注意js变量和框架的变量 ...

  6. docker核心技术(2)

    鸟瞰容器生态系统 一谈到容器,大家都会想到 Docker. Docker 现在几乎是容器的代名词.确实,是 Docker 将容器技术发扬光大.同时,大家也需要知道围绕 Docker 还有一个生态系统. ...

  7. linux python3 venv 虚拟环境报错 [-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 2.

    解决办法: 先创建没有pip的虚拟环境,然后启动虚拟环境后,再安装pip 办法一: 亲测失败了... python3 -m venv --without-pip py36env 办法二 sudo ap ...

  8. CSS:CSS 伪类(Pseudo-classes)

    ylbtech-CSS:CSS 伪类(Pseudo-classes) 1.返回顶部 1. CSS 伪类(Pseudo-classes) CSS伪类是用来添加一些选择器的特殊效果. 语法 伪类的语法: ...

  9. 树莓派 omv 安装 nextcloud

    https://www.toutiao.com/i6447470450145493517/ https://www.technikaffe.de/anleitung-402-howto_nextclo ...

  10. Android逆向之smali语法宝典

    0x01.前言 Android采用的是java语言进行开发,但是Android系统有自己的虚拟机Dalvik,代码编译最终不是采用的java的class,而是使用的smali.我们反编译得到的代码,j ...