2014-07-13 16:01:06|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:CAA, CATIA, C/C++|来源:唯设编程网
CATIA V5R19使用CAA进行二次开发时,经常需要获取当前相关环境指针,比如获得当前激活的工作台所对应的文档指针(CATDocument),获取机械零件容器指针(CATIPrtContainer),获得GSM工厂指针(CATIGSMFactory),零件特征(CATIPrtPart),还有CATIDescendants指针。
经常使用的功能我们可以封装在一个函数中,下面给出得到当前环境函数对应的代码:
/** * 获取当前的相关环境 */ HRESULT BasicGlobalFunc::GetCurContext(CATIGSMFactory_var& spGSMFactory, CATIPrtPart_var& spPart, CATIDescendants_var& spDescendants) { //获取当前工作平台对应的文档 CATDocument* pDocument = GetCurDocument(); if(NULL == pDocument) return E_FAIL; CATInit_var spInitOnDoc = pDocument; if(spInitOnDoc == NULL_var) return E_FAIL; //获取机械容器特征 CATIPrtContainer *pIPrtCont = NULL; pIPrtCont = (CATIPrtContainer *)spInitOnDoc->GetRootContainer("CATIPrtContainer"); if(NULL == pIPrtCont) return E_FAIL; //获取GSM工厂智能指针 spGSMFactory = pIPrtCont; if(spGSMFactory == NULL_var){ //释放特征容器 pIPrtCont->Release(); pIPrtCont=NULL; return E_FAIL; } //获得零件特征 spPart = pIPrtCont->GetPart(); if ( NULL_var == spPart ) { cout <<"Error, the MechanicalPart is NULL" << endl; return E_FAIL; } pIPrtCont->Release(); pIPrtCont = NULL ; //获取CATIDescendants spDescendants = spPart; if ( NULL_var == spDescendants ) { cout <<"Error, the CATIDescendants is NULL" << endl; return E_FAIL; } return S_OK; }
在该代码中,可以清楚了解机械容器(CATIPrtContainer)与文档(CATIDocument)之间的关系,GSM元素工厂(CATIGSMFactory)与文档(CATIDocument)之间的关系,如何获取零件特征(CATIPrtPart)指针以及得到CATIDescendants指针的基本方法。