找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 22427|回复: 17
打印 上一主题 下一主题

CAA中怎样得到Datum得相关参数?

[复制链接]
跳转到指定楼层
1
发表于 2005-8-24 17:45:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
各位高手:
      对于Datum特征,怎样的倒它的厚度、外形?还有,能否得到一个CATPart文件的所有的数据,就是说CATIA本身的数据储存形式。
:)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2005-8-25 12:57:21 | 只看该作者
1.不论是否Datum,只要有几何(其实是拓扑)形状,就可以得到CATIGeometricalElement接口,用它的GetBodyResult()方法就可以得到CATBody,CATBody 是从CATTopObject派生的,就可以GetDomain()
有了Domain,就可以判断它是3维的,2维的,1维的还是0维的,而且还可以得到
它所有的CATCell,不是就为所欲为了吗?
  
2。“CATPart文件的所有的数据”你都想得到是不可能的,文件格式并未有公开。
你如果Reverse Engineer了的话说不定还会惹上官司。。。
3
发表于 2005-8-25 13:11:12 | 只看该作者
谢谢高手解答。那请问我想得到一个实体的内外边界,有什么方法?怎样判断一个CATCurve是否封闭?
4
发表于 2005-8-25 13:25:11 | 只看该作者
1.外边界的话,CATGeometry::GetBoundingBox()应该可以用吧,
但是要注意,出于performance的原因,这个BoundingBox不是百分之百的精确。
内边界是什么意思?
也许你的意思是想一条(或几条)边界线而不是BoundingBox,这个现成的好像还没有方法。只有自己想办法,我在另一个帖子里说了我的做法:https://www.icax.org/viewthread. ... %3D1&page=#pid=2。一定要是CATCurve吗?
要是不局限于CATCurve的话,(这种情况很少吧), CATWire有一个方法IsClosed().
要注意CATCurve是GeometricObject而CATWire是TopologicalObject,更常见和多用。
(只能使用GeometricObject的情况其实很少)
5
发表于 2005-8-25 20:03:53 | 只看该作者
CATGeometry::GetBoundingBox()可以得到一个CATMathBox,CATMathBox我的理解就是相当于2个CATMathPoint,用它能得到边界?我说的内边界就是说比如一个实体上面开了一个孔的话,孔的边界就是内边界。
那对于一个交叉特征(CATIGSMIntersect)怎样判断它是否封闭呢?我的做法是先得到CATIGSMIntersect的CATBody,然后得到CATEdge,然后得到CATCurve,想去判断。有没有好点的方法?
:)
6
发表于 2005-8-25 20:46:02 | 只看该作者
是我理解错了。GetBoundingBox只能得到一个立方体(或者长方形)。
想得到边界的话,请参考这个帖子里我的思路:https://www.icax.org/viewthread. ... %3D1&page=#pid=我实际上确实用过这个办法来找出内外边界线,是可行的,
简单的说就是,找出所有的线,剔除非边界的,剩下的判断首尾,自己拼边界
  
CATIGSMIntersect的话,我想你能够得到CATWire接口的,用它的IsClosed()方法判断,应该很简单。
家里手头没有环境没办法试验,明天找时间试试。
7
发表于 2005-8-25 20:54:54 | 只看该作者
好的
谢谢你了
CATWire没有用过呢
:)
8
发表于 2005-8-26 10:38:17 | 只看该作者
整个文件的结构还不知道怎么dump
但当初为做自己的feature的时候,解析了ds的feature的结构
比如2点定的直线

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9
发表于 2005-8-26 10:39:40 | 只看该作者
试了一下,看来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,论坛有时好像不稳定,发完帖子就找不着了。。。
10
发表于 2005-8-26 10:40:59 | 只看该作者
它的datum的内部结构

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-27 00:02 , Processed in 0.031043 second(s), 14 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表