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 }
结果: