Parametric cabinet



Author:

Categories: Tutorials

Tagged with:


Creators: Rudolf Hable, Adam Fiebinger

The main idea behind this project was to create a fully automated script in Grasshopper that generates a cabinet and seamlessly integrates the entire process—from design to production. The goal is to streamline furniture manufacturing by making it easy to customize, optimize, and prepare for CNC machining with minimal manual intervention.

With ShapeDiver, customers can interactively design their own cabinet, adjusting dimensions, shelf positions, and other features in real time. This ensures that each cabinet is tailored to specific needs before production even begins.

Grasshopper then automatically places holes for dowels and shelf supports, ensuring that all necessary connection points are correctly positioned for CNC machining. This step significantly reduces errors and speeds up the manufacturing process.

To further enhance the script, the next logical improvement would be to unfold the cabinet components into a single plane and generate a nesting plan using the OpenNest plugin. This would optimize material usage, minimize waste, and make the entire workflow even more efficient.

By combining parametric design, automation, and online configurability, this system bridges the gap between digital design and real-world manufacturing, making custom furniture production faster, smarter, and more accessible.

PART 01Creating a Cabinet in Grasshopper

Step 1 – Input paramteres

The input parameters are divided into three categories: Cabinet Dimensions, Color, and Technical details.

Step 2 – Box

The main structure of the cabinet is a box, which is then decomposed into individual surfaces to create the final cabinet parts.

Step 3 – Panels

After unfolding the box into individual panels, we create parts that are extruded using the thickness. The panels include the sides, top, bottom, and back.

Step 4 – Shelves

I distributed the shelves using the Range component. The shelves are automatically spaced, but they can be adjusted using the minimum gap between them.

Step 5 – Dowels

I also created the dowels using the Range component. Their diameter, edge offset, and spacing can be adjusted—otherwise, they are automatically distributed.

Step 6 – Shelf supports

The shelf supports are distributed using the Series component. Their spacing can be adjusted. The edge offset of the supports is fixed according to the standard and can only be modified directly in the script.

Step 7 – Color

The color can be selected from a predefined set of options. The selection can be limited based on available materials and manufacturing possibilities.

Step 8 – Control wire display

The Wire Display feature allows users to control the visibility of connections between components. You can set wires to Default, Faint, or Hidden. Thanks to the developers of MetaHopper for making complex definitions easier to manage!

Result

Left-side panel with geometry for CNC

PART 02ShapeDiver

Step 1

The first step was to prepare the file for export in Grasshopper (here’s a video showing the process: https://www.youtube.com/watch?v=p4XLitFUMwU&t=1s). Next, I turned off the groups I didn’t want to be visible. These groups are named according to the ones set in Grasshopper, so be careful, as they cannot be changed later in ShapeDiver.

Step 2

Then I adjusted the scene, including the lighting, shadows, floor, surroundings, and view.

Step 3

Next, I took photos of the color variations, which are then displayed on the website.

Step 4

And finally, I added some extra text to clarify the design in more detail, and this is the final appearance.

Result

ShapeDiver model: https://www.shapediver.com/app/m/custom-cabinet.

(Part 03) – How to Improve and Advance the Script

The cabinet is fully prepared with all parts and geometries for CNC machining. Thanks to ShapeDiver, customers can customize their own cabinet design online, adjusting dimensions and configurations to fit their needs before production.

The next step should be to unfold the cabinet into individual parts and lay them out in a single plane. Using the OpenNest plugin, a nesting plan can be generated to optimize material usage. This will make the cabinet output fully automated and ready for immediate production.