讨论 --- 关于利用BrepClosestPoint找到多重曲面最近点所在面的讨论

[复制链接]
跳转到指定楼层
24443 GMF 发表于 2015-1-28 18:11:40 楼主
利用BrepClosestPoint命令的主要目的是,想高效率地来找到多重曲面上分布点对应的单个曲面(3);但是当点处于多重曲面边缘处时,其返回值为边(2);这个情况和函数描述的用法倒基本是吻合的,在边(属一个面)的时候返回边的值。
所以想请教下各位,如果我想在这种情况下也得到所在面的值,有什么比较好的办法?
谢谢



TEST.zip (13.61 KB, 下载次数: 75)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
关于大陆地区Rhino原厂培训中心
筑梦NARUTO 发表于 2015-1-28 18:55:22
2
可以根据上面的uv来判断类型吧
Jorin 发表于 2015-1-28 21:43:42
3
本帖最后由 Jorin 于 2015-1-28 21:46 编辑

楼主理解的有点误区,当得到的最近点在 BREP 边缘上的时候,得到该边缘的序号并不是该边缘在所在 BREP 面上的序号,而是在整个 Brep 物件上所有边缘中的序号。

这个需要用 RhinoCommon 中的方法来解决,这里仅提供一个最简单的例子,没有考虑更多情况,其他情况请参考下面的做法。如图所示:



[mw_shl_code=python,true]clo=brep.ClosestPoint(point, 0.0)
type=int(clo[2].ComponentIndexType)
if type==3:
    i=clo[2].Index
    faceIndex=i
if type==2:
    i=clo[2].Index
    faceIndex=brep.Edges.AdjacentFaces()
index=faceIndex[/mw_shl_code]
 楼主| GMF 发表于 2015-1-29 09:24:02
4
Jorin 发表于 2015-1-28 21:43
楼主理解的有点误区,当得到的最近点在 BREP 边缘上的时候,得到该边缘的序号并不是该边缘在所在 BREP 面上 ...

非常感谢J大。
您需要登录后才可以回帖 登录 | 注册成为会员

本版积分规则