2014-07-11 19:23:36|?次阅读|上传:huigezrx【已有?条评论】发表评论
关键词:CAA, CATIA, C/C++|来源:唯设编程网
在CAA获取当前环境对应CATDocument的方法这一篇文章中介绍了CATIA V5R19使用CAA二次开发获取当前环境对应的CATDocument的方法,获取了CATDocument指针以后,我们就可以通过它得到各种容器,实现各种功能,本文介绍使用CAA获取CATDocument对应的CATPrtPart句柄的方法,同样,由于该功能经常使用,所以我们将它独立封装成一个函数:
/**
* 获取当前环境对应的CATDocument的CATPrtPart句柄
*/
CATIPrtPart_var BasicGlobalFunc::GetCurPart(){
CATDocument* pDoc=GetCurDocument();
if(NULL==pDoc)
return NULL_var;
CATInit *pDocAsInit = NULL;
HRESULT rc= pDoc->QueryInterface(IID_CATInit, (void**)&pDocAsInit) ;
if( FAILED(rc) )
{
cout << "Error, the document does not implement CATInit"<< endl;
return NULL_var;
}
//
// Gets root container of the document
//
CATIPrtContainer *pSpecContainer = NULL ;
pSpecContainer = (CATIPrtContainer*)pDocAsInit->GetRootContainer("CATIPrtContainer");
pDocAsInit->Release();
pDocAsInit = NULL ;
if( NULL == pSpecContainer )
{
cout <<"Error, the root container is NULL" << endl;
return NULL_var;
}
//
// Retrieves the MechanicalPart of the document
//
CATIPrtPart_var spPart(pSpecContainer->GetPart());
if ( NULL_var == spPart )
{
cout <<"Error, the MechanicalPart is NULL" << endl;
return NULL_var;
}
pSpecContainer->Release();
pSpecContainer = NULL ;
return spPart;
}
首先调用GetCurDocument函数获得当前环境对应的CATDocument指针,该函数在CAA获取当前环境对应CATDocument的方法这篇文章中进行了介绍。然后通过QueryInterface获得CATInit接口指针,再通过CATInit接口的GetRootContainer方法获取CATIPrtContainer,CATIPrtPart可以通过CATIPrtContainer接口的GetPart函数获取。