iCAx开思网

标题: 【求助】请问您知道在CAA中如何拾取Partbody中的点线面信息么? [打印本页]

作者: hanqi    时间: 2004-12-29 14:24
标题: 【求助】请问您知道在CAA中如何拾取Partbody中的点线面信息么?
      CAA的帮助文档实在太大,在短期内找到所需信息很困难,我真心的希望热心人能告诉我在哪部分可以找到关于“如何拾取Partbody中的点先面信息”的帮助,如果您不是很了解,也希望您能给出一些解决问题的建议。
       谢谢!!!
作者: chenwei005    时间: 2004-12-30 00:44

作者: liketulip    时间: 2004-12-31 11:36
积分不够,看不到

作者: bright1206    时间: 2005-1-1 20:50
piDescendantsOnPart->GetAllChildren("CATPlane", Planes)可以得到所有的面,面的信息是什么意思啊
作者: liketulip    时间: 2005-1-2 17:02
同问:
如果获取一个圆柱part的底面圆心
和这个问题类似
作者: nctusdk    时间: 2005-1-3 11:52
如果你是要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]
作者: liketulip    时间: 2005-1-3 21:46
我的是solid
"recursive的去traverse整個topology"
这个我不懂
作者: cupcake    时间: 2005-1-4 12:43
我也想知道怎么样去 "recursive的去traverse整個topology",请nctusdk  
  解答,谢谢!
作者: nctusdk    时间: 2005-1-4 18:03
後來想想有個簡單的方法啦...上一篇回的時候腦袋不清醒....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.
作者: cupcake    时间: 2005-1-6 16:28
谢谢nctusdk 了,感谢你的指点。:)
作者: dljdlj    时间: 2010-5-24 14:21
haoyangdeghh
作者: print_21    时间: 2010-7-8 16:42
不错不错
最近也在找相关的东西
作者: mengguanjun    时间: 2010-8-16 09:48
没看明白哦
作者: qiyizhifeng    时间: 2010-12-23 01:53
正好需要 多谢了
9# nctusdk
作者: buaayoung    时间: 2011-8-29 23:59
积分够吗

作者: linlily0925    时间: 2011-9-13 14:51
用拓扑来做~~
作者: fanwei1218    时间: 2011-9-14 22:26
呵呵,我也在研究这个,谢谢大伙的提示




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3