CAA 建模操作方式 数学操作 几何操作 拓扑操作 特征操作

硕士阶段做了一些caa开发,在此主要讲一些自己的理解和探索,希望大家共同探讨。在某项目中,用到上万次简单操作包括投影、相交等,最早用特征操作,发现1万次投影挂树约需要40分钟(常规办公电脑),catia占用内存由300Mb涨到约1.8Gb,且常崩溃,因此探索了一下其他替代操作,此文仅为个人观点。

CGM中操作(CTCGMOperation)有数学操作,几何操作,拓扑操作和特征操作。不同操作的使用范围不同,占用时间和资源不同,所需元素的级别也不同。根据运算元素的类型,CGM级别如下

  • 特征->拓扑->几何 ->数学
  • CATISpectobject->CATVertex->CATPoint->CATMathPoint
  • 运算占用内存和时间排序:特征操作>拓扑操作>几何操作>数学操作

v2-836a78364e27658fb9f75206570f69b1_hd.jpg

各级元素

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

一般情况下,特征操作和几何、拓扑求解结果是几乎相等的,有时会由于几何图形的limits导致几何级运算结果与拓扑级和特征级不同,可根据需求选择。操作catia中的曲面或其他基本几何时,在被创建时底层几何既定,无论经过任何特征操作或拓扑操作都不会改变其底层几何。比如通过创成式模块中的分割将一张大面分割成一个小面,分割模型的特征面和拓扑面以及改变了,单其底层几何并未改变。:

v2-612da7450eefc357ce2b0762d5677133_hd.jpg

 

1、数学操作

CAA中数学操作较为简单,主要类为:CATMathPoint CATMathVector CATMathLine CATMathAxisCATMathTransformation

2、几何操作

几何操作有两种方式:公有类几何操作和成员函数几何操作,两种方式的工厂均为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

v2-1cc1d3e916c94faf216f1d7922666755_hd.jpg

(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);  

 

v2-7d43ce6fee1c5680b7ba9fb5c52d9c41_hd.jpg

3、拓扑操作(来自长毛的月亮)

CATTopOperator

拓扑操作是基于拓扑层 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 关掉,实际上,用undo/redo关掉之后其资源占用率也比几何及拓扑操作占用资源高的多,因此在大量复杂几何求解时,除了必须挂树的元素,其余最好不好出现特征运算

v2-779b515c4a95b10062f1b3e732997764_hd.jpg

转载于:https://my.oschina.net/fenglinwansu/blog/2872630

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值