Blog > How to...

How To… Create A Parametric Bench in Grasshopper!

ShapeDiverby ShapeDiver

Blog > How to...

How To… Create A Parametric Bench in Grasshopper!

ShapeDiverby ShapeDiver

<< You’ve asked, we’ve answered. We are starting a new blog series where we’ll explore the hows and whys of product configurators made with Grasshopper and ShapeDiver!>>

For this first entry we’ll let Thys Kotzé from Pekka do the explaining. He’s a South African designer helping companies and individuals to design and build the future in efficiently and revolutionary ways. Let’s get started!

Full version of this post can be found here.

Thys Kotzé: Let’s do a quick walk-through on a simple parametric bench design and then look at the script on the Shapediver website. As a result you will understand where the driving parameters come from and you will be able to make changes and adjustments yourself.

Step 1: Approach And Design Analysis

You need a point of departure, so when looking at the image above ignore the design fluff and just look at the overall shape. If you had to do this in CAD, how would you go about it?

It is a very important question to ask yourself and solving this now will create a solid foundation to build on. The basic shape is a simple one rail sweep (Complex profile in Archicad, Spline sweep in Revit, Follow-me in Sketchup)

We only need a profile and a rail or a sweeping curve. For simplicity’s sake, we will assume the rail is already provided and only focus on the profile and how to build it.

Step 2: Profile

First, we create a rectangle that will determine the overall width and height of the bench.

  • Width = var param 300 min to 1000 max
  • Height = var param 330 min to 550 max

Secondly, we need to create some geometry that will help us to generate a random profile. To keep it simple, let’s generate several points on the rectangle curve.

  • Points on Crv = var par 3 min to 8 max
These points are completely random.

Thirdly, the points will be used to create a Convex Hull curve. It creates the smallest boundary possible that includes all the points along the shortest path.

Lastly, the corners on the curve need softening; this can be done with a simple fillet component.

  • Corner Fillet = list param 50, 80, 100, 150, 200 mm.

Step 3: Profile Refinement And Looking Ahead

With all design, you need the keep the end goal in sight and with a parametric design model, you need to do even more so. You have to constantly evaluate the results you generated from the last step and also consider what result you need next and anticipate the ones after that.

Let’s say your client asks for a bench like the one in the image above. You build the script and at the end of the day, the client says they want the option to have a bench that has solid ribs or a solid bench with no ribs. If you anticipate this, you will save yourself unnecessary abortive work later on. Possible variations would be:

  • A bench with ribs
  • A bench with hollow ribs
  • A bench that is one solid block
  • A bench that is solid with a cutout along the length.

We also would like to be able to adjust the width and thickness of each rib as well as the spacing between them. In total, seven parameters in the model.

First things first: the hollow profile.

Doing this first will allow us to use the results as building blocks for the rest of the model. The easiest way to create a hollow profile would be to offset the profile curve towards the inside with a set amount.

  • Offset size = list param 20, 50, 80, 100, 120, 150 mm

Now on to the ribs; they will be placed along the rail at predetermined increments. Grasshopper has a ‘Divide Curve’ component that will serve us well.

  • Rib spacing = list param 80, 100, 150 mm

Step 4: Extruding What We Have

Up to now, we have been working mostly in two-dimensional geometry. Its time to generate some three-dimensional geometry, starting with the less complicated steps first.


This is as simple as connecting the profile and rail to a ‘One Rail Sweep’ component, for both the solid and hollow profile the operation is the same.


With the ribs, it gets a bit more complicated, but it is not difficult.​

First, we will extrude both profiles to the preferred thickness.  

  • Rib thickness = var param 20 min to 50 max

Next, the ribs will be placed on the points determined in step 3, The process is the same for both extruded profiles and to achieve this we will make use of the reorient component in Grasshopper. This component takes geometry and copies it to a point or plane in space.

We have now ticked all seven parametric boxes, and the result is a simple adjustable parametric bench.This algorithm can generate a huge amount of variations and iterations with very little input.

Snapshot of this bench’s Grasshopper definition.

Download this definition here. If you have any doubts about this please head to ShapeDiver’s Forum. Finally, don’t forget to install the latest version of their plugin directly from their Food4Rhino page.

Step 5: Upload to ShapeDiver And Share!

As the last step in this walk-through, I would like to invite you to explore the model embedded below. I uploaded the script for the bench to the ShapeDiver website and inserted it here for your convenience.​ Feel free to adjust the sliders and see what you can come up with.

If you would like more information on ShapeDiver, I suggest you head over to their website and have a look at what they offer. You can even signup for a free account to get started.

<< Are you interested in having your models scripted and built in Grasshopper to be used with ShapeDiver? Let Thys know: or follow him on his Instagram account. >>