[案例四] 智能填寫屬性工具(支持裝配組件還有建模實體屬性的批量創建、編輯)

       論文盲審結果要出來了,渣渣超沒有心情繼續寫了,過一段時間再說吧,今天宣布五一結束,哈哈哈。寫完這篇博客開始搞科研了,有時間再進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.pswp.cn/diannao/82828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82828.shtml
英文地址,請注明出處:http://en.pswp.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 是一個經…