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坐标最高和最低的面,高亮显示的更多相关文章

  1. NX二次开发-算法篇-找相切面

    方法1:通过判断相邻面公共边的光顺性来找相切面 1 #include <uf.h> 2 #include <uf_modl.h> 3 #include <uf_obj.h ...

  2. NX二次开发-算法篇-判断找到两个数组里不相同的对象

    NX9+VS2012 #include <uf.h> #include <uf_curve.h> #include <uf_modl.h> #include < ...

  3. NX二次开发-算法篇-创建最大边界包容盒

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

  4. NX二次开发-算法篇-vector函数排序(例子:遍历所有点并排序)

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...

  5. NX二次开发-算法篇-冒泡排序(例子:遍历所有点并排序)

    NX9+VS2012 #include <uf.h> #include <uf_ui.h> #include <uf_curve.h> #include <u ...

  6. NX二次开发-如何在类外面定义一个结构体

    #include <uf.h> #include <uf_obj.h> #include <uf_part.h> using namespace NXOpen; u ...

  7. NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数

    在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...

  8. NX二次开发-使用NXOPEN C++向导模板做二次开发

    版本 NX9+VS2012 1.怎么往VS软件里添加VC,C#,VB向导模板 先到NX安装目录下UGOPEN文件夹里找到这三个文件夹 拷贝到VS的安装目录下 这里有几个注意事项,VS2017,VS20 ...

  9. NX二次开发-基于MFC界面的NX对Excel读写操作(OLE方式(COM组件))

    NX二次开发API里没有对EXCAL读写操作的相关函数,市面上有很多种方法去实现,比如UFUN调KF,ODBC,OLE(COM组件)等等.这里我是用的OLE(COM组件)方式去做的,这种在VC上创建的 ...

随机推荐

  1. ES6常用点

    原文    http://es6.ruanyifeng.com/#docs 变量--------------------------------------------- 1.let声明.const声 ...

  2. spring事件监听(eventListener)

    原理:观察者模式 spring的事件监听有三个部分组成,事件(ApplicationEvent).监听器(ApplicationListener)和事件发布操作. 事件 事件类需要继承Applicat ...

  3. LOJ6485 LJJ 学二项式定理 解题报告

    LJJ 学二项式定理 题意 \(T\)组数据,每组给定\(n,s,a_0,a_1,a_2,a_3\),求 \[ \sum_{i=0}^n \binom{n}{i}s^ia_{i\bmod 4} \] ...

  4. NX二次开发-自定义添加右键菜单RegisterConfigureContextMenuCallback

    首先声明这个知识我以前不知道,是夏天的时候看到别人在唐工的QQ群里问的,唐工说西门子官方有这个例子.那个时候我因为在忙其他事情,也就没去研究那个右键菜单到底是怎么做的.关于自定义添加右键菜单Regis ...

  5. php开发面试题---Linux常用命令大全

    php开发面试题---Linux常用命令大全 一.总结 一句话总结: ls 查看目录中的文件 cd .. 返回上一级目录 cat 查看文件内容 touch 新建文件或修改时间 1.linux 系统信息 ...

  6. mail----java发送普通邮件

    package com.mail; import java.io.UnsupportedEncodingException; import java.util.Date; import java.ut ...

  7. HTTP协议的消息头:Content-Type和Accept的作用 转载https://www.cnblogs.com/lexiaofei/p/7289436.html

    一.背景知识 1.概述 Http报头分为通用报头,请求报头,响应报头和实体报头. 请求方的http报头结构:通用报头|请求报头|实体报头 响应方的http报头结构:通用报头|响应报头|实体报头 Acc ...

  8. Educational Codeforces Round 56 D - Beautiful Graph

    ​题目大意: 在给定的一个图中(可能不连通) 给每个点赋值1.2.3 使得一条边上的两个端点点权相加为奇数 求方案数 一条满足条件的路径上的点权必为一奇一偶交替 偶数只有2 奇数有1.3 若位于1.3 ...

  9. C#十六进制值0x12,是一个无效字符 - 程序园

    原文:C#十六进制值0x12,是一个无效字符 - 程序园 我正在加载很多xml文档,其中一些返回错误,如“十六进制值0x12,是无效字符”,并且有不同的字符.如何删除它们?   我在这里做了一个小的研 ...

  10. python生成阿里云云直播推流播流地址

    申请一个阿里云账号,进入控制台,添加云直播工能,就可以获得相关数据, 直接上代码,阿里云接口文档https://cloud.tencent.com/document/product/267/7977 ...