[Computational Fabrication] Nested Objects

Introduction: [Computational Fabrication] Nested Objects

Create a set of small stacking or nesting objects functional or otherwise.


This is the second project I completed for a course I’m taking this quarter (Spring 2020) on computational fabrication taught by Prof. Jennifer Jacobs at the Media, Arts & Technology program at the University of California Santa Barbara. The idea behind the course is that digital fabrication can be combined with computational design to create complex and functional physical forms. This work owes a lot to tutorials provided by Jennifer (@pixelmaid). By the end of this walkthrough, you’ll see my process for designing and printing nested and stacked objects.

Tools I used for this work include

  • Rhinoceros (Rhino), a commercial NURBS-based computer-aided design (CAD) tool
  • Grasshopper, a visual programming language based on a data flow paradigm that lets you parametrize the geometry you create in Rhino
  • Ultimaker CURA, an open source 3D printer slicing application
  • Creality Ender 3D Pro, a commercially available 3D printer supplied by UCSB

Step 1: STEP ONE

Use Rhino / Grasshopper to create an initial object.

  1. I first ran through my pipeline using a simple cube object.
  2. Next I tried truncated cones to make sure nesting / stacking would still work out.
  3. After seeing the cubes, I was very tempted to make blocks with the letters of my name on them so that’s what I did. I’m very excited about printing these out.
  4. Woah. I was using a sphere as a placeholder and got this cool bubble sculpture so I decided to modify my code to nest “bubbles” so I could boolean intersect consecutive pairs and still have a smaller sphere that would fall inside it… curious to see how this turns out.
  5. I started trying to get more “organic” forms. I created some complex, stackable forms that would 3d print but was not satisfied with the results.
  6. Next I came up with sliced truncated cone and parabolic cub shapes. I liked the stacking effect -- it reminded me a bit of the Sydney Opera House.


  1. This is so much easier to get right if the geometry is centered at the origin.
  2. Who doesn’t like small narcissistic things?
  3. The stacked spheres didn’t pan out… I wasn’t that invested so moved on to more interesting ideas.

Step 2: STEP TWO

Use Grasshopper to duplicate and transform the object so you have at least 5 stacked or nested copies.


  1. First, I wrote a function init_transform(Curve i) that takes a curve and returns a transformation that rotates the geometry, scales it according to the length of the curve and translates it to the endpoint of the curve to make visualization easier.
  2. Next I wrote two helper functions. I’m not a fan of the methods of the Transform class or, in any case, I found it easier for this project to write my own versions to do basic scaling and translation transformations.
  3. I spent way too long figuring out how to do nesting / stacking with proper scaling. I’m satisfied with my current result.
  4. I went back later and decided to add a rotation in the Z axis since I’ve an idea to do nested geometric plant-like forms with different rotations (note: I've attached my script).


  1. It took me quite a while to get the stacking offsets to pan out well.


Ensure that the copies will effectively stack or nest by baking the copies and performing a boolean union.


  1. I think this was much easier for me since I made the offset a parameter.
  2. A picture of the blocks shows that they are still separated after a Boolean Union operation (although I guess you’ll have to take my word for it).


  1. The blocks actually look pretty neat since the O is on top there’s a nice repetition.
  2. It would be great if there was a more efficient way to do this.


Ensure the design is 3D printable by checking edges and slicing in Cura.


  1. This was my first time using support structures. Using a raft helped the prints not stick to the mat.
  2. I manually leveled the bed after each print -- I think this helped a lot with alignment although it took a while to line things up the first time around.


  1. Again everything was very, very small. Maybe 3rd time’s the charm and I’ll get the scale right the first time around with the next project.
  2. The first time around it would have taken 5 minutes to print and 9 minutes with a raft! The larger design is still small and should take ~40 min. to print. They will still be miniscule.
  3. The stacking cups would have taken 8.5 hours for the first design and around 3 hours for the second.


3D print 3 of the designs on printer and test fit.


  1. The blocks were small as expected but still so fun! The filament really affects the outcome… It’s too subtle a color to read the letters well.
  2. I thought I would rest the design was printing -- terrible idea! The filament got twisted and I ended up with a mess (but it was also kind of interesting).


  1. I think it would be fun to try using multiple filaments to print next time.
  2. Definitely will plan to be present during all future printings.

Be the First to Share


    • Cold Challenge

      Cold Challenge
    • Block Code Contest

      Block Code Contest
    • Baking Contest

      Baking Contest



    2 years ago

    1. I really like your first design, looks very satisfying. I also noticed the code does not pan the objects well to stack them together. What I did is to manually move and stack the object for overlay checking hah.
    2. I think your bed level maybe too low from the image you showed. I spent a lot of time to get the leveling right. The youtube video in slack might be very helpful.