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)。它提供一种引用拓扑元素的稳定方式。