# Why can't we flip Breps in GH?

So when I explode a Brep, I get a bunch of surfaces which don’t necessarily have the same normals as they had as part of the Brep.
That’s a huge bummer right there.
But now, when I make an open Brep, I’d like to control the direction of it’s normals.
Why doesn’t the “Flip” component accept Breps, like the equivalent Rhino tool ?

If I want to shell that Brep, say, with Pufferfish’s “Offset Surface” tool, how can I be sure it will offset in the right direction ?

You can flip brep like by native GH components or by one line of code:

When I explode a Brep, the resulting surface’s normals are not consistent with their original orientation in the Brep.
Why would the opposite also not happen : what garantee do I have that, once joined, my surfaces will keep their normal orientation ?

This is a big issue when you then want to offset the damn Brep.

I can’t tell you why there’s no brep flip component, sounds like we just need to add one.

Do keep in mind that in Rhino there’s 2 kinds of surface orientation:

The surface normal direction is implied by the uv directions and the right-hand rule. So a surface has a predetermined normal which cannot be changed. The only way to flip the normal is to either reverse the u or v directions, or swap the u and v directions. Either way this involves creating a brand new surface from scratch which just happens to have the same shape as the old surface.

It is however very common for surfaces to have to be flipped when they are joined, since neighbouring faces in a brep must have consistent normal directions. So rather than reconstructing surfaces all the time when joining them, there’s an extra boolean value on brep faces which means “the normals of this face are the opposite of what you’d expect”. That’s the cheap/fake direction flipping.

The fact that a brep face and it’s underlying surface can have differing opinions about the direction of \hat{n}, is the cause of lots of confusion generally.

I can add a brep flipping component, just remember that closed breps cannot be flipped, their normal always point out.

Hi David,

I had the intuition for all this, but you really made it clear.
I guess that it implies the following :
Assuming that GH generates only surfaces with the UVN dircetions obeying the right hand rule, if I manage to orient a bunch of joinable surfaces with a consistent normal direction, then when I make a BREP out of them, I should expect that normal to remain in the same direction, EXCEPT if they make a closed BREP, in which case the normal will always point outward.

See, if I could flip an open BREP’s normal using a guide surface like, say, a sphere that I put “inside” that BREP, I wouldn’t need to do so for each surface prior to making the BREP.

Does that make any sense ?

Normals of surfaces after merging/joining into a brep will NOT REMAIN the same even if it is not closed brep because :

After exploding brep, brep faces should have the same normal directions as in the brep (I guess).

You are Right, when joining surfaces the OpenBrep get the normal of the first one selected and
after exploding brep all surfaces get also the normal of the first one selected