NX二次开发-算法篇-随便找个不规则的体,找出面的中心点的Z坐标最高和最低的面,高亮显示
- NX9+VS2012
- #include <uf.h>
- #include <uf_evalsf.h>
- #include <NXOpen/Body.hxx>
- #include <NXOpen/Face.hxx>
- #include <uf_disp.h>
- public:
- void SelectBody();
- void SelectUVFace::SelectBody()
- {
- UF_initialize();//初始化
- //获取体收集器控件
- PropertyList* BodySelectProps = bodySelect0->GetProperties();
- std::vector<NXOpen::TaggedObject *> Bodys = BodySelectProps->GetTaggedObjectVector("SelectedObjects");
- delete BodySelectProps;
- BodySelectProps = NULL;
- NXOpen::Body *mybody = dynamic_cast<NXOpen::Body *>(Bodys[]);//获取选择的体
- std::vector<Face*> face = mybody->GetFaces();//通过体获得所有面
- double z = -;
- double z1 = ;
- tag_t highest = NULL;//最高面TAG
- tag_t lowest = NULL;//最低面TAG
- for (int i = ; i < face.size(); i++)//循环找到所有的面
- {
- //face[i]->Highlight();//高亮所有面
- UF_EVALSF_p_t evaluator = NULL;
- double uv_min_max[] = {0.0, 1.0, 0.0, 1.0};
- UF_EVALSF_initialize_2(face[i]->Tag(), &evaluator);//初始化一个面评估器结构
- UF_EVALSF_ask_face_uv_minmax(evaluator, uv_min_max);//计算u,v参数空间一个面的最小值、最大值
- double uv_pair[] = {0.5 * (uv_min_max[] + uv_min_max[]), 0.5 * (uv_min_max[] + uv_min_max[])};
- UF_MODL_SRF_VALUE_t surf_eval;
- UF_EVALSF_evaluate(evaluator, UF_MODL_EVAL_ALL, uv_pair, &surf_eval);
- Point3d origin(surf_eval.srf_pos[], surf_eval.srf_pos[], surf_eval.srf_pos[]);//得到UV0.5的XYZ点坐标
- Vector3d vector1(surf_eval.srf_unormal[], surf_eval.srf_unormal[], surf_eval.srf_unormal[]);//得到UV面的向量
- UF_EVALSF_free(&evaluator);
- if (z>surf_eval.srf_pos[])//判断当Z值大于UV点Z值的时候
- {
- z = z;
- }
- else//当Z值小于UV点Z值的时候
- {
- z = surf_eval.srf_pos[];//Z就等于UV点Z最大值
- highest = face[i]->Tag();//找到这个面
- }
- if (z1<surf_eval.srf_pos[])//判断当Z1值小于UV点Z值的时候
- {
- z1 = z1;
- }
- else//当Z1值大于UV点Z值的时候
- {
- z1 = surf_eval.srf_pos[];//Z1就等于UV点Z最小值
- lowest = face[i]->Tag();//找到这个面
- }
- }
- //设置面高亮显示
- UF_DISP_set_highlight(highest, );
- UF_DISP_set_highlight(lowest, );
- UF_terminate();//终止
- }
NX二次开发-算法篇-随便找个不规则的体,找出面的中心点的Z坐标最高和最低的面,高亮显示的更多相关文章
- NX二次开发-算法篇-找相切面
方法1:通过判断相邻面公共边的光顺性来找相切面 1 #include <uf.h> 2 #include <uf_modl.h> 3 #include <uf_obj.h ...
- NX二次开发-算法篇-判断找到两个数组里不相同的对象
NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include < ...
- NX二次开发-算法篇-创建最大边界包容盒
NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...
- NX二次开发-算法篇-vector函数排序(例子:遍历所有点并排序)
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...
- NX二次开发-算法篇-冒泡排序(例子:遍历所有点并排序)
NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...
- NX二次开发-如何在类外面定义一个结构体
#include <uf.h> #include <uf_obj.h> #include <uf_part.h> using namespace NXOpen; u ...
- NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数
在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...
- NX二次开发-使用NXOPEN C++向导模板做二次开发
版本 NX9+VS2012 1.怎么往VS软件里添加VC,C#,VB向导模板 先到NX安装目录下UGOPEN文件夹里找到这三个文件夹 拷贝到VS的安装目录下 这里有几个注意事项,VS2017,VS20 ...
- NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))
NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...
随机推荐
- synchronized(this) 与 synchronized(class) 理解
1.概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的. 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机 ...
- Magento站点优化方案
Magento 是一个开源电子商务系统,尤其以扩展性高著称,但是很高的扩展性往往是牺牲了速度为代价的,虽然现在magento为速度提升做了很多工作,但是还是没能达到人们对速度的要求.既然如此还是很自然 ...
- 【SQL】Mysql常用sql语句记录
1.创建用户.赋予权限 CREATE DATABASE scadm DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 's ...
- 【JNDI】Java Naming and Directory Interface
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Conn ...
- javascript的简洁的写法
每种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任意类型的变量,这门脚本语言看起来很简单,然而想要写出优雅的代码却是需要不断积累经验的.本文利列举了JavaScript初学 ...
- CSS制作红桃心
这里主要用到了before与after属性之前之后 代码: <!DOCTYPE html> <html> <head> <meta charset=" ...
- stl+数论——1247D
其实也不算很难想,每个元素质因子分解后的p^c的p和c用pair的形式存在每个元素vector里 要去前面找一个数使得所有指数相加是k的倍数,那么把vector里的所有c 模 k,然后去找前面互补的数 ...
- 在ag-grid表格上实现类似Excel中的按下enter键自动跳转到下一行对应的输入框功能,Angular4开发
最近的项目使用ag-grid在Angular中处理表格,收到个需求是要能够同时修改大量的数据,按下Enter键的时候,光标得自动跳到下一行的对应列上. 方法一:用ag-grid自带的 enterMov ...
- C++一些不常见的库及函数
pbds库 平衡树:one , two #include <bits/extc++.h> using namespace std; using namespace __gnu_pbds; ...
- TLS/SSL 协议 - ServerHello
ServerHello ServerHello消息的意义是将服务器选择的连接参数传送回客户端.这个消息的结构与ClientHello类似,只是每个字段只包含一个选项. 服务器无需支持客户端支持的最佳版 ...