【NX二次开发】 获取产品曲面上多个点对应的面的垂直矢量!
说明:
选择一个产品面,选择面上的点,生成点在此面上的法线反向,生成直线。
生成矢量的起点坐标,和矢量方向信息。可用于三坐标测量,如果需要可以自己编个插件用!
效果图:

源码:
//------------------------------------------------------------------------------
//Callback Name: update_cb
//------------------------------------------------------------------------------ int Test003::update_cb(NXOpen::BlockStyler::UIBlock* block)
{
static tag_t face_tag = 0;
char msg[132] = "";
try
{
if (block == face_select0)
{
//---------Enter your code here-----------
std::vector<TaggedObject*>objects = face_select0->GetSelectedObjects(); //选面,得到的TAG赋给objects
face_tag = objects[0]->Tag();//将C++的TAG转换成C的TAG
}
else if (block == point0)
{
//---------Enter your code here-----------
double ref_pnt[3] = { 0,0,0 }; //输入一个点
Point3d originPt = this->point0->GetProperties()->GetPoint("Point");
ref_pnt[0] = originPt.X;
ref_pnt[1] = originPt.Y;
ref_pnt[2] = originPt.Z; double parm1[2];
double face_pnt[3] = { 0,0,0 };
UF_MODL_ask_face_parm(face_tag, ref_pnt, parm1, face_pnt); //分析点在面上U,V方向的位置 double point[3];
double u1[3];
double v1[3];
double u2[3];
double v2[3];
double unit_norm[3] = { 0.0, 0.0, 0.0 };
double radii[2];
UF_MODL_ask_face_props(face_tag, parm1, point, u1, v1, u2, v2, unit_norm, radii); unit_norm[0] = -unit_norm[0];
unit_norm[1] = -unit_norm[1];
unit_norm[2] = -unit_norm[2]; UF_UI_open_listing_window();
sprintf(msg, "起点位置: %.2f,%.2f,%.2f\n", ref_pnt[0], ref_pnt[1], ref_pnt[2]);
UF_UI_write_listing_window(msg);
sprintf(msg, "矢量方向: %.2f,%.2f,%.2f\n", unit_norm[0], unit_norm[1], unit_norm[2]);
UF_UI_write_listing_window(msg);
//欢迎加入二次开发QQ群:753801561 本源码仅自学请不要转载
UF_CURVE_line_t line_coords;
tag_t line = 0;
line_coords.start_point[0] = ref_pnt[0];
line_coords.start_point[1] = ref_pnt[1];
line_coords.start_point[2] = ref_pnt[2];
line_coords.end_point[0] = ref_pnt[0] + unit_norm[0];
line_coords.end_point[1] = ref_pnt[1] + unit_norm[1];
line_coords.end_point[2] = ref_pnt[2] + unit_norm[2];
UF_CURVE_create_line(&line_coords, &line);
}
}
catch (exception& ex)
{
//---- Enter your exception handling code here -----
Test003::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
}
return 0;
}
【NX二次开发】 获取产品曲面上多个点对应的面的垂直矢量!的更多相关文章
- NX二次开发-获取WCS坐标系的原点坐标和矩阵标识
函数:UF_CSYS_ask_csys_info() 函数说明:获取工作坐标系对象的标识符. 用法: #include <uf.h> #include <uf_csys.h> ...
- NX二次开发-获取WCS标识
函数:UF_CSYS_ask_wcs() 函数说明:获取工作坐标系对象的标识. 用法: 1 #include <uf.h> 2 #include <uf_csys.h> 3 e ...
- NX二次开发-NXOPEN_DimensionCollection遍历图纸上的所有标注尺寸
NX11+VS2013 #include <NXOpen/Drawings_DrawingSheet.hxx> #include <NXOpen/Drawings_DrawingSh ...
- NX二次开发-获取面的法向向量UF_MODL_ask_face_data
NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...
- NX二次开发-获取切换按钮的当前状态UF_MB_ask_toggle_state
NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...
- NX二次开发-获取按钮的ID UF_MB_ask_button_id
NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...
- NX二次开发-获取WCS标识UF_CSYS_ask_wcs
NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...
- NX二次开发-获取坐标系信息UF_CSYS_ask_csys_info
NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...
- NX二次开发-获取矩阵值UF_CSYS_ask_matrix_values
NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...
随机推荐
- 一个或多个筛选器或者Listeners启动失败 的问题探索以及解决方案
2020年10月9日更新 经过本人对SSM框架理解的加深和对IDEA工具使用的熟悉,现提出一种新的解决办法,以前的解决办法可能存在问题 1. 问题描述: 使用IDEA作为开发工具,使用Maven作为项 ...
- Gaussian Mixture Model
Gaussian Mixture Model (GMM).事实上,GMM 和 k-means 很像,不过 GMM 是学习出一些概率密度函数来(所以 GMM 除了用在 clustering 上之外,还经 ...
- 笔记本用HDMI转VGA 使用双屏办公 听语音
笔记本用HDMI转VGA 使用双屏办公 听语音 原创 | 浏览:1212 | 更新:2019-11-12 12:16 1 2 3 4 5 6 7 分步阅读 笔记本使用 转接头扩展出一块屏幕.使用多屏办 ...
- 2020 Kali Linux Zenmap 安装(可视化界面)
跟着教程学Kali Linux,我安装的2020版的,发现Zemap没被预装. 1.下载 zenmap https://nmap.org/download.html 2.rpm转deb 2020 Ka ...
- 使用 yum-cron 自动更新 Linux系统
使用 yum-cron 自动更新 Linux系统 Linux系统技术交流QQ群(1675603)验证问题答案:刘遄 我知道如何使用 yum 命令行 更新系统,但是我想用 cron 任务自动更新软件 ...
- @JSONField与@DateTimeFormat 注解(Day_21)
@JSONField的常用参数说明 @JSONField(ordinal = 1) //指定json序列化的顺序 @JSONField(serialize = false) //json序列 ...
- mysql数据库-备份与还原实操
目录 备份工具 1 基于 LVM 的快照备份(几乎热备) 2 数据库冷备份和还原 3 mysqldump备份工具 3.1 实战备份策略 3.1.1 全备份 3.1.2 分库分表备份 3.2 mysql ...
- error – Public key for *.rpm is not installed (--nogpgcheck)
docker容器删除的东西比较多,有很多东西都没有,配置上源后发现有也问题 第一是源的选择不对应系统版本,第二是找不到gpgcheck文件 如果一时半会找不到gpgchenck file,使用 --n ...
- rocketmq常见问题及使用 新手篇
一 部署阶段 1.启动命令 nameServer启动:nohup sh bin/mqnamesrv -n ip地址:9876 & broker启动:nohup sh bin/mqbroker ...
- scrapy使用response.body时编码问题
scrapy使用response.body时编码问题 摘要:scrapy使用response.body时编码问题.如果在使用responses.body获取数据时,需要将其编码转换成unicode,即 ...