NX 二次开发,线性移动uf5943
#include <uf.h>
#include <uf_modl.h>
#include <uf_part.h>
#include <uf_modl_primitives.h>
#include <uf_object_types.h>
#include <uf_CSYS.h>
#include <UF_VEC.h>
#include <UF_MTX.h>
#include <uf_trns.h> tag_t point_tag=NULL_TAG;
double point[3]={0,0,0};
UF_CURVE_create_point(point,&point_tag);//创建点
/*----------------------------*/
double matrix [16];
double O1[3]={0.0,0.0,1.0}; //变换Z+1
tag_t object2=NULL_TAG; //变化后tag
int status;
uf5943(O1,matrix); //矩阵方法(线性)
//矩阵的实现
int numbers=1; // 阵列数量
int tran=2; // 1 :移动 2 :复制
int layer=-1; // -1: 工作层
int trace_curves=2;
uf5947(matrix,&point_tag,&numbers,&tran,&layer,&trace_curves,&object2,NULL,&status);
UF_CSYS_set_wcs_display(1); //显示工作坐标

封装
static void moveObjtect(tag_t object, double X, double Y,double Z)
{
tag_t csys_tag = NULL_TAG;
tag_t matrix_id = NULL_TAG;
double csys_origin[3];
UF_CSYS_ask_wcs(&csys_tag);
UF_CSYS_ask_csys_info(csys_tag, &matrix_id, csys_origin);
double min_corner[3], directions[3][3], distances[3];
UF_MODL_ask_bounding_box_exact(object, csys_tag, min_corner, directions, distances);
UF_CSYS_map_point(UF_CSYS_WORK_COORDS, min_corner, UF_CSYS_ROOT_WCS_COORDS, min_corner);
double matrix[16]; //矩阵
double O1[3] = { X - min_corner[0],Y - min_corner[1],Z }; //变换Z+1
tag_t object2 = NULL_TAG; //变化后tag
int status;
uf5943(O1, matrix); //矩阵方法(线性)
//矩阵的实现
int numbers = 1; // 阵列数量
int tran = 1; // 1 :移动 2 :复制
int layer = 0; // -1: 工作层
int trace_curves = 2;
uf5947(matrix, &object, &numbers, &tran, &layer, &trace_curves, &object2, NULL, &status);
if (X > 0 && Y == 0)
{
double min_corner1[3], directions1[3][3], distances1[3];
UF_MODL_ask_bounding_box_exact(object, csys_tag, min_corner1, directions1, distances1);
double origin[3] = { min_corner1[0] + distances1[0],min_corner1[1],0.0 };
tag_t temp_csys = NULL_TAG;
UF_CSYS_create_temp_csys(origin, matrix_id, &temp_csys);
UF_CSYS_set_wcs(temp_csys);
}
else
{
double min_corner1[3], directions1[3][3], distances1[3];
UF_MODL_ask_bounding_box_exact(object, csys_tag, min_corner1, directions1, distances1);
double origin[3] = { min_corner1[0],min_corner1[1]+distances1[1],0.0 };
tag_t temp_csys = NULL_TAG;
UF_CSYS_create_temp_csys(origin, matrix_id, &temp_csys);
UF_CSYS_set_wcs(temp_csys);
}
}
NX 二次开发,线性移动uf5943的更多相关文章
- 【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. ...
- NX二次开发-UFUN拉伸函数UF_MODL_create_extruded2
NX9+VS2012 //NX二次开发中常用拉伸函数为UF_MODL_create_extruded2,但是此函数不能拉伸片体, //想要拉伸片体用函数UF_MODL_create_extruded. ...
随机推荐
- echarts:双y轴图表刻度均匀分布问题
今天分享一个小问题,内容不多. 双y轴图表中,为了图表的美观,经常会隐藏一侧的y轴刻度线,仅显示一侧的刻度线.那么问题就来了,两个y轴的数据数值大小不同,常常会导致刻度线的刻度分布不均匀,该如何解决呢 ...
- CCF 201903-1 小中大
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- A - Yet Another Tetris Problem
A - Yet Another Tetris Problem 思路:判读一堆数字是不是同奇数偶数,写一个函数,循环遍历,然后判断是否同为奇数偶数. 代码: #include<iostream&g ...
- docker 安装mongodb
一.安装mongodb 我们首先改一下镜像源,避免拉去速度太慢 创建daemon.json文件:位于/etc/docker目录下: 登录阿里云 即可 2.docker 搜索mongo镜像 然后pull ...
- andriod app更新
对于安卓用户来说,手机应用市场说满天飞可是一点都不夸张,比如小米,魅族,百度,360,机锋,应用宝等等,当我们想上线一款新版本APP时,先不说渠道打包的麻烦,单纯指上传APP到各大应用市场的工作量就已 ...
- 梦想Android版CAD控件(安卓CAD二次开发,安卓CAD控件)2023.02.26更新
下载地址:https://www.mxdraw.com/ndetail_40240.html1. 增加willBeReturnStart事件2. 增加使用OpenGL缓存3. 优化界面响应时间4. 修 ...
- zk-复制安装
Zookeeper系列一:Zookeeper介绍.Zookeeper安装配置.ZK Shell的使用 一.Zookeeper介绍 1. 介绍Zookeeper之前先来介绍一下分布式 1.1 分 ...
- pip python的包成功,但是import的时候报错
今天,一位同学线上反馈import python包失败了,同时附带两张图: 图1.报错代码 图2.报错提示 结合上面两个图片,我们发现这个同学import全部失败,初步怀疑该同学的本地环境上没有num ...
- chatGPT-meta抗衡版本
chatGPT-meta抗衡版本 链接:https://mp.weixin.qq.com/s/MbZTfVgxx221Eo9pl1h80w 内置 git代码 LLaMA 项目地址:https://gi ...
- linux并行执行线程
资料来源: (1) https://www.jianshu.com/p/d8d58846c53f(作者:黄甫一) 1.并行任务较少时: (1) 给需要并行运行的命令行在结尾加上"&& ...