【NX二次开发】UF_CSYS_map_point()函数,绝对坐标,工作坐标,部件之间坐标转换。

UF_CSYS_map_point用来变换点的坐标,比较简单且实用。例如工作坐标系与绝对坐标系转换,一个部件的坐标与另一个部件坐标系之间的转换。下面的例子是在三个坐标下创建三个点相对坐标为{10,50,100};

 下面是UF_CSYS_map_point函数用到的三个坐标系的参数:

//根部件的绝对坐标系
#define UF_CSYS_ROOT_COORDS     1
//工作部件的绝对坐标系
#define UF_CSYS_WORK_COORDS     2
//根部件的工作坐标系
#define UF_CSYS_ROOT_WCS_COORDS 3

源码:

 1 #include "Text.h"
 2 extern DllExport void ufusr(char *param, int *returnCode, int rlen)
 3 {
 4     UF_initialize();
 5     tag_t tagP;
 6     double douP1[3] = { 10,50,100 };
 7     UF_CURVE_create_point(douP1,&tagP);
 8 
 9     //将工作坐标系下的点 转换为 绝对坐标系下
10     double douP_WCS[3] = { 10,50,100 };
11     double douP_ABS[3] = { 0,0,0 };
12     UF_CSYS_map_point( UF_CSYS_ROOT_WCS_COORDS, douP_WCS, UF_CSYS_ROOT_COORDS, douP_ABS);//工作部件绝对 转 根部件WCS
13     UF_CURVE_create_point(douP_ABS, &tagP);
14     
15     //将工作部件 绝对坐标系下的点 转换为 根部件绝对坐标系下
16     double douP0_WCS[3] = { 10,50,100 };
17     double douP0_ABS[3] = { 0,0,0 };
18     tag_t tagPart1 = 44814;
19     UF_ASSEM_set_work_part(tagPart1);
20     UF_CSYS_map_point(UF_CSYS_WORK_COORDS, douP0_WCS, UF_CSYS_ROOT_COORDS, douP0_ABS);//工作部件绝对 转 根部件WCS
21     UF_ASSEM_set_work_part(UF_PART_ask_display_part());//显示部件设为工作部件
22     UF_CURVE_create_point(douP0_ABS, &tagP);
23 
24     UF_terminate();
25 }
26 
27 extern int ufusr_ask_unload(void)
28 {
29     return (UF_UNLOAD_IMMEDIATELY);
30 }

结果:

原文地址:https://www.cnblogs.com/KMould/p/13425550.html