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