蔣麗
(中國第一汽車股份有限公司天津技術(shù)開發(fā)分公司)
CATIA V5是法國達(dá)索公司與IBM公司開發(fā)的新一代CAD/CAM產(chǎn)品。由于它具有超強(qiáng)的自由曲面造型和逆向功能、全面組合分析的功能、個(gè)性化的界面以及智能型的功能操作,因此,在汽車行業(yè),普遍運(yùn)用它來設(shè)計(jì)三維立體模型和二維圖紙。CATIA的二次開發(fā)技術(shù)能力關(guān)系到整個(gè)設(shè)計(jì)制造階段的工作效率和產(chǎn)品提升,作為強(qiáng)大的工程軟件,具有很強(qiáng)的開放性能。用戶可以根據(jù)自己的需求,采用不同的方式進(jìn)行各種程度上的二次開發(fā)。該軟件具有供用戶進(jìn)行二次開發(fā)的接口,這些接口給用戶提供一系列工具,可以完成宏程序執(zhí)行、用戶界面定制及幾何形體的生成等功能[1]16。文章主要介紹CATIA軟件二次開發(fā)的基本方法,并以宏程序?yàn)槔?,介紹如何進(jìn)行簡單的CATIA二次開發(fā)插件的編寫,以利于工作效率的提高。
CATIA二次開發(fā)接口是通過進(jìn)程內(nèi)應(yīng)用程序和進(jìn)程外應(yīng)用程序方式與外部程序進(jìn)行通信。
進(jìn)程內(nèi)應(yīng)用程序方式下,CATIA軟件與腳本運(yùn)行在同一進(jìn)程地址空間,如宏方式。在CATIA環(huán)境下通過菜單記錄宏,宏記錄后,生成VB腳本序列。當(dāng)宏開始運(yùn)行,CATIA就處于非激活狀態(tài),因此不能調(diào)用宏之間存儲變量的值。這種方式比較簡單,在CATIA環(huán)境下即可完成。
進(jìn)程外應(yīng)用程序方式下,CATIA與外部應(yīng)用程序在不同進(jìn)程地址空間運(yùn)行。在CATIA運(yùn)行的情況下,外部進(jìn)程可以通過接口駕馭CATIA(創(chuàng)建和修改CATIA環(huán)境、幾何形體的數(shù)據(jù)及尺寸等),同時(shí)支持對象的連接與嵌入(OLE)。
具體來說,CATIA的二次開發(fā)主要使用宏對CATIA進(jìn)行二次開發(fā)和使用組件應(yīng)用架構(gòu)(CAA)對CATIA進(jìn)行二次開發(fā)[1]17-18。
使用宏對CATIA進(jìn)行二次開發(fā)時(shí),在進(jìn)程內(nèi)應(yīng)用程序的方式下,CATIA軟件與腳本運(yùn)行在同一進(jìn)程地址空間,指的就是應(yīng)用宏方式進(jìn)行二次開發(fā)。宏方式可以用于自動化組件,使用VB腳本作為編輯工具,這是一種交互方式的定制。它可以記錄用戶的操作過程,自動生成代碼。CATIA軟件提供了自動化接口用于VB腳本對其進(jìn)行二次開發(fā),自動化應(yīng)用程序編程接口具備與任何OLE所兼容的平臺進(jìn)行通訊的能力。自動化應(yīng)用接口可以調(diào)用函數(shù)獲取用戶的輸入信息并進(jìn)行輸出,而對于NT用戶則可以應(yīng)用VB來定義更為復(fù)雜的輸入輸出面板。運(yùn)行的時(shí)候可以給宏關(guān)聯(lián)一個(gè)圖標(biāo),并置入CATIA顯示框架。這種方式的開發(fā)流程,如圖1所示。
錄制一個(gè)宏是指產(chǎn)生相應(yīng)的腳本語言來記錄一串有次序的動作,如創(chuàng)建和修改對象。當(dāng)結(jié)束錄制時(shí),可以保存、修改及回放,這些被稱為宏的存儲?;胤乓粋€(gè)宏之所以為一個(gè)“內(nèi)進(jìn)程”,是因?yàn)槟_本被和CATIA同一個(gè)進(jìn)程的解釋器所執(zhí)行。宏可以存儲為外部的文件或存儲在自身所在的文件上。
按照慣例,錄制一個(gè)宏有利于了解怎樣去編制程序,錄制宏的顯示界面,如圖2所示。
錄制一個(gè)宏來幫助理解宏代碼,這個(gè)宏是用來設(shè)計(jì)一個(gè)汽車零部件,在宏的存儲界面,可以找到剛才錄制的這個(gè)汽車零部件的宏,如圖3所示。
宏錄制成功后,在宏的存儲界面,點(diǎn)擊宏編輯,可以看到大段的代碼,這段代碼就是剛才繪制零部件的動作以及所有后臺執(zhí)行的命令函數(shù)和涉及的變量。通過對這段代碼的分析,可以看出,整個(gè)CATIA軟件中的宏代碼是如何組織運(yùn)行的。通過對函數(shù)和相應(yīng)變量的組織,就可以得到想要的結(jié)果。
CAA是達(dá)索系統(tǒng)產(chǎn)品擴(kuò)展和客戶進(jìn)行二次開發(fā)的強(qiáng)有力工具。達(dá)索系統(tǒng)提供的CAA產(chǎn)品包括如下內(nèi)容:
1)CAA RADE:基于 Microsoft Visual Studio;
2)CAA CATIA V5 API:CATIA V5 應(yīng)用開發(fā)工具;
3)CAA ENOVIA LCA V5 API:ENOVIA LCA 應(yīng)用開發(fā)工具;
4)CAADELMIAV5API:DELMIAV5應(yīng)用開發(fā)工具;
5)CAA ENOVIA PORTAL V5 API:ENOVIA PORTAL V5應(yīng)用開發(fā)工具。
快速應(yīng)用研發(fā)環(huán)境(RADE)是一個(gè)可視化的集成開發(fā)環(huán)境,它提供了完整的編程工具組。RADE以Microsoft Visual C++6.0為載體,開發(fā)工具完全集成在了VC++環(huán)境中,并且提供了一個(gè)CAA框架程序編譯器,但同時(shí)也限制了VC++的部分功能。可以說CATIA CAA RADE是目前所有高端CAD/CAM開發(fā)環(huán)境中最為復(fù)雜且功能最為強(qiáng)大的一個(gè)。
CAA的構(gòu)成,如圖4所示。從圖4可以看出,構(gòu)成CAA組件的模塊文檔數(shù)量是極其繁多的,而且各個(gè)模塊文檔內(nèi)容之間相互滲透,互相關(guān)聯(lián),極為復(fù)雜。在CAA的支撐之下,達(dá)索系統(tǒng)可像搭積木一樣建立起來,這種結(jié)構(gòu)非常適宜于系統(tǒng)的壯大和發(fā)展。點(diǎn)擊相應(yīng)的模塊,可以進(jìn)入各個(gè)模塊的文檔。同時(shí)CAA利用了組件對象模型(COM),通過COM調(diào)用CATIA最底層的應(yīng)用程序編程接口,這給對CAA的學(xué)習(xí)掌握帶來了困難。
在商業(yè)運(yùn)作方面,與達(dá)索系統(tǒng)的其它產(chǎn)品一樣,CAA也被劃分為軟件包和模塊,用戶在購置CAA時(shí)要根據(jù)需要選擇合適的配置和產(chǎn)品。目前CAA提供的5個(gè)配置軟件包如下:
1)CAA-Multi-workspace Application Building(簡稱ABC):CAA應(yīng)用的基本配置;
2)CAA-C++Extended Development(簡稱 CDC):提供與C++共存的開發(fā)環(huán)境,即對C++開發(fā)環(huán)境的客戶化,用戶除可使用C++開發(fā)環(huán)境的所有工具外,還可使用CAA提供的獨(dú)特的開發(fā)工具,可用于CATIA和ENOVIA的二次開發(fā);
3)CAA-C++Base Development(簡稱 CDV):與CDC類似,但規(guī)模小,針對中小市場,可有限地運(yùn)用于CATIAV5和ENOVIA LCA的客戶化工作;
4)CAA-Java Base Development(簡稱JDV):運(yùn)行于JAVA開發(fā)環(huán)境,適用于ENOVIA LCA客戶端的定制;
5)CAA-Legacy Data Integration Development Configuration(簡稱LDC):提供數(shù)據(jù)接口工具,可使用戶繼承原有的數(shù)據(jù)。
CAA是采用COM和OLE技術(shù),面向?qū)ο蟮某绦蛘Z言,開發(fā)過程可看作是對其組件對象的組合和擴(kuò)展。
作為CATIA V5的組成部分,CAA V5是達(dá)索系統(tǒng)產(chǎn)品擴(kuò)展和客戶進(jìn)行二次開發(fā)的強(qiáng)有力的工具,它建構(gòu)在Microsoft Visual C++6.0版本下,通過API函數(shù)調(diào)用CATIA的核心程序,并進(jìn)行程序開發(fā),從而實(shí)現(xiàn)了客戶程序和原系統(tǒng)的緊密集成。CAA是對第三方產(chǎn)品集成以及對一般客戶進(jìn)行客戶化和個(gè)性化設(shè)計(jì)的強(qiáng)有力工具,利用CAA完全可以實(shí)現(xiàn)達(dá)索系統(tǒng)應(yīng)用的深層次開發(fā)。但是,由于達(dá)索系統(tǒng)應(yīng)用本身的復(fù)雜性和CAA所涉及的深層次內(nèi)容,再加上CATIA本身結(jié)構(gòu)的層次化和嚴(yán)謹(jǐn),所以利用CAA進(jìn)行CATIA二次開發(fā)與其他CAD軟件相比也具有更大的復(fù)雜性和難度,但同時(shí)也可以實(shí)現(xiàn)更強(qiáng)大的功能。
可以在宏菜單下以交互的方式運(yùn)行一個(gè)宏,也可以在工具菜單上點(diǎn)擊相應(yīng)的按鈕,具體如下:
1)用“CNEXT-macro E:UsersMacros∣macroToRun.CATScript”方式運(yùn)行,此時(shí)宏在與CATIA一起運(yùn)行時(shí)運(yùn)行;
2)以“CNEXT-batch-macro E:UsersMacros∣macro-ToRun.CATScript”的混合方式運(yùn)行CATIA,執(zhí)行這種運(yùn)行方式時(shí),這個(gè)命令會打開CATIA,運(yùn)行宏,然后退出CATIA。
1)點(diǎn)擊 Tools->Customize,打開對話框,點(diǎn)擊 Command頁,選擇宏選項(xiàng);
2)拖動需要添加的宏的名稱到工具欄上;
3)選擇另外一個(gè)代替默認(rèn)的圖標(biāo),點(diǎn)擊這個(gè)圖標(biāo)會顯示宏的屬性。
3.3.1 功能需求
由于在進(jìn)行數(shù)據(jù)傳遞的時(shí)候發(fā)現(xiàn)有的廠家需要igs格式的文件,有的需要stl格式的文件,但是涉及到的零部件數(shù)模上千個(gè),一個(gè)個(gè)手動轉(zhuǎn)換格式工作效率低下,因此需要有一個(gè)批量修改格式的功能出現(xiàn)。
3.3.2 軟件設(shè)計(jì)
軟件設(shè)計(jì)的思想是,在C盤創(chuàng)建一個(gè)名為“temp”的文件夾,將需要轉(zhuǎn)換格式的數(shù)模文件都放入該文件夾中,運(yùn)行宏的時(shí)候,就出現(xiàn)如圖5所示的界面,點(diǎn)擊“確定”,開發(fā)出的CATIA宏文件就會自動將“temp”文件夾里的數(shù)模文件轉(zhuǎn)換為需要的格式,避免手動一個(gè)個(gè)的打開,然后點(diǎn)擊“另存為”。由此可以大幅度降低工作量,提高工作效率。
3.3.3 CATIA二次開發(fā)的宏代碼[4]
依據(jù)文章介紹的設(shè)計(jì)思想,開發(fā)的宏代碼如下:
對CATIA軟件進(jìn)行二次開發(fā),可以大大縮短專用系統(tǒng)的開發(fā)周期。二次開發(fā)是對軟件進(jìn)行用戶化和專業(yè)化的有效手段,它可以使軟件更好地為用戶服務(wù),這對提高工作效率和工作質(zhì)量有著不可低估的作用。CATIA軟件為用戶提供了二次開發(fā)的結(jié)構(gòu)和開放式的內(nèi)部命令的集合,給用戶的二次開發(fā)帶來了方便。在熟練掌握CATIA軟件功能的情況下,通過對其深入研究,任何人都可以開發(fā)出適合于本單位和個(gè)人習(xí)慣的工具,為提高工作效率和產(chǎn)品質(zhì)量服務(wù)。