


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五章零件设计5.1零件设计环境j*斷可申几-保1凸會.1 率理1A*把內LrL(T f 叶 m -腔仇他轴黑丄 T艮下呼1也丑二:-餐徉中-孤=fij亠,酗-眾金老厂?1- I 卜|氢 匡副yFmmL -Dmm图5.1零件设计环境零件设计环境中,MyPartl中包含参考平面(包括XY平面、YZ平面、ZX平面)、轴系、 参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以 包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件 环境下,他里面可以包含几何图形集,有序
2、几何图形,几何特征,但建模方式是有序的;集合 中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有序几何图形集里面,还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。5.2零件设计接口介绍操纵零件的一般步骤图 5.2 操纵零件的主要接口及步骤5.2.2 获得 CATIPrtPart参考代码如下:CATIPrtContainer_var spPrtContainer = spContainer;CATIPrtPart_var spPrtPart = spPrtContainer -GetPart();5.2.3 获得零件下所有节点方法一:利用 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 为包含三个元素的数组,数组元素依次为 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 获得参数方法一:利用 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 创建轴系/ 首先初始化工厂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;/ 创建的轴系 pIMf3DAxisSystemFactoryOnFeatCont-CreateAxisSystem(Origin,X,Y,NewAxisSystemStd);/ 对轴系的 X、Y 方向进行修改 NewAxisSystemStd-SetAxisDirection(CATAxisSystemXNumber,pVectorX);New
12、AxisSystemStd-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);/长度单位为米CATIC
13、keParm_var spParam3 = spParmFactory-CreateLength(Height,0.2);/创建长度参数/ CATIParmPublisher 与 CATICkeFunctionFactory 功能为将所有参数显示在结构树中 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创建公式/ 创建参数列表CATCkeListOfParm pList;pList-Append (spParam1);pList-Append (spParam2);pList-Append (spParam3);/ 创建公式 Height = Width + Base
15、CATICkeRelation_var spFormula1 = spParmFactory-CreateFormula(Formula, spParam3, pList, Width+Base, spParmPublisher, CATCke:True);spFuncFactory-AddT oCurrentRelationSet(spFormula1, spParmPublisher);/ 修改参数进行测试spParam1-Valuate(0.5);5.2.10 创建几何图形集等节点/ 初始化 CATIMechanicalRootFactory 工厂CATIMechanicalRootFa
16、ctory_var spMechanicalRootFactory = spContainer;/ 创建几何图形集virtual HRESULT CreateGeometricalSet(const CATUnicodeString& iUserName,const CATISpecObject_var& iDestination, CATISpecObject_var & oGeomSet, int iPosition=-1 ) = 0 ;函数说明如下表 5.1 所示:表5.1函数说明iDesti natio n 为零件节点iDest in atio n为其他节点iPositi on = -
17、1几何图形集位于零件最后几何图形集与iDestination 在同一父节点 下,且在iDestination 节点后iPositi on = 0几何图形集位于零件最后几何图形集位于iDestination中的最后0 iPosition CreateHole();CATINewHole_var spNewHole= spHole;spNewHole- SetHoleType(1);/ 设置孔类型为简单孔 spNewHole-SetBottomType(1) ;/ 设置孔底面类型为平底 spNewHole-SetDiameter(5)/ 设置直径spNewHole-SetLimit(1)/设置为盲
18、孔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 spPar
19、mFactory = spContainer; / 创建设计表的函数如下CATIDesignT able_var CreateDesignT able(const CATUnicodeString&iRelationName,const CATUnicodeString& iComment, const CATUnicodeString& iFilePath, int orientation = 1,int sheetWithoutFile = 0 );函数说明: iRelationName 为设计表的名字, iComment 为设计表的说明, iFilePath 为创建 表的路径。创建零件族
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.创建参数
21、:True);2.将参数显示在结构树上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. 创建设计表CATIDesignT able_var spD
23、esignT able = spFact-CreateDesignT able();4. 将设计表显示在结构树上CATISpecObject_var spRelationSet = fact -GetCurrentSet( CATICkeFunctionFactory:Relation,spPubroot,CATCke:True); spParmPublisher = spRelationSet;spParmPublisher-Append(spDesign);5. 将参数与设计表关联,注意参数名字与设计表的列参数名字一定要相同/ 参数列表CATLISTV(CATBaseUnknown_var
24、) 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 创建
25、草图 Sketch有两种方式可以创建草图:1.通过参考平面创建/ 获得参考平面CATLISTV(CATISpecObject_var) spRefPlanes = spPart-GetReferencePlanes();/ 初始化草图工厂CATISketchFactory_var spSketchFactory(spContainer);/ 在 XY plane 上创建草图CATISketch_var spSketch = spSketchFactory-CreateSketch(spRefPlanes1); 2.通过原点和两个矢量方向该方法通过定义一个原点和两个方向 pH 、 pV 进行创建
26、。 定义原点和方向: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_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);/ 开始创建线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 创建草图约束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 的长度约束 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生成圆柱体实例本实例所实现的功能本实例主要实现创建圆柱的功能,在对话框中直接输入圆柱直径和圆柱高度,点击确定按 钮,在零件中自动创建相应直径和高度的圆柱体,其界面如图5.4所示。图5.4创建圆柱界面实现的步骤获得零件指针II获得文件指针CATDocument * pDoc= NULL;CATFrmEditor * _pEditor = CATFrmEditor:GetCurren
36、tEditor();pDoc = _pEditor-GetDocument(); 这里得到了 FART环境下的文档指针CATInit_var splnitOnDoc(pDoc);II得到零件根容器CATIPrtContainer * piPrtCont =(CATIPrtContainer*) spInitOnDoc-GetRootContainer(CATIPrtContainer);/ 得到零件指针CATIPrtPart_var spPart = piPrtCont-GetPart();5.3.2.2 创建草图/ 初始化草图工厂CATISketchFactory_var spSketchF
37、actory(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-Cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防洪灌溉水库工程方案(3篇)
- 广西边城检测有限公司实验室项目环境影响报告表
- 猫咪艺术家课件
- 农业无人机租赁服务平台的无人机产品与技术选型报告
- 猫咪商店课件教学
- 2025年度全国大学生网络安全知识竞赛题库及答案(共三套)
- 筏板基础工程方案(3篇)
- 农业品牌竞争力2025年特色农产品市场推广策略研究报告
- 安全教育培训项目内容课件
- 林业学校面试题库及答案
- GB/T 14456.1-2017绿茶第1部分:基本要求
- 远离电子烟主题班会课件
- 设备维护保养手册
- ZYHZYHC系列自控远红外电焊条烘干炉使用说明书
- 高中政治统编版(2022)必修3(教案)我国法治建设历程(完整文档)
- 游标卡尺的使用flash动画演示教学课件
- 市场营销策划(第五版)第08章 促销策划
- 管理层财务基础知识培训
- 立式储罐重量表
- 电气系统调试方案
- 呋喃树脂msds
评论
0/150
提交评论