iCAx开思工具箱

标题: CAA中怎样得到Datum得相关参数? [打印本页]

作者: cupcake    时间: 2005-8-24 17:45
标题: CAA中怎样得到Datum得相关参数?
各位高手:
      对于Datum特征,怎样的倒它的厚度、外形?还有,能否得到一个CATPart文件的所有的数据,就是说CATIA本身的数据储存形式。
:)
作者: saeba    时间: 2005-8-25 12:57
1.不论是否Datum,只要有几何(其实是拓扑)形状,就可以得到CATIGeometricalElement接口,用它的GetBodyResult()方法就可以得到CATBody,CATBody 是从CATTopObject派生的,就可以GetDomain()
有了Domain,就可以判断它是3维的,2维的,1维的还是0维的,而且还可以得到
它所有的CATCell,不是就为所欲为了吗?
  
2。“CATPart文件的所有的数据”你都想得到是不可能的,文件格式并未有公开。
你如果Reverse Engineer了的话说不定还会惹上官司。。。
作者: cupcake    时间: 2005-8-25 13:11
谢谢高手解答。那请问我想得到一个实体的内外边界,有什么方法?怎样判断一个CATCurve是否封闭?
作者: saeba    时间: 2005-8-25 13:25
1.外边界的话,CATGeometry::GetBoundingBox()应该可以用吧,
但是要注意,出于performance的原因,这个BoundingBox不是百分之百的精确。
内边界是什么意思?
也许你的意思是想一条(或几条)边界线而不是BoundingBox,这个现成的好像还没有方法。只有自己想办法,我在另一个帖子里说了我的做法:https://www.icax.org/viewthread. ... %3D1&page=#pid=2。一定要是CATCurve吗?
要是不局限于CATCurve的话,(这种情况很少吧), CATWire有一个方法IsClosed().
要注意CATCurve是GeometricObject而CATWire是TopologicalObject,更常见和多用。
(只能使用GeometricObject的情况其实很少)
作者: cupcake    时间: 2005-8-25 20:03
CATGeometry::GetBoundingBox()可以得到一个CATMathBox,CATMathBox我的理解就是相当于2个CATMathPoint,用它能得到边界?我说的内边界就是说比如一个实体上面开了一个孔的话,孔的边界就是内边界。
那对于一个交叉特征(CATIGSMIntersect)怎样判断它是否封闭呢?我的做法是先得到CATIGSMIntersect的CATBody,然后得到CATEdge,然后得到CATCurve,想去判断。有没有好点的方法?
:)
作者: saeba    时间: 2005-8-25 20:46
是我理解错了。GetBoundingBox只能得到一个立方体(或者长方形)。
想得到边界的话,请参考这个帖子里我的思路:https://www.icax.org/viewthread. ... %3D1&page=#pid=我实际上确实用过这个办法来找出内外边界线,是可行的,
简单的说就是,找出所有的线,剔除非边界的,剩下的判断首尾,自己拼边界
  
CATIGSMIntersect的话,我想你能够得到CATWire接口的,用它的IsClosed()方法判断,应该很简单。
家里手头没有环境没办法试验,明天找时间试试。
作者: cupcake    时间: 2005-8-25 20:54
好的
谢谢你了
CATWire没有用过呢
:)
作者: acoka    时间: 2005-8-26 10:38
整个文件的结构还不知道怎么dump
但当初为做自己的feature的时候,解析了ds的feature的结构
比如2点定的直线
作者: saeba    时间: 2005-8-26 10:39
试了一下,看来CATWire可以用:
  
CATIGSMIntersect_var  spInt(pUnk);
  
if (!!spInt){
  cout << "CATIGSMIntersect Intersection " << endl;
  
  CATIGeometricalElement_var  spGeo(spInt);
  if (!spGeo){
    cout << "No Geometory." << endl;
  }else{
    CATBody_var  spBody = spGeo->GetBodyResult();
  
    if (!!spBody){
  
      CATDomain* pDomain = spBody->GetDomain(1);
      if (pDomain){
        CATWire*  pWire = (CATWire*) pDomain;
        if (pWire->IsClosed()){
          cout << "Is Closed." << endl;
        }
      }
    }
  }
}
  
BTW,论坛有时好像不稳定,发完帖子就找不着了。。。
作者: acoka    时间: 2005-8-26 10:40
它的datum的内部结构
作者: acoka    时间: 2005-8-26 10:47
part的直接的属性数据结构
作者: cupcake    时间: 2005-8-26 13:22
谢谢两位一再指点,acoka兄连这个都能得到阿
:)
作者: whofullwin    时间: 2009-11-11 10:13
真是高手过招啊。
作者: nebulaq    时间: 2009-12-16 14:36
好老的帖子 不过有帮助
作者: beacher0234    时间: 2010-7-5 14:36
请问怎么用Catia CAA获得二维工程图中的“物料清单”的文本。应该用哪一个接口函数
作者: xieqling    时间: 2012-8-27 14:35
学习了
作者: 湖泊的话    时间: 2013-7-9 17:12
N年前,有深度。。。
作者: 驭风狼    时间: 2013-7-10 15:42
学习中




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3