找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

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

CAA求助

[复制链接]
发表于 2005-9-22 21:50:15 | 显示全部楼层
每个CATIGSMIntersect实际上有很多Circle,是不能QI到CATIGSMCircle的。(其实即使就算是只有一个,你也QI不到的,我认为)
(一个CATIGSMCircle对应的是一个circle的Feature,注意是Feature而不是BRep)
liuruixiao得到cells的做法是对的,关键是下一步怎么做:
这是非公开的,但是还是告诉你吧,
对每一个Cell, cout他的GetImpl()->IsA(),就象这样:
cout << myCell->GetImpl()->IsA() << endl;
你会得到这个Cell的implementation的名字,就是LateType.
有了LateType,到Object broswer中去查一下它都实现了什么Interface,
你一定会找到和circle相关的interface的

这是一个非常重要而且非常常用的技巧,但是尽量只用在debug的时候,在最终产品里不要出现。
因为这是非公开的,得不到保证.

[ 本帖最后由 saeba 于 2005-9-22 21:54 编辑 ]
发表于 2005-9-23 09:53:34 | 显示全部楼层
>如果是SpecObject的话,用GetType()也能得到Implementation吧.
是的,SpecObject(就是Feature)的情况下,可以用CATISpecObject::GetType()得到
但是仅仅局限于Feature,对BRep以及其他就没有办法了
而GetImpl()->IsA()对所有CATBaseUnknown都有效

>CATIGSMIntersect可以QI到CATIMeasurableCurve,如果是单圆的话,CATIMeasurableCircle
嗯。。。有点怀疑
下星期试一下再说
发表于 2005-9-26 16:06:58 | 显示全部楼层
CATCircle::GetRadius()
CATConic::GetOrigin()
发表于 2005-9-27 10:25:48 | 显示全部楼层
>缺点是一个圆是两个cell,半径和圆心都有两个相同的值。

这个可能无法避免,可以这么解决:
构造一个列表,每个表项是两个vertex
每得到一个圆弧cell, 再用一次GetAllCells(list, 0)来得到两个端点,
和列表中的表项比较,已存在的话丢弃该圆弧,
不存在的话,加入列表,处理圆弧
(提示,每个cell同时也是一个domain, 都继承于CATTopology,都有GetAllCells方法)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2025-8-2 19:43 , Processed in 0.022263 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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