CAA获取CATDocument对应的CATPrtPart句柄

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

发表评论0条 】
网友评论(共?条评论)..
CAA获取CATDocument对应的CATPrtPart句柄