Join Brep won't give close Brep


I’m wanting to join these surfaces together to form a closed brep - however they give an open brep and i’m not sure why. I have tried joining them together in solidworks and it did manage to create a solid.

Open Brep (712.9 KB)

Any ideas?



My guess is that you are mixing horses with Buicks. More specifically, Geometry item #14 appears to be a triangular mesh; it has 368 external/naked edges and 2472 internal edges. This means it is not a smooth surface with smooth curves as it’s edges. (It’s a horse.)

The rest of the objects are plain (planar) surfaces that have nice smooth curves as their edges. (These are the Buicks.)

If you Cull #14 from Geometry you can join the remaining Breps into 3 separate Open Breps. But that’s as far as it goes - there doesn’t seem to be a way to “connect” a mesh to those 3.

However, what you can do is convert the 3 Open Breps to 3 meshes, and then use Mesh Join to connect everything together. That should produce something that corresponds to a Closed Brep.

I don’t know much about meshes, but I do know horses don’t like Buicks.

Open Brep (721.0 KB)

I took your GH file and isolated each surface by using the list item component. I then joined adjacent surfaces to each other and then joined then again to the next adjacent surface. So without providing you the answer to exactly what the issue is, here is a way to trouble shoot your definition. I am guessing that GH struggles with joining a whole bunch of surfaces partly because of the order of the surfaces. If surfaces with indexes 0 and 1 are not adjacent my guess is that Gh is unhappy. Just a guess.

Open Brep (727.2 KB)

The other thing you can check out is to back your model into Rhino, join it there then go looking for “naked” edges. When I did that there are a few places that have naked edges. So maybe there is something amiss in how you created all of the surfaces.


Hmm … that’s challenging. See attached that does sequential work with various options/checks [including holes in BrepFaces] and wait for V2. If you can read C# see what’s going on.

BTW: set sort true and cap true and see the topoLog report. (540.8 KB)

Thanks @Birk_Binnard - when i tried turning it to meshes instead of surfaces still get an open mesh when i join it - so its the same problem really

@cimarronlofting Im going to try recreating the exterior planar surfaces using the naked edges - see if i have any luck with that

@PeterFotiadis unfortunately i dont read C#!

That did actually work - so there must be something very slightly wrong with those other ones i had

Anyway the red “spots” are the ones with issues. I’ll be back soon.


I rebuilt the geometry in GH converting triangles and quads to mesh en merging the vertices and then converting again to nurbs. The probles is that there are some “micro-spaces” between geometries and they are not touching 100% each other.

I attached a GH file with your geomtry closed as a brep.

I don’t know if is clear.

Open Brep (723.3 KB)

I thought I might be able to use a simplified version of Juan Pablo’s solution:

but the best this would do is 4 open Breps. So my hat’s off to Juan Pablo for doing it the right way.

But…just to see what would happen I exported the 4 open Breps as an STL file and loaded them into PrusaSlicer. As Juan Pablo noted, there were hundreds of errors (the “micro spaces”.) But PrusaSlicer was able to fix these by invoking the NetFab routine. So here is the result after slicing and ready for 3D printing - which should be finished in about 3 hours. I’ll post a pic when it’s done.

Note that because I use mm I had to scale the geometry up by 1500%.

Thank you, Birk :relaxed:

Actually there should be a simplified version of that file…I realized that the problem actually is that the surfaces are not cleaned: they have some kinks or unnecessary control points.

Here is the most simplified GH file :relaxed:
Open Brep (716.6 KB)

Well the print failed. :sob:

Each of the 2 legs in the back became detached from the print bed because they had very small contact areas. These were not large enough to stay stuck enough to withstand the sideways forces of the printer’s nozzle printing layers part way up the part. There are some tricks that can be played to increase first layer contact area, but these don’t always work.

I thought maybe if I rotated the whole thing so it printed with a different bottom surface it would work, but doing that results in fairly large unsupported areas called bridges, and these have their own printing problems. (But it would print ok in the Space Station’s zero G environment.)

It’s not clear to me if it would be more desirable to have the curvy part smooth - sort of like a minimal surface - or tessellated (like it is now) with triangular (or maybe square or hexagonal?) flat surfaces.


It occurred to me that, for 3D printing, maybe none of the GH work to get to a closed Brep was necessary. What if I simply exported the base geometry as-is and let NetFab fix all the errors it finds. Well, I did that - and it worked. The STL file produced by Rhino had something over 15,000 errors, but NetFab fixed them all in just a few seconds. The result is an STL file with no errors that slices fine and would therefore print with no problem. Except for the small footprint 2 of the legs have. And… the thinness of the column in the photo I posted above is almost certainly not going to be strong enough to hold up during printing the layers above it. It might work if I scaled it up to twice the size I printed - but that would take a much longer time to print and use up lots more filament.