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

 1     NX9+VS2012
 2
 3     #include <uf.h>
 4     #include <uf_ui.h>
 5     #include <uf_curve.h>
 6     #include <uf_obj.h>
 7     #include <uf_part.h>
 8     #include <vector>
 9     #include <algorithm>
10
11     using namespace std;
12
13
14     UF_initialize();
15
16     //遍历前有一点需要注意,首先我们的默认基准坐标系上就有一个点,也就是原点0,0,0。
17     //还有一个要注意的地方是我们在创建点的时候,如果用创建点命令创建一个空间的点,这个是算一个点。
18     //如果是用草图去创建点的话,这个是两个点,因为默认草图坐标系原点处就有一个点了。
19
20     vector<double> MyPointZ;
21     //遍历当前显示部件的所有点
22     tag_t ObjectTag = NULL_TAG;
23     UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_point_type, &ObjectTag);
24     while (ObjectTag != NULL_TAG)
25     {
26
27         UF_OBJ_set_color(ObjectTag, 186);//设置所有点为红色
28
29         //获取点的XYZ坐标
30         double PointCoords[3];
31         UF_CURVE_ask_point_data(ObjectTag, PointCoords);
32
33         MyPointZ.push_back(PointCoords[2]);//添加坐标点Z值到vector
34
35         UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_point_type, &ObjectTag);
36     }
37
38     //vector排序去重
39     sort( MyPointZ.begin(), MyPointZ.end());//排序
40     MyPointZ.erase(unique(MyPointZ.begin(), MyPointZ.end()), MyPointZ.end());//去重
41
42     //打印
43     for (int i = 0; i < MyPointZ.size(); i++)
44     {
45         char msg[256];
46         sprintf_s(msg, "%f\n", MyPointZ[i]);
47         UF_UI_open_listing_window();
48         UF_UI_write_listing_window(msg);
49     }
50
51     UF_terminate();

原文地址:https://www.cnblogs.com/nxopen2018/p/10957443.html

时间: 2024-08-03 00:03:03

NX二次开发-算法篇-vector函数排序(例子:遍历所有点并排序)的相关文章

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

1 NX9+VS2012 2 3 4 #include <uf.h> 5 #include <uf_ui.h> 6 #include <uf_curve.h> 7 #include <uf_obj.h> 8 #include <uf_part.h> 9 #include <vector> 10 11 using namespace std; 12 13 14 15 UF_initialize(); 16 17 //遍历前有一点需要注意

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

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_curve.h> 5 #include <uf_modl.h> 6 #include <vector> 7 #include <uf_disp.h> 8 9 10 UF_initialize(); 11 12 //第一步,创建5条直线 13 UF_CURVE_line_t Coords1; 14 Coords1.start_point[0] = 0.0

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

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_obj.h> 5 #include <uf_modl.h> 6 #include <uf_part.h> 7 8 UF_initialize(); 9 10 //遍历当前显示部件所有体 11 std::vector<tag_t> SolidVector; 12 tag_t ObjectTag = NULL_TAG; 13 int Type, SubTy

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

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_evalsf.h> 5 #include <NXOpen/Body.hxx> 6 #include <NXOpen/Face.hxx> 7 #include <uf_disp.h> 8 9 10 public: 11 12 void SelectBody(); 13 14 void SelectUVFace::SelectBody() 15 { 16

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

NX二次开发-设置对象名称函数UF_OBJ_set_name

1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_modl.h> 5 #include <uf_obj.h> 6 7 8 9 UF_initialize(); 10 11 //创建块 12 UF_FEATURE_SIGN Sign = UF_NULLSIGN; 13 double Corner_Pt[3] = {0.0, 0.0, 0.0}; 14 char *Edge_Len[3] = {"100",

NX二次开发-UFUN输出UF函数使用错误UF_get_fail_message

1 #include <uf.h> 2 #include <uf_ui.h> 3 #include <uf_modl.h> 4 5 6 UF_initialize(); 7 8 UF_FEATURE_SIGN sign = UF_NULLSIGN; 9 double corner_pt[3] = { 0.0, 0.0, 0.0 }; 10 char* edge_len[3] = { "", "20", "30"

NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article/details/88922030 这篇博客,要不然你听不懂我下面在说什么. 版本NX11+VS2013+office2016 首先我们通过NX开发向导创建了一个模板. 先把项目属性改成多字节.下面我们把前面做的MFC项目里的几个EXCAL头文件和stdafx一块拷过来,加到NX的项目里. 在NX的

李洪强iOS开发Swift篇—07_函数

李洪强iOS开发Swift篇—07_函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 形参名1: 形参类型1, 形参名2: 形参类型2, … (3)举例:计算2个整数的和 1 func sum(num1: Int, num2: Int) -> Int { 2 return num1 + num2 3 } (4)没有返回值的函数 如果函数没有返回值,有3种写法 1 func 函数名(形参列