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<GetAlias()<

}

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;// 零件几何体

. . .