Introduction: Grasshopper/Rhino - Stacking Bowls

Goal:

Create a set of small stacking or nesting objects functional or otherwise (cups, baskets, coasters, measuring spoons, Matryoshka dolls etc.)

Step 1: Basic Stacking Bowl

  • Use Rhino and/or Grasshopper to create an initial object (cup, doll, etc)


The bowls were created using the curve function and then revolving the resulting open curve. I tried this both in Rhino and in Grasshopper (using the RevSurf block) with the z-axis as that of rotation.

Step 2:

  • Use Grasshopper to duplicate and transform the object so that you have a set of at least 5 stacked or nested copies.


I used Grasshopper to duplicate and transform the bowls so that I had a set of 5 stacked copies using python code matching that found in the tutorial. The bowls are transformed along the z-axis to produce the stack.

Step 3:

  • Ensure that the copies will effectively stack or nest by baking the copies and performing a boolean union on the set. All the objects should remain separate after the union.


I ran into the challenge of overlap between adjacent cups. I therefore used two methods to correct this. Firstly I adjusted the original open curve used in step 1 to produce a shape more optimal for stacking. Secondly, I introduced this element of a stacking offset. By adjusting this offset I could increase the distance between adjacent cups to an optimum point where they stack nicely, at the correct depths.

Step 4:

The finished result stacked nicely, and I will 3D print 2 or 3 at a small scale once my 3D printer is up and running. I aimed to now either develop the complexity of the bowls, or the complexity of the transformation in order to get a nest of bowls incrementally decreasing in size.

Step 5: Progression & Inspiration

After completing a set of regular stacked bowls as described in the tutorial I wanted to develop a more complex set of 'stacked' bowls. Above you can see some of my inspiration. I wanted to develop the 'standing' bowls above that I liked into a set with a stacking element. I decided to use these cutouts often added to bowls to hold chopsticks. These will also be used to help stack the bowls on top of each other.

Step 6:

I created a simple bowl using the same method as above, rotating an open curve around the z-axis. I then added 4 cutouts at the rim of the bowl at 90-degree increments. As a separate object, I created a set of legs. I initially tried to do this in grasshopper, however, the code and flow got very complicated very quickly, so instead, I created this manually in rhino. I created an 'X' shape on the top view, with the same length as the diameter of the bowl. I then extruded this to a height great than that of the bowl. I then 'cut out' the shape of the bowl into this extruded cross, leaving a bowl shape hole for the bowl to be placed into.

Step 7:

By duplicating the bowl and legs together, rotating them 45 degrees around the z-axis, and transforming them vertically along the z-axis, this gave a neatly fitting stacked set of bowls.

Step 8: Challenges

I then tried to bake and use a boolean union function on the 2 separate objects to combine them for printing. When trying to combine the 'legs' with the bowl into a single object, the BolleanUnion function failed both with grasshopper code, and manually in rhino. There were errors at the interface connection point preventing the operation. In order to fix this, I re-made the legs using rhino, and ensure that there was an overlap at all connection points, rather than two flush surfaces.

Step 9: Printing

  • Ensure the design is 3D printable by checking its edges and slicing it in the Cura 3D software.


Cura did suggest there was some error with the object's ability to print. I will test this now printer is up and running.