This website is made for modern browsers. You are seeing this, because your browser is missing a feature or two. Please install the latest update or switch to a modern browser. See you soon.

Prepare for 3D printing

#3d-printing #Dendro #fabrication #prototyping

3D printing follows the ideas of rapid prototypingand is an additive fabrication process in which the material is added layer by layer. This technique is used to quickly produce physical representations of design instances and to evaluate them hands-on. The 3D printer’s compact size and affordability makes them suitable for offices and studios of design teams.

The purpose of crafting a model with the techniques of rapid prototyping is evaluation and decision-making. For this, the model doesn’t need to have all the details, but should provide sufficient insight into the sought specifications. Before prototyping a copy of our design, we should think about the level of abstraction. Sometimes it’s easier to create a simplified version just for printing purposes.

We have to keep in mind, that 3D printing has its own limitations of what can be printed. Especially with printers that use fused filament fabrication, in which material is deposited layer by layer. Levitating and strongly inclined areas are only possible with support structure. For lattice structures, this support would interfere with other elements of our design and thus it can be difficult to achieve the desired results. If we have a discretized structure that will have some sort of covering later on, it might be easier to print the surface belonging to the covering as well and to offset the structural elements to make their pattern visible.

The size of the fabricated model is limited by the size of the printer, which usually have a build volume of 200 to 300 mm in each direction. Though the actual fabrication process and material may vary, most printers are limited to one material and one color at a time. This tutorial is written with these assumptions in mind.

Everything that ought to be printed has to have a volume. The first step in preparation for printing is to turn lines into pipes and give surfaces a thickness. Your 3D printer most commonly asks you to provide the data in a *.stl or *.3mf file format, which means that at some point the model also has to be converted into a mesh. This mesh has to be without any gaps and volumes should also not intersect each other. If we image that our model is getting filled with water, the water should not leak, but reach every part of the model. Even though printing software is getting smarter and may fix some shortcoming, it’s recommended to provide the best source material possible.

Instead of complex operations on meshes, like trimming the model at intersections by hand, or solving cases when a surface meets a mesh, it’s easier to convert everything into a volumetric model first and then into a mesh. A volumetric model consists of thousands independent tiny volumes, called voxels. You can think of them as blocks in a Minecraft map, in which a huge number of those little blocks make up the whole landscape. Once everything exists in voxel data, we can merge the individual voxeled objects into a combined cloud of voxels and then wrap a mesh around the voxel landscape.

To operate with voxels we need an extra plugin for Grasshopper. In this case, we will use Dendro. But other plugins that use the voxel approach should do the job just as fine.

This tutorial needs the following plugins:


In Grasshopper, dimensions that we assign to objects are without any unit. Whenever we push something to Rhino, the geometry is baked in the unit of the opened document. In 3D printing, the most hassle-free procedure is to draw everything in millimeter. You can change the unit of a Rhino document in the status bar.


Create some source objects

To illustrate the workflow, let’s create a hemisphere with some enclosed arches that start from the bottom and meet at the top. For this, we first use the Spherecomponent with a radius of 100 and attach a Brep | Planeintersection to it. This creates a section curve where the sphere intersects with the ground plane. With this curve and a Surface Splitcomponent, we can now slice our sphere into two domes. We then use a List Itemto select to top half of the sphere.

To create the arches, we first use a Divide Surfacecomponent to create a grid of points on the hemisphere. Connecting the points at output P with an Interpolatecomponent will generate the arches.


Convert curves to volumes

We use the Curve To Volumecomponent from Dendro to convert the arches to voxel pipes. The radius of 3 is assigned with a Panel. Here, we have to keep the smallest allowed diameter of our printer in mind. Even if this is something like 2 mm, we should use a larger diameter for curved or inclined elements.

Dendro components that calculate volumetric objects need to have Create Settingsattached to it. This component allows us to influence the density of the voxel cloud and change some other proximity parameters. A higher density (lower voxel size) will create a more detailed model but also forces Grasshopper and the slicing software to do heavier lifting. For this example, set in millimeter, the default values work fine.


Convert surfaces to volumes

Surfaces have no thickness and can not be printed as they are; we have to give them some thickness by creating an offset. Dendro has no component that handles this automatically, just a general Mesh to Volumecomponent. We can use Offset Surfaceto create an offset hemisphere and set the distance D to -3, which is inwards in this example, to let the arch profile stand out.

Now, there still is a gap at the bottom of the hemispheres, which we have to close. This is done by attaching a Brep Edgescomponent to both outputs that contain the hemispheres. The new outputs En are then connected to a Ruled Surfacewhich creates the missing peace. We use a Brep Joincomponent and flatten its input B to create a Brep which resembles the thickened surface.

After this, we can use a Mesh Brepcomponent with Settings (Speed)connected to it and thus convert the Brep into a mesh. This mesh is then connected to a Mesh to Volumecomponent from Dendro to create the voxel volume. Also, we attach the same Create Settingsfrom the previous step.

Alternative solution for thickening meshes

Alternative solution for thickening meshes

Instead of thickening the surface with several components, we can immediately convert the surface into a mesh. Various Grasshopper plugins that provide enhanced mesh functionalities offer something like mesh thickening or mesh offset. Those components allow us to set a distance and will close the resulting gaps automatically.

In the figure below, Element* Mesh Thickenfrom Element* is used, but Weaverbird, Mesh+, and others offer a similar operation. For our example, the component displays a warning that it had to remove 1 unused vertex, which has no influence on the following calculations. We could use Element* Mesh Combine & Cleanto resolve the warning message.

Shortcut to thicken a mesh by using an Element* component


Convert volumes back to a unified mesh

Once we have converted all desired parts of our model into voxel volumes, we use Volume Unionto collect them. Flattening input V ensures that all volumes are merged into one cloud. We can then convert the voxel cloud into one unified mesh with the component Volume to Mesh. At input S we attach the same Create Settingsthat we used before.



Export mesh from Grasshopper to Rhino

Now that we have a suitable meshed version of our model, the next step is to export it to Rhino. Before we do that, we need to double-check that our units in Rhino are set to millimeter. The document units are stated in the status bar.

If we need to change the unit settings, we can right-click the field and select Unit Settings… and then set the Model units in the following window. With the appropriate units we can now bakeour model from Grasshopper to Rhino. Then, we can export our model from Rhino as a *.stl or *.3mf file.

Now we are done with the preparation of our model and the printing software will do the slicing and setup of the printer. Most manufactures offer tutorials on how to print with their software and how to operate the printer. Please follow their instructions for the actual printing.

The printing software will also check the integrity of the model. If errors occur, they usually provide some repair functions to straighten out minor hiccups. If this isn’t possible, it’s often better to avoid fiddling with the *.stl or *.3mf file and instead, look at the cause of the error and then tweak the Grasshopper code until the error disappears.

In cases where lots of support structure is needed to print the design object, we can cut it in Grasshopper into multiple parts with a plane, print them individually and glue them together after printing. Sometimes it also helps to turn the model upside down, so the pillars come last. An advanced process is to create the support structure in Grasshopper, too. This can be more efficient than the automatic generation by the printing software.

Get the results

Version Info

This page is open source. Edit it on GitHub or see how you can contribute.

Up next