您的位置:首页 > 其它

CAA二次开发 CGM模型四种操作方式 数学操作 几何操作 拓扑操作 特征操作

2017-03-07 21:32 579 查看

CGM模块中的操作



CGM模块中的操作有细分、几何、拓扑、数学,本文主要讲基本几何操作。


1. 概要

以下为个人体会,希望能给初学者带来帮助。

在通过CAA 对CATIA 进行二次开发过程中经常会使用图形操作,如投影、做点线面等。在CGM操作中,(CTCGMOperation)有数学操作,几何操作,拓扑操作和特征操作。不同操作的使用范围不同,占用时间和资源不同,所需元素的级别也不同。占用内存和时间排序:特征操作>拓扑操作>几何操作>数学操作。以点为例,元素级别如下:

特征->拓扑->几何 ->数学

CATISpectobject->CATVertex->CATPoint->CATMathPoint

初学者在创建基本图形及操作时常用CATISpectobject,及GSM工厂创建,此为特征级操作。特征级操作结果可以直接挂树,便于显示查看,但在做大型运算时,特征级别运算速度慢且消耗内存较多,因此合理结合使用几何和拓扑操作可以有效提高效率。

对于catia中的曲面或其他基本几何,在被创建时底层几何既定,无论经过任何特征操作或拓扑操作都不会改变其底层几何。比如通过创成式模块中的分割将一张大面分割成一个小面,分割模型的特征面和拓扑面以及改变了,单其底层几何并未改变。



因此,根据需求不同,算法中可以选取不同的操作。

2. 数学操作

CAA中数学操作较为简单,主要类为:

CATMathPoint CATMathVector CATMathLine CATMathAxisCATMathTransformation

3. 几何操作

几何操作有两种方式:公有类几何操作和成员函数几何操作,两种方式的工厂均为CATGeoFactory

(1)公有类几何操作

公有类几何操作Geo工厂创建如下:


CATGeoFactory* piGeomFactory = ::CATCreateCGMContainer() ;
if (NULL==piGeomFactory) return (1);


下图为常用的共有类几何操作,请见CATGeoOperation ,公有类几何操作有两种运行方式

BASIC方式:使用公有类操作时,若无特殊指定,则为basic模式。方法为:创建 ->Get

使用例子如下:

CATDistanceMinPtCrv* FirstPtCrv = CreateDistanceMin(pGeoFactory,FirstMathPoint,FirstCurve);
CATDouble dis= FirstPtCrv->GetDistance();


Advanced方式:创建->Set->Run->Get



(2)成员函数几何操作

即CATGeoFactory 下的Create操作,如下图。
优势:涵盖各种基础操作,处理速度极快,处理Underlying geometry层面元素,如CATSurface等
劣势:一般用于中间过程运算,结果是几何元素,无法显示出来。挂树需转为特征


CATGeoFactory 创建方式与公有类方式不同:

CATGeoFactory * piGeomFactory;
CATDocument * pDocument = NULL ;
pDocument = piLinkableObject->GetDocument();
rc = pDocument->QueryInterface(IID_CATIContainerOfDocument, (void**)&pIContainerOfDocumentOnDoc);
rc = pIContainerOfDocumentOnDoc->GetResultContainer(pIContainer);
rc = pIContainer->QueryInterface(IID_CATGeoFactory, (void**)&piGeomFactory);


4. 拓扑操作

CATTopOperator

TopologicalOperators Global Function-长毛的月亮

拓扑操作是基于拓扑层 CATBody 进行求解计算的,关于 Body 在百科全书中有详细的介绍,我们姑且认为它是用于描述各种几何要素之间相互关系的,一个点、一条线、一个三维实体都有与之对应的 Body。与拓扑操作对应的是基于特征操作和几何操作,有时求解一个问题三种操作方法都能实现,与基于特征操作相比,拓扑操作的优点在于不会修改模型,不会树上创建特征,使用完结果 Body 后可以从 Container 中 Remove 掉,不再占用内存。

例子:创建->Get

CATSolidCylinder *pCylinderOp = ::CATCreateSolidCylinder(piGeomFactory, &topdata,axisStart, axisEnd,radius);
// Gets the resulting body (the operator is run at its creation)
CATBody *piCylinderBody = NULL;
piCylinderBody = pCylinderOp->GetResult();




4. 特征操作

特征操作主要为 CATIGSMFactory(创成式设计)、CATIPrtFactory(零件设计)操作元素都是特征级(CATISpectObject),输入结果也都是特征级(CATISpectObject)。

优点:涵盖caita创成式设计所有功能,创建结果直接可以挂树,便于树处理。

缺点:特征(CATISpectObject)的创建时为了实现复杂的QI需要创建大量COM接口,(复杂程度如下)创建消耗时间很长,占据内存很大,

4000
并且特征操作内存则会一直增长,即使把特征删掉也没有用,它会缓存在 undo/redo 中,除非野蛮地使用 CATAfrUnlockUndoRedoTransactions()将 undo/redo 关掉。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息