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

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

时间: 2024-10-04 19:52:07

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

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_initiali

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二次开发-基于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的

NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的方法,无论C++还是C#还是VB方式思路都是一样的.先介绍用MFC去做,然后在写一篇博客介绍怎么在NX的二次开发的向导模板里去做.NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article

NX二次开发-NX+VS写代码设断点调试技巧

在做NX二次开发的时候写完代码,编译可以通过,但是执行的时候却没有反应,或者得到的结果不对,说明肯定有地方传值出错了.我在查找代码错误的时候有几种方法:1.uc1601打印函数输入和输出的值看对不对.2.VS设断点-添加进程调试,来看输入输出值对不对3.UF_CALL也就是UF_get_fail_message这个函数,来看函数自己用的对不对.4.查看NX-Help-LogFile(日志),拖到最后看提示了哪些错误. 我一般用的比较多的是设断点调试,这里先说设断点调试.其他方法改天再写. 写举一

Visual Stadio 与NX二次开发的环境配置(以VS2010、NX10.0为例)

问题描述: 许多博文发布了关于Visual Stadio 与NX二次开发的环境配置,这些博文的提示事修改了文件NX10_Open.vsz中的引擎为10.0,但实际结果是创建C++引导失败. 问题解决概述: 创建正确引导应该同时修改NX10_Open.vsz与NX10_NXOpenCPP.vsz两个文件的引擎版本号. 解决步骤: 将NX10.0 UGOPEN目录下的所有文件夹(VB.VC.VC#)复制,并粘贴到Visual Stadio 2010安装目录下与对应的文件夹合并即可(覆盖). 例如,将