梁鋒,鐘建強(qiáng),羅培鋒,陳東
(廣州汽車集團(tuán)股份有限公司汽車工程研究院,廣東 廣州 511434)
CATIA 是全球出色的產(chǎn)品設(shè)計(jì)和體驗(yàn)解決方案。它被不同行業(yè)的領(lǐng)導(dǎo)組織所采用,用以開發(fā)我們?nèi)粘I钜姷胶褪褂玫漠a(chǎn)品,常見的是飛機(jī)及汽車設(shè)計(jì)開發(fā)領(lǐng)域。CATIA在世界制造業(yè)中具有舉足輕重的地位,波音飛機(jī)公司使用CATIA完成了整個(gè)波音777的電子裝配,創(chuàng)造了業(yè)界的一個(gè)奇跡,從而也確定了CATIA在CAD/CAE/CAM行業(yè)內(nèi)的領(lǐng)先地位[1]。車身開發(fā)過(guò)程中,經(jīng)常需要在裝配中對(duì)于同種材料屬性的零件著色,比如鍍鋅板,用于校核或者作為報(bào)告用圖。目前常規(guī)的方法有兩個(gè),一個(gè)是對(duì)照BOM表逐個(gè)選擇后分別著色;另一個(gè)通過(guò)EXCEL表輔助,生成需執(zhí)行的搜索語(yǔ)法,然后復(fù)制至CATIA高級(jí)搜索欄中的組合查詢實(shí)現(xiàn)批量搜索。本文針對(duì)后者,使用 VBA進(jìn)行二次開發(fā),通過(guò)對(duì)多個(gè)零件號(hào)進(jìn)行處理直接生成搜索語(yǔ)法,進(jìn)而實(shí)現(xiàn)程序的批量搜索。
CATIA二次開發(fā)的主要方法有四種:一是 Automation API(使用自動(dòng)化應(yīng)用接口的宏),CATIA Automation API采用面向?qū)ο蠹夹g(shù)設(shè)計(jì),是一個(gè)開放易學(xué)的體系結(jié)構(gòu),適應(yīng)于大多數(shù)自行設(shè)計(jì)插件的工程師;二是Knowledge Ware(知識(shí)工程模塊),是基于規(guī)則的,主要應(yīng)用于建模、檢查、審查等過(guò)程的;三是采用Interactive User Defined Feature(交互式用戶定義特征),主要于用建模過(guò)程的特征重用;四是CAA V5的C++和JAVA應(yīng)用接口,此法需要專業(yè)的編程軟件及工具,對(duì)開發(fā)人員要求較高,適合比較深層次的CATIA二次開發(fā)。
CATIA二次開發(fā),其核心是利用CATIA提供的API接口進(jìn)行程序設(shè)計(jì)開發(fā),開發(fā)拓展 CATIA軟件功能,實(shí)現(xiàn)CATIA功能個(gè)性化和操作自動(dòng)化。CATIA 基于開放式可擴(kuò)展的 V5 架構(gòu)使得用戶可以方便地通過(guò)二次開發(fā)擴(kuò)展應(yīng)用功能。二次開發(fā)是對(duì)軟件進(jìn)行個(gè)性化和專業(yè)化有有效手段,可以使軟件更好地為用戶服務(wù),對(duì)提高工作效率和產(chǎn)品質(zhì)量,節(jié)約研發(fā)成本和縮短開發(fā)周期有著重要的作用[2]。
進(jìn)行CATIA二次開發(fā),要了解CATIA V5 Automation API的基本架構(gòu)及主要對(duì)象的概念、用法及它們之間的關(guān)系,掌握常用對(duì)象的屬性和方法。CATIA V5 Automation 對(duì)象架構(gòu)如圖1所示。
圖1 CATIA V5 Automation對(duì)象架構(gòu)
CATIA二次開發(fā)的過(guò)程即是CATIA功能的個(gè)性化定制,其目的是滿足用戶使用習(xí)慣或者完成自動(dòng)化操作。其中自動(dòng)包含兩層意思,其一是重復(fù)操作的自動(dòng)化完成,其二是某些流程自動(dòng)化完成。開發(fā)人員為實(shí)現(xiàn)某種功能的二次開發(fā),根據(jù)需要合理地調(diào)用V5 Automation 提供的類、庫(kù)的屬性和方法以及二次開發(fā)函數(shù)。而CATIA中的每個(gè)功能以及所有的實(shí)體特征都有相應(yīng)的類、庫(kù)支撐,因此CATIA二次開發(fā)的主要工作就是合理地調(diào)用 V5 Automation API 對(duì)象進(jìn)行編程。CATIA VBA中提供了VB的功能,結(jié)合VB強(qiáng)大的功能和CATIA本身提供的豐富的類、庫(kù)及二次開發(fā)函數(shù),就能開發(fā)個(gè)性化的CATIA二次開發(fā)程序[3]。
使用 CATIA自帶搜索工具按以下步驟進(jìn)行按零件號(hào)搜索。在裝配模塊下,編輯—搜索(CTRL+F),調(diào)出搜索界面并進(jìn)入高級(jí)選項(xiàng)卡,工作臺(tái)選擇裝配設(shè)計(jì),類型選擇零件,屬性選擇零件編號(hào),在邏輯運(yùn)算符右側(cè)的文本框中輸入單個(gè)零件號(hào)進(jìn)行搜索,具體操作如圖2所示。
圖2 CATIA用自帶搜索工具按零件編號(hào)搜索零件
自帶搜索命令的優(yōu)點(diǎn)是操作簡(jiǎn)單,直觀方便,無(wú)需定制,對(duì)于單一零件較為實(shí)用。但是也有缺點(diǎn),僅能進(jìn)行單個(gè)零件精確搜索或者對(duì)具有相同字符串的零件號(hào)增加通配符進(jìn)行模糊搜索。
圖3 EXCEL輔助按零件號(hào)批量精確搜索
CATIA自帶搜索工具的高級(jí)選項(xiàng)支持組合查詢,即支持邏輯運(yùn)算,故可以通過(guò)EXCEL公式在表格中生成相應(yīng)搜索命令,然后復(fù)制至CATIA組合查詢框中執(zhí)行搜索,可以實(shí)現(xiàn)按零件號(hào)精確批量搜索。如在某個(gè)裝配下同時(shí)搜索零件號(hào)分別為80500890及40401410、40401420三個(gè)零件,在EXCEL制定的模板中,處理生成搜索語(yǔ)句:裝配設(shè)計(jì).零件.零件編號(hào)=80500890+裝配設(shè)計(jì).零件.零件編號(hào)=40401410+裝配設(shè)計(jì).零件.零件編號(hào)=40401420,然后復(fù)制至CATIA搜索組合查詢中,執(zhí)行搜索,如圖3所示。若CATIA為英文界面,需將字符串裝配設(shè)計(jì).零件.零件編號(hào)替換成''Assembly Design'.Part.'Part Number'。
程序自動(dòng)批量搜索是利用編程語(yǔ)言調(diào)用 CATIA的 API接口,調(diào)用search方法進(jìn)行操作,通過(guò)程序控制完成按零件號(hào)的精確搜索。程序搜索法的特點(diǎn)是操作簡(jiǎn)單,搜索效率高,但是需要 CATIA二次開發(fā)的相關(guān)知識(shí),對(duì)設(shè)計(jì)人員要求較高。按零件號(hào)批量精確搜索的CATIA二次開發(fā)主要流程如圖4所示。
圖4 按零件號(hào)批量精確搜索的主要流程
程序用戶界面是衡量一個(gè)程序或軟件實(shí)用性的重要指標(biāo)。CATIA二次開發(fā)中設(shè)計(jì)用戶界面通常有兩種方法。第一種也是最常用的,直接在CATIA VBA窗口中插入U(xiǎn)serForm(用戶窗體),并通過(guò)Toolbox工具進(jìn)行相關(guān)設(shè)計(jì),然后通過(guò)使用文本框及按鈕等控件實(shí)現(xiàn)界面的設(shè)計(jì)。另一種是直接在VB軟件中設(shè)計(jì),按鈕等控件的詳細(xì)設(shè)計(jì)同第一種。但因?yàn)閂B獨(dú)立于CATIA的,是微軟開發(fā)的一種面向?qū)ο蟮目梢暬?,屬于CATIA進(jìn)程外的應(yīng)用程序,所以后者需在前面的基礎(chǔ)上加入調(diào)用外部程序。本程序的用戶界面采用的第一種方法。CATIA按零件號(hào)批量搜索程序的界面設(shè)計(jì)如圖5所示。
圖5 CATIA按零件號(hào)批量搜索程序的界面
判斷CATIA用戶界面語(yǔ)言是中文還是英文,代碼如下。
a = Left(CATIA.Statusbar,1)
if a > "~" then
msgbox "中文"
end if
msgbox "英文"
按回車符分割輸入框中的多個(gè)零件號(hào)并返回?cái)?shù)組,代碼如下,TextBox1為程序界面輸入文字的文本框。
arr = Split(TextBox1.Text, vbCrLf)
根據(jù)用戶界面語(yǔ)言為不同語(yǔ)言,用指定字符串分別與arr(0)連接兩組代碼。
中文環(huán)境下:
mystr = "裝配設(shè)計(jì).零件.零件編號(hào)=" & arr(0)
循環(huán),連接所有成員。
For i = 1 To UBound(arr)
mystr = mystr & "+" & "裝配設(shè)計(jì).零件.零件編號(hào)=" & arr(i)
Next
newstr = "" & mystr & ",all" & ""
英文環(huán)境下:
mystr = "'Assembly Design'.Part.'Part Number'=" & arr(0)
循環(huán),連接所有成員。
For i = 1 To UBound(arr)
mystr = mystr &"+" & "'Assembly Design'.Part.'Part Num ber'=" & arr(i)
Next
newstr = "" & mystr & ",all" & ""
將上述兩組代碼分別替換判斷用戶界面語(yǔ)言中的msgbox "中文"及msgbox "中文"即得到本程序的主要代碼。
根據(jù)以上得到的字符串執(zhí)行搜索,代碼如下。
Sub 搜索()
Dim selection1 As Selection
Dim visPropertySet1 As VisPropertySet
Dim productdocument1 As Document
Set productdocument1 = CATIA.ActiveDocument
Set selection1 = productdocument1.Selection
selection1.Search mystr
End Sub
以上為中英文界面通用搜索命令的相應(yīng)代碼。將本程序中mystr根據(jù)CATIA自帶高級(jí)搜索界面的命令進(jìn)行適應(yīng)性修改,可以得到其他批量搜索功能。比如,將上述代碼的'Assembly Design'.Part.'Part Number'、"裝配設(shè)計(jì).零件.零件編號(hào)="分別改為'Assembly Design'. Assembly.'Part Number'、"裝配設(shè)計(jì).裝配.零件編號(hào)=",即可批量搜索裝配。
以 6個(gè)零件組成的裝配為例,同時(shí)搜索零件號(hào)為80500890及40401410、40401420三個(gè)零件。
(1)打開需搜索的裝配。
(2)打開按零件號(hào)批量搜索程序。
(3)復(fù)制零件號(hào)或者手工輸入零件號(hào)至文本框,如圖6所示。
圖6 按零件號(hào)批量搜索輸入框
(4)執(zhí)行搜索,即可選中文本框中零件,如圖7所示。
圖7 程序按零件號(hào)批量搜索
本程序亦可執(zhí)行模糊搜索,以上述裝配為例,對(duì)具有開頭為8050的零件號(hào)進(jìn)行批量搜索。步驟同上面,僅需將步驟(3)改為8050*,執(zhí)行中文搜索,結(jié)果如圖8所示。
圖8 開頭為8050的零件號(hào)批量搜索
通過(guò) CATIA按零件號(hào)批量精確搜索及模糊搜索實(shí)例驗(yàn)證,可以看出使用CATIA VBA代碼批量搜索零件號(hào),可以簡(jiǎn)化操作人員的操作步驟,在使用過(guò)程中更加便捷快速、準(zhǔn)確,證明了CATIA二次開發(fā)對(duì)于設(shè)計(jì)人員有著較高的實(shí)用性與高效性。結(jié)果表明,CATIA二次開發(fā)對(duì)于提高工作效率、減少重復(fù)操作有著不可或缺的作用,可以讓工程師更專注于設(shè)計(jì)研發(fā)工作中。