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指针的基本方法。