1. NX9+VS2012
  2.  
  3. #include <uf.h>
  4. #include <uf_evalsf.h>
  5. #include <NXOpen/Body.hxx>
  6. #include <NXOpen/Face.hxx>
  7. #include <uf_disp.h>
  8.  
  9. public:
  10.  
  11. void SelectBody();
  12.  
  13. void SelectUVFace::SelectBody()
  14. {
  15. UF_initialize();//初始化
  16.  
  17. //获取体收集器控件
  18. PropertyList* BodySelectProps = bodySelect0->GetProperties();
  19. std::vector<NXOpen::TaggedObject *> Bodys = BodySelectProps->GetTaggedObjectVector("SelectedObjects");
  20. delete BodySelectProps;
  21. BodySelectProps = NULL;
  22.  
  23. NXOpen::Body *mybody = dynamic_cast<NXOpen::Body *>(Bodys[]);//获取选择的体
  24.  
  25. std::vector<Face*> face = mybody->GetFaces();//通过体获得所有面
  26.  
  27. double z = -;
  28. double z1 = ;
  29. tag_t highest = NULL;//最高面TAG
  30. tag_t lowest = NULL;//最低面TAG
  31. for (int i = ; i < face.size(); i++)//循环找到所有的面
  32. {
  33. //face[i]->Highlight();//高亮所有面
  34. UF_EVALSF_p_t evaluator = NULL;
  35. double uv_min_max[] = {0.0, 1.0, 0.0, 1.0};
  36. UF_EVALSF_initialize_2(face[i]->Tag(), &evaluator);//初始化一个面评估器结构
  37. UF_EVALSF_ask_face_uv_minmax(evaluator, uv_min_max);//计算u,v参数空间一个面的最小值、最大值
  38.  
  39. double uv_pair[] = {0.5 * (uv_min_max[] + uv_min_max[]), 0.5 * (uv_min_max[] + uv_min_max[])};
  40. UF_MODL_SRF_VALUE_t surf_eval;
  41. UF_EVALSF_evaluate(evaluator, UF_MODL_EVAL_ALL, uv_pair, &surf_eval);
  42.  
  43. Point3d origin(surf_eval.srf_pos[], surf_eval.srf_pos[], surf_eval.srf_pos[]);//得到UV0.5的XYZ点坐标
  44. Vector3d vector1(surf_eval.srf_unormal[], surf_eval.srf_unormal[], surf_eval.srf_unormal[]);//得到UV面的向量
  45. UF_EVALSF_free(&evaluator);
  46.  
  47. if (z>surf_eval.srf_pos[])//判断当Z值大于UV点Z值的时候
  48. {
  49. z = z;
  50. }
  51. else//当Z值小于UV点Z值的时候
  52. {
  53. z = surf_eval.srf_pos[];//Z就等于UV点Z最大值
  54. highest = face[i]->Tag();//找到这个面
  55. }
  56.  
  57. if (z1<surf_eval.srf_pos[])//判断当Z1值小于UV点Z值的时候
  58. {
  59. z1 = z1;
  60. }
  61. else//当Z1值大于UV点Z值的时候
  62. {
  63. z1 = surf_eval.srf_pos[];//Z1就等于UV点Z最小值
  64. lowest = face[i]->Tag();//找到这个面
  65. }
  66.  
  67. }
  68. //设置面高亮显示
  69. UF_DISP_set_highlight(highest, );
  70. UF_DISP_set_highlight(lowest, );
  71.  
  72. UF_terminate();//终止
  73. }

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. synchronized(this) 与 synchronized(class) 理解

    1.概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的. 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机 ...

  2. Magento站点优化方案

    Magento 是一个开源电子商务系统,尤其以扩展性高著称,但是很高的扩展性往往是牺牲了速度为代价的,虽然现在magento为速度提升做了很多工作,但是还是没能达到人们对速度的要求.既然如此还是很自然 ...

  3. 【SQL】Mysql常用sql语句记录

    1.创建用户.赋予权限 CREATE DATABASE scadm DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 's ...

  4. 【JNDI】Java Naming and Directory Interface

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...

  5. javascript的简洁的写法

    每种语言都有它特别的地方,对于JavaScript来说,使用var就可以声明任意类型的变量,这门脚本语言看起来很简单,然而想要写出优雅的代码却是需要不断积累经验的.本文利列举了JavaScript初学 ...

  6. CSS制作红桃心

    这里主要用到了before与after属性之前之后 代码: <!DOCTYPE html> <html> <head> <meta charset=" ...

  7. stl+数论——1247D

    其实也不算很难想,每个元素质因子分解后的p^c的p和c用pair的形式存在每个元素vector里 要去前面找一个数使得所有指数相加是k的倍数,那么把vector里的所有c 模 k,然后去找前面互补的数 ...

  8. 在ag-grid表格上实现类似Excel中的按下enter键自动跳转到下一行对应的输入框功能,Angular4开发

    最近的项目使用ag-grid在Angular中处理表格,收到个需求是要能够同时修改大量的数据,按下Enter键的时候,光标得自动跳到下一行的对应列上. 方法一:用ag-grid自带的 enterMov ...

  9. C++一些不常见的库及函数

    pbds库 平衡树:one , two #include <bits/extc++.h> using namespace std; using namespace __gnu_pbds; ...

  10. TLS/SSL 协议 - ServerHello

    ServerHello ServerHello消息的意义是将服务器选择的连接参数传送回客户端.这个消息的结构与ClientHello类似,只是每个字段只包含一个选项. 服务器无需支持客户端支持的最佳版 ...