admin 发表于 2018-2-22 13:10:11

Catia二次开发源码分享: 获得零件下所有节点



获得 CATIPrtPart

参考代码如下:
CATIPrtContainer_var spPrtContainer = spContainer;
CATIPrtPart_var spPrtPart = spPrtContainer ->GetPart();

获得零件下所有节点
方法一:利用 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<NbObj;j++)//注意从0 开始
{}
注意:"CATISpecObject"表示将所有的节点列出,如果想要只列出某种元素,可以将该
参数设置为相应的接口,例如"CATPoint"表示所有的点。


获得参考平面
参考平面包括 XY 平面、YZ 平面、ZX 平面,参考代码如下:
CATListValCATISpecObject_var spReferencePlanes;
spReferencePlanes = spPrtPart->GetReferencePlanes();
注意:spReferencePlanes 为包含三个元素的数组,数组元素依次为xy 平面, yz 平面和zx 平
面。
如果要使用 yz 平面,则参考代码如下:
CATISpecObject_var spyzPlane = spReferencePlanes;


获得轴系
参考代码如下:
CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var;
spPrtPart->QueryInterface(IID_ CATIMf3DAxisSystemManager,(void**)& spAxisSystem);

//得到的所有轴系
CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList;
spAxisSystem ->GetAxisSystems(oAxisSystemList);






页: [1]
查看完整版本: Catia二次开发源码分享: 获得零件下所有节点