当前位置: 首页 > news >正文

NXOpenC++布尔求和命令

一、概述

        在进行批量布尔求和时,采用NXOpenC++的方式要比UFun的方式美观的多,个人认为,ufun中UF_MODL_unite_bodies函数采用的是两两进行合并,显示多个步骤,而NXOpenC++采用的是一个工具体和多个目标体进行合并,最终只显示一个步骤。具体原因个人目前不太清楚。

二、布尔求和

NXOpenC++

   NXOpen::Session *theSession = NXOpen::Session::GetSession();NXOpen::Part *workPart(theSession->Parts()->Work());NXOpen::Part *displayPart(theSession->Parts()->Display());vector<tag_t> thecycleTAG;//找到工作部件所有的体tag_t WorkPartTag1 = UF_PART_ask_display_part();tag_t objTag1 = NULL_TAG;UF_OBJ_cycle_objs_in_part1(WorkPartTag1, UF_solid_type, &objTag1);int type1;int subtype1;while (objTag1 != NULL_TAG){UF_OBJ_ask_type_and_subtype(objTag1, &type1, &subtype1);if (!subtype1){thecycleTAG.push_back(objTag1);}UF_OBJ_cycle_objs_in_part1(WorkPartTag1, UF_solid_type, &objTag1);}// ----------------------------------------------//   Menu: 插入(S)->组合(B)->合并(U)...// ----------------------------------------------NXOpen::Features::BooleanFeature *nullNXOpen_Features_BooleanFeature(NULL);NXOpen::Features::BooleanBuilder *booleanBuilder1;booleanBuilder1 = workPart->Features()->CreateBooleanBuilderUsingCollector(nullNXOpen_Features_BooleanFeature);	//建模公差booleanBuilder1->SetTolerance(0.001);//选择布尔类型——求和BooleanTypeUnitebooleanBuilder1->SetOperation(NXOpen::Features::Feature::BooleanTypeUnite);//目标体的设置NXOpen::Body *body1(dynamic_cast<NXOpen::Body *>(NXOpen::NXObjectManager::Get(thecycleTAG[0])));bool added1;added1 = booleanBuilder1->Targets()->Add(body1);//工具体设置	NXOpen::ScCollector *scCollector2;//定义一个工具收集器scCollector2 = workPart->ScCollectors()->CreateCollector();std::vector<NXOpen::Body *> bodies1;//获得工具体的bodyfor (int i = 1; i < thecycleTAG.size(); i++){NXOpen::Body *body(dynamic_cast<NXOpen::Body *>(NXOpen::NXObjectManager::Get(thecycleTAG[i])));bodies1.push_back(body);}NXOpen::BodyDumbRule *bodyDumbRule1;bodyDumbRule1 = workPart->ScRuleFactory()->CreateRuleBodyDumb(bodies1, true);std::vector<NXOpen::SelectionIntentRule *> rules1(1);rules1[0] = bodyDumbRule1;scCollector2->ReplaceRules(rules1, false);//设置目标体booleanBuilder1->SetToolBodyCollector(scCollector2);//创建、销毁NXOpen::NXObject *nXObject1;nXObject1 = booleanBuilder1->Commit();booleanBuilder1->Destroy();

UFUN

    std::vector<NXOpen::TaggedObject *> selectbodys = selection0->GetSelectedObjects();//TaggedObject转化tag_tstd::vector<tag_t> body_ZX, body_FX;for (int i = 0; i < (int)selectbodys.size(); i++){body_ZX.push_back(selectbodys[i]->Tag());body_FX.push_back(selectbodys[i]->Tag());}std::reverse(body_FX.begin(), body_FX.end());//反向排序//进行循环int j = 0;for (int i = 0; i < (int)body_ZX.size(); i++){for ( j =0 ; j < (int)body_FX.size(); j++){if (body_ZX[i] != body_FX[j]){findbodyTAG = NULL_TAG;findBody(body_ZX[i]); //找体if (findbodyTAG != NULL_TAG){creatUnite(body_FX[j], body_ZX[i]); //通过判断求和}}}if ((int)body_FX.size() > 1)//反向减一{body_FX.pop_back();}j = (int)body_FX.size();}

原模型

NXOpenC++

UFUN

http://www.lryc.cn/news/270968.html

相关文章:

  • ubuntu python播放MP3,wav音频和录音
  • Rust学习笔记000 安装
  • python AI五子棋对战
  • 图文证明 费马,罗尔,拉格朗日,柯西
  • CEC2017(Python):粒子群优化算法PSO求解CEC2017(提供Python代码)
  • AUTOSAR从入门到精通- 虚拟功能总线(RTE)(一)
  • B/S架构云端SaaS服务的医院云HIS系统源码,自主研发,支持电子病历4级
  • 看懂基本的电路原理图(入门)
  • 赫夫曼树基本数据结构
  • 10TB海量JSON数据从OSS迁移至MaxCompute
  • LLM之RAG实战(九)| 高级RAG 03:多文档RAG体系结构
  • Windows电脑引导损坏?按照这个教程能修复
  • 记Android字符串资源支持的参数类型
  • Java实现树结构(为前端实现级联菜单或者是下拉菜单接口)
  • MySQL中常用的数据类型
  • HTML+CSS+JS制作三款雪花酷炫特效
  • [C#]使用ONNXRuntime部署一种用于边缘检测的轻量级密集卷积神经网络LDC
  • ZigBee案例笔记 - 无线点灯
  • Debezium日常分享系列之:向 Debezium 连接器发送信号
  • 《C#程序设计教程》总复习
  • 为什么ChatGPT选择了SSE,而不是WebSocket?
  • appium入门基础
  • jsp介绍
  • Debian安装k8s记录
  • 第6课 用window API捕获麦克风数据并加入队列备用
  • 图片预览 element-plus 带页码
  • 【小白专用】winform启动界面+登录窗口 更新2024.1.1
  • 自动化网络故障修复管理
  • Git:常用命令(二)
  • Oracle 12c rac 搭建 dg