呂奉陽,楊金秀,羅培鋒
?
基于VB6.0的CATIA二次開發(fā)在圖紙設(shè)計中的應(yīng)用
呂奉陽,楊金秀,羅培鋒
(廣州汽車集團(tuán)股份有限公司汽車工程研究院,廣東 廣州 511434)
針對圖紙設(shè)計中經(jīng)常出現(xiàn)的鏈接替換失效問題,給出了手動替換法和程序替換法兩種解決方案。在介紹VB編程語言及CATIA二次開發(fā)理論的基礎(chǔ)上,給出了程序替換法的基本流程,利用VB6.0開發(fā)了用戶界面及CATIA圖紙鏈接替換程序。通過實例驗證,證明了CATIA圖紙鏈接替換程序相對傳統(tǒng)手工替換方法的優(yōu)越性。結(jié)果表明,CATIA二次開發(fā)可以提高工作效率,提升設(shè)計質(zhì)量。
VB;CATIA;二次開發(fā);圖紙設(shè)計
CATIA是法國達(dá)索公司開發(fā)的CAD/CAE/CAM一體化軟件,在世界CAD/CAE/CAM領(lǐng)域中處于領(lǐng)先地位[1]。CATIA工程圖紙一般與三維數(shù)據(jù)保持關(guān)聯(lián),數(shù)據(jù)修改時,圖紙可以方便快捷的進(jìn)行更新。如果圖紙和關(guān)聯(lián)數(shù)據(jù)在傳遞、編輯過程中處理不當(dāng),經(jīng)常會導(dǎo)致圖紙鏈接失效,數(shù)據(jù)的更改內(nèi)容無法更新到圖紙。
車身開發(fā)過程中,經(jīng)常遇到由于設(shè)計變更或配置增加導(dǎo)致零件號更改的情況,零件號更改后導(dǎo)致圖紙鏈接數(shù)據(jù)失效,圖紙無法更新,重新出圖需要將圖紙信息重新標(biāo)注一遍,對于復(fù)雜零件,重新出圖工作量較大。利用VB6.0進(jìn)行CATIA二次開發(fā),通過CATIA圖紙鏈接替換程序,將原圖紙鏈接數(shù)據(jù)替換為新數(shù)據(jù),然后在原圖紙上更新零件變化點的標(biāo)注信息即可,可以減少同類零件的圖紙重復(fù)設(shè)計工作量,提高出圖效率。
VB6.0是微軟公司開發(fā)的面向?qū)ο蟮目梢暬幊坦ぞ?。VB以早期的Basic語言為基礎(chǔ),以可視化為主要特點,采用面向?qū)ο?、事件?qū)動的編程機制[2]。VB把Windows編程的復(fù)雜性進(jìn)行了封裝,使用戶可以簡單快速地開發(fā)出Windows環(huán)境下的應(yīng)用程序。
CATIA加入了ActiveX自動化服務(wù)功能,VB是最為常用的支持ActiveX技術(shù)的開發(fā)工具之一。采用VB作為開發(fā)工具進(jìn)行CATIA二次開發(fā),可使CATIA與Windows其它程序的數(shù)據(jù)共享變得更加容易[3]。
CATIA提供了兩種編程接口,一種是自動化對象編程(V5 Automation),一種是開放的組件應(yīng)用架構(gòu)(CAA)[4]。CAA功能全面,穩(wěn)定性好,適合深層次的CATIA二次開發(fā),但是對開發(fā)人員的要求較高,需要使用專業(yè)的編程軟件及工具。V5 Automation是基于COM技術(shù)的編程接口,描述了CATIA二次開發(fā)編程對象架構(gòu),包含不同接口中每個對象的方法屬性等詳細(xì)信息,是進(jìn)行CATIA二次開發(fā)的重要參考資料。
所謂CATIA二次開發(fā),就是利用CATIA提供的API接口進(jìn)行程序設(shè)計開發(fā),拓展CATIA軟件功能,實現(xiàn)軟件功能個性化和操作自動化。二次開發(fā)可以使軟件更好地為用戶服務(wù),對提高工作效率和產(chǎn)品質(zhì)量,節(jié)約研發(fā)成本和縮短開發(fā)周期有著重要的作用[5]。
進(jìn)行CATIA二次開發(fā),首先要了解CATIA V5 Automa -tion API的基本架構(gòu),掌握常用對象的屬性和方法。CATIA V5 Automation對象架構(gòu)如圖1所示。
圖1 CATIA V5 Automation對象架構(gòu)
CATIA二次開發(fā)的過程可以理解為:用戶為實現(xiàn)某種功能,根據(jù)需要合理地調(diào)用V5 Automation提供的類、庫的屬性和方法以及二次開發(fā)函數(shù)。CATIA中的每個功能(包括零件設(shè)計、曲面設(shè)計、裝配設(shè)計、工程制圖等)以及所有的實體特征(包括草圖特征、修飾特征、曲面特征、變換特征、組合特征等)都有相應(yīng)的類、庫支撐,因此CATIA二次開發(fā)的主要工作就是合理地調(diào)用V5 Automation API對象進(jìn)行編程。對CATIA進(jìn)行二次開發(fā)的基本流程如圖2所示。
圖2 CATIA二次開發(fā)基本流程
以零件A、B為例進(jìn)行說明。零件A因設(shè)計變更,零件號重新命名為B,圖紙A跟隨更改為圖紙B。圖紙B的原始鏈接數(shù)據(jù)為零件A,需要將鏈接數(shù)據(jù)替換為零件B。因零件A數(shù)據(jù)改名、刪除或存放位置變更,打開圖紙B提示找不到關(guān)聯(lián)數(shù)據(jù)A,圖紙鏈接失效,如圖3所示。
圖3 圖紙鏈接失效
UUID是通用唯一識別碼(Universally Unique Identifier)的英文縮寫。每個CATIA文件在被保存的時候,會產(chǎn)生唯一的UUID來標(biāo)識這個文件的唯一性。CATIA圖紙的鏈接數(shù)據(jù)能否被替換,取決于替換數(shù)據(jù)和被替換數(shù)據(jù)的UUID是否一致,而與數(shù)據(jù)的內(nèi)容毫不相關(guān)。
通過另存為或復(fù)制文件重命名的方式更改被替換數(shù)據(jù),替換數(shù)據(jù)和被替換數(shù)據(jù)的UUID一致,圖紙鏈接數(shù)據(jù)替換比較容易。
通過新建自被替換數(shù)據(jù)或從不同模板創(chuàng)建替換數(shù)據(jù),將導(dǎo)致替換數(shù)據(jù)和被替換數(shù)據(jù)的UUID不一致,即使數(shù)據(jù)內(nèi)容完全相同,圖紙鏈接數(shù)據(jù)替換也會報錯。有兩種方法可以解決此問題,分別是手動替換法和程序替換法,兩種方法各有利弊,可以根據(jù)個人實際情況選擇使用。
手動替換法是在不借助編程手段的前提下,利用CATIA軟件自帶的工具及命令完成圖紙鏈接數(shù)據(jù)替換。手動替換法簡單易學(xué),容易操作,但是過程相對復(fù)雜,效率較低。手動替換步驟如下。
(1)點擊“編輯—鏈接”,彈出對話框如圖4所示,點擊“tab_doc_links”選項卡,點擊“button_replace”,彈出文件選擇對話框,選擇替換數(shù)據(jù),確定完成。
圖4 圖紙鏈接替換對話框
如果替換數(shù)據(jù)與被替換數(shù)據(jù)UUID相同,圖紙鏈接可直接成功替換,如圖5所示。
圖5 圖紙鏈接替換成功
如果替換數(shù)據(jù)與被替換數(shù)據(jù)UUID不一致,圖紙鏈接替換失敗,如圖6所示。
圖6 圖紙鏈接替換失敗
(2)重新打開圖紙,記錄圖紙鏈接原始數(shù)據(jù)的存放路徑及文件名,將替換數(shù)據(jù)重新命名,名稱與被替換數(shù)據(jù)相同,并存放到相同路徑及文件夾下。
圖7 原始數(shù)據(jù)的存放路徑及文件名
(3)點擊桌面命令,點擊鏈接數(shù)據(jù),右鍵加載,如圖8所示,加載后關(guān)閉退出桌面。
圖8 加載數(shù)據(jù)
(4)選擇斷開鏈接的視圖,點擊鼠標(biāo)右鍵,選擇“選定的對象—修改鏈接”,如圖9所示。點擊后會彈出警告對話框,點擊確定,彈出鏈接修改對話框,移除已斷開的鏈接,如圖10所示,確定完成。確定后,視圖顯示待更新,如圖5所示,表明鏈接替換成功。
圖9 修改鏈接
此時雖然圖紙鏈接替換成功,但存在的問題是,圖紙名與數(shù)據(jù)名不對應(yīng)(零件B的圖紙對應(yīng)鏈接數(shù)據(jù)的文件名是零件A),且鏈接數(shù)據(jù)的存放位置是原始文件存放路徑,不是指定路徑。
圖10 移除鏈接
(5)將替換成功的數(shù)據(jù)改回原來的文件名,并存放到任意指定路徑下,重復(fù)步驟(1),完成圖紙鏈接替換。
程序替換法是利用編程語言調(diào)用CATIA的API接口,通過程序控制完成圖紙鏈接替換。程序替換法的特點是操作簡單,替換效率高,但是需要同時熟悉編程語言及CATIA二次開發(fā)的相關(guān)知識,對設(shè)計人員的要求較高。程序替換法的基本流程如圖11所示。
圖11 程序替換法基本流程
啟動VB軟件,新建一個“標(biāo)準(zhǔn)EXE的工程”。在VB中訪問CATIA時,腳本的運行不是由CATIA調(diào)用,CATIA作為一個OLE自動化服務(wù)器,VB程序是通過COM接口來訪問CATIA內(nèi)部的對象。因此,要對CATIA進(jìn)行訪問和操作,首先要連接到它的COM接口,可以通過以下代碼實現(xiàn)。
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已經(jīng)運行,只需要用GetObject方法連接到CATIA即可;如果CATIA沒有運行,就要用CreateObject方法啟動。一般將兩種方法合并使用,即上述代碼就可以實現(xiàn)對CATIA的訪問。
用戶界面是衡量一個程序或軟件實用性的重要指標(biāo)。VB6.0是一種面向?qū)ο蟮目梢暬幊陶Z言,界面設(shè)計簡單易學(xué)。CATIA圖紙鏈接替換程序的界面設(shè)計如圖12所示。
圖12 用戶界面
程序標(biāo)題名稱為:CATIA圖紙鏈接替換。程序?qū)崿F(xiàn)的功能是替換鏈接數(shù)據(jù)和更新視圖,界面設(shè)計包含數(shù)據(jù)列表及視圖列表,用戶可以直接用鼠標(biāo)進(jìn)行選擇。為了區(qū)分?jǐn)?shù)據(jù)列表和視圖列表,列表上方設(shè)計了兩個信息標(biāo)簽:請選擇圖紙鏈接數(shù)據(jù)和請選擇更新的視圖。圖紙一般包含多個視圖,有時不需要更新全部視圖,用戶界面提供了更新全部視圖和更新單個視圖兩個命令按鈕,方便用戶根據(jù)需要選擇執(zhí)行。
獲取圖紙鏈接替換數(shù)據(jù),代碼如下,i表示當(dāng)前打開的CATIA文件序號,通過鼠標(biāo)選擇確定。
Dim D
Set D = CATIA.Documents.Item(i).Product
獲取當(dāng)前活動圖紙的視圖,代碼如下,j表示當(dāng)前活動圖紙的視圖序號,通過鼠標(biāo)選擇確定。
Dim v
Set v=CATIA.ActiveDocument.Sheets.ActiveSheet. Views. Item(j)
解除鎖定視圖,代碼如下:
v.LockStatus = 0
移除視圖鏈接數(shù)據(jù),代碼如下:
v.GenerativeLinks.RemoveAllLinks
替換視圖鏈接數(shù)據(jù),代碼如下:
v.GenerativeBehavior.Document = D
更新視圖,代碼如下:
v.GenerativeBehavior.Update
以零件A、B為例進(jìn)行說明。
(1)打開鏈接失效圖紙:PartB.CATDrawing,彈出信息如圖3所示,點擊關(guān)閉忽略此信息。
(2)打開鏈接替換數(shù)據(jù):PartB.CATPart。圖紙鏈接原始數(shù)據(jù)(PartA.CATPart)不需打開。
(3)將CATIA當(dāng)前工作視圖切換到圖紙。
(4)雙擊運行CATIA圖紙鏈接替換程序,彈出程序界面如圖13所示。
圖13 CATIA圖紙鏈接替換程序界面
從程序界面可以看到,當(dāng)前打開的CATIA數(shù)據(jù)已經(jīng)添加到數(shù)據(jù)列表中,當(dāng)前活動圖紙的視圖已經(jīng)添加到視圖列表中。鼠標(biāo)選擇數(shù)據(jù),點擊更新全部視圖,即可完成圖紙鏈接替換及視圖更新。對于復(fù)雜圖紙,視圖及關(guān)聯(lián)數(shù)據(jù)較多,直接更新全部視圖可能導(dǎo)致誤操作,即不需更新的視圖也被強制更新,這時可以在視圖列表選擇需要更新的單個視圖,點擊更新單個視圖。
通過CATIA圖紙鏈接替換程序的實例驗證,可以看出程序替換法相對于傳統(tǒng)的手動替換方法,簡化了操作步驟,使用更加方便,證明了CATIA二次開發(fā)的實用性和高效性。結(jié)果表明,CATIA二次開發(fā)可以進(jìn)一步提高工作效率,減少重復(fù)性設(shè)計,縮短開發(fā)周期,降低設(shè)計成本,讓設(shè)計師將更多的精力放在優(yōu)化結(jié)構(gòu)設(shè)計,提升設(shè)計質(zhì)量上。下一步研究方向是擴展CATIA二次開發(fā)的應(yīng)用范圍及實現(xiàn)方法。
[1] 胡挺,吳立軍. CATIA二次開發(fā)技術(shù)基礎(chǔ)[M].北京:電子工業(yè)出版社, 2006.
[2] 林卓然.VB語言程序設(shè)計(第3版)[M].北京:電子工業(yè)出版社, 2012.
[3] 劉薇娜,賈帥帥.基于CATIA二次開發(fā)的非標(biāo)準(zhǔn)件參數(shù)化設(shè)計[J]. 自動化技術(shù)與應(yīng)用,2017,36(7):43-46.
[4] 彭歡.基于V5 Automation的CATIA二次開發(fā)技術(shù)研究[J].電子機械工程, 2012, 28(2):61-64.
[5] 周桂生,陸文龍. CATIA二次開發(fā)技術(shù)研究與應(yīng)用[J].機械設(shè)計與制造,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
呂奉陽,廣汽研究院車身工程部,工學(xué)碩士,前機艙責(zé)任工程師,主要研究方向為白車身設(shè)計。
10.16638/j.cnki.1671-7988.2019.05.026