码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-05-31 21:29:34      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:object   double   创建   rmi   ble   mes   添加   就是   坐标   

 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();

技术图片

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

标签:object   double   创建   rmi   ble   mes   添加   就是   坐标   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!