NX9+VS2012
#include <uf.h>
#include <uf_ui.h>
#include <uf_curve.h>
#include <uf_obj.h>
#include <uf_part.h>
#include <vector>
using namespace std;
UF_initialize();
//遍历前有一点需要注意,首先我们的默认基准坐标系上就有一个点,也就是原点0,0,0。
//还有一个要注意的地方是我们在创建点的时候,如果用创建点命令创建一个空间的点,这个是算一个点。
//如果是用草图去创建点的话,这个是两个点,因为默认草图坐标系原点处就有一个点了。
vector<double> MyPointZ;
//遍历当前显示部件的所有点
tag_t ObjectTag = NULL_TAG;
UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_point_type, &ObjectTag);
while (ObjectTag != NULL_TAG)
{
UF_OBJ_set_color(ObjectTag, 186);//设置所有点为红色
//获取点的XYZ坐标
double PointCoords[3];
UF_CURVE_ask_point_data(ObjectTag, PointCoords);
MyPointZ.push_back(PointCoords[2]);//添加坐标点Z值到vector
UF_OBJ_cycle_objs_in_part(UF_PART_ask_display_part(), UF_point_type, &ObjectTag);
}
//冒泡排序对所有点按Z轴从小到大排序
//通过两个for循环实现冒泡排序的全过程,外层for循环决定冒泡排序的趟数,
//内层for循环决定每趟所进行两两比较的次数。
int i, j;
double t;
for (i = 0; i < MyPointZ.size()-1; i++)
{
for (j = 0; j < MyPointZ.size()-1-i; j++)
{
if (MyPointZ[j]>MyPointZ[j+1])
{
t=MyPointZ[j];
MyPointZ[j]=MyPointZ[j+1];
MyPointZ[j+1]=t;
}
}
}
//打印
for (i = 0; i < MyPointZ.size(); i++)
{
char msg[256];
sprintf_s(msg, "%f\n", MyPointZ[i]);
UF_UI_open_listing_window();
UF_UI_write_listing_window(msg);
}
UF_terminate();
NX二次开发-算法篇-冒泡排序(例子:遍历所有点并排序)
猜你喜欢
转载自blog.csdn.net/lu1287580078/article/details/89284205
今日推荐
周排行