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