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

下載本文檔

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

文檔簡(jiǎn)介

1、第五章零件設(shè)計(jì)5.1零件設(shè)計(jì)環(huán)境j*斷可申幾-保1凸會(huì).1 率理1A*把內(nèi)LrL(T f 葉 m -腔仇他軸黑丄 T艮下呼1也丑二:-餐徉中-孤=fij亠,酗-眾金老廠?1- I 卜|氫 匡副yFmmL -Dmm圖5.1零件設(shè)計(jì)環(huán)境零件設(shè)計(jì)環(huán)境中,MyPartl中包含參考平面(包括XY平面、YZ平面、ZX平面)、軸系、 參數(shù)、幾何圖形集、有序幾何圖形集、零件幾何體、幾何體、集合中的幾何體等節(jié)點(diǎn)。幾何圖形集是無序建模,一般全曲面建模就是他比較管用;有序幾何圖形集,他里面可以 包含集合中的幾何體,幾何圖形集,幾何特征,但建模方式是有序的;幾何體是直接插入零件 環(huán)境下,他里面可以包含幾何圖形集,有序

2、幾何圖形,幾何特征,但建模方式是有序的;集合 中的幾何體在插入前會(huì)詢問用戶,他可以放在樹的根目錄下也可以放在有序幾何圖形集里面,還可以在插入的同時(shí)把有序幾何圖形集里的特征集合到(集合中的幾何體)里面。5.2零件設(shè)計(jì)接口介紹操縱零件的一般步驟圖 5.2 操縱零件的主要接口及步驟5.2.2 獲得 CATIPrtPart參考代碼如下:CATIPrtContainer_var spPrtContainer = spContainer;CATIPrtPart_var spPrtPart = spPrtContainer -GetPart();5.2.3 獲得零件下所有節(jié)點(diǎn)方法一:利用 CATIDesce

3、ndants 接口CATIDescendants_var spDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var spSpecObjects; piDescendantsOnPart-GetAllChildren(CATISpecObject, spSpecObjects); 方法二:利用 CATContainer 中的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr) ListObj;long NbObj = piRootContainer-ListMembersHere(CATI

4、SpecObject,ListObj);for(int j=0;jGetReferencePlanes(); 注意: spReferencePlanes 為包含三個(gè)元素的數(shù)組,數(shù)組元素依次為 xy 平面 ,yz 平面和 zx 平 面。如果要使用 yz 平面,則參考代碼如下:CATISpecObject_var spyzPlane = spReferencePlanes2;5.2.5 獲得軸系參考代碼如下:CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var; spPrtPart-QueryInterface(IID_ CATIMf3DAxi

5、sSystemManager,(void*)& spAxisSystem);/ 得到的所有軸系CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList;spAxisSystem -GetAxisSystems(oAxisSystemList);5.2.6 獲得參數(shù)方法一:利用 CATIDescendants 接口CATIDescendants_var spDescendantsOnPart= spPrtPart;CATListValCATISpecObject_var spSpecObjects; piDescendantsOnPart-GetAllCh

6、ildren(CATICkeParm, spSpecObjects); 方法二:利用 CATIParmPublisher 中接口CATIParmPublisher_var spParmPublisher= spPrtPart;CATListValCATISpecObject_var ListFound; spParmPublisher-GetAllChildren(CATICkeParm,ListFound); 方法三:利用 CATContainer 中的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr) ListObj;long NbObj =

7、spContainer -ListMembersHere(CATICkeParm,ListObj);for(int j=0;jNbObj;j+)/ 注意從 0 開始CATIAlias_var spAlias = ListObjj;coutGetAlias()QueryI nteface(IID_CATIPartRequest,(void* )&pIPartRequest);if (SUCCEEDED(rc)CATLISTV(CATBaseUnknow_var) ListBodies;/ 所有幾何體CATUn icodeStri ng ViewC on text =MfDefault3DView

8、 ;rc = plPartRequest-GetSolidBodies(ViewCo ntext ,L istBodies);例2 :獲得零件中的所有有序幾何圖形集的代碼如下。CATIDesce ndan ts_var spDesce ndantsOn Part= spPrtPart;CATListValCATISpecObject_var spSpecOGSs;/ 所有有序幾何圖形集piDesce nda ntsOn Part-GetAllChildre n(CATIMmiOrderedGeometricalSet,spSpecOGSs);例3 :獲得零件幾何體的代碼如下。CATBase U

9、nkno w_var spMa in Body;/ 零件幾何體pIPartRequest-GetMainBody(ViewContext,spMainBody);例 4 :獲得 CATBody 的代碼如下。CATIBodyRequest *pIBodyRequest= NULL;spMainBody -QueryInterface(IID_CATIBodyRequest,(void*) &pIBodyRequest);CATLISTV(CATBaseUnknown_var) ListResult ; pIBodyRequest-GetResults(,ListResult);CATIGeome

10、tricalElement * pIGeometricalElement = NULL ;for (int i=1 ; iQueryInterface(IID_CATIGeometricalElement ,(void*) &pIGeometricalElement )JCATBody_var spBodyResult = pIGeometricalElement-GetBodyResult();5.2.8 創(chuàng)建軸系/ 首先初始化工廠CATIMf3DAxisSystemFactory * pIMf3DAxisSystemFactoryOnFeatCont = spContainer;CATMa

11、thPoint Origin (150.0,.0,.0);CATMathVector X (1.0,.0,.0);CATMathVector Y (0.0,1.0,.0);CATIMf3DAxisSystem_var NewAxisSystemStd;/ 創(chuàng)建的軸系 pIMf3DAxisSystemFactoryOnFeatCont-CreateAxisSystem(Origin,X,Y,NewAxisSystemStd);/ 對(duì)軸系的 X、Y 方向進(jìn)行修改 NewAxisSystemStd-SetAxisDirection(CATAxisSystemXNumber,pVectorX);New

12、AxisSystemStd-SetAxisDirection(CATAxisSystemYNumber,pVectorY);5.2.9 創(chuàng)建參數(shù)和公式1創(chuàng)建參數(shù)/ 初始化 CATICkeParmFactory 工廠CATICkeParmFactory_var spParmFactory = spContainer;CATICkeParm_var spParam1 = spParmFactory-CreateLength(Base,0.1);CATICkeParm_var spParam2 = spParmFactory-CreateLength(Width,0.15);/長(zhǎng)度單位為米CATIC

13、keParm_var spParam3 = spParmFactory-CreateLength(Height,0.2);/創(chuàng)建長(zhǎng)度參數(shù)/ CATIParmPublisher 與 CATICkeFunctionFactory 功能為將所有參數(shù)顯示在結(jié)構(gòu)樹中 CATIParmPublisher_var spParmPublisher = NULL_var;CATICkeFunctionFactory_var spFuncFactory =CATCkeGlobalFunctions:GetFunctionFactor y();spParmPublisher= spFuncFactory-GetCu

14、rrentSet(CATICkeFunctionFactory:Parameter,spPrtPart,CATCke:True);spParmPublisher.Append(spParam1);spParmPublisher.Append(spParam2);spParmPublisher.Append(spParam3);2創(chuàng)建公式/ 創(chuàng)建參數(shù)列表CATCkeListOfParm pList;pList-Append (spParam1);pList-Append (spParam2);pList-Append (spParam3);/ 創(chuàng)建公式 Height = Width + Base

15、CATICkeRelation_var spFormula1 = spParmFactory-CreateFormula(Formula, spParam3, pList, Width+Base, spParmPublisher, CATCke:True);spFuncFactory-AddT oCurrentRelationSet(spFormula1, spParmPublisher);/ 修改參數(shù)進(jìn)行測(cè)試spParam1-Valuate(0.5);5.2.10 創(chuàng)建幾何圖形集等節(jié)點(diǎn)/ 初始化 CATIMechanicalRootFactory 工廠CATIMechanicalRootFa

16、ctory_var spMechanicalRootFactory = spContainer;/ 創(chuàng)建幾何圖形集virtual HRESULT CreateGeometricalSet(const CATUnicodeString& iUserName,const CATISpecObject_var& iDestination, CATISpecObject_var & oGeomSet, int iPosition=-1 ) = 0 ;函數(shù)說明如下表 5.1 所示:表5.1函數(shù)說明iDesti natio n 為零件節(jié)點(diǎn)iDest in atio n為其他節(jié)點(diǎn)iPositi on = -

17、1幾何圖形集位于零件最后幾何圖形集與iDestination 在同一父節(jié)點(diǎn) 下,且在iDestination 節(jié)點(diǎn)后iPositi on = 0幾何圖形集位于零件最后幾何圖形集位于iDestination中的最后0 iPosition CreateHole();CATINewHole_var spNewHole= spHole;spNewHole- SetHoleType(1);/ 設(shè)置孔類型為簡(jiǎn)單孔 spNewHole-SetBottomType(1) ;/ 設(shè)置孔底面類型為平底 spNewHole-SetDiameter(5)/ 設(shè)置直徑spNewHole-SetLimit(1)/設(shè)置為盲

18、孔CATIHoleLimit_var spHoleLimit = spHole; spHoleLimit -SetOffset(5);/ 設(shè)置孔的深度 3將孔添加在結(jié)構(gòu)樹中spHole -Update();CATIGSMProceduralView_var ispProcView = spHole;if (NULL_var != ispProcView ) HResult rc = ispProcView -InsertInProceduralView();5.2.12 創(chuàng)建零件設(shè)計(jì)表/ 初始化 CATICkeParmFactory 工廠CATICkeParmFactory_var spPar

19、mFactory = spContainer; / 創(chuàng)建設(shè)計(jì)表的函數(shù)如下CATIDesignT able_var CreateDesignT able(const CATUnicodeString&iRelationName,const CATUnicodeString& iComment, const CATUnicodeString& iFilePath, int orientation = 1,int sheetWithoutFile = 0 );函數(shù)說明: iRelationName 為設(shè)計(jì)表的名字, iComment 為設(shè)計(jì)表的說明, iFilePath 為創(chuàng)建 表的路徑。創(chuàng)建零件族

20、的步驟如下:CATICkeParm_varspPp1 =spFact-CreateInteger(Column1,0);CATICkeParmvarspPp2 =spFact-CreateReal (r,0.0);CATICkeParmvarspPp3 =spFact-CreateString(s,);CATICkeParmvarspPp4 =spFact-CreateBoolean(b,CATCke:CATICkeParmvarspPp5 =spFact-CreateLength(l,0);CATICkeParmvarspPp6 =spFact-CreateAngle(a,0);1.創(chuàng)建參數(shù)

21、:True);2.將參數(shù)顯示在結(jié)構(gòu)樹上CATIPrtContainer_var spPrtCont = spContainer;CATIParmPublisher_var spPubroot = spPrtCont-GetPart();CATICkeFunctionFactory_var fact = CATCkeGlobalFunctions:GetFunctionFactory();CATISpecObject_var spParameterSet = NULL_var;spParameterSet= fact-GetCurrentSet(CATICkeFunctionFactory:Pa

22、rameter,spPubroot,CATCke:True);CATIParmPublisher_var spParmPublisher = spParameterSet; spParmPublisher-Append(spPp1);spParmPublisher-Append(spPp2);spParmPublisher-Append(spPp3);spParmPublisher-Append(spPp4);spParmPublisher-Append(spPp5); spParmPublisher-Append(spPp6);3. 創(chuàng)建設(shè)計(jì)表CATIDesignT able_var spD

23、esignT able = spFact-CreateDesignT able();4. 將設(shè)計(jì)表顯示在結(jié)構(gòu)樹上CATISpecObject_var spRelationSet = fact -GetCurrentSet( CATICkeFunctionFactory:Relation,spPubroot,CATCke:True); spParmPublisher = spRelationSet;spParmPublisher-Append(spDesign);5. 將參數(shù)與設(shè)計(jì)表關(guān)聯(lián),注意參數(shù)名字與設(shè)計(jì)表的列參數(shù)名字一定要相同/ 參數(shù)列表CATLISTV(CATBaseUnknown_var

24、) list; list.Append(spPp1);spDesign-AutomaticAssociations(spContainer, NULL_var, &list);/ 添加關(guān)聯(lián)spDesign-AddAssociation(Column2,spPp2);spDesign-AddAssociation(Column3,spPp3);spDesign-AddAssociation(Column4,spPp4);spDesign-AddAssociation(Column5,spPp5);6設(shè)置配置spDesign-SetCurrentConfiguration(1);5.2.13 創(chuàng)建

25、草圖 Sketch有兩種方式可以創(chuàng)建草圖:1.通過參考平面創(chuàng)建/ 獲得參考平面CATLISTV(CATISpecObject_var) spRefPlanes = spPart-GetReferencePlanes();/ 初始化草圖工廠CATISketchFactory_var spSketchFactory(spContainer);/ 在 XY plane 上創(chuàng)建草圖CATISketch_var spSketch = spSketchFactory-CreateSketch(spRefPlanes1); 2.通過原點(diǎn)和兩個(gè)矢量方向該方法通過定義一個(gè)原點(diǎn)和兩個(gè)方向 pH 、 pV 進(jìn)行創(chuàng)建

26、。 定義原點(diǎn)和方向:double pOrigin3=0,0,10;double pH3=1,0,0;double pV3=0,1,0;CATISketchFactory_var spSketchFactory(spContainer);CATISketch_var spSketch = spSketchFactory-CreateSketch(pOrigin, pH, pV);5.2.14 創(chuàng)建草圖幾何/ 首先聲明編輯草圖 spSketch-OpenEdition();CATI2DWFFactory_var sp2DFactory(spSketch); / 下面創(chuàng)建點(diǎn)CATI2DPoint_v

27、ar spPt_bottom_left, spPt_bottom_right, spPt_top_right, spPt_top_left;doublept_bottom_left2= 10, 10;doublept_bottom_right2= 50, 10;doublept_top_right250, 50;doublept_top_left2 =10, 50;spPt_bottom_left = sketch2DFactory-CreatePoint(pt_bottom_left); spPt_bottom_right = sketch2DFactory-CreatePoint(pt_b

28、ottom_right); spPt_top_right = sketch2DFactory-CreatePoint(pt_top_right); spPt_top_left = sketch2DFactory-CreatePoint(pt_top_left);/ 開始創(chuàng)建線CATI2DLine_var spLine1, spLine2, spLine3, spLine4;spLine1 = sketch2DFactory-CreateLine(pt_bottom_left,pt_bottom_right); spLine2 = sketch2DFactory-CreateLine(pt_bo

29、ttom_right,pt_top_right); spLine3 = sketch2DFactory-CreateLine(pt_top_right,pt_top_left); spLine4 = sketch2DFactory-CreateLine(pt_top_left,pt_bottom_left);/ 將線的首尾連接起來CATI2DCurve_var spCurve1(spLine1);CATI2DCurve_var spCurve2(spLine2);CATI2DCurve_var spCurve3(spLine3);CATI2DCurve_var spCurve4(spLine4

30、);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(spP

31、t_bottom_left);/ 然后退出草圖:spSketch-CloseEdition();5.2.15 創(chuàng)建草圖約束CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);/ 定義 spLine1 為水平約束 spConstraint2DFactory-CreateConstraint( NULL, Cst2DType_Horizontal, 0, 0 );/ 定義 spLine2 為垂直約束 spConstraint2DFactory-CreateConstraint(NULL, Cst2DType_Vertical, 0

32、, 0 );/ 定義 spLine3 為水平約束 spConstraint2DFactory-CreateConstraint(NULL, Cst2DType_Horizontal, 0, 0 );/ 定義 spLine4 為垂直約束 spConstraint2DFactory-CreateConstraint(NULL, Cst2DType_Vertical, 0, 0 );/ 定義 spLine2 的長(zhǎng)度約束 spConstraint2DFactory-CreateConstraint(NULL, Cst2DType_Length, 0, 0 );spLine1,NULL,NULL,NUL

33、L,NULL,NULL,spLine2,NULL,NULL,NULL,NULL,NULL,spLine3,NULL,NULL,NULL,NULL,NULL,spLine4,NULL,NULL,NULL,NULL,NULL,spLine2,NULL,NULL,NULL,NULL,NULL,II定義spLine2 與spLine4的距離約束spC on stra in t2DFactory-CreateC on stra int( NULL, Cst2DType_Distanee, 0, 0 );II定義spPt_bottomeft與X軸的距離約束CATI2DAxis_var spSupport

34、= NULL_var; spSketch-GetAbsolute2DAxis(spSupport); spC on stra in t2DFactory-CreateC on stra int( spSupport-GetHDirectio n(),II 定義 spPt_bottomeftspLine2, NULL, spLine4, NULL, NULL, NULL,spPt_bottom_left,spC on stra in t2DFactory-CreateC on stra int( spSupport-GetVDirectio n(),NULL, NULL, NULL, NULL,

35、Cst2DType_Distanee,與Y軸的距離約束spPt_botto meft,NULL, NULL, NULL, NULL,Cst2DType_Distanee,NULL,0, 0);NULL,0,0);5.3生成圓柱體實(shí)例本實(shí)例所實(shí)現(xiàn)的功能本實(shí)例主要實(shí)現(xiàn)創(chuàng)建圓柱的功能,在對(duì)話框中直接輸入圓柱直徑和圓柱高度,點(diǎn)擊確定按 鈕,在零件中自動(dòng)創(chuàng)建相應(yīng)直徑和高度的圓柱體,其界面如圖5.4所示。圖5.4創(chuàng)建圓柱界面實(shí)現(xiàn)的步驟獲得零件指針I(yè)I獲得文件指針CATDocument * pDoc= NULL;CATFrmEditor * _pEditor = CATFrmEditor:GetCurren

36、tEditor();pDoc = _pEditor-GetDocument(); 這里得到了 FART環(huán)境下的文檔指針CATInit_var splnitOnDoc(pDoc);II得到零件根容器CATIPrtContainer * piPrtCont =(CATIPrtContainer*) spInitOnDoc-GetRootContainer(CATIPrtContainer);/ 得到零件指針CATIPrtPart_var spPart = piPrtCont-GetPart();5.3.2.2 創(chuàng)建草圖/ 初始化草圖工廠CATISketchFactory_var spSketchF

37、actory(piPrtCont);/ 在 XY plane 上創(chuàng)建草圖CATISketch_var spSketch = spSketchFactory-CreateSketch(spRefPlanes1);5.3.2.3 創(chuàng)建草圖幾何/ 首先聲明編輯草圖 spSketch-OpenEdition();CATI2DWFFactory_var sp2DFactory(spSketch);/ 這里表示圓心點(diǎn)double iPoint2 = 0.,0.;/ 下面創(chuàng)建圓圈CATISpecObject_var spLine = spSketch -CreateCircle(iPoint,_Editor003-GetFloatValue() );CATI2DCurve_var spCurveOnLine(spLine); spCurveOnLine-GetStartPoint(); spCurveOnLine-GetEndPoint();/ 然后退出草圖: spSketch-Cl

溫馨提示

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

評(píng)論

0/150

提交評(píng)論