函数: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 }

NX二次开发-从一个坐标系到另一个坐标系的转换的更多相关文章

  1. NX二次开发-如何在类外面定义一个结构体

    #include <uf.h> #include <uf_obj.h> #include <uf_part.h> using namespace NXOpen; u ...

  2. 【NX二次开发】根据根据坐标系、对象旋转视图旋转视图uc6434

    uc6434 (); //旋转视图 参数1:如果输入""则旋转当前工作视图参数2:1.按照ABS旋转视图.2.按照WCS选择视图.3.按照参数3旋转视图.4.按照参数4旋转视图参数 ...

  3. NX二次开发-获取WCS坐标系的原点坐标和矩阵标识

    函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...

  4. NX二次开发-创建(临时)坐标系

    函数:UF_CSYS_create_csys() . UF_CSYS_create_temp_csys() 函数说明:创建坐标系 .创建临时坐标系 用法: #include <uf.h> ...

  5. 【NX二次开发】移动WCS坐标系

    说明:移动WCS坐标系 用法: #include <uf.h> #include <uf_csys.h> extern DllExport void ufusr(char *p ...

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

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

  7. NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))

    在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...

  8. NX二次开发-基于MFC界面对话框与NX交互的开发

    打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...

  9. NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条

    半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...

  10. NX二次开发-UDO用户自定义对象(UFUN)【持续完善】

    每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...

随机推荐

  1. 通过 Netty、ZooKeeper 手撸一个 RPC 服务

    说明 项目链接 微服务框架都包括什么? 如何实现 RPC 远程调用? 开源 RPC 框架 限定语言 跨语言 RPC 框架 本地 Docker 搭建 ZooKeeper 下载镜像 启动容器 查看容器日志 ...

  2. 【实用小技巧】freemarker模板中文乱码问题解决

    freemarker简单模板如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content- ...

  3. 简单聊聊VisualStudio的断点调试

    这节聊聊如何使用VisualStudio进行断点调试. 在debug过程中,我们有时需要查看程序在运行到某一行代码时,上下文中的变量或者一些其他的数据是什么样的,我们就要设置断点(Breakpoint ...

  4. Ubuntu部署项目

    一.Ubuntu目录结构 目录 说明 bin 存放二进制可执行文件(ls,cat,mkdir等) .exe== boot 存放用于系统引导时使用的各种文件 开机引导 dev 用于存放设备文件 打印机啥 ...

  5. .NET之WebAPI

    介绍 通过一个简单的项目,总结一下常用的几种WebApi编写方式以及请求方式. 本文示例代码环境:vs2019.net5.MySQL 正文前准备 新创建了一个.Net5 WebAPI程序,安装组件 & ...

  6. Morgan Stanley Books List:经典金融书籍推荐

    一.经济学 1. 中华帝国的专制制度,佛朗索瓦.魁奈 2. 资本论(共3卷),马恩全集 3. 国家竞争优势,麦克尔.波特 4. Essentials of corporate analysis, by ...

  7. Convert character array to string in MATLAB

    Matlab提取特征值是经常要读取多个图片文件,把文件名保存在数组中后再读取会出错.从stackoverflow中找到如下解决方法: I've a M by N matrix, each cell c ...

  8. copy和deep.copy

    https://blog.csdn.net/qq_32907349/article/details/52190796 加上crossin公众号上的可变对象与不可变对象 a=[1,2,3,[4]] b= ...

  9. [Python] 基本概念

    1.基本概念 三大特性:封装.继承.多态 继承:派生类继承基类的字段和方法 多态:对不同类型的变量进行相同的操作,却表现出不同的行为(例如对数字和字符做"+"运算) 封装:将数据和 ...

  10. 【山外笔记-工具框架】SVN版本控制系统

    [山外笔记-框架工具]SVN版本控制系统 学习资料: 1.本文打印版下载地址:[山外笔记-框架工具笔记]SVN版本控制工具-打印版.pdf 2.SVN和TortoiseSVN在线中文文档:http:/ ...