何 寥,閆紅賓,于 亮,李 一,張紹舉
(北京航天發射技術研究所,北京 100076)
在產品開發設計過程中,存在著大量的標準件、通用件,甚至有大量尺寸規格不同,但拓撲結構相同或相似的非標準件,設計人員常常僅因尺寸不同而不得不對相似零件進行重復設計,非常耗費時間精力。
Siemens NX(以下簡稱NX)提供了功能強大的參數化設計功能,零件參數化設計后,只要修改參數表達式就可以相應改變零件模型,實現零件的參數驅動,生成同系列不同規格的零件。
本文在對NX參數表達式進行結構分析的基礎上,通過VC++編程調用OLE訪問并提取Excel表格數據,自動生成表達式文件,用來驅動參數化的NX模型生成不同規格的標準件,這種方法能夠實現在不改變應用程序的情況下,用戶可以自行擴展快速生成不同零件類型的標準件庫,程序擴展性、通用性好,大大提高了標準件建模的效率。
參數化建模技術是NX軟件的精華,是CAD技術的發展方向之一。參數是設計過程中的核心。參數化設計也可稱為尺寸驅動,是指參數化模型的所有尺寸,部分或全部使用相應的表達式或其他方式指定,修改參數值后,由NX自動完成表達式中或與之相關聯的其他參數的改變,其本質是在保持原有圖形的拓撲關系不變的基礎上通過修改圖形的尺寸,實現產品的系列化設計。
表達式是NX中進行參數化設計的重要手段。表達式的特點是把各參數之間的關系通過指定各參數的函數關系來表達??梢园褏刀x為具體數字、數學公式等,或者把幾個參數用數學運算符連接使其產生關聯。
下面以標準件液壓24°錐直通管接頭為例,進行NX參數化建模。
24°錐直通管接頭結構尺寸如圖1所示,其整體尺寸數據見表1,局部油口尺寸數據見表2。根據以上數據采用NX進行任一規格直通管接頭(以1D-18規格為例)的三維建模如圖2所示,完成NX建模以后選擇NX工具菜單中表達式選項,對相關尺寸表達式進行命名整理后如圖3所示。

圖1 24°錐直通管接頭

表1 24°錐直通管接頭整體尺寸 (單位:mm)

表2 24°錐直通管接頭局部油口尺寸 (單位:mm)

圖2 24°錐直通管接頭三維模型

圖3 24°錐直通管接頭相關表達式
通過以上操作即實現了24°錐直通管接頭的NX參數化建模,后續通過修改表達式的值就可以實現模型更改,如果手動修改表達式的值非常耗費時間精力,如何快速按照相應規格尺寸修改表達式的值以生成相應標準件模型,是標準件庫建模的關鍵。
NX軟件提供了表達式導入、導出功能,點擊NX表達式對話框上“導出表達式”按鈕,將表達式導出成.exp格式的文本文件,用記事本打開后如圖4所示,每行都是一個變量表達式,對其結構進行分析可以看出,每行的結構都是“[單位]變量名=變量值”,如果采用編程軟件編制程序自動生成同樣結構的表達式文件,再通過“導入表達式”按鈕將表達式的值導入模型進行更新,就可以快速生成新的標準件模型。

圖4 記事本打開表達式
Microsoft Visual Studio C++(以下簡稱VC++)作為功能強大的編程開發工具,提供了強大的文件處理功能,既能夠輕松實現對普通文本文件的讀寫,又能夠實現對Excel等文件的讀寫。
VC++使用CStdioFile類來操作文件,打開并按行讀取文本文件的代碼:
CStdioFile MyTxtFile;
CString TXTLine;
MyTxtFile.Open(_T(“文本文件全名”)),CFile::modeRead);
MyTxtFile.ReadString(TXTLine);
打開并按行寫入文件的代碼:
CStdioFile MyTxtFile;
MyTxtFile.Open(_T(“文 本 文 件 全 名”),CFile::modeCreate|CFile::modeWrite);
MyTxtFile.WriteString(_T(“要寫入內容”));
以上可以實現對“.txt”“.exp”,等文本格式文件的讀寫。
VC++采用OLE技術實現對Excel文件的讀寫。
讀取Excel文件第1個表格的“A1”單元格的內容賦值給第2個表格“B2”單元格的代碼如下:
CApplication objApp;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CWorkbook objBook;
CWorkbooks objBooks;
CWorksheet objSheet;
CWorksheets objSheets;
CRange objRange;
CString Cstr;
objBook = objBooks.Open(_T(“Excel文件全名”),
covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional,covOptional,
covOptional,covOptional,covOptional,covOptional );
objSheets = objBook.get_Worksheets();
objSheet = objSheets.get_Item(COleVariant((short)1));//第1個表格。
objRange = objSheet.get_Range(COleVariant(_T(“A1”)),COleVariant(_T(“A1”)));// “A1”單元格
Cstr=COleVariantToCstr(objRange.get_Value2());//讀取第1個表格中A1單元格的值賦給字符串變量Cstr
objSheet = objSheets.get_Item(COleVariant((short)2));//第2個表格。
objRange = objSheet.get_Range(COleVariant(_T(“B2”)),COleVariant(_T(“B2”)));// “B2”單元格
objRange.put_Value2( COleVariant(Cstr));//將字符串變量賦值給第2個表格“B2”單元格。
為了生成如圖4的表達式文件,先建一個Excel文件,其第1個表格(命名為“表格1”)內容如圖5所示,表格1規定了變量數量(A3)、標準件規格(A5)、變量名(C2~N2)、單位(C3~N3)、變量值(C5~N5),通過VC++按照變量數量循環獲取單位(C3~N3)、變量名(C2~N2)、變量值(C5~N5),并按照格式“[單位]變量名=變量值”逐行輸入到指定文本文件就可以得到如圖4所示的表達式文件,用于驅動參數化的NX模型生成不同規格的標準件。

圖5 Excel文件表格1內容
如圖5所示的表格1是用于應用程序按照圖4每行的格式生成表達式文件用的,要實現參數驅動還需要將圖5 表格1中的標準件規格(A5)和變量值(C5~N5)進行數據關聯,這靠Excel本身的功能來實現。具體如下:
在Excel文件中建立第2個表格(命名為“表格2”),表格2內容為直通接頭各種規格的全部數據,如圖6所示。

圖6 Excel文件表格2內容
對表格1中A5單元格進行數據有效性設置:打開Excel表格, 選擇表格1中A5 單元格后,點擊工具欄-數據-數據有效性,在彈出頁面中,將“允許”項設置為“序列”,選中忽略空值,來源設置為表格2的A2:A1000,設置后表格1中A5單元格的值就只能從表格2的A2:A1000中非空值中選取了。
通過Excel的VLOOKUP函數對表格1中的單元格C5進行數據匹配:雙擊單元格C5,填入函數內容“=VLOOKUP($A$5,表格2!$A$2:$N$1000,3,0)”,即可實現表格1中C5單元格的值根據表格1中A5單元格的選擇自動從表格2中第3列(C列)查找匹配數據,同理對表格1中D5~N5進行數據匹配設置。完成設置后就實現了Excel數據關聯功能:表格1中A5(標準件規格)選定某一規格后,變量值(C5~N5)自動根據表2數據匹配到相應的值。
對于更為復雜的零件,Excel文件中可以再增加表格,用于存儲局部結構的尺寸數據,表格2中的局部結構尺寸數據可以從新增加的表格中查詢得到。
采用VC++開發工具編制應用程序,程序共有五種文件組成。
1)一個.exe文件:界面程序,用戶操作的入口。
2)一個.txt文件:標準件類型匯總文件,文本文件類型,每行表示一種標準件類別,如直通接頭、彎通接頭、三通接頭等,界面程序讀取.txt文件內容,供用戶選擇是對哪種零件進行建模。
3)多個.prt文件:參數化的NX模型文件,每個文件對應一種標準件,.prt文件的文件名要與.txt文件中的標準件類別名稱一致,界面程序根據此名稱打開相應的.prt文件。
4)多個.xlsx文件:模型的數據文件,每個文件存儲一種標準件的數據,.xlsx文件的文件名也要與.txt文件中的標準件類別名稱一致,界面程序根據此名稱讀取相應的數據,.xlsx文件的第1個表格要有與圖5中表格相同的結構,變量相關參數根據不同模型進行相應設置;第2個表格要有與圖6中表格相同的結構(第1列為規格參數標識),變量相關參數根據不同模型進行相應設置;較為復雜的模型可以增加更多的表格存儲局部結構數據,以供表格2查詢獲取。
5).exp文件:NX表達式文件,界面程序的輸出結果,相應的.prt模型文件導入此文件即可生成新規格的模型,快速形成標準件系列化。
用戶在使用過程中如果想增加一種標準件類別,不用更改.exe界面程序,只需在.txt文件中增加一行標準件類別名稱,并增加符合以上要求的、同名的.prt文件和.xlsx文件,界面程序根據名稱自動識別新增的標準件類別,實現了應用程序極好的擴展性。
點擊執行.exe程序,出現初始界面。
依次選擇標準件類型和規格參數,標準件類型列表為程序讀取.txt文件獲取,規格參數列表為程序根據所選的標準件類型自動從相應.xlsx文件中第2個表格的第1列獲取。
完成設置后點擊“生成表達式”按鈕即可生成所選標準件(直通接頭1D-52)的表達式文件。
然后點擊“打開3D文件”按鈕,打開相應.prt模型文件,通過NX導入程序生成的表達式文件即可快速生成新的模型。
這種標準件庫建模方式最大的優點是不需更改界面程序,用戶只需進行txt文件、Excel數據和NX模型相關操作就可以快速生產不同零件類型的標準件庫,程序的擴展性和通用性非常好,提高了標準件建模的效率。
