徐太花
(天津大學軟件學院,天津 300072)
利用三維建模軟件建模過程中,經常會需要輸入文字標識符,包括二維平面文字和三維立體文字。雖然SolidWorks、UG等建模軟件可直接輸入文字并進行特征操作,但是在CATIA中要輸入二、三維文字的過程復雜繁瑣、不易修改,可重用性差??紤]到CATIA的應用范圍廣,很多廠商都選用CATIA作為自己的建模工具,因此如何簡單、方便、快捷、靈活地輸入文字,提高建模人員的工作效率就變得尤為重要。本文以CATIA文字為研究對象,基于CAA開發(fā)工具根據不同需求實現了輸入二、三維文字的功能。
CAA是對達索(Dassault Systems)公司一系列產品如CATIA、ENOVIA、DELIMA等進行二次開發(fā)的一個環(huán)境,與VS結合得比較緊密,通過API函數調用CATIA的核心程序,并進行程序開發(fā),從而實現客戶程序和原系統(tǒng)的緊密集成。CAA組件應用架構[1-5]如圖1所示,它由一系列的模塊組成,在CAA架構的支撐之下,Dassault Systems系統(tǒng)可像搭積木一樣建立起來,這種結構非常適宜于系統(tǒng)的擴充和發(fā)展[6],各個模塊之間相互關聯、滲透,極為復雜。
CATIA V5的二次開發(fā)遵循面向對象的設計思想,構建了完全基于COM(Component Object Mode1)組件的體系結構 PPR(Products,Process,Resource),有效地解決了其維護、管理、擴展困難的問題,并大量使用了最新的計算機技術和標準以及軟件工程技術,其中包括基于組件架構思想的Java Bean、COM/OLE、CORBA技術和 Web技術、C++語言、Visual Basic Journaling、STEP-SDAI、XML、OpenGL 等,使得 CATIA V5具有與眾不同的鮮明特點:數據結構單一,各個模塊全相關,某些模塊之間還是雙向相關,屬于端到端的集成系統(tǒng),擁有強大的專業(yè)應用擴展能力[7]。除此之外,CAA二次開發(fā)還涉及軟件組件結構SCI(Software Component Infrastructure)的3個基本概念:框架(Framework)、組件(Component)及對象總線(Products Bus)。
圖1 CAA組件應用架構
圖2 快速應用開發(fā)環(huán)境
CAA通過提供的快速應用開發(fā)環(huán)境RADE(Rapid Application Development Environment)(如圖 2所示)和不同的COM組件應用接口來幫助用戶實現其自身應用。快速應用開發(fā)環(huán)境是一個可視化的集成開發(fā)環(huán)境,它提供完整的編程工具組。RADE以VC++為載體,開發(fā)工具完全集成在VS環(huán)境中,并且提供了一個CAA框架程序編譯器[8-11]。這個強大的開發(fā)平臺使開發(fā)者能夠有效地應用工業(yè)標準工具和方法,這些方法指導開發(fā)者編輯和擴展CATIA V5和ENOVIA V5的圖形用戶界面、應用程序和數據模型。作為CAA-RADE的有益補充,開發(fā)環(huán)境還廣泛設置了在線編程向導,允許應用CATIA V5和ENOVIA V5的基于組件的應用編程接口(APIS)。
在CAA工程中,需要先創(chuàng)建至少一個框架,即Framework,它包含了一個工程項目的所有需要的元素,即一個Framework就是一個工程項目,是對相似的應用集合的解決方案,但并非是完整的,需要用戶加上自己的代碼來對其進行開發(fā)并將整個應用完整化。Framework的體系結構如圖3所示。
圖3 Framework的體系結構
使用Framework時需要首先創(chuàng)建一個CAA工程,添加一個Framework,在其下可以添加多個Module,Module中可以自定義地添加 Component、Command、Dialog等。在工程中使用一個新的API時要將所屬的頭文件添加到工程使用文件中,將所屬Module添加到工程調用對應Module下的Make文件中,將所屬Framework添加到工程Framework下的IdentityCard.h文件中,就可以實現對新的API的使用。
創(chuàng)建一個新的CAA工程,即在文件菜單下,創(chuàng)建一個新的Workspace,并添加一個Framework。具體如圖4所示。
圖4 創(chuàng)建新的Workspace和Framework
在創(chuàng)建了Workspace和Framework后,就可以添加Module,基本的開發(fā)都在Module里面進行,步驟如圖5。在文件菜單下選擇Add CAAV5 Project里面的New Module來添加Module。
圖5 創(chuàng)建新的Module
創(chuàng)建Module后,需要向Workspace里面加載一些必要的API函數,以供開發(fā)者使用。這些函數在CAA框架中已經提供,開發(fā)人員需要通過圖6所示的步驟進行加載操作。
圖6 加載API
在菜單中Add CAAV5 Item子項下可根據開發(fā)者不同需求添加自定義 Component、Dialog、Command等,以實現通過輸入參數直接用代碼生成一個三維模型,并在CATIA主窗口中顯示。
在CATIA中輸入文字,添加特征實現三維化,其前提是文字必須轉化為圖形,其開發(fā)思路為借用Drawing格式的文字輸入接口,從對話框獲取用戶輸入文字及字體、字號等相關屬性后轉為圖形格式,將轉換后的圖形粘貼于目標草圖平面,再進行拉伸等其他特征操作,實現中需要先定位CATIA中的對象,然后創(chuàng)建Drawing格式的文件,通過GetText函數獲取用戶填寫到文本框里面的文字,并通過Drawing文件的文本輸入接口將文字輸入到Drawing文件中,再轉化為DWG文件格式,接下來將DWG文件中的文字粘貼到草圖中,通過草圖文件的顯示將文字顯示出來。按照二次開發(fā)方法添加至對話框并設計對話框后,在對話框確定按鈕下添加詳細功能實現代碼,詳細的步驟及關鍵代碼如下所示。
(1)獲取對于CATIA中對象的訪問。獲取過程需要遵循COM組件構建技術的訪問規(guī)則,從高到低的順序依次得到。獲取對象的代碼如下所示,首先定位到當前的編輯器Editor,再通過Editor獲取當前對象的定位信息。
(2)在獲取CATIA中對象訪問之后,需要創(chuàng)建Drawing格式文件,以借助文本輸入接口實現文字的功能。
(3)通過GetText函數獲取用戶在指定的文本框中輸入的文本信息,設置文本的相關屬性,包括字體、字號并轉為DWG圖形格式。
(4)將圖形文字粘貼于目標草圖。
(5)通過草圖的一系列顯示操作完成對文字的顯示,具體結果如圖7所示。
圖7 三維文字結果展示
圖8 二維平面文字結果展示
二維平面文字的輸入,關鍵是要文字完全依附于目標平面。主要開發(fā)思路為借助注釋下文本輸入接口,創(chuàng)建新批注集(CATIDrwTextProperties),并在目標平面創(chuàng)建視圖,在視圖中創(chuàng)建注解文本;通過對話框獲取用戶輸入的文字,并設置字體、字號等屬性。注釋下文本輸入接口的特點是會將輸入的文本與選定的平面垂直呈現,為了實現直接在選定的平面上呈現文字,在用戶選定了平面后輸入到文本輸入接口中的平面參數是垂直于用戶選定的平面的,這樣用戶直接輸入輸出的文字就會顯示在選定平面上。在輸入文字后再利用3D預覽接口(CATNavigation3DViewer)預覽文字效果,從而提高工作效率。得出的結果展示如圖8所示。
本文介紹了CAA和CAA二次開發(fā)的基本概念,并介紹了兩種文字的文本輸入顯示方法,均是采用CAA二次開發(fā)的架構實現。從本文可見,通過使用基于CAA開發(fā)工具實現CATIA多種文字格式輸入的功能,可以避免利用CATIA軟件手工建模的繁瑣性,提高設計效率。與其它CAD軟件相比雖然具有較高的復雜性和難度[12],但同時也可以實現更強大的功能,開發(fā)者可以根據需求自定義地開發(fā)組件模塊及功能,從而大大縮短產品開發(fā)周期。在此基礎上,可進一步學習并深入拓展開發(fā),運用CAA二次開發(fā)的思想和平臺、技術,開發(fā)更為復雜的功能,如在曲線或曲面上的二、三維文字等的實現,從而實現CAD/CAM技術的真正意義上的有效應用。
[1]Zhang Guangguo,Chang Zhibin,Liu Haitao.Parametric modeling for globoidal cam based on CATIA/CAA[J].Applied Mechanics and Materials:Computer-Aided Design,Manufacturing,Modeling and Simulation,2011,88-89:236-239.
[2]李維學,王仲奇,康永剛,等.基于CATIA V5二次開發(fā)的產品自動裝配[J].機械制造,2010,48(1):40-43.
[3]卞剛,鐘易成,劉德剛.基于CATIA/CAA的飛機燃油系統(tǒng)管路設計仿真[J].計算機輔助工程,2009,18(3):37-41.
[4]蘇洪軍,王永金.基于CAA的CATIA V5二次開發(fā)方法的研究[J].機械,2008,35(s1):41-43.
[5]康文利,張穎.CATIA二次開發(fā)技術在齒輪參數化設計中的應用[J].機械工程師,2010(11):81-83.
[6]周仙娥,魯墨武,趙海星.基于CAA的CATIA二次開發(fā)的研究[J].科技信息,2008(36):73-74,317.
[7]周桂生,陸文龍.CATIA二次開發(fā)技術研究與應用[J].機械設計與制造,2010(1):81-83.
[8]王宗榮,左敦穩(wěn),王珉.基于CATIA的工程圖圖框、標題欄和明細欄快速生成技術[J].中國制造業(yè)信息化,2006,35(21):58-61.
[9]董伊鑫,席平.基于CATIA的界面二次開發(fā)[J].航空制造技術,2006(12):83-86,104.
[10]梁振剛,孫國棟.基于CATIA/CAA的飛機零部件三維參數化建模技術[J].四川兵工學報,2012,33(3):72-74.
[11]張敏,蘇蘭海,王君英.基于CAA的CATIA用戶自定義特征創(chuàng)建[J].機械設計與制造,2008(7):87-89.
[12]何朝良,杜廷娜,張超.基于CAA的CATIA二次開發(fā)初探[J].自動化技術與應用,2006,25(9):37-40,49.