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

iCAx开思网

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

【求助】请问您知道在CAA中如何拾取Partbody中的点线面信息么?

[复制链接]
跳转到指定楼层
1
发表于 2004-12-29 14:24:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
      CAA的帮助文档实在太大,在短期内找到所需信息很困难,我真心的希望热心人能告诉我在哪部分可以找到关于“如何拾取Partbody中的点先面信息”的帮助,如果您不是很了解,也希望您能给出一些解决问题的建议。
       谢谢!!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2004-12-30 00:44:01 | 只看该作者
游客,本帖隐藏的内容需要积分高于 1 才可浏览,您当前积分为 0
3
发表于 2004-12-31 11:36:00 | 只看该作者
积分不够,看不到
4
发表于 2005-1-1 20:50:23 | 只看该作者
piDescendantsOnPart->GetAllChildren("CATPlane", Planes)可以得到所有的面,面的信息是什么意思啊
5
发表于 2005-1-2 17:02:20 | 只看该作者
同问:
如果获取一个圆柱part的底面圆心
和这个问题类似
6
发表于 2005-1-3 11:52:31 | 只看该作者
如果你是要Solid中所有的點線面那就要recursive的去traverse整個topology,  
不過如果你只是要取得surface中用GSD建出來的點、線、面, 那直接對MechanicalRoot取CATIDescendants這個介面, 然後用
CATLISTV(CATISpecObject_var) vListOfObj;
CATIDescendants::GetAllChildren("CATPlane", vListOfObj); //取所有"平面"
CATIDescendants::GetAllChildren("CATPoint", vListOfObj); //取所有"點"
CATIDescendants::GetAllChildren("CATSurface", vListOfObj); //取所有"面"(包括曲面)
CATIDescendants::GetAllChildren("CATLine", vListOfObj); //取所有"直線"
CATIDescendants::GetAllChildren("CATCurve", vListOfObj); //取所有"曲線"
這個GetAllChildren的第一個參數就是要filter的interface name...
他會去看他所有的children...有implement這個interface才把他丟到vListOfObj裡
  
而CATLISTV(CATISpecObjec_var)只是很簡單的一個link-list...跟STL中的list類似, 只是基本上他只是一個巨集...
我沒錯記的話應該是換成CATLISTV_CATISpecObject這個type啦..
他不是像STL是template...(DS不喜generic programming這套)
(PS.不過他的index是從1開始算...不是從0開始喔!)
取list size就是vListOfObj.Size()
取第一個element就是vListOfObj[1]
7
发表于 2005-1-3 21:46:22 | 只看该作者
我的是solid
"recursive的去traverse整個topology"
这个我不懂
8
发表于 2005-1-4 12:43:38 | 只看该作者
我也想知道怎么样去 "recursive的去traverse整個topology",请nctusdk  
  解答,谢谢!
9
发表于 2005-1-4 18:03:07 | 只看该作者
後來想想有個簡單的方法啦...上一篇回的時候腦袋不清醒....sorry  
不需要真的去recursively go through整個BRep...那是找相鄰關係時才需要...
首先直接對所有的Feature取CATIGeometricalElement這個介面
然後用CATIGeometricalElement::GetBodyResult()傳回一個CATBody
然後再用CATBody::GetAllCells(vListOfCells, nCellType)
  
code大概長這樣:
CATIGeometricalElement_var spGeoElem(spSpecOnSomeFeature);
if(spGeoElem!=NULL_var)
{
  CATBody_var spBody = spGeoElem->GetBodyResult();
  CATLISTP(CATCell) vListOfCells;
  int nCellType = 0; //取vertex是0, 取edge是1, 取face是2, 取volumn是3
  spBody->GetAllCells(vListOfCells, nCellType);
  for(int i=1;i<=vListOfCells.Size();++i)
  {
    ...
  }
}
  
SDK.
10
发表于 2005-1-6 16:28:57 | 只看该作者
谢谢nctusdk 了,感谢你的指点。:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-23 18:23 , Processed in 0.033256 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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