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

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

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

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

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

    -CATIA二次开发(CAA)技术基础之零件设计-第 17 页第五章 零件设计5.1 零件设计环境图 5.1 零件设计环境零件设计环境中,MyPart1 中包含参考平面(包括 XY 平面、YZ 平面、ZX 平面)、轴系、参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件环境下,他里面可以包含几何图形集,有序几何图形,几何特征,但建模方式是有序的;集合中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有序几何图形集里面,还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。5.2 零件设计接口介绍 操纵零件的一般步骤图 5.2 操纵零件的主要接口及步骤 获得 CATIPrtPart参考代码如下:CATIPrtContainer_varspPrtContainer = spContainer;CATIPrtPart_var  spPrtPart = spPrtContainer ->GetPart(); 获得零件下所有节点方法一:利用 CATIDescendants 接口CATIDescendants_varspDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var  spSpecObjects;piDescendantsOnPart->GetAllChildren("CATISpecObject", spSpecObjects);方法二:利用 CATContainer 中的 ListMembersHere 方法SEQUENCE(CATBaseUnknown_ptr) ListObj;long NbObj = piRootContainer->ListMembersHere("CATISpecObject",ListObj);for(int j=0;j<NbObj;j+)/注意从 0 开始注意:"CATISpecObject"表示将所有的节点列出,如果想要只列出某种元素,可以将该参数设置为相应的接口,例如"CATPoint"表示所有的点。 获得参考平面参考平面包括 XY 平面、YZ 平面、ZX 平面,参考代码如下:CATListValCATISpecObject_var  spReferencePlanes;spReferencePlanes = spPrtPart->GetReferencePlanes();注意:spReferencePlanes 为包含三个元素的数组,数组元素依次为 xy 平面, yz 平面和 zx 平面。如果要使用 yz 平面,则参考代码如下:CATISpecObject_varspyzPlane = spReferencePlanes2; 获得轴系参考代码如下:CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var;spPrtPart->QueryInterface(IID_ CATIMf3DAxisSystemManager,(void*)& spAxisSystem);/得到的所有轴系CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList;spAxisSystem ->GetAxisSystems(oAxisSystemList); 获得参数方法一:利用 CATIDescendants 接口CATIDescendants_varspDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var  spSpecObjects;piDescendantsOnPart->GetAllChildren("CATICkeParm", spSpecObjects);方法二:利用 CATIParmPublisher 中接口CATIParmPublisher_varspParmPublisher = spPrtPart;CATListValCATISpecObject_var ListFound;spParmPublisher->GetAllChildren("CATICkeParm",ListFound);方法三:利用 CATContainer 中的 ListMembersHere 方法SEQUENCE(CATBaseUnknown_ptr) ListObj;long NbObj = spContainer ->ListMembersHere("CATICkeParm",ListObj);for(int j=0;j<NbObj;j+)/注意从 0 开始CATIAlias_var spAlias = ListObjj;cout<<spAlias->GetAlias()<<endl; /输出参数的名字 获得几何图形集等节点该节主要介绍获得几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点的方法,主要方法流程图如图 5.3 所示。获得CATIPrtPart获得CATIPartRequestGetAllBodiesGetSurfBodies几何图形集有序几何图形集GetSolidBodiesGetMainBody零件几何体   集合中的几何体几何体CATIMmiNonOrderedGeometricalSetCATIMmiOrderedGeometricalSetCATIGSMToolCATIMechanicalTool获得CATIBodyRequestCATBody图 5.3 流程图例 1:获得零件中的所有几何体的代码如下。CATIPartRequest *pIPartRequest =NULL HRESULT rc = spPart->QueryInterface(IID_CATIPartRequest,(void*)&pIPartRequest );if ( SUCCEEDED(rc) )CATLISTV(CATBaseUnknow_var) ListBodies;/所有几何体CATUnicodeString ViewContext ="MfDefault3DView" rc = pIPartRequest->GetSolidBodies(ViewContext,ListBodies);例 2:获得零件中的所有有序几何图形集的代码如下。CATIDescendants_varspDescendantsOnPart = 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  i<= ListResult.Size(); i+)CATBaseUnknown_var spResult = ListResulti;spResult->QueryInterface(IID_CATIGeometricalElement ,(void*) &pIGeometricalElement );CATBody_var spBodyResult = pIGeometricalElement->GetBodyResult(); 创建轴系/首先初始化工厂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); 创建参数和公式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_varspParmPublisher = 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 + BaseCATICkeRelation_varspFormula1=spParmFactory->CreateFormula("Formula","","",spParam3, pList, "Width+Base", spParmPublisher, CATCke:True);spFuncFactory->AddToCurrentRelationSet(spFormula1, spParmPublisher);/修改参数进行测试spParam1->Valuate(0.5); 创建几何图形集等节点/初始化 CATIMechanicalRootFactory 工厂CATIMechanicalRootFactory_var spMechanicalRootFactory = spContainer;/创建几何图形集virtual HRESULT CreateGeometricalSet(const CATUnicodeString& iUserName,const CATISpecObject_var& iDestination,CATISpecObject_var& oGeomSet,int iPosition=-1 ) = 0 函数说明如下表 5.1 所示:iDestination 为零件节点iDestination 为其他节点iPosition = -1几何图形集位于零件最后几何图形集与 iDestination 在同一父节点下,且在 iDestination 节点后iPosition = 0几何图形集位于零件最后几何图形集位于 iDestination 中的最后0 < iPosition <= iDestination 的大小几何图形集位于零件中iPosition +1 处几何图形集位于 iDestination 中的iPosition +1 处OtherwiseE_FAILE_FAIL目标方法凸台CreatePad槽CreatePocket旋转体CreateRotate孔CreateHole盒体CreateShell倒圆CreateFillet倒角CreateChamfer厚曲面CreateThicknessvirtual 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&  iDestinationint iPosition=-1)  创建实体特征实体特征主要包括凸台、槽、旋转体、孔、盒体、倒圆、倒角和厚曲面等特征,创建实体特征采用 CATIPrtFactory 工厂中的方法,相应的方法如下表所示。现举创建孔的例子如下:1常用的创建孔的方法包括三种,依次如下。public virtual CATISpecObject_var CreateHole( const CATISpecObject_var  ihSurface,const CATISpecObject_varihDirection) = 0参数介绍:ihSurface 指支持孔的平面或曲面;ihDirection 指孔的特征方向,特征方向可用CATIGSMFactory 中的 CreateDirection 创建,孔方向若为 NULL_var,则按照曲面的法向创建孔。public virtual CATISpecObject_var CreateHole( const CATISpecObject_var  ihPoint,const CATISpecObject_varihSurface,const CATISpecObject_varihDirection,const int  IsPointOnSurface) = 0参数介绍:ihPoint 指在支持面上的特征点;ihSurface 指支持孔的平面或曲面;ihDirection指孔的特征方向,孔方向若为 NULL_var,则按照曲面的法向创建孔;IsPointOnSurface 的值如果为 0,说明 ihPoint 不在 ihSurface 上,若为 0,则说明 ihPoint 在 ihSurface 上。public virtual CATISpecObject_var CreateHole( const CATMathPoint  iMathPoint,const CATISpecObject_varihSurface,const CATISpecObject_varihDirection,const int  IsPointOnSurface) = 0参数介绍:iMathPoin 指在支持面上的数学点;ihSurface 指支持孔的平面或曲面;ihDirection指孔的方向,孔方向若为 NULL_var,则按照曲面的法向创建孔;IsPointOnSurface 的值如果为0,说明 ihPoint 不在 ihSurface 上,若为 0,则说明 ihPoint 在 ihSurface 上。2设置孔的参数CATISpecObject_var spHole = spPrtFactory-> 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(); 创建零件设计表/初始化 CATICkeParmFactory 工厂CATICkeParmFactory_var spParmFactory = spContainer;/创建设计表的函数如下CATIDesignTable_var CreateDesignTable( const CATUnicodeString&  iRelationName,const CATUnicodeString&iComment,const CATUnicodeString&iFilePath,intorientation = 1,int  sheetWithoutFile = 0 );函数说明:iRelationName 为设计表的名字,iComment 为设计表的说明,iFilePath 为创建表的路径。创建零件族的步骤如下: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); 创建草图 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); 创建草图几何/首先声明编辑草图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(); 创建草图约束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.4 所示。图 5.4 创建圆柱界面 实现的步骤 获得零件指针/ 获得文件指针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(); 创建草图/初始化草图工厂CATISketchFactory_var spSketchFactory(piPrtCont);/在 XY plane 上创建草图CATISketch_var spSketch = spSketchFactory->CreateSketch(spRefPlanes1); 创建草图几何/首先声明编辑草图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(); 创建约束CATI2DConstraintFactory_var spConstraint2DFactory(spSketch);/定义 spLine1 的半径约束spConstraint2DFactory->CreateConstraint(spLine, NULL, NULL, NULL, NULL, NULL,NULL, Cst2DType_Radius, 0, 0 );/定义 spLine1 与坐标原点的同心约束CATI2DAxis_var sp

    注意事项

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

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




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

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

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

    收起
    展开