Skip to content

Parametric Shelving

Project Description

This is a personal project I did for the addition I built on my house in Boise in 2025. The addition has an in-law apartment and I conceived of this shelf as a space divider between living room and bedroom. The shelf attaches to one wall and a central column for stability.

The shelving is made from 3/4" Baltic Birch plywood (see my blog post about feeds and speeds when working with high end veneer plywood). I designed a slot and tab system that was automatically calculated from the parametric model. I cut the shelf parts with my CNC machine and assembled them on-site.

shelf-2
shelf-1

Approach

I designed the project in "flat pack" style with tabs and slots intended to assemble easily on site. The design features a place for a flatscreen TV and console below it. I used a variety of shelf heights to accommodate many sizes of media from large and small books to DVDs and decorative items.

shelf1
shelf-build

Parametric Design

I created the design for the shelving system in Grasshopper using several inputs:

  • The number and distance of shelves (height from each other)
  • The location of vertical components (side to side position)
  • The size and offset from the edges for connecting tabs.

 

Finally, I used 3D curves in the Rhino modeling space to describe the front and back profiles of the shelves. The video below shows how the inputs are used to tweak the design.

The shelf heights are controlled by a list of dimensions (ie: 18" for the bottom shelves). The horizontal shelf spacing is controlled by sliders.

I used control curves to modify the face profiles on the shelves. Three curves formed a loft surface (hidden), which trimmed the shelf faces. When I dragged the points of these curves back and forth to change their shape, the profiles of the shelf fronts would follow along. I set up the definitions of the vertical supports and connection tabs automatically adjusted themselves to fit based on an offset distance from the shelf edge.

I experimented with several iterations of profile design, starting with 3 degree control curves (bezier) and finally settling on 1 degree curves (straight sections).

 

curvy-2
curvy-1

Construction

I used Grasshopper to generate 2D profile curves from the 3D design, with locations for all the slot and tab cut outs and a numbering system.

The resulting shapes were laid out on 4'x8' sheets of Baltic Birch plywood and cut on my CNC. Then I sanded them with increasing grits of sandpaper up to 220. I treated the shelves and upright pieces with polyurethane sealer and they were ready to install.

pieces
pieces-2
shelf-CNC-1
Shelf-CNC2
sanding
shelf-staining

For installation I slotted them together in-place around the central column of the space. I used a dab of wood glue at each connection to prevent creaking but the design was intended to be attached without mechanical fasteners. The friction fit was good and the geometry of the uprights prevented the shelving from tipping over front-to-back. The slot around the column prevented the shelving from "racking" or tipping over to the side.