鐘維明,文伏靈,李 偉,梁 勇(中國電建集團成都勘測設計研究院有限公司,成都 610072)
一種基數據庫的CATIA模板設計方法
鐘維明,文伏靈,李偉,梁勇
(中國電建集團成都勘測設計研究院有限公司,成都610072)
摘要:計算機三維輔助設計軟件CATIA通過COM接口及模板定義實現圖形交互的二次開發,但在CATIA環境下實現復雜的界面設計就顯得非常困難,同時,CATIA的二次開發面向一定程序基礎的人員,對于普通建模者而言自定義模板和二次開發就非常困難。通過外部數據庫定義模板及屬性,利用Web界面設計的特點,實現外部(非CATIA)環境下屬性定義與賦值方法,可降低CATIA二次開發的要求,并有效提高系統開發效率。
關鍵詞:三維模型;CATIA;模板;CAA;二次開發
在Caitia環境下實現模板和自定義屬性的掛接通常通過Caita自身模板定義或CAA二次開發實現,但CATIA二次開發或者模板定義需要專業的程序開發經驗,而且其定義的模板或二次開發程序由于是獨立的程序(模板),模板的更改和屬性值的變更使得對每一個零部件節點進行變更。提出一種基于數據庫的屬性維護方法,通過在CATIA外部(數據庫)定義模板及模板屬性。將CATIA下的節點路徑(編號)關聯管理,實現任意類型模板及模板屬性的管理。一方面降低了模板的使用難度,另一方面有利于模板的后期維護,提高模板使用效率。
CATIA通過CAA接口實現與微軟基礎類庫MFC控件的通信,MFC通過微軟Web瀏覽器(WebBrowser瀏覽器)控件實現與Web頁面之間的通信,最后通過Web頁面實現與數據庫之間的數據交換。從而實現CATIA環境下三維模型屬性的外部存儲與Web方式維護的目的。
2.1 CAA與MFC之間的通信
(1)CAA向MFC通信。因使用的是MFC動態庫,所以從CATIA平臺的CAA接口向MFC通信,可以直接在CAA中調用MFC動態庫的接口,向MFC發送消息即可。
(2)MFC向CAA通信。如果需要MFC向CAA返回信息,需要在MFC動態庫中提供一個接口,接收CAA提供的函數,作為回調函數,當需要MFC向CAA返回信息時,調用該回調函數即可,MFC動態庫中的代碼片段節選如下。
2.2 MFC與WEB之間的通信
MFC與WEB之間的通信,本質上就是C++與JavaScript之間的通信,所以在MFC動態庫中封裝了SDK實現的WebBrowser控件,把WebBrowser控件作為C++與JavaScript的橋梁,實現雙向通信。
(1)MFC向WEB通信。當用戶選擇了CATIA節點,程序通過本文的通信機制,將CATIA節點路徑,傳送到WEB端,并顯示到頁面。
(2)WEB向MFC通信。當WEB端按鈕需要向MFC返回消息時,調用window.external.MethodForWeb時,會調用GetIDsOfNames方法找到MethodForWeb,再通過Invoke方法,最后調用MethodForWeb,獲取到WEB端傳送給MFC的信息。
基于CATIACAA與Web的混合架構機制,建立基于Web的模板設計方式,具體包括添加屬性模板和為模板配置屬性兩方面內容。
(1)添加屬性模板。針對不同的三維模型,可添加多個不同類型的屬性集(即模板),在Web端實現了添加屬性模板功能,通過配置不同的屬性模板,可定制不同結構的屬性數量及類型。
(2)添加屬性。完成屬性模板添加后,進一步對CATIA模型賦予相應的屬性。首先在三維環境下選擇工程和節點,然后選擇節點所屬模板后自動彈出該模板所有屬性列表,填寫屬性值并確認后,一方面屬性掛接到CATIA模型樹上,另一方面屬性值寫入數據庫,完成流程。
通過研究CATIA二次開發與MFC及WEB之間的多路通信實現了CATIA屬性模板的外部定義與賦值??梢越档虲ATIA屬性添加的難度,同時使得屬性的維護更簡單方便。最后應用證明該方法可行、有效,極大的提高CATIA模板的開發效率,也極大的提高了模板的復用性。
參考文獻:
[1]周桂生,陸文龍.CATIA二次開發技術研究與應用[J].機械設計與制造,2010(01).
[2]胡添元,余雄慶.基于CATIA二次開發的飛翼外形參數化建模[J].飛機設計,2007(06).
[3]郭新玲,李韶杰,邱尚高.MFC類庫在Pro/E二次開發中的應用[J].現代制造工程,2004(10).
[4]吳憲傳,張向文.MATLAB和VC++聯合編程的COM研究[J].計算機系統應用,2009(07).
[5]徐輝,王忠芝.基于WebBrowser的MATLAB用戶界面設計與實現[J].計算機系統應用,2011(07).