【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 = ...
随机推荐
- Portswigger web security academy:OAth authentication vulnerable
Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...
- Redis数据结构—链表与字典
目录 Redis数据结构-链表与字典 链表 Redis链表节点的结构 Redis链表的表示 Redis链表用在哪 字典 Redis字典结构总览 Redis字典结构分解 哈希算法 解决键冲突 rehas ...
- 本地Markdown上传图片
本地Markdown上传图片 1.上传本地markdown文件到博客园 使用工具pycnblog 下载:https://github.com/dongfanger/PyCnblog 查看READ ME ...
- x小结:certutil -hashfile D:\1.exe MD5
在Win7上,MD5不要使用小写,在Win10上没有这个问题 x小结:certutil -hashfile D:\1.exe MD5certutil -hashfile D:\1.exe SHA1ce ...
- spec cpu2006 官网
https://www.spec.org/cpu2006/Docs/install-guide-unix.html
- Ansible_利用系统角色重用内容
一.红帽企业Linux系统角色 1.RHEL系统角色 名称 状态 角色描述 rhel-system-roles.kdump 全面支持 配置kdump崩溃恢复服务 rhel-system-roles.n ...
- Mysql不知道默认密码情况下登录/重置/忘记密码
场景一: 基础系统:linux 镜像:LAMP环境(Ubuntu 18.04 Apache PHP7.0) 问题:ERROR 1405 (28000): Access denied for user ...
- ScreenToGif: 屏幕录制神器
ScreenToGif:一款小众但很好用的屏幕录制神器 牛人干货 2020-01-07 00:23:08 今天干货君给大家介绍一款电脑屏幕录制神器-ScreenToGif . ScreenToGif ...
- IDEA 2019.2.4 破解安装教程
将下载的 IDEA 压缩包解压,找到 idealIU-2019.2.4.exe 安装文件,然后双击进行安装 安装完后不要运行,打开解压包中破解补丁与激活码文件夹,找到 jetbrains-agent. ...
- mysql开启远程访问和oracl用户锁定问题
开启mysql远程访问 Grant all privileges on *.* to 'root'@'%' identified by 'root'; Flush privileges; oracl锁 ...