2014-07-04 20:44:41|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C/C++, CAA, CATIA|来源:唯设编程网
“Contents of Specification Container”这篇文章详细讨论了零件特征,几何特征集合和几何特征。
有三种方法可以获取这个容器:
1). 使用在经历文档(Part Document)实现的CATIContainerOfDocument (MecModInterfaces)接口:
//...
CATDocument * pDocument = ...
CATIContainerOfDocument * pIContainerOfDocumentOnDoc = NULL ;
HRESULT rc = pDocument->QueryInterface(IID_CATIContainerOfDocument,
(void**)&pIContainerOfDocumentOnDoc)
if (SUCCEEDED(rc) )
{
CATIContainer * pIContainer = NULL ;
rc = pIContainerOfDocumentOnDoc->GetSpecContainer(pIContainer);
}
// ...
2). 使用被所有V5文档实现的CATInit (ObjectModelerBase)接口:
//...
CATInit * pInitOnDoc = NULL ;
HRESULT rc = pDocument->QueryInterface(IID_CATInit, (void**)&pInitOnDoc ) ;
if ( SUCCEEDED(rc) )
{
CATIPrtContainer *pIPrtCont = NULL ;
pIPrtCont = (CATIPrtContainer*)
pInitOnDoc->GetRootContainer("CATIPrtContainer");
}
//...
如果是一个零件文档,更容器是CATProtCont。
3). 使用所有特征上都实现了的CATISpecObject接口:
//...
CATISpecObject * pSpecObjectOnFeat = NULL ;
HRESULT rc = pMyFeat->QueryInterface(IID_CATISpecObject, (void**)&pSpecObjectOnFeat ) ;
if ( SUCCEEDED(rc) )
{
CATIContainer_var spISpecCont = pSpecObjectOnFeat->GetFeatContainer();
}
//...
其中,pMyFeat是一个指向任意特征的指针,spISpecCont是一个CATPrtCont容器上的句柄。
在设计期间,对一个边或者一个面进行选择是有必要的,比如创建一个形状。这些拓扑将会是一个机械特征的输入。但是一个特征不能够直接引用一个拓扑作为定义。主要原因是几何元素和拓扑结构可以在更新的时候被删除。因此,拓扑对象不稳定。在V5中为克服这个问题采用的方案是使用名字,而不是直接应用拓扑对象。这样的名字称之为通用名字(generic name)。它提供一种引用拓扑元素的稳定方式。