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

Posted nxopen2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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     //遍历前有一点需要注意,首先我们的默认基准坐标系上就有一个点,也就是原点0,0,0。
18     //还有一个要注意的地方是我们在创建点的时候,如果用创建点命令创建一个空间的点,这个是算一个点。
19     //如果是用草图去创建点的话,这个是两个点,因为默认草图坐标系原点处就有一个点了。
20 
21     vector<double> MyPointZ;
22     //遍历当前显示部件的所有点
23     tag_t ObjectTag = NULL_TAG;
24     UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_point_type, &ObjectTag);
25     while (ObjectTag != NULL_TAG)
26     
27 
28         UF_OBJ_set_color(ObjectTag, 186);//设置所有点为红色
29 
30         //获取点的XYZ坐标
31         double PointCoords[3];
32         UF_CURVE_ask_point_data(ObjectTag, PointCoords);
33 
34         MyPointZ.push_back(PointCoords[2]);//添加坐标点Z值到vector
35     
36         UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_point_type, &ObjectTag);
37     
38 
39     //冒泡排序对所有点按Z轴从小到大排序
40     //通过两个for循环实现冒泡排序的全过程,外层for循环决定冒泡排序的趟数,
41     //内层for循环决定每趟所进行两两比较的次数。
42     int i, j;
43     double t;
44     for (i = 0; i < MyPointZ.size()-1; i++)
45     
46         for (j = 0; j < MyPointZ.size()-1-i; j++)
47         
48             if (MyPointZ[j]>MyPointZ[j+1])
49             
50                 t=MyPointZ[j];
51                 MyPointZ[j]=MyPointZ[j+1];
52                 MyPointZ[j+1]=t;
53             
54         
55     
56 
57     //打印
58     for (i = 0; i < MyPointZ.size(); i++)
59     
60         char msg[256];
61         sprintf_s(msg, "%f\\n", MyPointZ[i]);
62         UF_UI_open_listing_window();
63         UF_UI_write_listing_window(msg);
64     
65 
66     UF_terminate();

技术图片

以上是关于NX二次开发-算法篇-冒泡排序(例子:遍历所有点并排序)的主要内容,如果未能解决你的问题,请参考以下文章

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

NX二次开发-算法篇-找相切面

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

NX二次开发-通过获取窗口句柄方式来设置类型过滤器EnumChildWindows

排序算法复习:直接插入排序堆排序快排冒泡排序

排序算法之冒泡排序