收藏 分享(赏)

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

上传人:精品资料 文档编号:11010581 上传时间:2020-01-31 格式:DOC 页数:16 大小:315.73KB
下载 相关 举报
CATIA二次开发(CAA)技术基础之零件设计.doc_第1页
第1页 / 共16页
CATIA二次开发(CAA)技术基础之零件设计.doc_第2页
第2页 / 共16页
CATIA二次开发(CAA)技术基础之零件设计.doc_第3页
第3页 / 共16页
CATIA二次开发(CAA)技术基础之零件设计.doc_第4页
第4页 / 共16页
CATIA二次开发(CAA)技术基础之零件设计.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、第 五 章 零 件 设 计5.1 零 件 设 计 环 境图 5.1 零 件 设 计 环 境零 件 设 计 环 境 中 , MyPart1 中 包 含 参 考 平 面 ( 包 括 XY 平 面 、 YZ 平 面 、 ZX 平 面 ) 、 轴 系 、参 数 、 几 何 图 形 集 、 有 序 几 何 图 形 集 、 零 件 几 何 体 、 几 何 体 、 集 合 中 的 几 何 体 等 节 点 。几 何 图 形 集 是 无 序 建 模 , 一 般 全 曲 面 建 模 就 是 他 比 较 管 用 ; 有 序 几 何 图 形 集 , 他 里 面 可 以包 含 集 合 中 的 几 何 体 , 几 何 图

2、 形 集 , 几 何 特 征 , 但 建 模 方 式 是 有 序 的 ; 几 何 体 是 直 接 插 入 零 件环 境 下 , 他 里 面 可 以 包 含 几 何 图 形 集 , 有 序 几 何 图 形 , 几 何 特 征 , 但 建 模 方 式 是 有 序 的 ; 集 合中 的 几 何 体 在 插 入 前 会 询 问 用 户 , 他 可 以 放 在 树 的 根 目 录 下 也 可 以 放 在 有 序 几 何 图 形 集 里 面 ,还 可 以 在 插 入 的 同 时 把 有 序 几 何 图 形 集 里 的 特 征 集 合 到 ( 集 合 中 的 几 何 体 ) 里 面 。5.2 零 件 设 计

3、 接 口 介 绍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 = spPrtP

4、art;CATListValCATISpecObject_var spSpecObjects;piDescendantsOnPart-GetAllChildren(“CATISpecObject“, spSpecObjects);方 法 二 : 利 用 CATContainer 中 的 ListMembersHere 方 法SEQUENCE(CATBaseUnknown_ptr) ListObj;long NbObj = piRootContainer-ListMembersHere(“CATISpecObject“,ListObj);for(int j=0;jGetReferencePlan

5、es();注 意 : spReferencePlanes 为 包 含 三 个 元 素 的 数 组 , 数 组 元 素 依 次 为 xy 平 面 , yz 平 面 和 zx 平面 。如 果 要 使 用 yz 平 面 , 则 参 考 代 码 如 下 :CATISpecObject_var spyzPlane = spReferencePlanes2;5.2.5 获 得 轴 系参 考 代 码 如 下 :CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var;spPrtPart-QueryInterface(IID_ CATIMf3DAxisSyst

6、emManager,(void*)/得 到 的 所 有 轴 系CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList;spAxisSystem -GetAxisSystems(oAxisSystemList);5.2.6 获 得 参 数方 法 一 : 利 用 CATIDescendants 接 口CATIDescendants_var spDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var spSpecObjects;piDescendantsOnPart-GetAllChildren(

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

8、NbObj = spContainer -ListMembersHere(“CATICkeParm“,ListObj);for(int j=0;jGetAlias()QueryInterface(IID_CATIPartRequest,(void*)if ( SUCCEEDED(rc) )CATLISTV(CATBaseUnknow_var) ListBodies;/所 有 几 何 体CATUnicodeString ViewContext =“MfDefault3DView“ ;rc = pIPartRequest-GetSolidBodies(ViewContext,ListBodies)

9、;例 2: 获 得 零 件 中 的 所 有 有 序 几 何 图 形 集 的 代 码 如 下 。CATIDescendants_var spDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var spSpecOGSs;/所 有 有 序 几 何 图 形 集piDescendantsOnPart-GetAllChildren(“CATIMmiOrderedGeometricalSet“, spSpecOGSs);例 3: 获 得 零 件 几 何 体 的 代 码 如 下 。CATBaseUnknow_var spMainBody;/零 件

10、几 何 体pIPartRequest-GetMainBody(ViewContext,spMainBody);例 4: 获 得 CATBody 的 代 码 如 下 。CATIBodyRequest *pIBodyRequest= NULL;spMainBody -QueryInterface(IID_CATIBodyRequest,(void*) CATLISTV(CATBaseUnknown_var) ListResult ;pIBodyRequest-GetResults(“,ListResult);CATIGeometricalElement * pIGeometricalElement

11、 = NULL ;for (int i=1 ; iQueryInterface(IID_CATIGeometricalElement ,(void*) CATBody_var spBodyResult = pIGeometricalElement-GetBodyResult();5.2.8 创 建 轴 系/首 先 初 始 化 工 厂CATIMf3DAxisSystemFactory * pIMf3DAxisSystemFactoryOnFeatCont = spContainer;CATMathPoint Origin (150.0,.0,.0);CATMathVector X (1.0,.0

12、,.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(CATAxisSyst

13、emYNumber, 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

14、= spParmFactory-CreateLength(“Height“,0.2);/创 建 长 度 参 数/ CATIParmPublisher 与 CATICkeFunctionFactory 功 能 为 将 所 有 参 数 显 示 在 结 构 树 中CATIParmPublisher_var spParmPublisher = NULL_var;CATICkeFunctionFactory_var spFuncFactory =CATCkeGlobalFunctions:GetFunctionFactory();spParmPublisher=spFuncFactory-GetCurr

15、entSet(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 = Widt

16、h + BaseCATICkeRelation_var spFormula1 = spParmFactory-CreateFormula(“Formula“,“,“,spParam3, pList, “Width+Base“, spParmPublisher, CATCke:True);spFuncFactory-AddToCurrentRelationSet(spFormula1, spParmPublisher);/修 改 参 数 进 行 测 试spParam1-Valuate(0.5);5.2.10 创 建 几 何 图 形 集 等 节 点/初 始 化 CATIMechanicalRoot

17、Factory 工 厂CATIMechanicalRootFactory_var spMechanicalRootFactory = spContainer;/创 建 几 何 图 形 集virtual HRESULT CreateGeometricalSet(const CATUnicodeString函 数 说 明 如 下 表 5.1 所 示 :表 5.2 创 建 实 体 特 征 的 方 法表 5.1 函 数 说 明/创 建 有 序 的 几 何 图 形 集virtual HRESULT CreateOrderedGeometricalSet (const CATUnicodeString/创

18、 建 几 何 体virtual CATISpecObject_var CreatePRTTool( const CATUnicodeStringvirtual CATISpecObject_var CreatePRTTool( const CATUnicodeString5.2.11 创 建 实 体 特 征实 体 特 征 主 要 包 括 凸 台 、 槽 、 旋 转 体 、 孔 、 盒 体 、倒 圆 、 倒 角 和 厚 曲 面 等 特 征 , 创 建 实 体特 征 采 用 CATIPrtFactory 工 厂 中 的 方 法 , 相 应 的 方法 如 下 表 所 示 。iDestination

19、为 零 件 节 点 iDestination 为 其 他 节 点iPosition = -1 几 何 图 形 集 位 于 零 件 最 后几 何 图 形 集 与 iDestination 在 同 一 父 节 点下 , 且 在 iDestination 节 点 后iPosition = 0 几 何 图 形 集 位 于 零 件 最 后 几 何 图 形 集 位 于 iDestination 中 的 最 后0 CreateHole();CATINewHole_var spNewHole= spHole;spNewHole- SetHoleType(1);/设 置 孔 类 型 为 简 单 孔spNewHo

20、le-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 ) HResul

21、t rc = ispProcView -InsertInProceduralView();5.2.12 创 建 零 件 设 计 表/初 始 化 CATICkeParmFactory 工 厂CATICkeParmFactory_var spParmFactory = spContainer;/创 建 设 计 表 的 函 数 如 下CATIDesignTable_var CreateDesignTable( const CATUnicodeString函 数 说 明 : iRelationName 为 设 计 表 的 名 字 , iComment 为 设 计 表 的 说 明 , iFilePath

22、 为 创 建表 的 路 径 。创 建 零 件 族 的 步 骤 如 下 :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 = spFac

23、t-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 spParamete

24、rSet = 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-App

25、end(spPp5);spParmPublisher-Append(spPp6);3.创 建 设 计 表CATIDesignTable_var spDesignTable = spFact-CreateDesignTable();4.将 设 计 表 显 示 在 结 构 树 上CATISpecObject_var spRelationSet = fact -GetCurrentSet(CATICkeFunctionFactory:Relation,spPubroot,CATCke:True);spParmPublisher = spRelationSet;spParmPublisher-Appe

26、nd(spDesign);5.将 参 数 与 设 计 表 关 联 , 注 意 参 数 名 字 与 设 计 表 的 列 参 数 名 字 一 定 要 相 同/ 参 数 列 表CATLISTV(CATBaseUnknown_var) list;list.Append(spPp1);spDesign-AutomaticAssociations(spContainer, NULL_var, / 添 加 关 联spDesign-AddAssociation(“Column2“, spPp2);spDesign-AddAssociation(“Column3“, spPp3);spDesign-AddAss

27、ociation(“Column4“, spPp4);spDesign-AddAssociation(“Column5“, spPp5);6 设 置 配 置spDesign-SetCurrentConfiguration(1);5.2.13 创 建 草 图 Sketch有 两 种 方 式 可 以 创 建 草 图 :1.通 过 参 考 平 面 创 建/获 得 参 考 平 面CATLISTV(CATISpecObject_var) spRefPlanes = spPart-GetReferencePlanes();/初 始 化 草 图 工 厂CATISketchFactory_var spSket

28、chFactory(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(spCont

29、ainer);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,

30、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 = sk

31、etch2DFactory-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);sp

32、Line4 = 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

33、);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 创 建 草 图 约 束CATI2DConst

34、raintFactory_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_

35、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 的

36、长 度 约 束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 轴 的 距 离 约 束C

37、ATI2DAxis_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_botto

38、m_left, NULL,spSupport-GetVDirection(), NULL, NULL, NULL, NULL,Cst2DType_Distance, 0, 0 );5.3 生 成 圆 柱 体 实 例5.3.1 本 实 例 所 实 现 的 功 能本 实 例 主 要 实 现 创 建 圆 柱 的 功 能 , 在 对 话 框 中 直 接 输 入 圆 柱 直 径 和 圆 柱 高 度 , 点 击 确 定 按钮 , 在 零 件 中 自 动 创 建 相 应 直 径 和 高 度 的 圆 柱 体 , 其 界 面 如 图 5.4 所 示 。图 5.4 创 建 圆 柱 界 面5.3.2 实 现 的 步

39、 骤5.3.2.1 获 得 零 件 指 针/ 获 得 文 件 指 针CATDocument * pDoc= NULL;CATFrmEditor * _pEditor = CATFrmEditor:GetCurrentEditor();pDoc = _pEditor-GetDocument();/这 里 得 到 了 PART 环 境 下 的 文 档 指 针CATInit_var spInitOnDoc(pDoc);/ 得 到 零 件 根 容 器CATIPrtContainer * piPrtCont =(CATIPrtContainer*) spInitOnDoc-GetRootContaine

40、r(“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-OpenEdit

41、ion();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

42、-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-Get

43、Absolute2DAxis(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 轴 方 向CATMat

44、hDirection dirZ(0., 0., 1.);/初 始 化 零 件 工 厂CATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);/创 建 凸 台CATISpecObject_var spSpecObj = spPrtFactOnPrtCont-CreatePad(spSketch);CATIPad_var spPadOnSpecObj(spSpecObj);/设 置 拉 伸 方 向spPadOnSpecObj-ModifyDirection(dirZ);/设 置 凸 台 第 一 限 制 类 型spPadOnSpecObj-ModifyEnd

45、Type(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 本 章 小 结本 章 主 要 介 绍 了 零 件 设 计 环 境 中 的 常 见 接 口 , 最 后 用 生 成 圆 柱 体 的 实 例 进 行 了 具 体 应 用 。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报