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

       论文盲审结果要出来了,渣渣超没有心情继续写了,过一段时间再说吧,今天宣布五一结束,哈哈哈。写完这篇博客开始搞科研了,有时间再进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.mzph.cn/diannao/82828.shtml

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

相关文章

四核RK3566多媒体控制板技术分享(RK3566如何实现7个串口同时进行)

四核RK3566多媒体控制板技术分享: 今天分享一款近期接触到的四核RK3566多媒体控制板&#xff08;产品型号&#xff1a;ZK-R36A&#xff09;&#xff0c;这款产品在工业控制和智能设备领域有不错的表现&#xff0c;特此整理了一些技术参数供大家参考。 产品概述: 这款控制板采用…

多线程代码案例-1 单例模式

单例模式 单例模式是开发中常见的设计模式。 设计模式&#xff0c;是我们在编写代码时候的一种软性的规定&#xff0c;也就是说&#xff0c;我们遵守了设计模式&#xff0c;代码的下限就有了一定的保证。设计模式有很多种&#xff0c;在不同的语言中&#xff0c;也有不同的设计…

【计算机组成原理】第二部分 存储器--分类、层次结构

文章目录 分类&层次结构0x01 分类按存储介质分类按存取方式分类按在计算机中的作用分类 0x02 层次结构 分类&层次结构 0x01 分类 按存储介质分类 半导体存储器磁表面存储器磁芯存储器光盘存储器 按存取方式分类 存取时间与物理地址无关&#xff08;随机访问&#…

迅为RK3588开发板安卓GPIO调用APP运行测试

将网盘上的安卓工程文件复制到 Windows 电脑上。确保工程路径中使用英文字符&#xff0c;不包含中文。接着&#xff0c;启动 Android Studio&#xff0c;点击“Open”按钮选择应用工程文件夹&#xff0c;然后点击“OK”。由于下载 Gradle 和各种 Jar 包可能需要一段时间&#x…

BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(下)

文章目录 引言一、课程表1.1 题目链接&#xff1a;https://leetcode.cn/problems/course-schedule/description/1.2 题目分析&#xff1a;1.3 思路讲解&#xff1a;1.4 代码实现&#xff1a; 二、课程表||2.1 题目链接&#xff1a;https://leetcode.cn/problems/course-schedul…

计数循环java

import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int count 10;while(count > 0) {count count -1;System.out.println(count);}System.out.println(count);System.out.println("发射&am…

11. CSS从基础样式到盒模型与形状绘制

在前端开发中&#xff0c;CSS&#xff08;层叠样式表&#xff09;是控制网页样式和布局的核心技术。整理了关于 CSS 基础样式、文本样式、盒模型以及形状绘制的一些心得。以下是详细的学习笔记。 一、基础样式设置 1. 字体样式 字体样式是网页视觉呈现的重要组成部分&#xf…

双种群进化算法:动态约束处理与资源分配解决约束多目标优化问题

双种群进化算法&#xff1a;动态约束处理与资源分配解决约束多目标优化问题 一、引言 约束多目标优化问题&#xff08;CMOPs&#xff09;在工程设计、资源分配等领域广泛存在&#xff0c;其核心是在满足多个约束条件的同时优化多个目标函数。传统方法往往难以平衡约束满足与目…

【Qt】pro工程文件转CMakeLists文件

1、简述 Qt6以后默认使用cmake来管理工程,之前已经一直习惯使用pro,pro的语法确实很简单、方便。 很多项目都是cmake来管理,将它们加入到Qt项目中,cmake确实是大势所趋。比如,最近将要开发的ROS项目,也是使用的cmake语法。 以前总结的一些Qt代码,已经编写成pro、pri等…

手机换地方ip地址会变化吗?深入解析

在移动互联网时代&#xff0c;我们经常带着手机穿梭于不同地点&#xff0c;无论是出差旅行还是日常通勤。许多用户都好奇&#xff1a;当手机更换使用地点时&#xff0c;IP地址会随之改变吗&#xff1f;本文将深入解析手机IP地址的变化机制&#xff0c;帮助您全面了解这一常见但…

【Canda】常用命令+虚拟环境创建到选择

目录 一、conda常用命令 二、conda 环境 2.1 创建虚拟环境 2.2 conda环境切换 2.3 查看conda环境 2.4 删除某个conda环境 2.5 克隆环境 三、依赖包管理 3.1 安装命令 3.2 更新包 3.3 卸载包 3.4 查看环境中所有包 3.5 查看某个包的版本信息 3.6 搜索包 四、环境…

目标检测任务常用脚本1——将YOLO格式的数据集转换成VOC格式的数据集

在目标检测任务中&#xff0c;不同框架使用的标注格式各不相同。常见的框架中&#xff0c;YOLO 使用 .txt 文件进行标注&#xff0c;而 PASCAL VOC 则使用 .xml 文件。如果你需要将一个 YOLO 格式的数据集转换为 VOC 格式以便适配其他模型&#xff0c;本文提供了一个结构清晰、…

Python作业练习2

任务简述 if_name__main_的含义&#xff0c;why? 问题解答 在Python中&#xff0c;if __name__ __main__:是一种常见的惯用法&#xff0c;用于检查当前模块是否是主程序入口点。要理解其含义和用途&#xff0c;首先需要了解两个概念&#xff1a; 1. __name__: 这是一个特…

ppy/osu构建

下载 .NET (Linux、macOS 和 Windows) | .NET dotnet还行 构建&#xff1a;f5 运行&#xff1a;dotnet run --project osu.Desktop -c Debug

NY182NY183美光固态颗粒NY186NY188

NY182NY183美光固态颗粒NY186NY188 在存储技术的竞技场上&#xff0c;美光科技&#xff08;Micron&#xff09;始终扮演着革新者的角色。其NY系列固态颗粒凭借前沿的3D NAND架构和精准的工艺控制&#xff0c;成为企业级存储和数据中心的关键支柱。本文将围绕NY182、NY183、NY1…

C++的历史与发展

目录 一、C 的诞生与早期发展 &#xff08;一&#xff09;C 语言的兴起与局限 &#xff08;二&#xff09;C 的雏形&#xff1a;C with Classes &#xff08;三&#xff09;C 命名与早期特性丰富 二、C 的主要发展历程 &#xff08;一&#xff09;1985 年&#xff1a;经典…

DedeCMS-Develop-5.8.1.13-referer命令注入研究分析 CVE-2024-0002

本次文章给大家带来代码审计漏洞挖掘的思路&#xff0c;从已知可控变量出发或从函数功能可能照成的隐患出发&#xff0c;追踪参数调用及过滤。最终完成代码的隐患漏洞利用过程。 代码审计挖掘思路 首先flink.php文件的代码执行逻辑&#xff0c;可以使用php的调试功能辅助审计 …

计算机网络|| 常用网络命令的作用及工作原理

1.hostname 作用&#xff1a;显示计算机的完整计算机名的主机名部分。仅当 Internet 协议 (TCP/IP) 协议作为组件安装在网络的网络适配器的属性中时&#xff0c;此命令才可用。 2.ping 作用&#xff1a; 1.用来检测网络的连通情况和分析网络速度 2.根据域名得到服务器 IP …

用户态到内核态:Linux信号传递的九重门(二)

1. 保存信号 1.1. 信号其他相关常见概念 实际执⾏信号的处理动作称为信号递达(Delivery)。 信号从产⽣到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产⽣时将保持在未决状态,直到进程解除对此信号的阻塞,才执⾏递达的动作。 1.…

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/这个代码的解释

tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/ 这条命令的解释如下&#xff1a; 1. tar&#xff1a;这是 Linux 系统中用于归档和压缩文件的命令行工具。 2. -z&#xff1a;表示通过 gzip 压缩格式来处理文件&#xff0c;因为文件 jdk-8u212-linux-x64.tar.gz 是一个经…