CATIA二次开发(CAA)技术基础之零件设计说明.docx
- 格式:docx
- 大小:150.65 KB
- 文档页数:21
第五章 零件设计
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;j {} 注意: "CATISpecObject" 表示将所有的节点列出,如果想要只列出某种元素,可以将该 参数设置为相应的接口,例如 "CATPoint" 表示所有的点。 5.2.4 获得参考平面 参考平面包括 XY 平面、 YZ 平面、 ZX 平面,参考代码如下: CATListValCATISpecObject_var spReferencePlanes; spReferencePlanes = spPrtPart->GetReferencePlanes(); 注意: spReferencePlanes 为包含三个元素的数组,数组元素依次为 xy 平面 , yz 平面 和 zx 平 面。 如果要使用 yz 平面,则参考代码如下: CATISpecObject_var spyzPlane = spReferencePlanes[2]; 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;j { CATIAlias_var spAlias = ListObj[j]; cout< } 5.2.7 获得几何图形集等节点 该节主要介绍获得几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体 等节点的方法,主要方法流程图如图 5.3 所示。 . . . 获得 CATIPrtPart 获得 CATIPartRequest GetAllBodies GetSurfBodies GetSolidBodies GetMainBody 几何图形集 有序几何图形集 零件几何体 集合中 几何体 的几何体 CATIMmiNonOrderedGeometricalSet CATIMmiOrderedGeometricalSet CATIGSMTool CATIMechanicalTool 获得 CATIBodyRequest CATBody 图 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_var spDescendantsOnPart = spPrtPart; CATListValCATISpecObject_var spSpecOGSs;// 所有有序几何图形集 piDescendantsOnPart->GetAllChildren("CATIMmiOrderedGeometricalSet", spSpecOGSs); 例 3:获得零件几何体的代码如下。 CATBaseUnknow_var spMainBody;// 零件几何体 . . .