说明:
选择一个产品面,选择面上的点,生成点在此面上的法线反向,生成直线。
生成矢量的起点坐标,和矢量方向信息。可用于三坐标测量,如果需要可以自己编个插件用!

效果图:

源码:

//------------------------------------------------------------------------------
//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二次开发】 获取产品曲面上多个点对应的面的垂直矢量!的更多相关文章

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

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

  2. NX二次开发-获取WCS标识

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

  3. NX二次开发-NXOPEN_DimensionCollection遍历图纸上的所有标注尺寸

    NX11+VS2013 #include <NXOpen/Drawings_DrawingSheet.hxx> #include <NXOpen/Drawings_DrawingSh ...

  4. NX二次开发-获取面的法向向量UF_MODL_ask_face_data

    NX9+VS2012 #include <uf.h> #include <uf_modl.h> #include <uf_obj.h> #include <u ...

  5. NX二次开发-获取切换按钮的当前状态UF_MB_ask_toggle_state

    NX9+VS2012 1.打开D:\Program Files\Siemens\NX 9.0\UGII\menus\ug_main.men 找到装配和PMI,在中间加上一段 TOGGLE_BUTTON ...

  6. 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 ...

  7. NX二次开发-获取WCS标识UF_CSYS_ask_wcs

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...

  8. NX二次开发-获取坐标系信息UF_CSYS_ask_csys_info

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...

  9. NX二次开发-获取矩阵值UF_CSYS_ask_matrix_values

    NX9+VS2012 #include <uf.h> #include <uf_csys.h> UF_initialize(); //获取WCS标识 tag_t WcsId = ...

随机推荐

  1. 【axios】get/post请求params/data传参总结

    axios中get/post请求方式 1. 前言 最近突然发现post请求可以使用params方式传值,然后想总结一下其中的用法. 2.1 分类 get请求中没有data传值方式 2.2 get请求 ...

  2. 【实用小技巧】Access denied for user 'root'@'localhost' 报错解决

    到mysql安装目录修改my.ini文件,在文件末尾追加一句 skip-grant-tables 然后重启mysql服务即可

  3. spring boot 与 Mybatis整合(*)

    在pom.xml文件中加入数据库.spring-mybatis整合 <!-- spring boot 整合mybatis --> <dependency> <groupI ...

  4. 一文详解MySQL如何同时自增自减多个字段

    本文将带大家聊一下如何同时自增自减多个字段 开始之前,先分享一套MySQL教程,小白入门或者学习巩固都可以看 MySQL基础入门-mysql教程-数据库实战(MySQL基础+MySQL高级+MySQL ...

  5. Django(5)django配置信息

    前言 Django的配置文件settings.py用于配置整个网站的环境和功能,核心配置必须有项目路径.密钥配置.域名访问权限.App列表.中间件.资源文件.模板配置.数据库的连接方式 基本配置信息 ...

  6. C++的指针相关概念

    引言 初入c++,肯定会对指针这个概念非常熟悉.但是为什么c/c++要使用指针? 其实每一种编程语言都使用指针,指针并不只是C/C++的独有特性.C++将指针暴露给了用户(程序员),而Java和C#等 ...

  7. SparkSQL电商用户画像(五)之用户画像开发(客户基本属性表)

    7.电商用户画像开发 7.1用户画像--数据开发的步骤 u 数据开发前置依赖 -需求确定 pv uv topn -建模确定表结构 create table t1(pv int,uv int,topn ...

  8. opencv——机器视觉检测和计数

    引言 在机器视觉中,有时需要对产品进行检测和计数.其难点无非是对于产品的图像分割. 由于之前网购的维生素片,有时候忘了今天有没有吃过,就想对瓶子里的药片计数...在学习opencv以后,希望实现对于维 ...

  9. Python re 截取文本中IP地址及用户名

    文本示例: ts=2019-07-10T06:43:06523942Z pid=1875 tid=6320 version=e73c536 proto=http id=5a61a613e395f883 ...

  10. Linux_软件包管理基本概述

    一.回去软件包的途径 1.系统发行版的光盘或官方的服务器镜像站 http://mirrors.aliyun.com        //阿里云镜像站 http://mirrors.sohu.com    ...