Parametric Design is a design process that utilises programming and geometric data inputs and operations to determine design outputs. It is increasingly becoming more relevant and many architectural designers are beginning to see the benefits of using the tools and processes associated.

In this post, you will learn what parametric design is and how you can get started. I will also go through fundamental programming and geometric concepts and operations in order for you to achieve your goals in parametric design. Enjoy!

### Post contents:

Introduction to Parametric Design

Programming Basics

Geometric Basics

Geometric Operations

There is also an accompanying 4 part video series, check it out here.

## What is Parametric Design?

To understand parametric design, you need to know the following: data and parameters, programming concepts & syntax like data structures, functions, conditionals and loops as well the software and tools you can use to start.

The best way to understand programming is to visualise what you would do to bake a cake. We have inputs, ingredients that you need to process step-by-step. After certain conditions are met, be it after an x amount of time or reaching a certain temperature, you get a cake, your output.

## Programming Concepts

Data that form inputs and outputs can be classified into categories, starting with the traditional integer, double, boolean and string type.

These data can form part of data structure that can extrapolate to other functionality, such as lists, tuples, dictionaries and trees as well as classes.

Lastly, functions are methods that act on the input data to create output data through certain criteriae and conditionals - more than that later.

For architecture designers like you and I, we only need to be familar with new geometric data types and methods such as points, vectors, line, polyline, circle, plane, surface, sphere, boxes and more.

## Data Structures & Syntax

Here are a few basic syntax (programming language) conventions for the various data types along with analogies that I hope aids in your understanding in parametric design.

**Variables & Constants**

- Data structure that consists of an assigned values (variables can be overriden, while constant remain).
- Example is the age of a person.
- Defining the parameter

Age = 10;

Retreiving the data

print Age

**Lists**

- Data structure consisting of items stored in a ordered manner.
- Example is a collection of groceries in a basket.
- Defining the list

groceryList =

[‘Apple’, ‘Pear’, ‘Banana’];

Retreiving the first item in the list

print groceryList[0]

**Dictionaries**

- Data structure consisting of key-value pairs.
- Example is a unique key and lock.
- Defining the dictionary

testDictionary =

{‘Nicholas’ : 20, ‘Glann’ : 53}

Retreiving the value of a specific key

print testDictionary.get(‘Nicholas’)

## List Syntax & Operations

The diagram below shows the various operations and syntax for lists, including defining the list, list indexes and methods.

We will be using these often so it is good to take note of these.

****Designers typically deal with geometric data types as items in lists and perform list & geometric methods to get their desired output.

Parametric design helps if there in complexity in the input/output data/geometry (ie. many inputs)

## Functions

You will often times find yourself using functions to perform calculations, output geometry, create iterations based on certain conditions:

**Perform Calculations**

- “Output pointC which is equal to the addtion of the x,y,z coordinates of input points pointA & pointB”

#### Geometric Methods

- “Output a new curve that is offset 50 units in the z-direction from my input curve”
- “Output a list of points from my input curve that splits it into 4 equal segments”

#### Iterative Functions

- “For each point in my input list of points, create a circle of radius of distance equal to the distance of it from the origin.”

#### Conditionals

- “If each point in my input list of points is more than 500 units away from my origin, create a line from that point to the origin”

## Geometric & Programming Basics

This is the list of geometry we can use for parametric design. We start with the point which is a position in 3d space, marked with coordinates. Next, we have geometry made up of points, such as lines, polylines, surfaces and polysurfaces.

The key to understand how you can start to use parametric design in your design project is to create meaning in your geometry as well as figuring out how you can 'data-rise' desired input and output.

For example, points can refer to positions of people or values on a graph. Lines can symbolise distance and connection. Surfaces made up of lines can depict plans or sections of spaces and the lines that make up the surface may vary to form different kinds of spaces.

The fun part comes when these forms change due to the changes in the positions of points or length of lines that form the output geometry. Ask yourself what are the parameters that you can change.

### Types of Geometry in Parametric Design

- Point -(x,y,z) coordinate in 3D space
- Vector - (x,y,z) change for direction & magnitude
- Line - formed by 2 point inputs
- Plane - formed by 1 point origin and normal vector (perpendicular to plane) input
- Surface - formed by 3 or more point inputs
- Box - formed by 1 point origin and x,y,z size inputs
- Polyline/Spline - formed by a list of points inputs
- Circle - formed by 1 point center and radius/diameter input
- Cylinder - formed by 1 point origin and radius and height inputs.

Notice how you see all of these as AutoCAD/Rhino commands? When you see the software asking for certain values as you create the geometry in the workspace, they are asking for inputs and generating geometry as outputs based on these 'constructor' methods.

## Geometric Operations

Here's an overview of geometric operations you can perform to achieve your desired inputs and outputs for your parametric design model .

These operations can be classified under three main categories: create, transform and analyse.

#### Create

'Create' takes in basic geometry input like points & lines that composes an output geometry.

#### Transform

'Transform' takes in geometry and output that same geometry after undergoing modification operations like resizing, rotating or mirroring.

#### Analyse

'Analyse' takes in one or more geometry input to check for a specified condition and output another geometric object or numeric/boolean result.

Parametric design models typically use all of the three types of operations. I hope that by combining your knowledge about input/outputs, functions, list methods, data structures, geometric data types and geometric operations in this post, you're able to start designing your own.

## View the 4-part Parametric Design Video Series

That's it, I hope this introduction of parametric design gets you curious of the possibilites.

I know that this post is text-heavy so I made a 4 part series to take your learning visual.

I also included walkthroughs to the Rhino and Grasshopper interface - a parametric design tool used by professionals.

You can find the video below and on my Youtube Channel.

Happy learning!

## Share your Thoughts