We show how to create lattice meshes from the volumetric solid volumes that we get from Rhino3DMedical. To do so, we will use Grasshopper and the free plug-in extensions Crystallon and Dendro.

Live session video

Watch here the full workflow:

What are lattice structures?

Lattice structures are geometrical objects obtained from the mass replication of a unit crystal cell or pattern (an arrangement of atoms or molecules) with distortions of scale and rotation.

Lattice structures use less mass and material than solid ones, without compromising the rest of mechanical properties. This leads to direct benefits and cost savings, specially if the structure is 3D-printed.

Examples of lattice structures and field of application. Source: Crystallon Grasshopper.

Installing tools

The tools to install are Crystallon V2 and Dendro V1. If you have Rhino3D open, close it.

First, go to https://www.food4rhino.com/en/app/crystallon, log in with your McNeel account (you can create it for free), and download Crystallon version V2. Unblock the zip folder by right-clicking on it, and selecting Properties -> General -> Unblock and Apply.

Unzip its content, and copy the entire content of its subfolder CrystallonV2-Win into your directory C:\Users\YourUser\AppData\Roaming\Grasshopper\UserObjects, where YourUser is your particular user name linked to your PC.

Second, go to https://www.food4rhino.com/en/app/dendro, log in with your McNeel account and download Dendro version V1. Unblock the zip folder like you did before, and copy the content of its subfolder Libraries into your directory C:\Users\YourUser\AppData\Roaming\Grasshopper\Libraries, where YourUser is your particular user name.

Now you have Crystallon and Dendro installed in Rhino/Grasshopper. Crystallon is used to parametrize and generate the lattice structure, and Dendro is used to generate a volumetric mesh out of the lattice structure. Crystallon generates a particular type of lattice geometry called Voronoi lattice structure, following the Voronoi diagrams.

Creation of lattice meshes

We will create a script that you can subsequently use to generate multiple lattice structures. Go to the Crystallon folder that you unzipped (called Crystallon_v2-0). Go to its subfolder Examples\02-Populate and copy the file 03-Voronoi Fill.gh. Paste it in your working directory and change its name; we will call it VoronoiLattice.gh.

Open Rhino and Grasshopper. Go to File -> Open Document and select VoronoiLattice.gh. You will see a first lattice mesh out of a sphere.

Lattice mesh from sphere.

Add a mesh component (press Space bar in the keyboard and write Mesh, then press Enter) and connect it to the same components as MSphere. Select and delete component MSphere. Go to Rhino and select File -> Import and select the STL or Rhino file of the mesh to convert to lattice. Go back to Grasshopper and select Mesh component, right-click on it, select Set one Mesh and select the mesh to be converted to lattice.

Lattice structure from the input mesh.

As you no longer need to select the mesh from now on, for convenience it is recommended that you hide it. To do so, in Rhino go to the Layer panel (to find it, type Layer in the Rhino command line) and create a new layer, for example with the name InputMesh. Type in the command line ChangeLayer and select the mesh, then pass it to the layer InputMesh. Go to the Layer panel and deselect the bulb icon in order to hide the mesh.

Go to Grasshopper and select the Dendro components tab. Select and add the component Curve to Volume. Connect to its input Curves the Voronoi Lattice Skin (L) and the Crv output of the Trim Lattice block (in order to add multiple inputs, hold Shift while adding a connection). Create a slider and connect it to Curve Radius (press Space bar and 0 < 0.1 < 1 and Enter to create a slider between 0 and 10 with steps of length 0.1).

Lattice mesh from the input mesh.

Create a Dendro component called Create Settings, and connect its output to Curve to Volume, Settings input. Create another slider 0 < 1 < 10, a Division component (space bar and type Division) and connect to its input A the previous slider 0 < 0.1 < 1 and to its input B the slider 0 < 1 < 10. Connect the Division output to Voxel Size in Volume Settings, to have an initial estimate of Settings.

Finally, we create the mesh with all the lattice settings: create a Dendro component Volume to Mesh, and connect to its input Volume to Mesh the output of Curve to Volume, and to its input Volume Settings the output of Create Settings component. The dashed line between Curve to Volume and Volume to Mesh indicates that there are multiple objects being transferred, in this case the Voronoi Lattice (the inside volume) and the Voronoi Lattice Skin (the outer boundary volume).

To finally obtain the lattice mesh, right-click on Volume to Mesh component, Mesh output, and select Bake, the layer of your choice (preferably a new one called LatticeMesh), and press OK. The mesh will appear in Rhino, ready to be exported as STL file (File –> Export Selected).

Overview and detail of output lattice mesh.

How to parametrize and tweak lattice meshes

To learn how to parametrize the Voronoi structure and the volumetric mesh, take a look at the documentation of Crystallon and Dendro; it is included in their respective folders that you downloaded for installation. Use the initial file 03-Voronoi Fill.gh with the sphere for training, as it is of low computational value. Tweak the parameters of Voronoi Fill component and the Dendro components to modify the parameterization of the lattice structure, and how it is transformed into a mesh.

Output lattice mesh in Rendered mode. The transparency and color properties were tweaked through the layer materials tab.


Thanks to Ennoïa, French company in the field of biomedical engineering and personalized surgery, for providing the input mesh and supervising and 3D-printing the output lattice mesh.

Printed model of a modification of the output lattice mesh.