NXopen c++快速分割体

news2024/11/23 18:55:57

通过对话框选择体以及分割该体的面,实现体的分割,相关资源请访问下载我的资源分享(上传需要时间审核)

		NXOpen::Session* theSession = NXOpen::Session::GetSession();
        NXOpen::Part* workPart(theSession->Parts()->Work());
        NXOpen::Part* displayPart(theSession->Parts()->Display());
       //根据对话框选择体和分割面
        std::vector<NXOpen::TaggedObject*>bodysSelected =  bodySelect0->GetSelectedObjects();
        std::vector<NXOpen::TaggedObject*>facesSelected = face_select0->GetSelectedObjects();
        
        NXOpen::Body* body1(dynamic_cast<NXOpen::Body*>(bodysSelected[0]));
        NXOpen::Face* face1(dynamic_cast<NXOpen::Face*>(facesSelected[0]));
        //根据选择的面创建基准平面
        NXOpen::Features::Feature* nullNXOpen_Features_Feature(NULL);
        NXOpen::Features::DatumPlaneBuilder* datumPlaneBuilder1;
        datumPlaneBuilder1 = workPart->Features()->CreateDatumPlaneBuilder(nullNXOpen_Features_Feature);

        NXOpen::Plane* plane1;
        plane1 = datumPlaneBuilder1->GetPlane();

        plane1->SetUpdateOption(NXOpen::SmartObject::UpdateOptionWithinModeling);
        plane1->SetMethod(NXOpen::PlaneTypes::MethodTypeDistance);

        std::vector<NXOpen::NXObject*> geom1(1);
        geom1[0] = face1;
        plane1->SetGeometry(geom1);
        plane1->SetFlip(false);
        plane1->SetReverseSide(false);
        NXOpen::Expression* expression3;
        expression3 = plane1->Expression();
        expression3->SetRightHandSide("0");
        plane1->SetAlternate(NXOpen::PlaneTypes::AlternateTypeOne);
        plane1->Evaluate();

        NXOpen::Features::Feature* feature1;
        feature1 = datumPlaneBuilder1->CommitFeature();
        NXOpen::Features::DatumPlaneFeature* datumPlaneFeature1(dynamic_cast<NXOpen::Features::DatumPlaneFeature*>(feature1));
        NXOpen::DatumPlane* datumPlane1;
        datumPlane1 = datumPlaneFeature1->DatumPlane();
       //体分割操作
        NXOpen::Features::SplitBody* nullNXOpen_Features_SplitBody(NULL);
        NXOpen::Features::SplitBodyBuilder* splitBodyBuilder1;
        splitBodyBuilder1 = workPart->Features()->CreateSplitBodyBuilderUsingCollector(nullNXOpen_Features_SplitBody);

        std::vector<NXOpen::Body*> bodies1(1);
        bodies1[0] = body1;
        NXOpen::BodyDumbRule* bodyDumbRule1;
        bodyDumbRule1 = workPart->ScRuleFactory()->CreateRuleBodyDumb(bodies1);

        NXOpen::ScCollector* scCollector1;
        scCollector1 = workPart->ScCollectors()->CreateCollector();

        std::vector<NXOpen::SelectionIntentRule*> rules1(1);
        rules1[0] = bodyDumbRule1;
        scCollector1->ReplaceRules(rules1, false);
        splitBodyBuilder1->SetTargetBodyCollector(scCollector1);

        std::vector<NXOpen::DatumPlane*> faces1(1);
        faces1[0] = datumPlane1;
        NXOpen::FaceDumbRule* faceDumbRule1;
        faceDumbRule1 = workPart->ScRuleFactory()->CreateRuleFaceDatum(faces1);

        std::vector<NXOpen::SelectionIntentRule*> rules2(1);
        rules2[0] = faceDumbRule1;
        splitBodyBuilder1->BooleanTool()->FacePlaneTool()->ToolFaces()->FaceCollector()->ReplaceRules(rules2, false);

        NXOpen::Features::Feature* splitFeature = splitBodyBuilder1->CommitFeature();
        std::vector< NXOpen::Body* >splitBody = splitFeature->GetBodies();
        //移除参数
        NXOpen::Features::RemoveParametersBuilder* removeParametersBuilder1;
        removeParametersBuilder1 = workPart->Features()->CreateRemoveParametersBuilder();

        for (int i=0; i< splitBody.size(); i++)
        {
            bool added1;
            added1 = removeParametersBuilder1->Objects()->Add(splitBody[i]);
        }
        NXOpen::NXObject* nXObject11;
        nXObject11 = removeParametersBuilder1->Commit();
       //删除创建的基准平面
        std::vector<NXOpen::TaggedObject*> objects1(1);
        objects1[0] = datumPlane1;
        int nErrs1;
        nErrs1 = theSession->UpdateManager()->AddObjectsToDeleteList(objects1);
        NXOpen::Session::UndoMarkId id1;
        id1 = theSession->NewestVisibleUndoMark();
        int nErrs2;
        nErrs2 = theSession->UpdateManager()->DoUpdate(id1);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1617342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux学习】初始冯诺漫体系结构

文章目录 认识冯诺依曼系统 认识冯诺依曼系统 什么是冯诺依曼体系结构&#xff1f; 冯诺依曼体系结构是一种将程序指令和数据以二进制形式存放在主存储器中&#xff0c;由中央处理器统一控制和执行的计算机系统结构。冯诺依曼体系结构实现了程序的可编程性和硬件与软件的分离&…

mmdeploy框架转化模型

文章目录 1 从源码编译1.1 安装onnxruntime后端1.2 build mmdeploy1.3 install model converter 2 模型转换2.1 deploy用法2.2 示例 1 从源码编译 参考链接 reference2 git clone -b main https://github.com/open-mmlab/mmdeploy.git --recursive cd mmdeploy1.1 安装onnxru…

计算机缺少msvcp120.dll如何解决,7种详细的修复方法分享

msvcr120.dll文件是微软Visual C运行时库的一部分&#xff0c;版本号为12.0。这个DLL文件包含了许多用于支持在Windows上运行的应用程序的重要函数和组件。它是确保某些程序能够正确执行的关键组成部分&#xff0c;特别是那些使用C编写或依赖于某些Microsoft库的程序。 当用户…

C++ | Leetcode C++题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; class Solution { public:bool isMatch(string s, string p) {auto allStars [](const string& str, int left, int right) {for (int i left; i < right; i) {if (str[i] ! *) {return false;}}return true;};auto charMatch []…

4月18号总结

java学习 网络编程 1.网络分层 网络分层是将网络通信划分为不同的逻辑层次&#xff0c;每一层负责特定的功能&#xff0c;从而实现网络通信的模块化和标准化。常用的网络分层模型包括OSI&#xff08;开放系统互联&#xff09;模型和TCP/IP模型。 特点和作用&#xff1a; 分…

(C++) 树状数组

目录 一、介绍 二、一维树状数组 2.1 区间长度 2.2 前驱和后继 2.3 查询前缀和 2.4 点更新 三、一维数组的实现 3.1 区间长度函数 3.2 前缀和 3.3 插入/更新 3.4 封装成类 一、介绍 树状数组&#xff08;Binary Indexed Tree&#xff0c;BIT&#xff09;&#xff0c;又称为 …

火绒安全概述

页面简介&#xff1a; 火绒安全是一款集多种安全功能于一体的国产软件&#xff0c;旨在为用户提供全面的计算机保护。本页面将详细介绍火绒安全的核心功能和使用方式。 页面内容概览&#xff1a; 杀毒防护 实时监控&#xff1a;详细介绍火绒安全如何实时检测系统中的文件和程序…

Pyside6:Spacer的使用,布局中控件顶格添加

在普通的布局&#xff0c;如水平或纵向布局中&#xff0c;我们的控件都会保持中间状态&#xff0c;如下&#xff1a; 但有许多情况下 &#xff0c;我们需要将控件布局为如下界面&#xff1a; 在前端开发时&#xff0c;我们很容易通过flex来进行布局&#xff0c;修正它的居中或者…

Github首页美化(updating)

Github首页美化 https://github.com/QInzhengk一、新建仓库二、美化Github首页主页访问量统计仓库状态统计常用语言占比统计社交链接 界面展示 https://github.com/QInzhengk 一、新建仓库 对Github首页进行美化&#xff0c;需要新建一个仓库名和自己 Github 用户名相同的仓库…

【数据库】三、数据库SQL语言命令(基础从入门到入土)

【全文两万多字&#xff0c;涵盖大部分常见情况&#xff0c;建议点赞收藏】 目录 文章目录 目录安装SQL语言1.使用2.DATABASE查看所有库新建数据库修改数据库删除数据库连接数据库 3.TABLE创建表查看库所有表删除表查看表信息重命名表修改表字段&#xff08;列&#xff09;表中…

Java---ideaIU-2023.1专业版使用以及安装方法

介绍 JetBrains 是一家专注于创建智能开发工具的前沿软件公司,包括:行业中领头的 Java IDE – IntelliJ IDEA,以及 Kotlin 编程语言。旗下常用的软件有IntelliJ IDEA、PhpStorm、RubyMine、Rider、WebStorm、goland、CLion、Pycharm&#xff0c;本安装包集成以上8款软件&#…

最大层内元素和

题目链接 最大层内元素和 题目描述 注意点 返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个树中的节点数在 [1, 10000]范围内-10^5 < Node.val < 10^5 解答思路 广度优先遍历树&#xff0c;使用队列存…

windows系统CUDA的详细安装教程

CUDA系列 文章目录 CUDA系列前言一、CUDA简介二、安装配置视频教程三、CUDA的下载及安装3.1 环境检查3.2 CUDA 安装包下载3.3 安装CUDA&#xff08;略&#xff09;3.4 验证CUDA是否安装成功 四、cuDNN的下载及安装4.1 cuDNN下载4.2 cuDNN配置 五、配置环境变量六、下载并配置zl…

Day4 商品管理

Day4 商品管理 这里会总结构建项目过程中遇到的问题&#xff0c;以及一些个人思考&#xff01;&#xff01; 学习方法&#xff1a; 1 github源码 文档 官网 2 内容复现 &#xff0c;实际操作 项目源码同步更新到github 欢迎大家star~ 后期会更新并上传前端项目 编写品牌服务 …

LangChain入门指南:构建高可复用、可扩展的LLM应用程序 PDF书籍分享

今天又来给大家推荐一本大模型方面的书籍<Langchain入门指南>这本书专门为那些对自然语言处理技术感兴趣的读者提供了系统的LLM应用开发指南。全书分为11章&#xff0c;从LLM基础知识开始&#xff0c;通过LangChain这个开源框架为读者解读整个LLM应用开发流程。 下载当前…

轻松记录收支明细,详细记录每一笔收支,通过借款日期快速查找借款信息

财务管理对于个人和企业来说都至关重要。一份清晰、详尽的收支明细记录&#xff0c;不仅能帮助我们了解资金流向&#xff0c;还能在需要时提供有力的证据。因此&#xff0c;高效记录收支明细并轻松掌握财务状况成为了每个人的必备技能 第一步进入晨曦记账本主页面&#xff0c;…

ros2_control【B站WMGIII教学学习记录】1

资源 https://www.bilibili.com/video/BV1ku411G7UR? 学习过程中存在bug&#xff0c;记录一下 1 Q:"package ‘joint_state_publisher_gui’ not found, searching: [/home A: sudo apt install ros-humble-joint-state-publisher2 https://fishros.org.cn/forum/to…

抢先看!LEADTOOLS V23 全新版发布,预览全新产品线布局!

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年&#xff0c;其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中&#xff0c;LEAD以其在全世界主要国家中占有的市场领导地位…

SpringCloud引入SpringBoot Admin

Spring Boot Admin可以监控和管理Spring Boot&#xff0c;能够将 Actuator 中的信息进行界面化的展示&#xff0c;也可以监控所有 Spring Boot 应用的健康状况&#xff0c;提供警报功能。 1. 创建SpringBoot工程 2. 引入相关依赖 <dependency><groupId>com.alib…

基于ontape的备份与恢复实验

通过本文的备份恢复实验&#xff0c;我们可以深入了解ontape的使用方法和原理&#xff0c;包括如何进行完整备份、增量备份以及如何利用备份文件进行数据恢复。 1. 配置onconfig参数 通过修改onconfig参数文件&#xff0c;或使用onmode -wf命令&#xff0c;设置备份默认使用的…