Introduction: Gaudiesque Stackable Candle Masks

The task for this assignment was to design and print stackable / nestable objects in rhino and grasshopper. I was inspired to create a stackable set of objects that when stacked makes a seamless whole. I wanted the object to have a useful function, so I decided to create a stacking set of candle mask objects to project light through, that when stacked would fit a tall prayer candle, and each individual segment could be separated to mask a smaller candle.

The design aesthetic was inspired by one of Gaudi's methods for designing the double-twisting pillars as seen in the Sagrada Familia -- see this link for more info. To do this, I created a python script for parametrizing the pillar surface through lofting interpolated curves of star polygons while twisting these shapes. The surface is morphed with a pattern of ellipse cut out geometries and then offset to make a solid. Each layer of the pillar is sliced by an additional curve output from the python script.


Rhino 6, Grasshopper, Ender 3 Pro

Step 1: Python Pillar Generator

The python script generates a pillar by lofting star polygon curves. I experimented with different ways of generating these and include parameters for polygon degree, number of stacks, curve sharpness, twist angle, and radius.

The script also generates a set of surfaces for slicing the pillar into segments. These surfaces are generated by using the RailRevSrf (rail revolve surface) function -- where the rail curve is the layer's star polygon curve, and the profile curve is a polyline creating a flat inner ring and an outer edge sloping up and outward. These surfaces create a natural way to stack these segments once printed.

Gaudi's method uses multiple passes of star polygon forms while twisting in opposite directions at different rates. I wanted to recreate this dynamic geometry, so I tried generating two pillars with different twist values and using boolean intersection to create a unified solid. This operation was difficult and often failed for various parameters, so I instead tried the intersection earlier in the process at each star polygon curve generation. By intersecting the curves before lofting the surface, I am able to generate a double-twisting pillar more reliably.

However, because this operation introduced some errors in the geometry I only discovered when trying to generate the surface morph cut out patterns in the next step -- so I ended up reverting to a single twisted pillar but reduced the star polygon degree at each layer. Creating a different dynamic to the twist, and also a unique property where each segment was unique in degree.

Step 2: Surface Morph Pattern

I created a plane and generated random points in each segment strip. I generated random ellipses for each point and used the boundary surface module to make a cutout surface to morph with the pillar geometry.

I briefly tried a Voronoi pattern, just because, but I preferred the random ellipses.

Step 3: Making the Printable Solid.

I had trouble making a proper solid using different combinations of surface morph and offset surface. Using surface morph with a solid pattern would generate a solid pillar, but with non-manifold edges. I also found that using offset surface on the surface morph run with a surface pattern also failed. What is strange that after trying many ways to fix the geometry, I was finally able to get a proper surface simply by generating the pattern surface using surface morph, and then performing the offset surface within Rhino instead of Grasshopper!?

I found that boolean operations only worked on proper solids without errors -- so I was only able to reliably slice the pillar with the cutting surfaces after this. I performed boolean splits on the pillar using the cutting surfaces. I also sliced the fist segment with a flat surface, to make it sit flat on a print bed.

Step 4: Printing

Printing failed once, as the first segment didn't have a flat bottom and a also did not generate a brim for some reason. After fixing that, the print succeeded and took about 20 hours to print all five segments together. It still needs a little more love in the cleanup department.