如何获取CATIPrtContainer

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

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

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

如何获取CATIPrtContainer


Specification Container有时又可称为Mechanical Container,其接口为CATIPrtContainer。Specification Container包含机械对象的设计,该设计由可以在结构树中显示的机械特征定义,如下图所示,其中Part特征是产品结构树中的最高节点,其直接或间接的聚合其他所有的机械特征。

Part特征

Part特征

获取Specification Container有以下三种方法:

  • 使用CATIContainerOfDocument接口
  • 使用CATInit接口
  • 使用CATISpecObject接口

使用CATIContainerOfDocument接口


  1. 1CATDocument* pDocument = ...  
  2. 2CATIContainerOfDocument* pIContainerOfDocumentOnDoc = NULL
  3. 3HRESULT rc = pDocument->QueryInterface(IID_CATIContainerOfDocument,(void**)&pIContainerOfDocumentOnDoc); 
  4. 4if (SUCCEEDED(rc) ){ 
  5. 5 CATIContainer * piPrtContainer = NULL
  6. 6 rc = pIContainerOfDocumentOnDoc->GetSpecContainer(piPrtContanier); 
  7. 7

使用CATInit接口


  1. 1CATInit* pInitOnDoc = NULL
  2. 2HRESULT rc = pDocument->QueryInterface(IID_CATInit, (void**)&pInitOnDoc ); 
  3. 3if ( SUCCEEDED(rc) ){ 
  4. 4 CATIPrtContainer* piPrtContainer = NULL
  5. 5 piPrtContainer = (CATIPrtContainer*) pInitOnDoc->GetRootContainer("CATIPrtContainer"); 
  6. 6

使用CATISpecObject接口


  1. 1CATISpecObject* pSpecObjectOnFeat = NULL
  2. 2HRESULT rc = pMyFeat->QueryInterface(IID_CATISpecObject, (void**)&pSpecObjectOnFeat); 
  3. 3if ( SUCCEEDED(rc) ){ 
  4. 4 CATIContainer_var spPrtContainer = pSpecObjectOnFeat->GetFeatContainer(); 
  5. 5