欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    CATIA二次开发(CAA)技术基础之零件设计.pdf

    • 资源ID:73127082       资源大小:971.93KB        全文页数:16页
    • 资源格式: PDF        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    CATIA二次开发(CAA)技术基础之零件设计.pdf

    .第五章 零件设计 5.1 零件设计环境 图 5.1 零件设计环境 零件设计环境中,MyPart1 中包含参考平面(包括 XY 平面、YZ 平面、ZX 平 面)、轴 系、参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以 包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件 环境下,他里面可以包含几何图形集,有序几何图形,几何特征,但建模方式是有序的;集合 中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有序几何图形集里面,.还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。5.2 零件设计接口介绍 5.2.1 操纵零件的一般步骤 .图 5.2 操纵零件的主要接口及步骤 5.2.2 获得 CATIPrtPart 参考代码如下:CATIPrtContainer_var spPrtContainer=spContainer;CATIPrtPart_var spPrtPart=spPrtContainer-GetPart();5.2.3 获得零件下所有节点 方法一:利用 CATIDescendants 接口 CATIDescendants_var spDescendantsOnPart=spPrtPart;CATListValCATISpecObject_var spSpecObjects;piDescendantsOnPart-GetAllChildren(CATISpecObject,spSpecObjects);方法二:利用 CATContainer 中的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr)ListObj;long NbObj=piRootContainer-ListMembersHere(CATISpecObject,ListObj);for(int j=0;jGetReferencePlanes();注意:spReferencePlanes 为包含三个元素的数组,数组元素依次为 xy 平面,yz 平面和 zx 平 面。如果要使用 yz 平面,则参考代码如下:CATISpecObject_var spyzPlane=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 获得参数 方法一:利用 CATIDescendants 接口 CATIDescendants_var spDescendantsOnPart=spPrtPart;CATListValCATISpecObject_var spSpecObjects;piDescendantsOnPart-GetAllChildren(CATICkeParm,spSpecObjects);方法二:利用 CATIParmPublisher 中接口 CATIParmPublisher_var spParmPublisher=spPrtPart;CATListValCATISpecObject_var ListFound;spParmPublisher-GetAllChildren(CATICkeParm,ListFound);方法三:利用 CATContainer 中的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr)ListObj;long NbObj=spContainer-ListMembersHere(CATICkeParm,ListObj);for(int j=0;jNbObj;j+)/注意从 0 开始 CATIAlias_var spAlias=ListObjj;coutGetAlias()QueryInterface(IID_CATIPartRequest,(void*)&pIPartRequest);if(SUCCEEDED(rc)CATLISTV(CATBaseUnknow_var)ListBodies;/所有几何体 CATUnicodeString ViewContext=MfDefault3DView;rc=pIPartRequest-GetSolidBodies(ViewContext,ListBodies);例 2:获得零件中的所有有序几何图形集的代码如下。CATIDescendants_var spDescendantsOnPart=spPrtPart;CATListValCATISpecObject_var spSpecOGSs;/所有有序几何图形集 piDescendantsOnPart-GetAllChildren(CATIMmiOrderedGeometricalSet,spSpecOGSs);例 3:获得零件几何体的代码如下。CATBaseUnknow_var spMainBody;/零件几何体.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-CreateLength(Width,0.15);/长度单位为米 CATICkeParm_var spParam3=spParmFactory-CreateLength(Height,0.2);/创建长度参数./CATIParmPublisher 与 CATICkeFunctionFactory 功能为将所有参数显示在结构树中 CATIParmPublisher_var spParmPublisher=NULL_var;CATICkeFunctionFactory_var spFuncFactory=CATCkeGlobalFunctions:GetFunctionFactory();spParmPublisher=spFuncFactory-GetCurrentSet(CATICkeFunctionFactory:Parameter,spPrtPart,CATCke:True);spParmPublisher.Append(spParam1);spParmPublisher.Append(spParam2);spParmPublisher.Append(spParam3);2创建公式/创建参数列表 CATCkeListOfParm pList;pList-Append(spParam1);pList-Append(spParam2);pList-Append(spParam3);/创建公式 Height=Width+Base CATICkeRelation_var spFormula1=spParmFactory-CreateFormula(Formula,spParam3,pList,Width+Base,spParmPublisher,CATCke:True);spFuncFactory-AddToCurrentRelationSet(spFormula1,spParmPublisher);/修改参数进行测试 spParam1-Valuate(0.5);5.2.10 创建几何图形集等节点 /初始化 CATIMechanicalRootFactory 工厂 CATIMechanicalRootFactory_var spMechanicalRootFactory=spContainer;/创建几何图形集 virtual HRESULT CreateGeometricalSet(const CATUnicodeString&iUserName,const CATISpecObject_var&iDestination,CATISpecObject_var&oGeomSet,int iPosition=-1)=0;函数说明如下表 5.1 所示:.表 5.2 创建实体特征的方法 表 5.1 函数说明/创建有序的几何图形集 virtual HRESULT CreateOrderedGeometricalSet(const CATUnicodeString&iUserName,const CATISpecObject_var&iDestination,CATISpecObject_var&oOrderedGeomSet,int iPosition=-1)=0;/创建几何体 virtual CATISpecObject_var CreatePRTTool(const CATUnicodeString&iUserName,const CATISpecObject_var&iDestination);virtual CATISpecObject_var CreatePRTTool(const CATUnicodeString&iUserName,const CATISpecObject_var&iDestination int iPosition=-1);5.2.11 创建实体特征 实体特征主要包括凸台、槽、旋转体、孔、盒体、倒圆、倒角和厚曲面等特征,创建实体 特征采用 CATIPrtFactory 工厂中的方法,相应的方法如下表所示。iDestination 为零件节点 iDestination 为其他节点 iPosition=-1 几何图形集位于零件最后 几何图形集与 iDestination 在同一父节点 下,且在 iDestination 节点后 iPosition=0 几何图形集位于零件最后 几何图形集位于 iDestination 中的最后 0 iPosition CreateHole();CATINewHole_var spNewHole=spHole;spNewHole-SetHoleType(1);/设置孔类型为简单孔 spNewHole-SetBottomType(1);/设置孔底面类型为平底 spNewHole-SetDiameter(5)/设置直径 spNewHole-SetLimit(1)/设置为盲孔 CATIHoleLimit_var spHoleLimit=spHole;spHoleLimit-SetOffset(5);/设置孔的深度 3将孔添加在结构树中.spHole-Update();CATIGSMProceduralView_var ispProcView=spHole;if(NULL_var!=ispProcView)HResult rc=ispProcView-InsertInProceduralView();5.2.12 创建零件设计表 /初始化 CATICkeParmFactory 工厂 CATICkeParmFactory_var spParmFactory=spContainer;/创建设计表的函数如下 CATIDesignTable_var CreateDesignTable(const CATUnicodeString&iRelationName,const CATUnicodeString&iComment,const CATUnicodeString&i,int orientation=1,int sheetWithoutFile=0);函数说明:iRelationName 为设计表的名字,iComment 为设计表的说明,i 为创建 表的路径。创建零件族的步骤如下: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-CreateDesignTable();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 plane 上创建草图 CATISketch_var spSketch=spSketchFactory-CreateSketch(spRefPlanes1);2.通过原点和两个矢量方向 该方法通过定义一个原点和两个方向 pH、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);/定义 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_var spSupport=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 生成圆柱体实例 5.3.1 本实例所实现的功能 本实例主要实现创建圆柱的功能,在对话框中直接输入圆柱直径和圆柱高度,点击确定按 钮,在零件中自动创建相应直径和高度的圆柱体,其界面如图 5.4 所示。图 5.4 创建圆柱界面 5.3.2 实现的步骤 5.3.2.1 获得零件指针 /获得文件指针 CATDocument*pDoc=NULL;CATFrmEditor*_pEditor=CATFrmEditor:GetCurrentEditor();pDoc=_pEditor-GetDocument();/这里得到了 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 plane 上创建草图 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);/定义 spLine1 的半径约束 spConstraint2DFactory-CreateConstraint(spLine,NULL,NULL,NULL,NULL,NULL,NULL,Cst2DType_Radius,0,0);/定义 spLine1 与坐标原点的同心约束 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 本章小结 本章主要介绍了零件设计环境中的常见接口,最后用生成圆柱体的实例进行了具体应用。

    注意事项

    本文(CATIA二次开发(CAA)技术基础之零件设计.pdf)为本站会员(l***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开