如何获取几何图形集

本文原作者:Luca Gutierrez,经授权后转发

扫码关注微信公众号:CATIA二次开发助手

扫码关注微信公众号:CATIA二次开发助手

几何图形集主要由厚度为零的元素组成,如点、线、曲线、曲面、线框,其也可以包含包络体。


几何图形集包括两种类型:
  • 几何图形集(GS)
  • 有序几何图形集(OGS)
GS可以存在于Part节点、PartBody节点下,OGS只允许存在于Part节点下,此外,几何图形集允许嵌套。


获取零件下的几何图形集可以使用CATIDescendants接口

  1. 1CATIDescendants *pIDescendantsOnPart =NULL
  2. 2HRESULT rc = spSpecObjectOnPart->QueryInterface(IID_CATIDescendants,(void**)&pIDescendantsOnPart); 
  3. 3if ( SUCCEEDED(rc) ){ 
  4. 4 CATLISTV(CATISpecObject_var) ListResult ; 
  5. 5 rc = pIDescendantsOnPart ->GetDirectChildren("CATIMmiOrderedGeometricalSet",ListResult); 
  6. 6
使用CATIMmiOrderedGeometricalSet可以返回OGS,使用CATIMmiNonOrderedGeometricalSet可以返回GS, 使用CATIMmiGeometricalSet返回所有类型几何图形集(OGS+GS)。
如何创建几何图形集

CAA中可通过CATIMechanicalRootFactory接口中的CreateGeometricalSet方法创建几何图形集。

  1. 1CATDocument* pDoc = ... 
  2. 2// 获取CATIPrtContainer 
  3. 3CATInit_var spInitOnDoc(pDoc); 
  4. 4CATIPrtContainer *spPrtCont= (CATIPrtContainer*) spInitOnDoc->GetRootContainer("CATIPrtContainer");  
  5. 5// 查询到CATIMechanicalRootFactory接口 
  6. 6CATIMechanicalRootFactory*spMechRoot=NULL
  7. 7rc = spPrtCont->QueryInterface(IID_CATIMechanicalRootFactory,(void**)& spMechRoot); 
  8. 8// 返回机械零件特征 
  9. 9CATISpecObject_var spPart=spPrtCont->GetPart(); 
  10. 10// 创建几何图形集 
  11. 11CATISpecObject_var spGeomFeat=NULL_var; 
  12. 12spMechRoot->CreateGeometricalSet("TestGeometricalSet",spPart,spGeomFeat); 
  13. 13spGeomFeat->Update();