These days, nearly every architect uses a computer. Whether it’s for 3D modeling, or documentation or even creating a program spreadsheet, computers are well entrenched within the profession. Architects now need to know almost as much about software as they do about structures, building codes, and design.
As our tools become more powerful and sophisticated, we need to evolve and develop our working methods in order to stay competitive. I’ve written previously about how architects should learn to code. A lot of the problems we need to solve don’t fall within the capabilities of off-the-shelf software. We need to tweak and customize our tools to work the way we work. Creating our own tools and software is one way to do this.
That said, the reality is that not everyone has the time or the inclination to learn how to code. It’s time-consuming and you’ve got projects to run, show drawings to review, and buildings to design. Fortunately there are new tools available that deliver the power of programming without the need for all that typing.
Enter computational design and visual programming.
What is Computational Design?
Computational design is the application of computational strategies to the design process. While designers traditionally rely on intuition and experience to solve design problems, computational design aims to enhance that process by encoding design decisions using a computer language. The goal isn’t to document the final result necessarily, but rather the steps required to create that result.
Most computational design environments rely on visual programming as opposed to traditional text-based programming. With visual programming, you assemble programs graphically rather than writing code. Outputs from one node are connected to inputs on another. A program or “graph” flows from node to node along a network of connectors. The result is a graphic representation of the steps required to achieve the end design.
Computational Design Tools
There are a number of computational design tools on the market. Most of these tools work on top of other software platforms, such as Microstation, Rhino or Revit. Here’s a breakdown of the five most popular computational design tools.
Generative Components is the grand-daddy of computational design tools. It was first introduced in 2003 and commercially released in 2007. Generative Components works with Microstation software though a stand-alone version is available.
While Generative Components is the oldest, Grasshopper is arguably the most popular computational design tool. Grasshopper is an algorithmic modeling tool for Rhino, the 3D modeling software by Robert McNeel and Associates. Grasshopper has been around for over eight years and has a rabid following. It’s a very mature product with an extensive library of nodes.
Dynamo is Autodesk’s visual programming tool. It’s available in a free version that links directly to Revit as well as a paid, stand-alone version. Dynamo is growing in popularity and has an active community developing nodes to support a range of uses.
Marionette is a new product from Vectorworks. It’s built directly into Vectorworks 2016. Marionette is cross-platform so it works on both Mac and Windows.
Flux is a spin-off from Google[x], Google’s research lab. Flux is unique in that it works across platforms using a web-based interface. Using Flux, you can share data between applications. For example, a conceptual model created in Rhino can be imported into Revit, walls and doors can be added then the area exported to Excel, all using Flux plugins and its web interface.
How computational design will change the way you work
Computational design is a broad term that encompasses many activities, ranging from design generation to task automation. The common thread is the use of a visual programming tool. Here are five ways you can benefit from computational design.
1. Explore multiple design options
By encoding design rules in a computational framework, it’s very easy to generate hundreds, if not thousands of options using those rules. What’s more, each option can be evaluated using specific criteria to determine the best solution.
We’re not just talking about creating twisting towers or crazy geometry either. You could easily create a tool that generates restroom designs based on a series of four walls. Let’s be honest, most restrooms are pretty similar. If you encode your firm’s standard design into a visual program, you can easily generate a number of options, all of which meet your firm’s specified criteria. You can then spend your design time on the parts of the building that are more interesting.
2. Get under the hood and access your data
As much as the software companies would like us to do all of our work in their software, it’s still necessary (and often preferred) to use whatever tool is best for the job. Unfortunately this means transferring data from one format to another. And since all software doesn’t play well together, this often involves exporting data to Excel.
Computational design tools make this process much easier. For example, using Dynamo it’s possible to create a two-way link with your Revit model to specify export all your Revit room data to Excel. Once this data is in Excel, you can modify it then import it back in the model or use it to create a project dashboard. All of this can be accomplished from a fairly simple Dynamo graph.
3. Automate repetitive tasks
A lot of what you see from computational design involves complex geometry and advanced design. However, these tools can do a lot more than that. Since they work with the software’s API or application programming interface, most computational design tools can be used to automate tedious tasks, like renaming or copying elements or views.
In fact, a lot of the tools I’ve created for the ArchSmarter Toolbox could be replicated in Dynamo. Dynamo provides an easier way to access the Revit API. To me, this is one of the greatest promises of computational design. Having the ability to create your own tools that work the way you work is the best way to work smarter, not harder.
4. Test what your design is REALLY doing
How do you know your design is going to perform like you think it will? You can either wait until the building is built or you can test it during the design stage, when it’s a lot easier (and cheaper) to make changes. Computational design tools make it easier to simulate building performance through the design process. Want to know how much daylight you can expect on a partially cloudy day in March? Create a tool that measures this.
While simulation data is no substitute for actual, real-life data, it does provide a means to evaluate designs based on similar criteria. Quickly determining which design performs measurably better than the others gives you more time to perform detailed simulations on that optimized design. Computational design tools give you a way to make this determination as the design progress, not just at the end of the process.
5. Think algorithmically
Lastly, computational design requires you to think logically and in a step-by-step manner. Most architects rely on intuition and creativity to solve problems. This kind of thinking doesn’t always fit into a left-brained logical process. But what if you could encode this intuition? You could look at each step and really understand what makes it work. Even better, you could reuse that design logic and improve it over time.
By using a computational design process, you are encoding the design. Each step in the design becomes a series of instructions that can be evaluated, revised, and improved. Likewise, each step requires specific parameters. By thinking through through all the steps of the design problem and considers all the inputs and outputs, you effectively create a process that can be understood and repeated.
Computational design tools provide an easy way to harness the power of computation in a design process without having to learn how to write code. These tools let architects and designers create their own tools. Let’s face it, each project we work on is unique with its own challenges. There’s no one piece of software that can do everything we need it to. However, by creating our own tools, we can tailor our software to work for us.