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

[案例四] 智能填写属性工具(支持装配组件还有建模实体属性的批量创建、编辑)

       论文盲审结果要出来了,渣渣超没有心情继续写了,过一段时间再说吧,今天宣布五一结束,哈哈哈。写完这篇博客开始搞科研了,有时间再进NX开发学习。本次案例主要是对上次导出自动导出BOM的一个前处理,要想导出属性,首先的有属性。于是本着学习的态度进行制作,可能有些功能有点别扭(支持装配环境下组件属性的批量填写,支持建模环境下的实体(不包括装配组件实体)——为了减负我把其过滤掉了,一般没人会往装配体里添加进行建模吧,但是不免有奇葩,哈哈哈)。历时3天半,基本实现了该模型的功能。期间翻阅大量的历史学习记录,和大量其他UP主的博客。个人认为想要在技能上有所进行,必须进行综合练习。只有这样才能提升独立思考能力,而不是创建一个块,图个颜色一些简单的功能。再次感谢各位NX二次开发的大佬,让后辈站在巨人的肩膀上进行更好的探索。

目录

一、Block UI分析

二、开发思路

2.1主界面的开发

2.1.1按钮1——初始化属性

2.1.2按钮2——读取所有对象的属性

2.1.3按钮3——读取选择对象的属性

2.1.4按钮4——更新属性

2.1.5树列表——显示对象属性

2.1.6枚举控件——进行树列表显示对象的选择

2.2子界面1的开发

2.2.1枚举控件——对象的选择类型

2.2.2对象选择器——进行对象收集

2.2.3字符串控件——显示对象属性

2.3子界面2的开发

2.3.1枚举控件——对象的选择类型

2.3.2对象选择器——进行对象收集

三、运行结果


一、Block UI分析

主要用到了三个Block UI,具体如下:

1、主界面:包括四个Button按钮控件,一个树列表控件,一个枚举控件。

2、子界面1,初始化属性对话框

3、子界面2,读取选择对象的属性

二、开发思路

2.1主界面的开发

2.1.1按钮1——初始化属性

        主要是对对象属性的赋值,包括装配下的组件和建模下的实体(不包括组件实体)。采用弹出子对话框的形式,参考:NX二次开发——BlockUI 弹出另一个BlockUI对话框-CSDN博客。同时支持填写单个或者框选最多的物料编号相同的对象,这样做的目的是快速填写。(部分关键代码)

.cpp中:
update_cb相应按钮的位置添加以下代码
//初始化对话框
NXOpen_AttributeToolChild1 *dialogintNXOpen_AttributeToolChild1 = new NXOpen_AttributeToolChild1();
dialogintNXOpen_AttributeToolChild1->Show();//第二个对话框显示

2.1.2按钮2——读取所有对象的属性

        对所有对象的属性读取时,会根据枚举控件选择的实体或者时组件进行分别显示。主要是通过遍历得到的组件Component或者实体的TAG,通过树列表进行显示。(部分关键代码)

在相应的按钮下添加以下代码DeleteALLNodes();
//判断组件还是实体,获取枚举类型当中的位置
NXOpen::BlockStyler::PropertyList *enumProps = enum0->GetProperties();
int index = enumProps->GetEnum("Value");
delete enumProps;
enumProps = NULL;
if (index == 0)
{//实体不包含组件实体CycleComponent();vector<tag_t> SoildTag = cyclesoildTag(1);vector<vector<string>> SoildAttributeTXT = GetSoildAttribute(SoildTag);GetTreeNodeAndTxt(SoildAttributeTXT);
}
else
{//组件CycleComponent();vector<vector<string>> ComponentAttributeTXT = GetComponentAttribute(ThechildComponent);ThechildComponent.clear();GetTreeNodeAndTxt(ComponentAttributeTXT);
}			

2.1.3按钮3——读取选择对象的属性

        主要是通过对选择的对象进行属性读取。会通过子对话框2中的枚举控件选择的实体或者时组件返回所选组件Component或者实体的TAG,然后用树列表进行显示。(部分关键代码)

DeleteALLNodes();
//初始化对话框
NXOpen_BOMSetObj2 *dialogintNXOpen_BOMSetObj2 = new NXOpen_BOMSetObj2();
dialogintNXOpen_BOMSetObj2->Show();//第二个对话框显示			
vector<NXOpen::TaggedObject *> selectionAssembliesobj = dialogintNXOpen_BOMSetObj2->selCompTags;
int selectionAssembliesobjindex = dialogintNXOpen_BOMSetObj2->index1;
if (selectionAssembliesobjindex == 0)
{vector<tag_t> SoildTag;for (int i = 0; i < (int)selectionAssembliesobj.size(); i++){SoildTag.push_back(selectionAssembliesobj[i]->Tag());}				vector<vector<string>> SoildAttributeTXT = GetSoildAttribute(SoildTag);GetTreeNodeAndTxt(SoildAttributeTXT);
}
else if (selectionAssembliesobjindex == 1)
{vector<NXOpen::Assemblies::Component *> selectionAssembliescomponent;
http://www.xdnf.cn/news/385867.html

相关文章:

  • ST表(稀疏表)
  • 理解反向Shell:隐藏在合法流量中的威胁
  • Python并发编程:开启性能优化的大门(7/10)
  • MySQL 索引设计宝典:原理、原则与实战案例深度解析
  • 【C++】模板初阶
  • 从零开始开发纯血鸿蒙应用之XML解析
  • 《AI大模型应知应会100篇》第58篇:Semantic Kernel:微软的大模型应用框架
  • 计算机网络|| 常用网络命令的作用及工作原理
  • 张量并行优质博客
  • 【东枫科技】使用LabVIEW进行深度学习开发
  • 面试中常问的设计模式及其简洁定义
  • 【React】Craco 简介
  • JavaScript 循环语句全解析:选择最适合的遍历方式
  • 客服系统重构详细计划
  • 如何选择 RabbitMQ、Redis 队列等消息中间件?—— 深度解析与实战评估
  • 御网杯2025 Web,Msic,密码 WP
  • Docker、ECS 与 K8s 网段冲突:解决跨服务通信中的路由问题
  • [思维模式-30]:《本质思考力》-10-产品研发的两种模式:①自顶向下的规划、分解、牵引;②自底向上的堆叠、聚合。
  • Win全兼容!五五 Excel Word 转 PDF 工具解决多场景转换难题
  • MyBatis快速入门——实操
  • spark运行架构及核心组件介绍
  • spark-Schema 定义字段强类型和弱类型
  • 06.three官方示例+编辑器+AI快速学习webgl_animation_skinning_additive_blending
  • openharmony系统移植之gpu mesa3d适配
  • [Java][Leetcode middle] 80. 删除有序数组中的重复项 II
  • 【MySQL】页结构详解:页的大小、分类、头尾信息、数据行、查询、记录及数据页的完整结构
  • MySQL InnoDB 表空间详解
  • numpy模块综合使用
  • 罗技无线鼠标的配对方法
  • 什么是具身智能