NX二次开发UFUN方式一键去除所有参数

一、概述

        最近作了一个案例是通过遍历整个显示部件窗口的所有实体合并成一个部件,并且在导航器上也显示一个体,主要的思路是遍历当前所有实体,然后进行一键合并如图1所示,最后去除参数,这时导航器中显示一个体的记录。如下图2所示:

图1.一键合并

图2.一键去参

二、代码记录

注意:本次代码对遍历整个显示部件窗口实体函数进行封装,如需要优化代码,请自行封装。

    /////一键合并///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);}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();////移除参数//UF_initialize();//找到工作部件所有的体tag_t WorkPartTag = UF_ASSEM_ask_work_part();tag_t objTag = NULL_TAG;UF_OBJ_cycle_objs_in_part1(WorkPartTag, UF_solid_type, &objTag);int type,subtype;//创建链表uf_list_p_t list;UF_MODL_create_list(&list);while (objTag != NULL_TAG){UF_OBJ_ask_type_and_subtype(objTag, &type, &subtype);if (!subtype){UF_MODL_put_list_item(list, objTag);}UF_OBJ_cycle_objs_in_part1(WorkPartTag, UF_solid_type, &objTag);}int count;UF_MODL_ask_list_count(list, &count);if (count>0){//移除参数UF_MODL_delete_object_parms(list);}else{uc1601("温馨提示:未找到要移除参数对象。", 1);}//删除链表,释放内存UF_MODL_delete_list(&list);UF_terminate();

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HelloWorld搭建(第一种模型)

1.创建Springboot项目并且引入依赖 <!-- 引入RabbitMQ的相关依赖 --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.7.2</version> </dependency> 2.第一种模式(直连…

html-css-js移动端导航栏底部固定+i18n国际化全局

需求&#xff1a;要做一个移动端的仿照小程序的导航栏页面操作&#xff0c;但是这边加上了i18n国家化&#xff0c;由于页面切换的时候会导致国际化失效&#xff0c;所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变&#xff0c;不会导致切换后回到默认的语言 2.实现…

动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper

文章目录 前言下载github地址&#xff1a;网盘 关于VideoWebpagesYoutube和流媒体ShadersGIFs游戏和应用程序& more:Performance:多监视器支持&#xff1a;完结 前言 Lively Wallpaper是一款开源的视频壁纸桌面软件&#xff0c;类似 Wallpaper Engine&#xff0c;兼容 Wal…

功能真强大!5个令人惊叹的 Jupyter 黑科技

Jupyter 是一种功能强大的交互式计算环境&#xff0c;被广泛应用于数据分析、机器学习、科学计算等领域。 除了常见的基本功能外&#xff0c;Jupyter还隐藏着许多令人惊叹的黑科技&#xff0c;这些功能可以帮助用户更高效地完成工作&#xff0c;提升工作体验。 在本文中&…

linux线程与进程

简要 在Linux系统中&#xff0c;进程&#xff08;Process&#xff09;和线程&#xff08;Thread&#xff09;是操作系统中两个重要的概念&#xff0c;它们都是用于执行程序的执行单元&#xff0c;但有一些关键的区别。 在Linux系统中&#xff0c;可以使用fork系统调用创建新…

stm32f407 bm -> freertos

工程文件差异&#xff1a; 工程结构上&#xff0c;os 版本多了 FreeRTOS 文件夹 在 USER 下多了 FreeRTOSConfig.h 文件&#xff0c;和多了需要用到的一些外设驱动 对比添加 os 文件到 bm 工程中&#xff0c;以及 C/C .h 文件的包含 stm32f4xx_it.c 文件 bm 与 rtos 对比 ①…

龙年快乐,为大家准备了一份新年网安大礼包!

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而…

vmware安装openEuler操作系统

vmware安装openEuler操作系统 1、下载openEuler操作系统镜像文件2、安装openEuler操作系统3、配置使用openEuler操作系统 1、下载openEuler操作系统镜像文件 官网下载链接 链接: https://www.openeuler.org/zh/download/ 这里选择 openEuler 22.03 LTS SP2 版本 标准镜像包 文…

Linux--Raid磁盘冗余阵列

一、什么是Raid "RAID"一词是由David Patterson, Garth A. Gibson, Randy Katz 于1987年在加州大学伯克利分校发明的。在1988年6月SIGMOD会议上提交的论文"A Case for Redundant Arrays of Inexpensive Disks”"中提出&#xff0c;当时性能最好的大型机不断…

空间域图像增强之直方图均衡的python代码实现——冈萨雷斯数字图像处理

原理 直方图&#xff1a; 图像的直方图是一个图像中像素强度值分布的图表。 对于灰度图像&#xff0c;直方图展示了每个灰度级出现的频率。 直方图均衡步骤&#xff1a; 计算累积分布函数&#xff08;CDF&#xff09;&#xff1a;首先&#xff0c;计算图像的直方图&#xff0…

直接形式2(三阶)补偿器

直接形式2&#xff08;三阶&#xff09;补偿器 DF23 myCtrl DF23_DEFAULTS;

收入支出记录,对需要的账目明细进行颜色标记

面对繁杂的账单和财务数据&#xff0c;你是否曾为记账而感到苦恼&#xff1f;别担心&#xff0c;我们为你带来了一款全新的记账软件——晨曦记账本&#xff0c;这不仅仅是一个简单的记账工具&#xff0c;更是你财务管理的得力助手。 所需工具&#xff1a; 一个【晨曦记账本】…