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上创建的 ...
 
随机推荐
- RabbitMQ:从零开始
			
目录 一.介绍 二.安装 三.基本配置 四.Java Demo 五.基础API使用 六.ACK机制 七.消息的持久化 八.消息的公平分发 九.消息的优先级 十.消息的路由分发 十一.Spring集成 ...
 - safari浏览器中获取指定时间的毫秒数
			
最近在项目中,发现时间转换,在firefox和chrome中可以正确的显示,但是在Safari中显示NaN.在网上查了下,发现Safari不支持 YYYY-MM-DD HH:MM:SS 这个时间格式, ...
 - ECMAScript 6学习总结
			
学习ECMAScript 6 一.什么是ES6 ECMAScript6是ECMAScript的升级,实现用来编写复杂程序项目. 二.ECMAScript和JavaScript的关系 JavaScrip ...
 - HDU - 1712   (分组背包模板)
			
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1712 题意:给你n个课程,每个课程有很多种学习方法,用的时间和取得的效果都不一样,现在你只有m天时间用来学 ...
 - 【spring】1.2、Spring Boot创建项目
			
Spring Boot创建项目 在1.1中,我们通过"Spring Starter Project"来创建了一个项目,实际上是使用了Pivotal团队提供的全新框架Spring B ...
 - Jeecg集成Swagger-ui
			
<context:component-scan base-package="springfox"/> <bean class="org.jeecgfra ...
 - 2019牛客多校第二场A-Eddy Walker
			
Eddy Walker 题目传送门 解题思路 因为走过所有的点就会停下来,又因为是从0出发的,所以当n>1时,在0停下来的概率为0,其他的为1/(n-1); 代码如下 #include < ...
 - 利用mysql数据库日志文件获得webshell
			
查看配置 show variables like '%general%'; 开启日志功能 set GLOBAL general_log='ON'; 设置日志存储路径 SET GLOBAL genera ...
 - 剑指offer——44连续子数组的最大和
			
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...
 - 20140724  菜单制作:制表位(段落->制表位->)
			
1.菜单制作:制表位(段落->制表位->) 叶轩楠·········· 上海大学 轩楠叶·········· 上海大学 楠轩叶·········· 上海大学 选完后要选“设置” 2.光盘制 ...