- Thys Kotze

# Parametric design for D.... mmm, designers

Updated: Aug 5, 2019

**When I tell people I’m a computational designer, the first question they ask is what is that?**

**Then I explain to them it’s when you design with parameters and algorithms, and they**

**respond with a skeptical ** ** “Okay” **

So, What is parametric or computation design?

****

*"Parametric design is a process based on **algorithmic** thinking that enables the expression of **parameters** and rules that, together, define, encode and clarify the relationship between design intent and design response"(Woodbury, 2010)*

Okay so now we have an idea of what **paramedic design** and **algorithmic thinking** involves but let's find a simple visual example.

Graphisoft, The creators of Archicad, made a video stating **"algorithmic design is like cooking" **You start with a recipe that lists all the ingredients and there amounts and every time you change an amount or ingredient you change the outcome __Algorithmic Design Meets BIM‘ (Graphisoft, 2016)__

____

Being a designer and knowing how a designers mind works, I understand that the best solution to this problem would be a hands-on solution.

One where you can get all touchy-feely with the process, a scenario where you can interact with a parametric model without having to get an expert involved every time. The solution I found is brilliant and exactly what I needed to be able to do this.

I came across is a company called __Shapediver____;__ They provide a service that enables parametric designers to communicate with their clients effortlessly and legibly.

They do this by allowing the user to upload script to their website and then have the ability to change the parameters in a web browser and experience the changes live.

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 comes from and be able to make changes and adjustments yourself.

Parametric design best practice:

Have a reasonably clear goal of what you intend to achieve.

### Step 1: Approach and design analysis.

You need a point of departure, so when looking at the image above ignore the design fluff. Just look at the overall shape of the bench.

**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)

All we need to do this is a **profile** and a **rail** or a sweeping curve and 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

Firstly, 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; 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*

Parametric design best practice:

We make use of a set amount because as a designer you need to know the limitations of the material you use. By limiting the choices here we can make sure we don’t run into problems when it comes to manufacturing or computation time on the model.

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

Sweeping
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.

Ribs

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.

Parametric design best practice:

Although the possibilities are almost infinite, that does not mean you have to explore every single one.

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. From here you can take the model to the next step by either rendering it or having a prototype made.

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 see what you can come up with, If you would like more information on ** Shapediver** I suggest you head over to there website and have a look at what they offer, you can signup for a free account to get started.

Interested in having your models scripted and build in grasshopper to be used with Shapediver, let us know.

Here is a link to the grasshopper file if you would like to __download__ it and have a look at how it works