呂奉陽,楊金秀,羅培鋒
?
基于VB6.0的CATIA二次開發在圖紙設計中的應用
呂奉陽,楊金秀,羅培鋒
(廣州汽車集團股份有限公司汽車工程研究院,廣東 廣州 511434)
針對圖紙設計中經常出現的鏈接替換失效問題,給出了手動替換法和程序替換法兩種解決方案。在介紹VB編程語言及CATIA二次開發理論的基礎上,給出了程序替換法的基本流程,利用VB6.0開發了用戶界面及CATIA圖紙鏈接替換程序。通過實例驗證,證明了CATIA圖紙鏈接替換程序相對傳統手工替換方法的優越性。結果表明,CATIA二次開發可以提高工作效率,提升設計質量。
VB;CATIA;二次開發;圖紙設計
CATIA是法國達索公司開發的CAD/CAE/CAM一體化軟件,在世界CAD/CAE/CAM領域中處于領先地位[1]。CATIA工程圖紙一般與三維數據保持關聯,數據修改時,圖紙可以方便快捷的進行更新。如果圖紙和關聯數據在傳遞、編輯過程中處理不當,經常會導致圖紙鏈接失效,數據的更改內容無法更新到圖紙。
車身開發過程中,經常遇到由于設計變更或配置增加導致零件號更改的情況,零件號更改后導致圖紙鏈接數據失效,圖紙無法更新,重新出圖需要將圖紙信息重新標注一遍,對于復雜零件,重新出圖工作量較大。利用VB6.0進行CATIA二次開發,通過CATIA圖紙鏈接替換程序,將原圖紙鏈接數據替換為新數據,然后在原圖紙上更新零件變化點的標注信息即可,可以減少同類零件的圖紙重復設計工作量,提高出圖效率。
VB6.0是微軟公司開發的面向對象的可視化編程工具。VB以早期的Basic語言為基礎,以可視化為主要特點,采用面向對象、事件驅動的編程機制[2]。VB把Windows編程的復雜性進行了封裝,使用戶可以簡單快速地開發出Windows環境下的應用程序。
CATIA加入了ActiveX自動化服務功能,VB是最為常用的支持ActiveX技術的開發工具之一。采用VB作為開發工具進行CATIA二次開發,可使CATIA與Windows其它程序的數據共享變得更加容易[3]。
CATIA提供了兩種編程接口,一種是自動化對象編程(V5 Automation),一種是開放的組件應用架構(CAA)[4]。CAA功能全面,穩定性好,適合深層次的CATIA二次開發,但是對開發人員的要求較高,需要使用專業的編程軟件及工具。V5 Automation是基于COM技術的編程接口,描述了CATIA二次開發編程對象架構,包含不同接口中每個對象的方法屬性等詳細信息,是進行CATIA二次開發的重要參考資料。
所謂CATIA二次開發,就是利用CATIA提供的API接口進行程序設計開發,拓展CATIA軟件功能,實現軟件功能個性化和操作自動化。二次開發可以使軟件更好地為用戶服務,對提高工作效率和產品質量,節約研發成本和縮短開發周期有著重要的作用[5]。
進行CATIA二次開發,首先要了解CATIA V5 Automa -tion API的基本架構,掌握常用對象的屬性和方法。CATIA V5 Automation對象架構如圖1所示。

圖1 CATIA V5 Automation對象架構
CATIA二次開發的過程可以理解為:用戶為實現某種功能,根據需要合理地調用V5 Automation提供的類、庫的屬性和方法以及二次開發函數。CATIA中的每個功能(包括零件設計、曲面設計、裝配設計、工程制圖等)以及所有的實體特征(包括草圖特征、修飾特征、曲面特征、變換特征、組合特征等)都有相應的類、庫支撐,因此CATIA二次開發的主要工作就是合理地調用V5 Automation API對象進行編程。對CATIA進行二次開發的基本流程如圖2所示。

圖2 CATIA二次開發基本流程
以零件A、B為例進行說明。零件A因設計變更,零件號重新命名為B,圖紙A跟隨更改為圖紙B。圖紙B的原始鏈接數據為零件A,需要將鏈接數據替換為零件B。因零件A數據改名、刪除或存放位置變更,打開圖紙B提示找不到關聯數據A,圖紙鏈接失效,如圖3所示。

圖3 圖紙鏈接失效
UUID是通用唯一識別碼(Universally Unique Identifier)的英文縮寫。每個CATIA文件在被保存的時候,會產生唯一的UUID來標識這個文件的唯一性。CATIA圖紙的鏈接數據能否被替換,取決于替換數據和被替換數據的UUID是否一致,而與數據的內容毫不相關。
通過另存為或復制文件重命名的方式更改被替換數據,替換數據和被替換數據的UUID一致,圖紙鏈接數據替換比較容易。
通過新建自被替換數據或從不同模板創建替換數據,將導致替換數據和被替換數據的UUID不一致,即使數據內容完全相同,圖紙鏈接數據替換也會報錯。有兩種方法可以解決此問題,分別是手動替換法和程序替換法,兩種方法各有利弊,可以根據個人實際情況選擇使用。
手動替換法是在不借助編程手段的前提下,利用CATIA軟件自帶的工具及命令完成圖紙鏈接數據替換。手動替換法簡單易學,容易操作,但是過程相對復雜,效率較低。手動替換步驟如下。
(1)點擊“編輯—鏈接”,彈出對話框如圖4所示,點擊“tab_doc_links”選項卡,點擊“button_replace”,彈出文件選擇對話框,選擇替換數據,確定完成。

圖4 圖紙鏈接替換對話框
如果替換數據與被替換數據UUID相同,圖紙鏈接可直接成功替換,如圖5所示。

圖5 圖紙鏈接替換成功
如果替換數據與被替換數據UUID不一致,圖紙鏈接替換失敗,如圖6所示。

圖6 圖紙鏈接替換失敗
(2)重新打開圖紙,記錄圖紙鏈接原始數據的存放路徑及文件名,將替換數據重新命名,名稱與被替換數據相同,并存放到相同路徑及文件夾下。

圖7 原始數據的存放路徑及文件名
(3)點擊桌面命令,點擊鏈接數據,右鍵加載,如圖8所示,加載后關閉退出桌面。

圖8 加載數據
(4)選擇斷開鏈接的視圖,點擊鼠標右鍵,選擇“選定的對象—修改鏈接”,如圖9所示。點擊后會彈出警告對話框,點擊確定,彈出鏈接修改對話框,移除已斷開的鏈接,如圖10所示,確定完成。確定后,視圖顯示待更新,如圖5所示,表明鏈接替換成功。

圖9 修改鏈接
此時雖然圖紙鏈接替換成功,但存在的問題是,圖紙名與數據名不對應(零件B的圖紙對應鏈接數據的文件名是零件A),且鏈接數據的存放位置是原始文件存放路徑,不是指定路徑。

圖10 移除鏈接
(5)將替換成功的數據改回原來的文件名,并存放到任意指定路徑下,重復步驟(1),完成圖紙鏈接替換。
程序替換法是利用編程語言調用CATIA的API接口,通過程序控制完成圖紙鏈接替換。程序替換法的特點是操作簡單,替換效率高,但是需要同時熟悉編程語言及CATIA二次開發的相關知識,對設計人員的要求較高。程序替換法的基本流程如圖11所示。

圖11 程序替換法基本流程
啟動VB軟件,新建一個“標準EXE的工程”。在VB中訪問CATIA時,腳本的運行不是由CATIA調用,CATIA作為一個OLE自動化服務器,VB程序是通過COM接口來訪問CATIA內部的對象。因此,要對CATIA進行訪問和操作,首先要連接到它的COM接口,可以通過以下代碼實現。
Dim CATIA As Object
On Error Resume Next
Set CATIA = GetObject(, "CATIA.Application")
If Err.Number <> 0 Then
Set CATIA = CreateObject("CATIA.Application")
CATIA.Visible = True
End If
On Error GoTo 0
如果CATIA已經運行,只需要用GetObject方法連接到CATIA即可;如果CATIA沒有運行,就要用CreateObject方法啟動。一般將兩種方法合并使用,即上述代碼就可以實現對CATIA的訪問。
用戶界面是衡量一個程序或軟件實用性的重要指標。VB6.0是一種面向對象的可視化編程語言,界面設計簡單易學。CATIA圖紙鏈接替換程序的界面設計如圖12所示。

圖12 用戶界面
程序標題名稱為:CATIA圖紙鏈接替換。程序實現的功能是替換鏈接數據和更新視圖,界面設計包含數據列表及視圖列表,用戶可以直接用鼠標進行選擇。為了區分數據列表和視圖列表,列表上方設計了兩個信息標簽:請選擇圖紙鏈接數據和請選擇更新的視圖。圖紙一般包含多個視圖,有時不需要更新全部視圖,用戶界面提供了更新全部視圖和更新單個視圖兩個命令按鈕,方便用戶根據需要選擇執行。
獲取圖紙鏈接替換數據,代碼如下,i表示當前打開的CATIA文件序號,通過鼠標選擇確定。
Dim D
Set D = CATIA.Documents.Item(i).Product
獲取當前活動圖紙的視圖,代碼如下,j表示當前活動圖紙的視圖序號,通過鼠標選擇確定。
Dim v
Set v=CATIA.ActiveDocument.Sheets.ActiveSheet. Views. Item(j)
解除鎖定視圖,代碼如下:
v.LockStatus = 0
移除視圖鏈接數據,代碼如下:
v.GenerativeLinks.RemoveAllLinks
替換視圖鏈接數據,代碼如下:
v.GenerativeBehavior.Document = D
更新視圖,代碼如下:
v.GenerativeBehavior.Update
以零件A、B為例進行說明。
(1)打開鏈接失效圖紙:PartB.CATDrawing,彈出信息如圖3所示,點擊關閉忽略此信息。
(2)打開鏈接替換數據:PartB.CATPart。圖紙鏈接原始數據(PartA.CATPart)不需打開。
(3)將CATIA當前工作視圖切換到圖紙。
(4)雙擊運行CATIA圖紙鏈接替換程序,彈出程序界面如圖13所示。

圖13 CATIA圖紙鏈接替換程序界面
從程序界面可以看到,當前打開的CATIA數據已經添加到數據列表中,當前活動圖紙的視圖已經添加到視圖列表中。鼠標選擇數據,點擊更新全部視圖,即可完成圖紙鏈接替換及視圖更新。對于復雜圖紙,視圖及關聯數據較多,直接更新全部視圖可能導致誤操作,即不需更新的視圖也被強制更新,這時可以在視圖列表選擇需要更新的單個視圖,點擊更新單個視圖。
通過CATIA圖紙鏈接替換程序的實例驗證,可以看出程序替換法相對于傳統的手動替換方法,簡化了操作步驟,使用更加方便,證明了CATIA二次開發的實用性和高效性。結果表明,CATIA二次開發可以進一步提高工作效率,減少重復性設計,縮短開發周期,降低設計成本,讓設計師將更多的精力放在優化結構設計,提升設計質量上。下一步研究方向是擴展CATIA二次開發的應用范圍及實現方法。
[1] 胡挺,吳立軍. CATIA二次開發技術基礎[M].北京:電子工業出版社, 2006.
[2] 林卓然.VB語言程序設計(第3版)[M].北京:電子工業出版社, 2012.
[3] 劉薇娜,賈帥帥.基于CATIA二次開發的非標準件參數化設計[J]. 自動化技術與應用,2017,36(7):43-46.
[4] 彭歡.基于V5 Automation的CATIA二次開發技術研究[J].電子機械工程, 2012, 28(2):61-64.
[5] 周桂生,陸文龍. CATIA二次開發技術研究與應用[J].機械設計與制造,2010(1):81-83.
Application of CATIA Secondary Development for Drawing Design Based on VB6.0
Lv Fengyang, Yang Jinxiu, Luo Peifeng
(GAC Automotive Research & Development Center, Guangdong Guangzhou 511434 )
In view of the problem of link replacement failure which often occurs in drawing design, two solutions are given in this paper: manual replacement method and program replacement method. On the basis of introducing VB programming language and CATIA secondary development theory, the basic flow of program replacement method is given. User interface and CATIA drawing link replacement program are developed with VB6.0. The application example proves that the CATIA drawing link replacement program is superior to the traditional manual replacement method. The results show that the secondary development of CATIA can improve work efficiency and design quality.
VB; CATIA; Secondary development; Drawing design
A
1671-7988(2019)05-88-05
U462
B
1671-7988(2019)05-88-05
U462
呂奉陽,廣汽研究院車身工程部,工學碩士,前機艙責任工程師,主要研究方向為白車身設計。
10.16638/j.cnki.1671-7988.2019.05.026