Hi,
Is there a way to reverse a surface normals?
Let’s say for the Brep.Trim function to work properly or to change the result of a BooleanUnion
Regards
Hi,
Is there a way to reverse a surface normals?
Let’s say for the Brep.Trim function to work properly or to change the result of a BooleanUnion
Regards
Hi,
Does Brep.Flip work for you?
http://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Brep_Flip.htm
-Willem
Hi Willem,
Thank for the fast reply… but it didn’t work for the Brep.Trim
Let’s explain my case in an example:
Any other idea?
Hi,
Without testing I might be in the wrong, but I suppose the sphere being a closed surface prevents you from flipping the brep…
You could test with a plane surface to make sure this assumption is correct.
As you can read on the docs for Brep.Trim [here] the inside will indeed be kept.(http://developer.rhino3d.com/api/RhinoCommon/html/Overload_Rhino_Geometry_Brep_Trim.htm)
I suppose you could either use an open spherical surface or resort to Brep.Split and filter out the part you want to keep.
-Willem
TL;DR: I think you may want to use BrepFace.IsOrientationReversed
(see http://developer.rhino3d.com/api/RhinoCommonWin/html/P_Rhino_Geometry_BrepFace_OrientationIsReversed.htm
The situation with normals and polysurfaces is a bit complex, but I’ll try to explain. A surface has one normal direction, which is defined as the vector product of the tangents in U- and V-direction. Therefore the normal is determined by the direction of U and V (which can be changed by the Dir
command by the way).
But when a surface becomes part of a Brep (polysurface, or trimmed) the normal of a BrepFace can be flipped independently of the underlying surface using the property mentioned above.
If you think about it, it is quite logical to have this, because it is much easier to do this, than to change the surface directions (because that also means you need to change the trim definitions!).
You can see this IsOrientationReversed
also if you look carefully to a surface whose normal has been flipped: it has a purple line opposite of the direction arrow. See also the documentation of the Dir command, where this is also explained.
The final kicker is this: even untrimmed surfaces are Breps in the Rhino document. So you can flip the orientation of a surface but leave its directions intact.
Willem,
I’ll try what you’ve mentioned ‘use the plane’… I’ll let you know.
Menno,
The property OrientationIsReversed appeared to me ‘ReadOnly’, in any case, I checked with the method Flip and it OrientationIsReversed changed every time, but in everycase the Trim result was the same
Oh that’s weird, because the documentation says it has a public setter. You may not be on the latest version/sr.
@menno, BrepFace.OrientationIsReversed is a public property (get and set). The property returns true if the Brep face’s orientation is opposite of natural, underlying surface orientation.
@Yopy_Hi_del_Cano, if you want to reverse surface normal like Rhino’s Dir command, then use Rhino.Geometry.Brep.Flip.
If you have a closed Brep, you may want to check the overall orientation, using Rhino.Geometry.Brep.SolidOrientation, before flipping.
I am not sure I understand what this means. Can you provide more information? Are you having a problem performing a Boolean operation?
– Dale
Hi Dale,
Double checking Rhino.Geometry.Brep.Flip functionality seems to work fine.
But the problem appears when:
The fact is that I don’t want to use a Boolean operation because if I do, then I’ll have to deal with another face inside the Brep, and I just don’t want that.
This is a know issue with Rhino 5, and this has been fixed in the Rhino WIP.
– Dale
Sorry Dale,
I keep on working on the project I was stuck with another solution, as soon as I have time I’ll check it out with the WIP.