CAA二次开发获取当前相关环境的方法

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

发表评论0条 】
网友评论(共?条评论)..
CAA二次开发获取当前相关环境的方法