摘 要:針對(duì)手動(dòng)更換零件建模模板效率低,準(zhǔn)確度差的問題,基于CATIA的二次開發(fā)技術(shù),該文按照各個(gè)公司或企業(yè)特有的零件模板樣例,運(yùn)用CATIA二次開發(fā)工具VBA,以VB語言做基礎(chǔ)編程語言,實(shí)現(xiàn)三維零件模板的自動(dòng)更新,同時(shí)實(shí)現(xiàn)三維零件屬性的自動(dòng)添加。此方法的應(yīng)用大大縮短了設(shè)計(jì)人員替換零件新模板的時(shí)間,避免了設(shè)計(jì)人員的替換模版時(shí)的缺項(xiàng)漏項(xiàng)現(xiàn)象,提高了工作效率,加快產(chǎn)品設(shè)計(jì)研發(fā)周期。在工程應(yīng)用中具有一定的價(jià)值。
關(guān)鍵詞:CATIA;二次開發(fā);VBA;零件模板
飛機(jī)結(jié)構(gòu)件是構(gòu)成飛機(jī)機(jī)體的主要組成部分,其設(shè)計(jì)的質(zhì)量和效率將直接影響飛機(jī)設(shè)計(jì)周期。由于飛機(jī)設(shè)計(jì)過程是一個(gè)階段過程,需要多家企業(yè)參與一起研制,在研制的過程中,由于階段不同,會(huì)出現(xiàn)零件模板內(nèi)容增加或者更換的情況,根據(jù)標(biāo)準(zhǔn)化要求,已經(jīng)建立完成的零件必須用統(tǒng)一模板,要求設(shè)計(jì)人員更新零件模板,如果手動(dòng)為每個(gè)零件更新模板,不僅給設(shè)計(jì)人員帶來重復(fù)的大量的工作量,而且還影響設(shè)計(jì)周期。因此,為了能夠滿足公司模板更新和標(biāo)準(zhǔn)化設(shè)計(jì)要求,以及設(shè)計(jì)人員快速更換模板的需求,基于CATIA二次開發(fā)的模板的自動(dòng)更新方法具有重大意義。
一、CATIA二次開發(fā)方法
CATIA二次開發(fā)的主要方法有三種: 一是AutomationAPI(使用自動(dòng)化應(yīng)用接口的宏);二是Interactive User Defined Feature(交互式的用戶定義特征);三是CAA V5的C++和Java應(yīng)用接口。這三種方法可實(shí)現(xiàn)裝配、造型等操控功能。該文運(yùn)用自動(dòng)化應(yīng)用API接口的宏實(shí)現(xiàn)零件模板的自動(dòng)更新。
二、零件模板自動(dòng)更新設(shè)計(jì)流程
根據(jù)已經(jīng)制定好的零件模板,運(yùn)用CATIA中的宏命令對(duì)零件模板自動(dòng)更新進(jìn)行設(shè)計(jì)。通過VBA編程對(duì)模板內(nèi)容進(jìn)行添加,以及對(duì)零件屬性內(nèi)容的添加。實(shí)現(xiàn)用戶對(duì)零件模板內(nèi)容快速更新。程序設(shè)計(jì)流程見圖1。
(一) 獲取當(dāng)前文檔和根容器句柄
在CATIA“工具”菜單下的“宏”命令中打開Visual Basic編輯器,在這里對(duì)零件模板更新進(jìn)行編程。主要程序代碼如下。
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim part1 As Part
Set part1 = partDocument1.Part
Dim hybridBodies1 As HybridBodies
Set hybridBodies1 = part1.HybridBodies
(二)零件模板內(nèi)容的添加
獲得當(dāng)前零件文檔后,添加模板內(nèi)容。由于零件內(nèi)包含之前已經(jīng)建立的幾何信息內(nèi)容,這需要通過程序把模板新的幾何信息內(nèi)容添加進(jìn)去,并且還要保留之前的幾何信息。利用Add命令添加新的幾何信息,對(duì)已有信息的保留是利用一個(gè)小的循環(huán)程序處理。具體主要代碼如下。
.........
Dim i As Integer
i = hybridBodies1.Count
Dim hybridBody1 As HybridBody
Set hybridBody1 = hybridBodies1.Add()
hybridBodies1.Item(i + 1).Name = “緊固件信息”
part1.Update
Dim hybridBody2 As HybridBody
Set hybridBody2 = hybridBodies1.Add()
hybridBodies1.Item(i + 2).Name = “參考信息”
part1.Update
.........
(三)零件屬性的添加
在飛機(jī)結(jié)構(gòu)零件設(shè)計(jì)中,我們經(jīng)常給零件添加若干自定義的屬性,以便于制造部門對(duì)組件和零件BOM屬性的提取。由于每個(gè)零件都要添加同樣的自定義屬性,一旦零件屬性需要添加新內(nèi)容,需要設(shè)計(jì)人員為每個(gè)零件添加新屬性,工作量重復(fù)并繁重。運(yùn)用宏來自動(dòng)添加零件屬性,省時(shí)又省力??紤]到零件原有存在的屬性,為了便于控制的零件模板屬性信息,需要?jiǎng)h除原有屬性,統(tǒng)一添加零件模板的屬性信息。程序添加主要代碼如下。
.........
Dim parameters1 As Parameters
Set parameters1 = product1.UserRefProperties
Dim j As Integer
If parameters1.Count = 0 Then GoTo flag1
k = parameters1.Count
For j = 1 To k
parameters1.Remove (k - j + 1)
Next
flag1:
.........
Set strParam1 = parameters1.CreateString(“零件狀態(tài)”, “”)
.........
Set strParam2 = parameters2.CreateString(“零件名稱”, “”)
......
三、程序?qū)嵗?/p>
在CATIA窗口中打開一個(gè)零件文檔,如圖2所示,需要更新零件模板信息,添加“緊固件信息”,“主要參考信息”和“主要幾何尺寸信息”三部分內(nèi)容,更新屬性“零件狀態(tài)”,“零件名稱”和“數(shù)據(jù)集類型”三部分內(nèi)容,運(yùn)用宏命令自動(dòng)更新模板,結(jié)果見四、結(jié)語
隨著CATIA應(yīng)用范圍的不斷擴(kuò)大,CATIA二次開發(fā)工具作為一種必不可少的輔助功能,在飛機(jī)領(lǐng)域中運(yùn)用越來越多,運(yùn)用CATIA宏實(shí)現(xiàn)三維零件模板的自動(dòng)更新是完全可行的。零件模板的自動(dòng)更新不僅替設(shè)計(jì)人員省去了繁重的手工操作,而且縮短飛機(jī)設(shè)計(jì)周期。
參考文獻(xiàn):
[1] 胡挺,吳立軍.CATIA二次開發(fā)技術(shù)基礎(chǔ)[M].電子工業(yè)出版社,2006.
[2] 陳慶章.Visual Basic程序設(shè)計(jì)基礎(chǔ)[M]. 浙江科學(xué)技術(shù)出版社,2004.
[3] 周桂生,陸文龍.CATIA二次開發(fā)技術(shù)與應(yīng)用[J].機(jī)械設(shè)計(jì)與制造,2010(1):81-83.