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