关于封闭的brep在TrimBrep中的用法

总结并补充一下月神和我说的
问题比较复杂,也涉及到一些犀牛比较奇怪的设定。

首先是重要的:rs.TrimBrep()和Rhinocommon内的Brep.Trim()功能基本一致,但是无法通用,他们的内核有微小的区别。

月神的Brep.SolidOrientation只能配合Rhinocommon的Brep.Trim使用
而我的Brep.Faces.OrientatioIsReversed只能配合rhinoscript的rs.TrimBrep()使用

下面我介绍一下他们的区别

一:Rhinocommon 方法Brep.Flip()
操作对象:隶属Brep的Flip属性,虽然将Brep自己的方向反转为朝内了,但是他并未修改Brep内所有Face的单独法向。
检测方法:将物体Bake到犀牛,炸开后,检查曲面法线,他们仍然朝外。

注意:错误的检测方法是使用GH的Deconstruct Brep运算器炸开后查看法向,会发现法向朝内了,具体原因不明确。推测是Deconstruct Brep使用的DuplicateFaces函数在炸开物体时,会将Brep本身Flip的属性作为判断机制赋予给曲面。这一点和犀牛的炸开性质不同

配合使用:需要配合Brep.SolidOrientation判断Brep自身的Flip属性。并且配合Rhinocommon的Brep.Trim()完成内外切割控制
不能配合使用:rs.TrimBrep(),因为他检测的是Brep炸开后隶属于曲面的法向

二:Rhinocommon 属性Brep.Faces.OrientatioIsReversed
操作对象:Brep内的单一Face的方向
检测方法:将物体Bake到犀牛,炸开后,检查曲面法线,他们变为朝内。使用GH的Deconstruct Brep运算器炸开后查看法向,也变为朝内。

注意:该命令会给BrepFace赋予一个reverse属性,也就是“假方向”,这个方向不符合曲面uv方向的螺旋定则。是一个假的方向,常见于物体镜像后导致。详见我第一个回帖的第一个链接

配合使用:配合rs.TrimBrep内的法线检测机制使用
不能配合使用:Rhinocommon的Brep.Trim(),因为他检测的是Brep自身的Flip属性

2 个赞