iCAx开思网

标题: CAA中如何获取某一个面上的所有圆等几何对象? [打印本页]

作者: chengongcumt    时间: 2005-8-23 11:37
标题: CAA中如何获取某一个面上的所有圆等几何对象?
由用户交互选择一个平面后,如何获取包含在该面内的所有的圆(孔)等几何对象?应该用到一些拓扑、几何操作吧?不知具体如何操作,请高手赐教!非常感谢!
作者: saeba    时间: 2005-8-24 10:10
如果是我的话会试着这么做:
从这个面Body中取得所有的1维Cell(曲线),这样,所有的边界线以及非边界线都有了,包括中间的孔的边界线
对所有的线进行排序,每一串能首尾连接的(边界线)放入一个表内,不能的剔除,这样得到最外部的边界和孔的边界
对每一组边界线,计算它的BoundingBox(计算最大X,Y值就可以),这样,BoundingBox最大(最外面)的那个就是外部边界,剔除
剩下的就是几组孔的边界了,对每一组中的每根曲线,试着QueryInterface CATCircle(圆孔的情况),如果能得到,就是圆弧,如果孔的形状多种多样(月牙孔?枣核孔?),就要在加些别的判断(半径一致,圆弧角度等等)
这样,对一些不是太复杂的情况应该能应付得了吧。。。
作者: cupcake    时间: 2005-8-25 20:54
对所有的线进行排序,每一串能首尾连接的(边界线)放入一个表内,不能的剔除,这样得到最外部的边界和孔的边界  
  
请问怎样判断这些线能否守为连接呢?
作者: cms_nuaa    时间: 2005-8-25 21:07
得到起点和终点,可以么?
作者: saeba    时间: 2005-8-25 21:29
请问怎样判断这些线能否守为连接呢?
========================
不讨论复杂情况的条件下,这仅仅是一个耐心的问题:
1。随便从一根线开始,得到它的两个端点
2。在剩下的线中查找,看有没有和它相联的线(其中一个端点和第一根线的一个端点相同)
     a。有,继续在剩下的线中查找和第二根线相连的线
     b。没有,剔除第一根线,重复1
3。在2a中,每找到一根线相连的线,还要看看它的另一端是否正好是第一根线的另一端
     a。是,恭喜,找到了一个Loop,把这个Loop中的线放到一个List中,对剩下的进行1
     b。不是,继续2
4。最后,怎么也找不到Loop了,这说明剩下的线都是非边界线,剔除掉不管就行了
5。对于找到的几个Loop, BoundingBox最大的就是外界线,剩下的都是孔(应该是吧)
作者: cupcake    时间: 2005-8-25 22:53
谢谢高手了,这个思路不错,很清晰
:)
作者: chengongcumt    时间: 2005-8-28 16:21
谢谢各位的帮助,我去试试!




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