CATIA二次开发(CAA)技术基础学习知识

上传人:z****2 文档编号:210945518 上传时间:2023-05-18 格式:DOCX 页数:19 大小:152.31KB
返回 下载 相关 举报
CATIA二次开发(CAA)技术基础学习知识_第1页
第1页 / 共19页
CATIA二次开发(CAA)技术基础学习知识_第2页
第2页 / 共19页
CATIA二次开发(CAA)技术基础学习知识_第3页
第3页 / 共19页
点击查看更多>>
资源描述
第五章零件设计5.1零件设计环境1L-|zT=CimmE魁几何国母死丄 it社呼几何禺在舞2 J辛晋几砒图5.1零件设计环境零件设计环境中MyPartl中包含参考平面(包括XY平面、YZ平面、ZX平面)轴系 参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以 包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件 环境下,他里面可以包含几何图形集,有序几何图形,几何特征,但建模方式是有序的;集合 中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有序几何图形集里面,还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。5.2零件设计接口介绍5.2.1操纵零件的一般步骤MJ匚IF【hi 匚咱i. Il価LlH:Eiutniy扳柿订I TP叩曲如门诂如誌皿但I-创建2耀标注相关操作JAAnirSFauoiyTTR* 抉ITI巧 Fac 1 oryE I enrnt ary* IHfC ATI Pi” t Elm 1 eaiiFac t ory* 农MCIT 卄忙知b I 心空、EsIrHCtOO获WiCVl ICoridinermTIETtPMrtu: mHPrtBirtory* H tilATFCtf PfirniFac lory* 疚柑CATICfc&RjclaticnFaetcry* 簽 fj C.TI Mu ohm I i ch I Ecu iFt lc inrv*症禅霑件卜-所1T节虫*AI Sko 1 clil-it(: t rrTISketdi册、障 XT尊 WFJdoTv$創建草国几啊藝柿:lTl却on s 1. !GetPart();5.2.3获得零件下所有节点方法一:利用CATIDesce ndan tS妾 口CATIDescendants_var spDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var spSpecObjects; piDescendantsOnPart-GetAllChildren(CATISpecObject, spSpecObjects); 方法二:利 用CATCo ntai ne冲的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr) ListObj;long NbObj = piRootContainer-ListMembersHere(CATISpecObject,ListObj);for(int j=0;jGetReferencePlanes();注意:spReferencePlane为包含三个元素的数组,数组元素依次y平面,yz平面和zx平 面。如果要使用yz平面,则参考代码如下:CATISpecObject_varspyzPlane = spReferencePlanes2;5.2.5获得轴系参考代码如下:CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var; spPrtPart-QueryInterface(IID_ CATIMf3DAxisSystemManager,(void*)& spAxisSystem);/得到的所有轴系CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList; spAxisSystem -GetAxisSystems(oAxisSystemList);5.2.6获得参数方法一:利用 CATIDescendant接 口CATIDescendants_var spDescendantsOnPart = spPrtPart; CATListValCATISpecObject_var spSpecObjects; piDescendantsOnPart-GetAllChildren(CATICkeParm, spSpecObjects);方法二:利用 CATIParmPublishe中接口CATIParmPublisher_var spParmPublisher = spPrtPart; CATListValCATISpecObject_var ListFound; spParmPublisher-GetAllChildren(CATICkeParm,ListFound);方法三:利用CATContaine中的 ListMembersHer方法SEQUENCE(CATBaseUnknown_ptr) ListObj;long NbObj = spContainer -ListMembersHere(CATICkeParm,ListObj);for(int j=0;jNbObj;j+)/注意从0 开始CATIAlias_var spAlias = ListObjj; coutGetAlias()QueryI nterface(IID_CATIPartRequest,(void* )&pIPartRequest );if ( SUCCEEDED(rc)CATLISTV(CATBaseU nkn ow_var) ListBodies所有几何体CATU ni codeStr ing ViewCo ntext =MfDefault3DView;rc = pIPartRequest-GetSolidBodies(ViewC on text,ListBodies);例2 :获得零件中的所有有序几何图形集的代码如下。CATIDesce ndan ts_var spDesce ndantsOn Part = spPrtPart;CATListValCATISpecObject_var spSpecOGSs;/所 有有序几何图形集piDesce nda ntsOn Part-GetAllChildre n( CATIMmiOrderedGeometricalSet, spSpecOG Ss);例3 :获得零件几何体的代码如下。CATBaseU 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);CATIGeometricalElement * pIGeometricalElement = NULL ;for (int i=1 ; iQueryInterface(IID_CATIGeometricalElement ,(void*) &pIGeometricalElement );CATBody_var spBodyResult = pIGeometricalElement-GetBodyResult();5.2.8创建轴系/首先初始化工厂CATIMf3DAxisSystemFactory * pIMf3DAxisSystemFactoryOnFeatCont = spContainer;CATMathPoint Origin (150.0,.0,.0);CATMathVector X (1.0,.0,.0);CATMathVector Y (0.0,1.0,.0);CATIMf3DAxisSystem_var NewAxisSystemStd;/建的轴系 pIMf3DAxisSystemFactoryOnFeatCont-CreateAxisSystem(Origin,X,Y,NewAxisSystemStd); 对轴系的X、Y方向进行修改NewAxisSystemStd-SetAxisDirection(CATAxisSystemXNumber, pVectorX); NewAxisSystemStd-SetAxisDirection(CATAxisSystemYNumber, pVectorY);5.2.9创建参数和公式1创建参数/初始化 CATICkeParmFactory工厂CATICkeParmFactory_var spParmFactory = spContainer;CATICkeParm_var spParam1 = spParmFactory-CreateLength(Base,0.1);CATICkeParm_var spParam2 = spParmFactory-CreateLe ngth(Width,0.15长度单位为CATICkeParm_var spParam3 = spParmFactory-CreateLe ngth(Height,0.2创腱长度参数/ CATIParmPublishe与CATICkeF un ctio nFactory功能为将所有参数显示在结构树中 CATIParmPublisher_var spParmPublisher = NULL_var;CATICkeFunctionFactory_var spFuncFactory =CATCkeGlobalFunctions:GetFunctionFacto ry();spParmPublisher= spFuncFactory-GetCurrentSet(CATICkeFunctionFactory:Parameter,spPrtPart,CATCke:Tr ue);spParmPublisher.Append(spParam1);spParmPublisher.Append(spParam2);spParmPublisher.Append(spParam3);2创建公式/创建参数列表CATCkeListOfParm pList;pList-Append (spParam1);pList-Append (spParam2);pList-Append (spParam3);创建公式 Height = Width + BaseCATICkeRelation_var spFormula1 = spParmFactory-CreateFormula(Formula, spParam3, pList, Width+Base, spParmPublisher, CATCke:True);spFuncFactory-AddToCurrentRelationSet(spFormula1, spParmPublisher);/修改参数进行测试spParam1-Valuate(0.5);5.2.10创建几何图形集等节点/初始化 CATIMecha nicalRootFactoryE 厂CATIMechanicalRootFactory_var spMechanicalRootFactory = spContainer;/创建几何图形集virtual HRESULT CreateGeometricalSet(const CATUnicodeString& iUserName, const CATISpecObject_var& iDestination, CATISpecObject_var& oGeomSet, int iPosition=-1 ) = 0 ;函数说明如下表5.1所示:iDest in atio n为零件节点iDest in atio n为其他节点iPositi on 二-1几何图形集位于零件最后表5 1 函数说明几何图形集与iDest in ation在同一父节点 下,且在iDesti natio n节点后iPosition 二 0表5.1函数说明几,何图形集位于零件最后几何图形集位于iDestination中的最后0 iPositi on CreateHole();CATINewHole_var spNewHole= spHole;spNewHole- SetHoleType(l);般置孔类型为简单孑L spNewHole-SetBottomType(1) ;/设/置孔底面类型为平底 spNewHole-SetDiameter /设置直径spNewHole-SetLimit(1)/设置为盲孑 LCATIHoleLimit_var spHoleLimit = spHole;spHoleLimit - SetOffset(5);/设置孔的深度3将孔添加在结构树中spHole -Update();CATIGSMProceduralView_var ispProcView = spHole;if (NULL_var != ispProcView ) HResult rc = ispProcView -InsertInProceduralView(); 5.2.12创建零件设计表/初始化 CATICkeParmFactoryT 厂CATICkeParmFactory_var spParmFactory = spContainer;/创建设计表的函数如下CATIDesignTable_var CreateDesignaTble( const CATUnicodeString& iRelationName, const CATUnicodeString& iComment, const CATUnicodeString& iFilePath,int orientation = 1,int sheetWithoutFile = 0 );函数说明:iRelationName为设计表的名字jComment为设计表的说明jFilePath为创建 表的路径。创建零件族的步骤如下:1. 创建参数CATICkeParm_var spPp1 = spFact-CreateInteger (Column1,0);CATICkeParm_var spPp2 = spFact-CreateReal (r,0.0);CATICkeParm_var spPp3 = spFact-CreateString (s,);CATICkeParm_var spPp4 = spFact-CreateBoolean (b,CATCke:True);CATICkeParm_var spPp5 = spFact-CreateLength (l,0);CATICkeParm_var spPp6 = spFact-CreateAngle (a,0);2. 将参数显示在结构树上CATIPrtContainer_var spPrtCont = spContainer;CATIParmPublisher_var spPubroot = spPrtCont-GetPart();CATICkeFunctionFactory_var fact = CATCkeGlobalFunctions:GetFunctionFactory();CATISpecObject_var spParameterSet = NULL_var;spParameterSet= fact-GetCurrentSet(CATICkeFunctionFactory:Parameter,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. 创建设计表CATIDesignTable_var spDesignTable = spFact-CreateDesignaTble();4. 将设计表显示在结构树上CATISpecObject_var spRelationSet = fact -GetCurrentSet( CATICkeFunctionFactory:Relation,spPubroot,CATCke:True);spParmPublisher = spRelationSet; spParmPublisher-Append(spDesign);5. 将参数与设计表关联,注意参数名字与设计表的列参数名字一定要相同/ 参数列表CATLISTV(CATBaseUnknown_var) list;list.Append(spPp1); spDesign-AutomaticAssociations(spContainer, NULL_var, &list);/ 添加关联 spDesign-AddAssociation(Column2, spPp2);spDesign-AddAssociation(Column3, spPp3);spDesign-AddAssociation(Column4, spPp4);spDesign-AddAssociation(Column5, spPp5);6设置配置 spDesign-SetCurrentConfiguration(1);5.2.13创建草图Sketch有两种方式可以创建草图:1.通过参考平面创建/获得参考平面CATLISTV(CATISpecObject_var) spRefPlanes = spPart-GetReferencePlanes(); /初始化草图工厂CATISketchFactory_var spSketchFactory(spContainer);在XY pla ne上创建草图CATISketch_var spSketch = spSketchFactory-CreateSketch(spRefPlanes1); 2.通过原点和两个矢量方向该方法通过定义一个原点和两个方向H、pV进行创建。 定义原点和方向: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创建草图几何/首先声明编辑草图 spSketch-OpenEdition();CATI2DWFFactory_var sp2DFactory(spSketch);/下面创建点CATI2DPoint_var spPt_bottom_left, spPt_bottom_right, spPt_top_right, spPt_top_left; double pt_bottom_left2= 10, 10;double pt_bottom_right2 = 50, 10;double pt_top_right2 = 50, 50;double pt_top_left2 = 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);/开始创建线CATI2DLine_var spLine1, 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); /将线的首尾连接起来CATI2DCurve_var spCurve1 (spLine1);CATI2DCurve_var spCurve2 (spLine2);CATI2DCurve_var spCurve3 (spLine3);CATI2DCurve_var spCurve4 (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();5.2.15创建草图约束CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);定义spLi ne1为水平约束spConstraint2DFactory-CreateConstraint(spLine1, NULL, NULL, NULL, NULL, NULL,NULL, Cst2DType_Horizontal, 0, 0 );定义spL ine2为垂直约束spConstraint2DFactory-CreateConstraint(spLine2, NULL, NULL, NULL, NULL, NULL,NULL, Cst2DType_Vertical, 0, 0 );定义spLi ne3为水平约束spConstraint2DFactory-CreateConstraint(spLine3, NULL, NULL, NULL, NULL, NULL,NULL, Cst2DType_Horizontal, 0, 0 );定义spLi ne4为垂直约束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 );定义spL ine2与spL ine4的距离约束spConstraint2DFactory-CreateConstraint( spLine2, NULL, spLine4, NULL, NULL, NUL L,NULL, Cst2DType_Dista nee, 0, 0 );定义spPt_bottomeft与X轴的距离约束CATI2DAxis_var spSupport = NULL_var; spSketch-GetAbsolute2DAxis(spSupport);spC on strai nt2DFactory-CreateC on stra int(spPt_bottomeft,NULL,spSupport-GetHDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distanee, 0, 0 );定义spPt_bottomeft与Y轴的距离约束spC on strai nt2DFactory-CreateC on stra int(spPt_bottomeft,NULL,spSupport-GetVDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distanee, 0, 0 );5.3生成圆柱体实例5.3.1本实例所实现的功能图5.4创建圆柱界面本实例主要实现创建圆柱的功能,在对话框中直接输入圆柱直径和圆柱高度,点击确定按 钮,5.3.2实现的步骤5.3.2.1获得零件指针/获得文件指针CATDocume nt * pDoc= NULL;CATFrmEditor * _pEditor = CATFrmEditor:GetCurre ntEditor();pDoc = _pEditor-GetDocume nt();/这里得到了PART环境下的文档指针 CATInit_var spInitOnDoc(pDoc);/得到零件根容器CATIPrtContainer * piPrtCont =(CATIPrtContainer*) spInitOnDoc-GetRootContainer(CATIPrtContainer);/ 得到零件指针CATIPrtPart_var spPart = piPrtCont-GetPart();5.3.2.2创建草图/初始化草图工厂CATISketchFactory_var spSketchFactory(piPrtCont);在XY pla ne上创建草图CATISketch_var spSketch = spSketchFactory-CreateSketch(spRefPlanes1);5.3.2.3创建草图几何/首先声明编辑草图spSketch-OpenEdition();CATI2DWFFactory_var sp2DFactory(spSketch);/这里表示圆心点double iPoint2 = 0.,0.;/下面创建圆圈CATISpecObject_var spLine = spSketch -CreateCircle(iPoint,_Editor003-GetFloatValue( );CATI2DCurve_var spCurveOnLine(spLine); spCurveOnLine-GetStartPoint(); spCurveOnLine-GetEndPoint();/然后退出草图:spSketch-CloseEdition();5.3.2.4创建约束CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);定义spLi ne1的半径约束spConstraint2DFactory-CreateConstraint(spLine,NULL, NULL, NULL, NULL, NULL,NULL, Cst2DType_Radius, 0, 0 );定义spLinel与坐标原点的同心约束CATI2DAxis_var spSupport = NULL_var; spSketch-GetAbsolute2DAxis(spSupport);spConstraint2DFactory-CreateConstraint(spLine, NULL, spSupport-GetOriginPoint(),NULL, NULL, NULL, NULL, Cst2DType_Concentric, 0, 0 );5.3.2.5创建凸台/ 从编辑框中获得援助的高度double firstLimit = _Editor004-GetFloatValue();double secondLimit = 0.;圆柱的轴向方向为Z轴方向CATMathDirection dirZ(0., 0., 1.);/初始化零件工厂CATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);/创建凸台CATISpecObject_var spSpecObj = spPrtFactOnPrtCont-CreatePad(spSketch);CATIPad_var spPadOnSpecObj(spSpecObj);/设置拉伸方向spPadOnSpecObj-ModifyDirection(dirZ);/设置凸台第一限制类型spPadOnSpecObj-ModifyEndType(catOffsetLimit);/设置凸台的高度spPadOnSpecObj-ModifyEndOffset(firstLimit);/设置凸台第二限制类型spPadOnSpecObj-ModifyStartType(catOffsetLimit);spPadOnSpecObj-ModifyStartOffset(secondLimit);/将凸台添加在结构树中spSpecObj-Update();CATIGSMProceduralView_var ispProcView = spSpecObj;if (NULL_var != ispProcView ) HResult rc = ispProcView -InsertInProceduralView();5.4 本章小结本章主要介绍了零件设计环境中的常见接口,最后用生成圆柱体的实例进行了具体应用。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!