3D Printed Lamp Shade - Differential Growth Design in Grasshopper
by ynchn in Workshop > 3D Printing
940 Views, 5 Favorites, 0 Comments
3D Printed Lamp Shade - Differential Growth Design in Grasshopper

So this project was set out to be a lamp shade, but mine turned out somewhat different. The model was created in Grasshopper and went through several iterations. In the end, it (for the most part) works as a lamp shade/cover, and retains the differential growth pattern I originally wanted.
Supplies
Modeling tool: Rhino/Grasshopper
- plugin: Anemone
Slicer: Ultimaker Cura
Printer: Ender 3 Pro
Material: white PLA filament
Ideation

Here is the IKEA floor lamp I wanted a new lamp shade for. While it's completely function and quite affordable, the shade doesn't help much when I'm slouching/lying on the couch, and the light bulb shines directly into my eyeballs.
The topic of mushroom lamps came up when we were chatting about what kinda of lamp shades we were going to design. I was quite interested in creating organic shapes, preferably mimicing fungi or other organisms. (The fungi theme was later continued in my custom gcode project.)
I came across these 3D printed lamp designs, as the basis of/inspirations for my lamp shade:
I also wanted to create the model for the lamp shade completely in Rhino/Grasshopper, as an attempt to become more familiar with programming in Grasshopper. I mostly followed the steps in this How to: Simple Growth Simulation tutorial to create the gh script.
Grasshopper Program + Slicing


The Grasshopper script is reproduced from the How to: Simple Growth Simulation tutorial. It creates beautiful coral like growth structure.
Essentially, the program divides a closed curve into N number of polylines. Then, it uses a series of operations to increase and mutate the length and direction of the polylines. The Anemone loop component and the step solver are used to store and animate the growth steps. After the patterns from each step are calculated, they are lofted and capped to become a printable model.
When exporting the STL, the tolerance was set to 0.001.
Since the model begins as a closed curve, the growth algorithm generates closed curves, there was no issue with making sure the model is "watertight" or with fixing seams or holes.
In later iterations, I added a split component so that I can slice a segment of the model to print, without changing other parameters that might influence the overall shape.
To slice in Cura, go to Print Settings > Special Modes > Spiralize Outer Contour. No infill required.
Print #1 & Issues


I didn't measure the lamp dimensions precisely and didn't realize the scaling was also off in my first model.
The model printed great, it looks really fun, just the dimensions are off for the floor lamp. It's also relatively bouncy, which I liked, because it's basically hollow inside.
Version #2



After remeasuring the lamp, I changed the parameters in the grasshoppper script to create a larger but shorter version.
Since the distance from the light bulb to the edge of the existing lamp shade was only ~1 inch, if I were to keep the same number of growth steps, the model would be way too exaggerated and create too much overhang for the printer.
However, this version didn't cover the light bulb nearly enough. Too much empty space in the middle also made the structure way too bendy to hold its own shape.
Version #3




Learning from previous steps, I decided to slice the original model and print a segment from the top half of the original model. That area of the model is more visually interesting, and I thought the geometry might also help with maintaining rigidity. (Grasshopper component for slicing described in Step 2)
In Cura, apart from the spiralize mode, I scaled the model up and added a layer of brims (only on outside).
It took about 3 hours to finish. In the end, I hot glued it onto the existing lamp shade since I didn't design attachment points for it. (It should be easy to add a dome to the model and replace the IKEA lamp shade entirely.) Honestly, it's finally working the way I wanted and looks quite cool. :)