CATIA二次開發(fā)(CAA)技術(shù)基礎(chǔ)零件設(shè)計(jì)說明_第1頁
CATIA二次開發(fā)(CAA)技術(shù)基礎(chǔ)零件設(shè)計(jì)說明_第2頁
CATIA二次開發(fā)(CAA)技術(shù)基礎(chǔ)零件設(shè)計(jì)說明_第3頁
CATIA二次開發(fā)(CAA)技術(shù)基礎(chǔ)零件設(shè)計(jì)說明_第4頁
CATIA二次開發(fā)(CAA)技術(shù)基礎(chǔ)零件設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第五章部件設(shè)計(jì)5.1部件設(shè)計(jì)環(huán)境圖5.1部件設(shè)計(jì)環(huán)境部件設(shè)計(jì)環(huán)境中,MyPart1中包含參照平面(包含XY平面、YZ平面、ZX平面)、軸系、參數(shù)、幾何圖形集、有序幾何圖形集、部件幾何體、幾何體、會合中的幾何體等節(jié)點(diǎn)。幾何圖形集是無序建模,一般全曲面建模就是他比較管用;有序幾何圖形集,他里面能夠包含會合中的幾何體,幾何圖形集,幾何特色,但建模方式是有序的;幾何體是直接插入部件環(huán)境下,他里面能夠包含幾何圖形集,有序幾何圖形,幾何特色,但建模方式是有序的;會合中的幾何體在插入前會咨詢用戶,他能夠放在樹的根目錄下也能夠放在有序幾何圖形集里面,...還能夠在插入的同時(shí)把有序幾何圖形集里的特色會合到(會合中的幾何體)里面。5.2部件設(shè)計(jì)接口介紹操控部件的一般步驟...圖5.2操控部件的主要接口及步驟獲取CATIPrtPart參照代碼以下:CATIPrtContainer_varspPrtContainer=spContainer;CATIPrtPart_varspPrtPart=spPrtContainer->GetPart( );獲取部件下全部節(jié)點(diǎn)方法一:利用CATIDescendants接口CATIDescendants_varspDescendantsOnPart=spPrtPart;CATListValCATISpecObject_varspSpecObjects;piDescendantsOnPart->GetAllChildren("CATISpecObject",spSpecObjects);方法二:利用CATContainer中的ListMembersHere方法SEQUENCE(CATBaseUnknown_ptr)ListObj;longNbObj=piRootContainer->ListMembersHere("CATISpecObject",ListObj);for(intj=0;j<NbObj;j++)//注意從0開始{}注意:"CATISpecObject"表示將全部的節(jié)點(diǎn)列出,假如想要只列出某種元素,能夠?qū)⒃搮?shù)設(shè)置為相應(yīng)的接口,比方"CATPoint"表示全部的點(diǎn)。獲取參照平面參照平面包含XY平面、YZ平面、ZX平面,參照代碼以下:CATListValCATISpecObject_varspReferencePlanes;spReferencePlanes=spPrtPart->GetReferencePlanes( );注意:spReferencePlanes為包含三個(gè)元素的數(shù)組,數(shù)組元素挨次為xy平面,yz平面和zx平面。假如要使用yz平面,則參照代碼以下:CATISpecObject_varspyzPlane=spReferencePlanes[2];獲取軸系參照代碼以下:CATIMf3DAxisSystemManager_varspAxisSystem=NULL_var;spPrtPart->QueryInterface(IID_CATIMf3DAxisSystemManager,(void**)&spAxisSystem);...獲取的全部軸系CATLISTV(CATIMf3DAxisSystem_var)oAxisSystemList;spAxisSystem->GetAxisSystems(oAxisSystemList);獲取參數(shù)方法一:利用CATIDescendants接口CATIDescendants_varspDescendantsOnPart=spPrtPart;CATListValCATISpecObject_varspSpecObjects;piDescendantsOnPart->GetAllChildren("CATICkeParm",spSpecObjects);方法二:利用CATIParmPublisher中接口CATIParmPublisher_varspParmPublisher=spPrtPart;CATListValCATISpecObject_varListFound;spParmPublisher->GetAllChildren("CATICkeParm",ListFound);方法三:利用CATContainer中的ListMembersHere方法SEQUENCE(CATBaseUnknown_ptr)ListObj;longNbObj=spContainer->ListMembersHere("CATICkeParm",ListObj);for(intj=0;j<NbObj;j++)//注意從0開始{CATIAlias_varspAlias=ListObj[j];cout<<spAlias->GetAlias( )<<endl;//輸出參數(shù)的名字}獲取幾何圖形集等節(jié)點(diǎn)該節(jié)主要介紹獲取幾何圖形集、有序幾何圖形集、部件幾何體、幾何體、會合中的幾何體等節(jié)點(diǎn)的方法,主要方法流程圖如圖5.3所示。...獲取CATIPrtPart獲取CATIPartRequestGetAllBodiesGetSurfBodiesGetSolidBodiesGetMainBody幾何圖形集有序幾何圖形集部件幾何領(lǐng)會合中幾何體的幾何體CATIMmiNonOrderedGeometricalSetCATIMmiOrderedGeometricalSetCATIGSMToolCATIMechanicalTool獲取CATIBodyRequestCATBody圖5.3流程圖例1:獲取部件中的全部幾何體的代碼以下。CATIPartRequest*pIPartRequest=NULL;HRESULTrc=spPart->QueryInterface(IID_CATIPartRequest,(void**)&pIPartRequest);if(SUCCEEDED(rc)){CATLISTV(CATBaseUnknow_var)ListBodies;//全部幾何體CATUnicodeStringViewContext="MfDefault3DView";rc=pIPartRequest->GetSolidBodies(ViewContext,ListBodies);}例2:獲取部件中的全部有序幾何圖形集的代碼以下。CATIDescendants_varspDescendantsOnPart=spPrtPart;CATListValCATISpecObject_varspSpecOGSs;//全部有序幾何圖形集piDescendantsOnPart->GetAllChildren("CATIMmiOrderedGeometricalSet",spSpecOGSs);例3:獲取部件幾何體的代碼以下。CATBaseUnknow_varspMainBody;//部件幾何體...pIPartRequest->GetMainBody(ViewContext,spMainBody);例4:獲取CATBody的代碼以下。CATIBodyRequest*pIBodyRequest=NULL;spMainBody->QueryInterface(IID_CATIBodyRequest,(void**)&pIBodyRequest);CATLISTV(CATBaseUnknown_var)ListResult;pIBodyRequest->GetResults("",ListResult);CATIGeometricalElement*pIGeometricalElement=NULL;for(inti=1;i<=ListResult.Size( );i++){CATBaseUnknown_varspResult=ListResult[i];spResult->QueryInterface(IID_CATIGeometricalElement,(void**)&pIGeometricalElement);CATBody_varspBodyResult=pIGeometricalElement->GetBodyResult( );}創(chuàng)立軸系第一初始化工廠CATIMf3DAxisSystemFactory*pIMf3DAxisSystemFactoryOnFeatCont=spContainer;CATMathPointOrigin(150.0,.0,.0);CATMathVectorX(1.0,.0,.0);CATMathVectorY(0.0,1.0,.0);CATIMf3DAxisSystem_varNewAxisSystemStd;//創(chuàng)立的軸系pIMf3DAxisSystemFactoryOnFeatCont->CreateAxisSystem(Origin,X,Y,NewAxisSystemStd);對軸系的X、Y方向進(jìn)行改正NewAxisSystemStd->SetAxisDirection(CATAxisSystemXNumber,pVectorX);NewAxisSystemStd->SetAxisDirection(CATAxisSystemYNumber,pVectorY);創(chuàng)立參數(shù)和公式1.創(chuàng)立參數(shù)//初始化CATICkeParmFactory工廠CATICkeParmFactory_varspParmFactory=spContainer;CATICkeParm_varspParam1=spParmFactory->CreateLength("Base",0.1);CATICkeParm_varspParam2=spParmFactory->CreateLength("Width",0.15);//長度單位為米...CATICkeParm_varspParam3=spParmFactory->CreateLength("Height",0.2);//創(chuàng)立長度參數(shù)...CATIParmPublisher與CATICkeFunctionFactory功能為將全部參數(shù)顯示在構(gòu)造樹中CATIParmPublisher_varspParmPublisher=NULL_var;CATICkeFunctionFactory_varspFuncFactory=CATCkeGlobalFunctions::GetFunctionFactory( );spParmPublisher=spFuncFactory->GetCurrentSet(CATICkeFunctionFactory::Parameter,spPrtPart,CATCke::True);spParmPublisher.Append(spParam1);spParmPublisher.Append(spParam2);spParmPublisher.Append(spParam3);2.創(chuàng)立公式創(chuàng)立參數(shù)列表CATCkeListOfParmpList;pList->Append(spParam1);pList->Append(spParam2);pList->Append(spParam3);//創(chuàng)立公式Height=Width+BaseCATICkeRelation_varspFormula1=spParmFactory->CreateFormula("Formula","","",spParam3,pList,"Width+Base",spParmPublisher,CATCke::True);spFuncFactory->AddToCurrentRelationSet(spFormula1,spParmPublisher);改正參數(shù)進(jìn)行測試spParam1->Valuate(0.5);創(chuàng)立幾何圖形集等節(jié)點(diǎn)//初始化CATIMechanicalRootFactory工廠CATIMechanicalRootFactory_varspMechanicalRootFactory=spContainer;//創(chuàng)立幾何圖形集virtualHRESULTCreateGeometricalSet(constCATUnicodeString&iUserName,constCATISpecObject_var&iDestination,CATISpecObject_var&oGeomSet,intiPosition=-1)=0;函數(shù)說明以下表5.1所示:...表5.1函數(shù)說明iDestination為部件節(jié)點(diǎn)iDestination為其余節(jié)點(diǎn)iPosition=-1幾何圖形集位于部件最后幾何圖形集與iDestination在同一父節(jié)點(diǎn)iPosition=0幾何圖形集位于部件最后幾何圖形集位于iDestination中的最后幾何圖形集位于部件中幾何圖形集位0<iPosition<=iDestinatio+1處于iDestinationn的大小iPosition中的OtherwiseE_FAILE_FAIL//創(chuàng)立有序的幾何圖形集virtualHRESULTCreateOrderedGeometricalSet(constCATUnicodeString&iUserName,constCATISpecObject_var&iDestination,CATISpecObject_var&oOrderedGeomSet,intiPosition=-1)=0;創(chuàng)立幾何體virtualCATISpecObject_varCreatePRTTool(constCATUnicodeString&iUserName,constCATISpecObject_var&iDestination);virtualCATISpecObject_varCreatePRTTool(constCATUnicodeString&iUserName,constCATISpecObject_var&iDestinationintiPosition=-1);創(chuàng)立實(shí)體特色實(shí)體特色主要包含凸臺、槽、旋轉(zhuǎn)體、孔、盒體、倒圓、倒角和厚曲面等特色,創(chuàng)立實(shí)體特色采納CATIPrtFactory工廠中的方法,相應(yīng)的方法以下表所示。表5.2創(chuàng)立實(shí)體特色的方法目標(biāo)方法凸臺CreatePad槽CreatePocket旋轉(zhuǎn)體CreateRotate孔CreateHole盒體CreateShell倒圓CreateFillet倒角CreateChamfer厚曲面CreateThickness...現(xiàn)舉創(chuàng)立孔的例子以下:1.常用的創(chuàng)立孔的方法包含三種,挨次以下。publicvirtualCATISpecObject_varCreateHole(constCATISpecObject_varihSurface,constCATISpecObject_varihDirection)=0參數(shù)介紹:ihSurface指支持孔的平面或曲面;ihDirection指孔的特色方向,特色方向可用CATIGSMFactory中的CreateDirection創(chuàng)立,孔方向若為NULL_var,則依據(jù)曲面的法向創(chuàng)立孔。publicvirtualCATISpecObject_varCreateHole(constCATISpecObject_varihPoint,constCATISpecObject_varihSurface,constCATISpecObject_varihDirection,constintIsPointOnSurface)=0參數(shù)介紹:ihPoint指在支持面上的特色點(diǎn);ihSurface指支持孔的平面或曲面;ihDirection指孔的特色方向,孔方向若為NULL_var,則依據(jù)曲面的法向創(chuàng)立孔;IsPointOnSurface的值如果為0,說明ihPoint不在ihSurface上,若為0,則說明ihPoint在ihSurface上。publicvirtualCATISpecObject_varCreateHole(constCATMathPointiMathPoint,constCATISpecObject_varihSurface,constCATISpecObject_varihDirection,constintIsPointOnSurface)=0參數(shù)介紹:iMathPoin指在支持面上的數(shù)學(xué)點(diǎn);ihSurface指支持孔的平面或曲面;ihDirection指孔的方向,孔方向若為NULL_var,則依據(jù)曲面的法向創(chuàng)立孔;IsPointOnSurface的值假如為0,說明ihPoint不在ihSurface上,若為0,則說明ihPoint在ihSurface上。2.設(shè)置孔的參數(shù)CATISpecObject_varspHole=spPrtFactory->CreateHole( );CATINewHole_varspNewHole=spHole;spNewHole->SetHoleType(1);//設(shè)置孔種類為簡單孔spNewHole->SetBottomType(1);//設(shè)置孔底面種類為平底spNewHole->SetDiameter(5)//設(shè)置直徑spNewHole->SetLimit(1)//設(shè)置為盲孔CATIHoleLimit_varspHoleLimit=spHole;...spHoleLimit->SetOffset(5);//設(shè)置孔的深度3.將孔增添在構(gòu)造樹中...spHole->Update( );CATIGSMProceduralView_varispProcView=spHole;if(NULL_var!=ispProcView){HResultrc=ispProcView->InsertInProceduralView( );}創(chuàng)立部件設(shè)計(jì)表//初始化CATICkeParmFactory工廠CATICkeParmFactory_varspParmFactory=spContainer;創(chuàng)立設(shè)計(jì)表的函數(shù)以下CATIDesignTable_varCreateDesignTable(constCATUnicodeString&iRelationName,constCATUnicodeString&iComment,constCATUnicodeString&iFilePath,intorientation=1,intsheetWithoutFile=0);函數(shù)說明:iRelationName為設(shè)計(jì)表的名字,iComment為設(shè)計(jì)表的說明,iFilePath為創(chuàng)建表的路徑。創(chuàng)立部件族的步驟以下:1.創(chuàng)立參數(shù)CATICkeParm_varspPp1=spFact->CreateInteger("Column1",0);CATICkeParm_varspPp2=spFact->CreateReal("r",0.0);CATICkeParm_varspPp3=spFact->CreateString("s","");CATICkeParm_varspPp4=spFact->CreateBoolean("b",CATCke::True);CATICkeParm_varspPp5=spFact->CreateLength("l",0);CATICkeParm_varspPp6=spFact->CreateAngle("a",0);2.將參數(shù)顯示在構(gòu)造樹上CATIPrtContainer_varspPrtCont=spContainer;CATIParmPublisher_varspPubroot=spPrtCont->GetPart( );CATICkeFunctionFactory_varfact=CATCkeGlobalFunctions::GetFunctionFactory( );CATISpecObject_varspParameterSet=NULL_var;spParameterSet=fact->GetCurrentSet(CATICkeFunctionFactory::Parameter,spPubroot,CATCke::True);CATIParmPublisher_varspParmPublisher=spParameterSet;...spParmPublisher->Append(spPp1);...spParmPublisher->Append(spPp2);spParmPublisher->Append(spPp3);spParmPublisher->Append(spPp4);spParmPublisher->Append(spPp5);spParmPublisher->Append(spPp6);創(chuàng)立設(shè)計(jì)表CATIDesignTable_varspDesignTable=spFact->CreateDesignTable( );將設(shè)計(jì)表顯示在構(gòu)造樹上CATISpecObject_varspRelationSet=fact->GetCurrentSet(CATICkeFunctionFactory::Relation,spPubroot,CATCke::True);spParmPublisher=spRelationSet;spParmPublisher->Append(spDesign);將參數(shù)與設(shè)計(jì)表關(guān)系,注意參數(shù)名字與設(shè)計(jì)表的列參數(shù)名字必定要同樣參數(shù)列表CATLISTV(CATBaseUnknown_var)list;list.Append(spPp1);spDesign->AutomaticAssociations(spContainer,NULL_var,&list);增添關(guān)系spDesign->AddAssociation("Column2",spPp2);spDesign->AddAssociation("Column3",spPp3);spDesign->AddAssociation("Column4",spPp4);spDesign->AddAssociation("Column5",spPp5);6.設(shè)置配置spDesign->SetCurrentConfiguration(1);創(chuàng)立草圖Sketch有兩種方式能夠創(chuàng)立草圖:經(jīng)過參照平面創(chuàng)立獲取參照平面CATLISTV(CATISpecObject_var)spRefPlanes=spPart->GetReferencePlanes( );初始化草圖工廠CATISketchFactory_varspSketchFactory(spContainer);...//在XYplane上創(chuàng)立草圖CATISketch_varspSketch=spSketchFactory->CreateSketch(spRefPlanes[1]));經(jīng)過原點(diǎn)和兩個(gè)矢量方向該方法經(jīng)過定義一個(gè)原點(diǎn)和兩個(gè)方向pH、pV進(jìn)行創(chuàng)立。定義原點(diǎn)和方向:doublepOrigin[3]={0,0,10};doublepH[3]={1,0,0};doublepV[3]={0,1,0};CATISketchFactory_varspSketchFactory(spContainer);CATISketch_varspSketch=spSketchFactory->CreateSketch(pOrigin,pH,pV);創(chuàng)立草圖幾何第一申明編寫草圖spSketch->OpenEdition( );CATI2DWFFactory_varsp2DFactory(spSketch);下邊創(chuàng)立點(diǎn)CATI2DPoint_varspPt_bottom_left,spPt_bottom_right,spPt_top_right,spPt_top_left;doublept_bottom_left[2]={10,10};doublept_bottom_right[2]={50,10};doublept_top_right[2]={50,50};doublept_top_left[2]={10,50};spPt_bottom_left=sketch2DFactory->CreatePoint(pt_bottom_left);spPt_bottom_right=sketch2DFactory->CreatePoint(pt_bottom_right);spPt_top_right=sketch2DFactory->CreatePoint(pt_top_right);spPt_top_left=sketch2DFactory->CreatePoint(pt_top_left);//開始創(chuàng)立線CATI2DLine_varspLine1,spLine2,spLine3,spLine4;spLine1=sketch2DFactory->CreateLine(pt_bottom_left,pt_bottom_right);spLine2=sketch2DFactory->CreateLine(pt_bottom_right,pt_top_right);spLine3=sketch2DFactory->CreateLine(pt_top_right,pt_top_left);spLine4=sketch2DFactory->CreateLine(pt_top_left,pt_bottom_left);將線的首尾連結(jié)起來...CATI2DCurve_varspCurve1(spLine1);CATI2DCurve_varspCurve2(spLine2);CATI2DCurve_varspCurve3(spLine3);CATI2DCurve_varspCurve4(spLine4);spCurve1->SetStartPoint(spPt_bottom_left);spCurve1->SetEndPoint(spPt_bottom_right);spCurve2->SetStartPoint(spPt_bottom_right);spCurve2->SetEndPoint(spPt_top_right);spCurve3->SetStartPoint(spPt_top_right);spCurve3->SetEndPoint(spPt_top_left);spCurve4->SetStartPoint(spPt_top_left);spCurve4->SetEndPoint(spPt_bottom_left);然退后出草圖:spSketch->CloseEdition( );創(chuàng)立草圖拘束CATI2DConstraintFactory_varspConstraint2DFactory(spSketch);定義spLine1為水平拘束spConstraint2DFactory->CreateConstraint(spLine1,NULL,NULL,NULL,NULL,NULL,NULL,Cst2DType_Horizontal,0,0);定義spLine2為垂直拘束spConstraint2DFactory->CreateConstraint(spLine2,NULL,NULL,NULL,NULL,NULL,NULL,Cst2DType_Vertical,0,0);定義spLine3為水平拘束spConstraint2DFactory->CreateConstraint(spLine3,NULL,NULL,NULL,NULL,NULL,NULL,Cst2DType_Horizontal,0,0);定義spLine4為垂直拘束spConstraint2DFactory->CreateConstraint(spLine4,NULL,NULL,NULL,NULL,NULL,NULL,Cst2DType_Vertical,0,0);//定義spLine2的長度拘束...spConstraint2DFactory->CreateConstraint(spLine2,NULL,NULL,NULL,NULL,NULL,NULL,Cst2DType_Length,0,0);...//定義spLine2與spLine4的距離拘束spConstraint2DFactory->CreateConstraint(spLine2,NULL,spLine4,NULL,NULL,NULL,NULL,Cst2DType_Distance,0,0);//定義spPt_bottom_left與X軸的距離拘束CATI2DAxis_varspSupport=NULL_var;spSketch->GetAbsolute2DAxis(spSupport);spConstraint2DFactory->CreateConstraint(spPt_bottom_left,NULL,spSupport->GetHDirection( ),NULL,NULL,NULL,NULL,Cst2DType_Distance,0,0);//定義spPt_bottom_left與Y軸的距離拘束spConstraint2DFactory->CreateConstraint(spPt_bottom_left,NULL,spSupport->GetVDirection( ),NULL,NULL,NULL,NULL,Cst2DType_Distance,0,0);5.3生成圓柱體實(shí)例本實(shí)例所實(shí)現(xiàn)的功能本實(shí)例主要實(shí)現(xiàn)創(chuàng)立圓柱的功能,在對話框中直接輸入圓柱直徑和圓柱高度,點(diǎn)擊確立按鈕,在部件中自動(dòng)創(chuàng)立相應(yīng)直徑和高度的圓柱體,其界面如圖5.4所示。圖5.4創(chuàng)立圓柱界面實(shí)現(xiàn)的步驟獲取部件指針獲取文件指針CATDocument*pDoc=NULL;CATFrmEditor*_pEditor=CATFrmEditor::GetCurrentEditor( );pDoc=_pEditor->GetDocument( );//這里獲取了PART環(huán)境下的文檔指針CATInit_varspInitOnDoc(pDoc);獲取部件根容器...CATIPrtContainer*piPrtCont=(CATIPrtContainer*)spInitOnDoc->GetRootContainer("CATIPrtContainer");獲取部件指針CATIPrtPart_varspPart=piPrtCont->GetPart( );創(chuàng)立草圖初始化草圖工廠CATISketchFactory_varspSketchFactory(piPrtCont);//在XYplane上創(chuàng)立草圖CATISketch_varspSketch=spSketchFactory->CreateSketch(spRefPlanes[1]));創(chuàng)立草圖幾何第一申明編寫草圖spSketch->OpenEdition( );CATI2DWFFactory_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論