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

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接口,(复杂程度如下)创建消耗时间很长,占据内存很大,

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

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值