NX二次开发-从一个坐标系到另一个坐标系的转换

函数:UF_MTX4_csys_to_csys()、UF_MTX4_vec3_multiply()

函数说明:从一个坐标系统到另一个坐标系统的转换。如下图红色坐标系下有个红色的点,将红色的点转到绿色的坐标系下,得到绿色的点。可以使用UF_MTX4_csys_to_csys()和UF_MTX4_vec3_multiply()函数。

三个角度的截图:

 1 // UF_MTX4_csys_to_csys从一个坐标系统到另一个坐标系统的转换:*
 2 
 3 #include <stdio.h>
 4 #include <uf.h>
 5 #include <uf_part.h>
 6 #include <uf_defs.h>
 7 #include <uf_modl.h>
 8 #include <uf_mtx.h>
 9 
10 #define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
11 
12 static int report(char *file, int line, char *call, int irc)
13 {
14     if (irc)
15     {
16         char    messg[133];
17         printf("%s, line %d:  %s\n", file, line, call);
18         (UF_get_fail_message(irc, messg)) ?
19             printf("    returned a %d\n", irc) :
20             printf("    returned error %d:  %s\n", irc, messg);
21     }
22     return(irc);
23 }
24 
25 static void do_ugopen_api(void)
26 {
27 
28 
29     double  from_origin[3] = { 0.0, 0.0, 0.0 };
30     double  from_x_axis[3] = { 1.0, 0.0, 0.0 };
31     double  from_y_axis[3] = { 0.0, 1.0, 0.0 };
32 
33     double  to_origin[3] = { 10.0, 10.0, 10.0 };
34     double  to_x_axis[3] = { 0.0, 1.0, 0.0 };
35     double  to_y_axis[3] = { 1.0, 0.0, 0.0 };
36 
37     double  new_target[3];
38     double  target[3] = { 2, 4, 6 };
39 
40     tag_t tagP_target;
41     UF_CURVE_create_point(target, &tagP_target);//创建点
42 
43     double  transform[16];
44     tag_t   part_tag;
45     UF_CALL(UF_MTX4_csys_to_csys(from_origin, from_x_axis, from_y_axis,to_origin, to_x_axis, to_y_axis,transform));
46     UF_MTX4_vec3_multiply(target, transform, new_target);
47     
48     tag_t tagP_new_target;
49     UF_CURVE_create_point(new_target, &tagP_new_target);//创建转换后的点
50 
51 }
52 
53 
54 void ufusr(char *param, int *retcode, int param_len)
55 {
56     if (!UF_CALL(UF_initialize()))
57     {
58         do_ugopen_api();
59         UF_CALL(UF_terminate());
60     }
61 }
62 
63 int ufusr_ask_unload(void)
64 {
65     return (UF_UNLOAD_IMMEDIATELY);
66 }

 

posted @ 2020-03-23 17:04  王牌飞行员_里海  阅读(1024)  评论(0编辑  收藏  举报