方法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. AcWing 197. 阶乘分解 (筛法)打卡

    给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...

  2. xlwings结合dataframe数据的写入

    一.代码 import xlwings as xw import pandas as pd xl_path=r'***' df_path=r'***' df=pd.read_excel(df_path ...

  3. JXOI2017 加法

    题目描述: 可怜有一个长度为 \(n\) 的正整数序列 \(A\),但是她觉得 \(A\) 中的数字太小了,这让她很不开心. 于是她选择了 \(m\) 个区间 \([l_i, r_i]\) 和两个正整 ...

  4. Jquery里live事件移除原因

    live()事件 $('a').live('click', function() { alert("That tickles!") }); live事件Jq把alert函数绑定到$ ...

  5. base64和Xxtea的加密和解密

    base64和Xxtea的加密和解密 数据加密是web数据安全的一种方式,前几天拿到一个base64+xxtea加密的数据,现在在这里整理一下使用的过程.首先当然是全网站找解密方法,但是最后的结果不是 ...

  6. JAVA常用集合解析

    ArrayList : 底层基于数组实现,在使用add方法添加元素时,首先校验集合容量,将新添加的值放入集合尾部并进行长度加一,进行自动扩容,扩容的操作时将数据中的所有元素复制到新的集合中. 在指定位 ...

  7. 1089 Insert or Merge (25 分)

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  8. pymongo中使用聚合查询

    在使用mongo数据库时,简单的查询基本上可以满足大多数的业务场景,但是试想一下,如果要统计某一荐在指定的数据中出现了多少次该怎么查询呢?笨的方法是使用find 将数据查询出来,再使用count() ...

  9. Java通道

    通道(Channel)是数据源和Java程序之间的开放连接,用于执行I/O操作.Channel接口在java.nio.channels包中.通道(Channel)接口只声明了两个方法:close()和 ...

  10. 用注解实现SpringMvc

    在第一次完成spirngmvc代码的基础上: 开始时代码 index.jsp <%@ page contentType="text/html;charset=UTF-8" l ...