Look deep into nature, and then you will understand everything better.

- Albert Einstein

Generative design teaches students how to leverage the power of natural evolution and advanced computation to derive novel, high-performing solutions to complex design problems. The generative design method is based around a computational model that describes a large variety of possible solutions to a given design problem. Students will learn how to create such models using Grasshopper, a computational design tool embedded within the 3d modeling software Rhino. …

Note: this is the second part of a four-part tutorial on the parametric tower. You can find the first part here. If you want to pick up where the last exercise left off, you can download the model here.

In this exercise, we will continue to develop our tower model, this time focusing on creating a panelized facade system for the curving tower. In the digital world, there are few limitations on geometry, and modern CAD tools like Rhino and Grasshopper make it easy to model free-from curve geometries of high complexity. …

In Grasshopper, DataTrees are used to organize data in more complex structures than a single ordered List. An easy way to think of DataTrees is as a collection of Lists. If a List is a structure for organizing two or more items of data, a DataTree is a structure for organizing two or more Lists.

Each List in a DataTree is called a branch. Just as every item in a List has an index that specifies its position in the List, each branch in a DataTree has a path that specifies its location in the DataTree. …

At the heart of any Grasshopper definition is the data. Grasshopper components process and create data, while wires transport the data between different components. In the last exercise, you may have already noticed that some wires look different from each other. This is because the visualization of the wire changes based on the structure of the data flowing through it. There are three types of data that can flow through a wire in Grasshopper:

  • Item — one data element, for example one curve object
  • List — an ordered set of elements, for example 10 points
  • DataTree — a more complex…

In this tutorial, we will construct a tower model controlled by a set of parameters in Grasshopper. In this first of four exercises, we will focus on the basic form of the tower.

Step 1: Design concept and strategy

As with any design process, when approaching a new computational design problem it is useful to spend some time thinking through the problem you are trying to solve and formulating a concept and approach to guide your design process. Most Grasshopper tutorials only focus on the what of computational design, with step-by-step instructions describing the process of building a particular model. …

Most of Grasshopper’s interface is focused on the canvas, which is where you compose your definitions by laying out the components and connecting them with wires. Working in the canvas should be pretty intuitive for anyone used to working with digital design tools, but let’s spend some time looking at a few of it’s more advanced features which will speed up your workflow and allow you to get the most out of Grasshopper.

Context menus

Clicking on an empty part of the canvas will bring up a set of context menus that will help you select components and access common options faster.

All Grasshopper definitions are composed of only two kinds of elements: components which hold data and perform tasks, and wires that pass data between the components. Using these two elements, we can define complex systems as assemblies of smaller parts working together to achieve a common goal.


Components are the core of Grasshopper. They define all of the individual operations that Grasshopper can do. Components are the tools in your computational toolbox 🧰.

Just like a carpenter has to first learn how all the tools in their toolbox work before they know what is appropriate for each job, a large…

Let’s dive right in and build something cool in Grasshopper.

Learning new software can be a difficult and laborious process, especially with a more technical and analytical tool such as Grasshopper. The best way to stay motivated is to devote enough time during your training process to actually working with the tools and learning their capabilities first hand.

This course will alternate between two types of lessons:

  1. Lecture-style lessons that describe high-level concepts in Grasshopper and computational design
  2. Hands-on exercises that guide you through an actual project in Grasshopper and encourage you to take the work further through challenges


👋 Hi there and welcome! This course will teach the foundations of computational design through the design tool Grasshopper.

What is Grasshopper?

Grasshopper is a computational design tool that works with the CAD program Rhino. It allows you to create designs not by modeling the geometry directly, but by defining relationships between smaller processes that come together to create the final design. Using computational design in Grasshopper allows you to think of designs as systems rather than static objects.

Ok, then what is computational design, and how is it different from just using a computer for design?

Computers have been…

Danil Nagy

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store