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