飛機(jī)零部件設(shè)計(jì)是飛機(jī)總體設(shè)計(jì)中的一個(gè)重要步驟。由于飛機(jī)零部件有幾萬(wàn)個(gè),而且大部分零部件類似,結(jié)構(gòu)復(fù)雜,重復(fù)設(shè)計(jì)這些飛機(jī)零部件耗時(shí)耗力,因此如何快速地生成飛機(jī)零部件是一個(gè)重要的問(wèn)題。本文以某飛機(jī)的框類零件作為研究對(duì)象,以CATIA的二次開(kāi)發(fā)作為工具研究了一種可快速驅(qū)動(dòng)生成新的框類零件的參數(shù)化建模方法。首先,創(chuàng)建CATIA/CAA二次開(kāi)發(fā)環(huán)境跟架構(gòu);然后,基于CATIA二次開(kāi)發(fā)的方法,進(jìn)行三維零部件的參數(shù)驅(qū)動(dòng)。
1 CATIA/CAA二次開(kāi)發(fā)平臺(tái)的創(chuàng)建
1.1 搭建CAA二次開(kāi)發(fā)的RADE環(huán)境
CAA API的實(shí)現(xiàn)是通過(guò)其提供的快速應(yīng)用研發(fā)環(huán)境RADE(rapid application development environment)來(lái)完成的。RADE是一個(gè)可視化的集成開(kāi)發(fā)環(huán)境,它提供完整的編程工具組。實(shí)際上RADE以Microsoft Visual Studio VC++為載體,在VC++環(huán)境中增加了CAA的開(kāi)發(fā)工具。
安裝完CAA與RADE后,打開(kāi)RADE目錄下Environment Setup,選擇文件安裝路徑D:\CATIA\B14,此時(shí)啟動(dòng)Microsoft Visual Studio VC++,單擊工具—定制選擇CAA V5 的附加項(xiàng)和宏文件,創(chuàng)建RADE 環(huán)境,重新啟動(dòng)Microsoft Visual Studio VC++即完成與CAA的結(jié)合。CAA將自動(dòng)添加自身的菜單和命令到界面中,通過(guò)使用新的編程環(huán)境來(lái)進(jìn)行CATIA的二次開(kāi)發(fā)。如圖1所示。
圖1 系統(tǒng)界面
1.2 構(gòu)架CATIA二次開(kāi)發(fā)的結(jié)構(gòu)框架
(1)創(chuàng)建二次開(kāi)發(fā)的workspace跟module。并在CAA V5 Workspace菜單中選擇菜單項(xiàng)Locate Prerequisite Workspace,添加CATIA的安裝路徑,由RADE調(diào)用相關(guān)資源。
(2)創(chuàng)建接口。將module設(shè)置為活動(dòng)工程,插入compenent,添加接口函數(shù),此時(shí)建立了一個(gè)空的Addin。在MyFrame.dico文件中可以看到這個(gè)Addin的聲明:
NewAddin CATIPrtWksAddin libPartDesignAddin
在NewAddin.cpp中添加兩個(gè)函數(shù)體
void NewAddin: :CreateCommands( ) { }
CATCmdContainer*NewAddin: :CreateToolbars( ) { }
在函數(shù)體內(nèi)添加創(chuàng)建菜單跟工具條的代碼。
(3)創(chuàng)建響應(yīng)命令。設(shè)置module 為當(dāng)前活動(dòng)工程,插入Resourse—command,并對(duì)創(chuàng)建的命令建立響應(yīng)
new CATMyWorkBenchCmdHeader("菜單","PartDesignAddin","TestCmd",(void*)NULL);
在CAA V5 Encyclopedia的C++ API下All Frameworks中查找需要運(yùn)用的接口函數(shù),利用其使用方法編寫程序,實(shí)現(xiàn)對(duì)飛機(jī)零部件的二次開(kāi)發(fā)。如圖2和圖3所示。
2 框類零件的三維參數(shù)化建模
2.1 調(diào)用CATIA已創(chuàng)建的飛機(jī)框類零件
為便于用戶在前臺(tái)進(jìn)行操作,用二次開(kāi)發(fā)的方式書(shū)寫程序?qū)w機(jī)零部件模型在Microsoft Visual Studio VC++運(yùn)行的同時(shí)顯示在CATIA界面中。
CATSession*pSession=NULL;
rc=GetPtrSession(pSession);
CATIIniInteractiveSession*interSession=NULL;
rc=pSession→QueryInterface(IID_CATIIniInteractiveSession,(void**)&interSession);……
圖2 編程界面
圖3 編程界面
2.2 提取飛機(jī)框類零件的特征參數(shù)信息
根據(jù)飛機(jī)零部件結(jié)構(gòu)復(fù)雜、維數(shù)級(jí)別繁瑣與特征復(fù)雜的特點(diǎn),需要先讀取模型,將不同類型的參數(shù)分類,并采取對(duì)其進(jìn)行提取特征參數(shù)信息的方法,實(shí)現(xiàn)對(duì)飛機(jī)框類零件幾何信息,拓?fù)湫畔⒌墨@取。
cout<<"PushButton020"<<endl;
//定義并實(shí)現(xiàn)CATFrmEditor接口,獲取當(dāng)前的Part
CATFrmEditor*pEditor=CATFrmEditor: :GetCurrentEditor( );
……
CATInit_var spInitOnDoc(pDoc);
//定義并實(shí)現(xiàn)CATIPrtContainer 接口
CATIPrtContainer*spPartConatiner=(CATIPrtContainer*)spInitOnDoc→GetRootContainer("CATIPrtContainer");
……
if(spCkeFact==NULL_var){cout <<"spCkeFact==NULL_var"<<endl;return;}
//CATICkeParmFactory_varspCkeFact=CATIPrtContainer;
CATLISTV(CATBaseUnknown_var)list;
//CATIVisitor_var aStandardVisitor=spCkeFact→CreateStandardVisitor(IID_CATICkeParm,&list);
CATIPrtPart_var myPart=NULL_var;
myPart=spPartConatiner→GetPart( );
……
CATUnicodeString pathName = spParm→Pathname( );
//cout<<"pathName:"<<pathName<<endl;
……
if(m==1)continue;
CATICkeInst_var oValue=spParm→Value( );
CATUnicodeString paramValue=oValue→AsString( );
……
提取的特征參數(shù)類型跟參數(shù)值如圖4。
圖4 特征參數(shù)
2.3 修改參數(shù),驅(qū)動(dòng)生成新的模型
將提取的信息寫入設(shè)計(jì)表中,創(chuàng)建要修改的主副參數(shù)的對(duì)話框,對(duì)提取的參數(shù)類型分類,并對(duì)不同類型的參數(shù)值進(jìn)行修改,將已經(jīng)賦好的參數(shù)值帶回,驅(qū)動(dòng)重新生成新的模型。在修改一個(gè)尺寸后,參數(shù)化模型中的相關(guān)尺寸會(huì)自動(dòng)更新。
//創(chuàng)建Txt的Sheet
CATICkeSheet_var
JDCreateDftCmd: :CreateSheet(CATILinkableObject _ var ispiLink,
CATUnicodeString ioFilePath)//創(chuàng)建表格
{
CATDocument*pDoc=ispiLink→GetDocument( );
if(pDoc==NULL)
{
……
}
CATICkeSheet_var spSheet=NULL_var;
CATIDesignTable_var spDesign=NULL_var;
CATICkeParmFactory_var spCkeFact;
……
spSheet=spDesign→Sheet( );
return spSheet;
}
在Dialog.CATNIs中設(shè)置對(duì)應(yīng)的需要修改的特征參數(shù)信息,使得已提取的參數(shù)信息跟對(duì)話框上的參數(shù)一一對(duì)應(yīng),如圖5所示。
圖5 參數(shù)對(duì)應(yīng)
Label001.Title="長(zhǎng)度";
Label003.Title="寬度";
Label006.Title="高度";
Label008.Title="MBD";
Label011.Title="副參數(shù)";
Label015.Title="主參數(shù)";
Label016.Title="孔1半徑";
Label018.Title="凹糟間距";
修改特征參數(shù)信息,確定后將值賦回,驅(qū)動(dòng)重新生成模型。如圖6所示。
圖6 重新生成模型
3 結(jié)束語(yǔ)
針對(duì)飛機(jī)零部件的特點(diǎn),多次重復(fù)的建模工作帶來(lái)了人力、物力以及時(shí)間上的極大地浪費(fèi),而且這樣描述的零件數(shù)據(jù)種類過(guò)多,存在大量的幾何拓?fù)浣Y(jié)構(gòu)相同或相似,以及尺寸規(guī)格不同的零件。因此,基于CATIA二次開(kāi)發(fā)平臺(tái)CAA,結(jié)合Visual C++6.0提出了一種三維參數(shù)建模的方法,開(kāi)發(fā)了可以修改驅(qū)動(dòng)生成三維模型的參數(shù)化設(shè)計(jì)程序,實(shí)現(xiàn)了用戶交互式對(duì)飛機(jī)零部件的快速設(shè)計(jì),極大的縮短了設(shè)計(jì)時(shí)間,提高了設(shè)計(jì)效率。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于CATIA/CAA的飛機(jī)零部件三維參數(shù)化建模技術(shù)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11121516448.html