如何获取当前零件的Part特征
CATIA二次开发 CAA开发
本文原作者:Luca Gutierrez,经授权后转发
获取当前零件对应的CATPrtPart接口经常使用,可封装成公有函数方便使用。首先调用GetCurDocument函数获得当前环境对应的CATDocument指针,然后通过QueryInterface获得CATInit接口指针,再通过CATInit接口的GetRootContainer方法获取CATIPrtContainer,CATIPrtPart可以通过CATIPrtContainer接口的GetPart函数获取。
示例代码如下:
- 1
- 2
- 3
- 4CATIPrtPart_var GetCurPart(){
- 5 CATDocument* pDoc=GetCurDocument();
- 6 if(NULL==pDoc)
- 7 return NULL_var;
- 8
- 9 CATInit *pDocAsInit = NULL;
- 10 HRESULT rc= pDoc->QueryInterface(IID_CATInit, (void**)&pDocAsInit) ;
- 11 if( FAILED(rc) )
- 12 {
- 13 cout << "Error, the document does not implement CATInit"<< endl;
- 14 return NULL_var;
- 15 }
- 16
- 17
- 18
- 19 CATIPrtContainer *pSpecContainer = NULL ;
- 20 pSpecContainer = (CATIPrtContainer*)pDocAsInit->GetRootContainer("CATIPrtContainer");
- 21
- 22 pDocAsInit->Release();
- 23 pDocAsInit = NULL ;
- 24
- 25 if( NULL == pSpecContainer )
- 26 {
- 27 cout <<"Error, the root container is NULL" << endl;
- 28 return NULL_var;
- 29 }
- 30
- 31
- 32
- 33 CATIPrtPart_var spPart(pSpecContainer->GetPart());
- 34 if ( NULL_var == spPart )
- 35 {
- 36 cout <<"Error, the MechanicalPart is NULL" << endl;
- 37 return NULL_var;
- 38 }
- 39 pSpecContainer->Release();
- 40 pSpecContainer = NULL ;
- 41 return spPart;
- 42}