How to fill a Brep created in rhino/grasshopper?

Hi everyone.

I’m currently working on constructing complex geometries to be manufacture using 3d printing technology. In order to explain my problem, I will use a simples geometry. Let’s think at the box represented below as the final geometry, ready to be printed:

So, after this, I exported the geometry to STL and open it on ultimaker cura. After slicing it’s possible to see that the box is nothing more nothing less than a “void box” (see picture below):

I know that this might be a simple problem and sorry if I’m asking a stupid question, but I’m really struggling with this. So here it goes: How can I fill a brep/solid geometry design in rhino/grasshopper?
I already tried exporting to other formats, like igs, and open it in other 3d modeling programs, such as fusion 360, but still being a void solid, and that is not what I want. I want to print a completed filled object.

The real case is that I’m working with a way more complex geometry, but the idea is the same when I export the file to be printed, it basically is a void solid and not a completed filled one. So if anyone could help with this I really would appreciate it!
Thanks in advance!

there’s no such thing like a stupid question.

usually breps are considered “filled” as soon as they are closed. you usually export those geometries to .stl files, which are standard for almost any printer. (alternatively .obj, but thats the same thing, just saved a bit different)
Usually you check your file with some kind of stl checker like VisCamMesh (I think its called magics nowadays), netfabb or meshLab to be sure there are no errors like overlapping, T-structures missing boolean union or open edges.
All this is limited true for newer printers using voxelization, but in your case it’s a slicing process.

Personally I don’t have an ultimaker, but a shot in the dark would be that your geometry is not closed when you export it, but 8 single face meshes. This would explain why you can load it into cura without complaining, but doesn’t fill.

Try and -_join your geometry before exporting as stl. else check your export options before exporting, where you can choose not to export open objects. this would give you an indicator if your geometry is closed or not.

1 Like

For 3D printing a solid object has to be seen by the slicing program as a “manifold” object. Manifold means the geometry has no open or mis-matched edges. Keep in mind that an STL file is really a collection of connected triangles (in other words, it is a mesh) , and if any of the triangles don’t match up with adjoining edges and/or corners, the resulting STL file will not be manifold.

If the object is not manifold the STL file is considered to have errors (like cracks, holes, mis-matched edges) and, depending on the slicer, it either will not be sliced at all, or if it is sliced the resulting GCode will not print properly.

The way slicers work is to fill the inside of a solid object with what is called “Infill”. Infill is meant to “fill up” the empty space inside a solid object so it can have a top printed that won’t collapse due to no support underneath. Here’s a screenshot of my slicer showing what’s been printed at a height of 3.2 mm of a “solid” cylinder that is 50 mm in diameter and 50 mm high.

The dark red cross-hatch material is the infill; it is the so-called “grid” pattern set at 20% infill. That means only 20% of the open volume will be filled with printed material. Here’s what the finished print will look like:

The top surface will be 100% solid and the finished print will look like a solid cylinder, but the inside volume will be 80% empty space. This is done to minimize both print time and the amount of filament used to complete the print. Of course if a truly solid final print is needed you specify 100% infill.

The key to success is to present your slicer with only Solid Breps from GH/Rhino. In some cases these are not easy to make because of tiny tolerance issues with Rhino geometry. Sometimes I’ve been able to fix these kinds of problems with either the GH Solid Union command or Rhino’s Solid/Union command (these might be the same thing), but usually, if the resulting BRep is not closed, I have to use an external program that is designed to fix problematic geometry. The one I find most effective and easy to use the the Windows 3D Builder program. It uses the same algorithms as the well-known Netfabb program.

Finally, if your finished geometry looks good on screen but is not manifold, and if a program like 3D Builder can’t fix it (yes, this really does happen) , it means you’ve got some sort of mistake in the way you constructed you geometry. Mistakes like this can be hard to find, but they can be found and corrected. Fortunately GH makes it easy to try different approaches, or, as I’ve done a few times, start over completely and re-build the geometry from scratch.


Just a small addition to the excellent information already provided in this thread.

Using the _ShowEdges command will report if your object has any naked or non-manifold edges and if found, highlight them for you. Look at the command history to see the result (you can also get this information from the Brep Edges component in grasshopper). You’ll want to fix any problems found here before proceeding. This may not guarantee that your slicing software will be satisfied with your geometry, but it’s a good starting point.


1 Like

Just to address your simple cube example which is unlikely, to say the least, to have naked edges or be non-manifest.

I created a 1cm cubed box in grasshopper, baked it to Rhino 7, saved to .STL format (ASCII option), then loaded that into Cura 4.10 and sliced. That created infill as expected - see for example at 75%:

I think you need to go back to your Cura software and check the setup - for example that the infill preview is turned on.


1 Like

Hi everyone.

First of all, I want to thank you guys, for the suggestions. @benedict, @Birk_Binnard, @kev.r, so I followed your suggestions and it turns out that I had several open breps. I started modeling everything again more carefully and did accomplish a closed brep. After this, I exported to STL, and this time it worked and CURA opened it as a closed solid. Thanks again for the help!

@jeremy5 Yeah, I think I didn’t have that option turned on :man_facepalming:. Thanks!