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函数获取。