【NX二次开发】uf5945获得旋转矩阵、uf5947根据变换矩阵移动或复制对象
返回一个矩阵,可以绕任意轴旋转。
与uf5947结合可以将对象沿着任意轴进行旋转。不是所有对象都能用uf5947变换,带参的实体、部件都不可以用此函数变换。下面是旋转WCS的例子。
extern DllExport void ufsta(char *param, int *returnCode, int rlen)
{
UF_initialize();
tag_t wcs_id;
UF_CSYS_ask_wcs(&wcs_id); tag_t matrix_id = NULL_TAG;
double o_point[3];//旋转轴通过的点
double vec[3];//旋转轴方向
UF_CSYS_ask_csys_info(wcs_id, &matrix_id, o_point);
//获得 3x3矩阵数据
double wsc_9[9];
UF_CSYS_ask_matrix_values(matrix_id, wsc_9); //UF_MTX3_x_vec(wsc_9, vec);//绕X轴逆时针旋转
//UF_MTX3_y_vec(wsc_9, vec);//绕X轴逆时针旋转
UF_MTX3_z_vec(wsc_9, vec);//绕Z轴逆时针旋转 double angle = 90.0;
double matrix16[16]; //矩阵
int status;
uf5945(o_point, vec, &angle, matrix16, &status); int objects = 1; //数量
int move = 2; // 1 :移动 2 :复制
int layer = -1; //0:最初层; -1: 工作层; 1 - 256 : 指定层
int trace_curves = 2; //轨迹状态, 1 开, 2 关
tag_t wsc_t2 = NULL_TAG; //变化后坐标tag
//uf5947将某个obj进行移动或复制
uf5947(matrix16, &wcs_id, &objects, &move, &layer, &trace_curves, &wsc_t2, NULL, &status);//第二个对象 为被移动的对象 UF_CSYS_set_wcs(wsc_t2);
UF_terminate();
} extern int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}
效果:

将一个四方块,旋转复制变成3个试试:
源码:
extern DllExport void ufsta(char *param, int *returnCode, int rlen)
{
UF_initialize();
double o_point[3];//旋转轴通过的点
double vec[3];//旋转轴方向
tag_t tagBody1 = 45655;
tag_t tagBody2 = NULL_TAG;//复制的第一个体
tag_t tagBody3 = NULL_TAG;//复制的第二个体 tag_t wcs_id;
UF_CSYS_ask_wcs(&wcs_id);
tag_t matrix_id = NULL_TAG;
UF_CSYS_ask_csys_info(wcs_id, &matrix_id, o_point);
//获得 3x3矩阵数据
double wsc_9[9];
UF_CSYS_ask_matrix_values(matrix_id, wsc_9); //UF_MTX3_x_vec(wsc_9, vec);//绕X轴逆时针旋转
//UF_MTX3_y_vec(wsc_9, vec);//绕X轴逆时针旋转
UF_MTX3_z_vec(wsc_9, vec);//绕Z轴逆时针旋转 double angle = 120;
double matrix16[16]; //矩阵
int status;
uf5945(o_point, vec, &angle, matrix16, &status); int objects = 1; //数量
int move = 2; // 1 :移动 2 :复制
int layer = -1; //0:最初层; -1: 工作层; 1 - 256 : 指定层
int trace_curves = 2; //轨迹状态, 1 开, 2 关 //uf5947将某个obj进行移动或复制
uf5947(matrix16, &tagBody1, &objects, &move, &layer, &trace_curves, &tagBody2, NULL, &status);
uf5947(matrix16, &tagBody2, &objects, &move, &layer, &trace_curves, &tagBody3, NULL, &status); UF_terminate();
} extern int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}
效果:

【NX二次开发】uf5945获得旋转矩阵、uf5947根据变换矩阵移动或复制对象的更多相关文章
- 【NX二次开发】多种变换
变换的种类: uf5942 矩阵乘积变换 uf5943 平移变换 uf5944 缩放变换 uf5945 旋转变换 uf5946 镜像变换 最后使用 uf5947 实现uf5942-uf5946的变换. ...
- NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用
关于 在Block UI中UF_initialize();和UF_terminate();的使用 用Block UI作NX二次开发的时候,不需要在使用UFUN函数的时候加UF_initialize() ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
- NX二次开发-基于NX开发向导模板的NX对Excel读写操作(OLE方式(COM组件))
在看这个博客前,请读者先去完整看完:NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))https://ufun-nxopen.blog.csdn.net/article ...
- NX二次开发-基于MFC界面对话框与NX交互的开发
打开VS2013 点击新建,选择MFC DLL 点击确定 点下一步 什么都不改,直接点完成 进来之后先编译一下,看是否编译成功 打开项目属性,更改这几处 $(UGII_BASE_DIR)\ugopen ...
- NX二次开发-BlockUI对话框嵌套MFC对话框制作进度条
半年前在一些QQ群看到有大神NX二次开发做出了进度条,那个时候我还不会弄,也不知道怎么弄得,后来断断续续得研究了一下,直到今天我把它做出来了.内心还是很喜悦的!回想自己这两年当初从没公司肯给我做NX二 ...
- NX二次开发-UDO用户自定义对象(UFUN)【持续完善】
每当提起UDO总是会让我想起大专毕业那会失业找工作,后来有个宝贵机会去了软件公司上班,拿到了我人生中的第一个NX二次开发项目,一个关于测量汽车前后左右摄像头的项目.当时那个项目就用到了UDO,对于只看 ...
- NX二次开发-UFUN计算两点距离UF_VEC3_distance
NX11+VS2013 #include <uf.h> #include <uf_curve.h> #include <uf_vec.h> UF_initializ ...
- NX二次开发-UFUN拉伸函数UF_MODL_create_extruded
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...
随机推荐
- XCTF-web_python_template_injection
web_python_template_injection 这里涉及到flask的ssti漏洞(服务端模板注入). 简单点说就是,在使用flask/jinja2的模板渲染函数render_templa ...
- LeetCode---42. 接雨水 (hard)
题目:42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例: 输入:height = [0,1,0,2,1,0,1,3,2,1,2, ...
- Postman报文进行解密之RSA私钥解密
接口返回的数据也是加密的,需要对数据解密才能看到返回的数据是否正确,就需要用RSA解密. 返回数据的解析可以在postman的Tests进行后置处理,获取加密后的返回数据: var data = JS ...
- 【Azure Developer】使用Microsoft Graph API 批量创建用户,先后遇见的三个错误及解决办法
问题描述 在先前的一篇博文中,介绍了如何使用Microsoft Graph API来创建Azure AD用户(博文参考:[Azure Developer]使用Microsoft Graph API 如 ...
- 基于 el-form 封装一个依赖 json 动态渲染的表单控件
nf-form 表单控件的功能 基于 el-form 封装了一个表单控件,包括表单的子控件. 既然要封装,那么就要完善一些,把能想到的功能都要实现出来,不想留遗憾. 毕竟UI库提供的功能都很强大了,不 ...
- PostgreSQL实现字符串拼接
在日常工作中会遇到将多行的值拼接为一个值展现,如果使用过Oracle数据库,可以使用list_agg的聚合函数来实现.那么PostgreSQL也有这样的功能,函数为string_agg.具体用法如 ...
- index详解
jQuery的 index 1.index() 获得向匹配的元素,从0开始计数.不给传递参数,返回值是 jQ对象的所有同辈的索引位置 :如果传递选择器代表,在该选择器下的所有索引位置:如果传递具体的j ...
- centOS 7 安装 CUPS 打印服务器,安装映美 FP-730K打印机共享
centOS 7 安装 CUPS 打印服务器,安装映美 FP-730K打印机共享 2017-09-13 16:27:02 mostone 阅读数 3698 版权声明:本文为博主原创文章,遵循CC ...
- 工作流引擎详解!工作流开源框架ACtiviti的详细配置以及安装和使用
创建ProcessEngine Activiti流程引擎的配置文件是名为activiti.cfg.xml的XML文件.注意与使用Spring方式创建流程引擎是不一样的 使用org.activiti.e ...
- java内部类与静态内部类对比
内部类 静态内部类 有一个隐式引用,指向实例化这个对象的外部类对象 没有这个附加指针 不支持静态字段(language15) 支持哦 不支持静态方法 (language15) 支持哦 接口中的内部类自 ...