当前位置: 首页 > 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;

相关文章:

  • NoSQL数据库技术与应用复习总结【看到最后】
  • MySQL为什么选择B+树
  • MCP:重塑AI交互的通用协议,成为智能应用的基础设施
  • JUC并发编程(上)
  • Qt—多线程基础
  • 《Redis应用实例》学习笔记,第一章:缓存文本数据
  • Python----神经网络(基于Alex Net的花卉分类项目)
  • 设计模式学习整理
  • vs2022配置opencv
  • Go语言运算符详解
  • 深入理解反序列化攻击:原理、示例与利用工具实战
  • 缓存(5):常见 缓存数据淘汰算法/缓存清空策略
  • 蓝桥杯14届 数三角
  • 网址为 http://xxx:xxxx/的网页可能暂时无法连接,或者它已永久性地移动到了新网址
  • 【言语】刷题1
  • 【RP2350】香瓜树莓派RP2350之LED
  • UGMathBench动态基准测试数据集发布 可评估语言模型数学推理能力
  • Linux架构篇、第三章_2_Linux服务器监控与NGINX优化
  • PureComponent与shouldComponentUpdate
  • X.509证书详解
  • 习近平举行仪式欢迎巴西总统卢拉访华
  • 云南大理铁路枢纽工程建设取得两大进展,预计明年建成
  • 王毅人民日报撰文:共商发展振兴,共建中拉命运共同体
  • 美国三大指数全线高开:纳指涨逾4%,大型科技股、中概股大涨
  • 苹果或将于2027年推出由玻璃制成的曲面iPhone
  • 梅花奖在上海|穿上初演时的服装,“鹮仙”朱洁静再起飞