# 4 Strategies to Better Grasshopper Data Management

I have been using Grasshopper daily at work for nearly four years now. Explaining the benefits of the program to others has posed a significant challenge, given its intersection with programming, Computer-Aided Design (CAD), and data manipulation - the pillars of computational design.

After years of struggling to articulate my work and the concept of computational design, I believe I've finally found an effective approach. Computational Design is more than just automation or programming - it's an entirely new design methodology known as Associative Design.

I'll delve into what Associative Design is and compare it with the "traditional" Additive Design methodology.

# Additive Design

Additive design is where a user builds complexity into a model, typically done by adding operations to the model. This is typically known as drafting or modelling.

The steps to create the model serve merely as a means to an end; the final model is what truly matters. As such, there are countless ways to create the same model.

This approach is straightforward and easily understood, as it resembles real-life assembly. For instance, if you purchase a new table, you simply follow the instructions to build it.

In this methodology, the user is accountable for the steps taken to build the model, establishing a rigid relationship between the user and the model. The user also has to manage and perhaps memorize the steps taken to create the model.

This is generally a sound approach. However, problems arise when changes must be made to the model. Given that all steps in the creation process are discarded, if a complex change is required, you might have to re-create the entire model from scratch.

The flaws of this methodology become apparent when you start modelling in teams where consistency between modelling steps and methods is hard to standardise. To make a change to the model without knowing the steps it took to create the model is difficult and time-consuming.

Not to mention because everyone’s modelling steps are different, you might end up with a final model of varying quality as different parts of the model were created by different people. Companies have tried to combat this by introducing modelling standards and quality checks to maintain a baseline level of quality but it’s still hard to control and manage the overall quality of the model.

**Associative Design**

Contrast this with the associative design methodology, where the user prescribes the steps to create the model rather than creating the model directly.

This is a small but important shift in mindset. Prescribing the steps instead of creating the model means that the modelling process becomes somewhat self-documenting.

The prescription of steps also leads to the possibility of standardizing the modelling process, as the responsibility for the modelling steps is passed to the program instead of the user. This results in a flexible relationship between the steps and the resulting model itself. We tend to see these steps prescribed in a nodal fashion with the current tools that we have (e.g. Grasshopper or Dynamo)

Tools like Grasshopper or Dynamo allow users to visually inspect in great detail the steps taken to build the model. They can then adjust these steps as new changes are introduced without having to redo the entire modelling process. The purpose of showing the steps isn't necessarily to find the optimal ones (though that should always be a consideration), but to document the steps taken to build the model. Consequently, the process is now self-documenting and anyone who reviews the script can obtain the context of the model.

The Associative design methodology also introduces three significant improvements to the world of modelling: parametric modelling, improved model robustness, and quicker modifications.

**Parametric Modelling**

Because we are now working with steps rather than the model itself, we can set parameters at the beginning of the process and adjust them to create variations of the same model. This opens up the avenue of quicker option-eering and using optimisation algorithms to find the most optimal design.

**Model Robustness**

By prescribing steps rather than adding operations to the model, these steps must follow a logical sequence based on mathematical principles. This shift in approach moves the modeller's skillset away from instinctive decision-making, focusing instead on working with mathematical operations. This adjustment enhances the robustness of the model as the models are now built using a logical sequence of mathematical operations instead of instinct.

**Faster Turnaround Time**

Building on the last two points, it’s easier and quicker to modify the steps rather than having to redo the additive process Parametric modelling is a prime example of being able to adjust the parameters and producing a model quickly.

**The Downsides to Associative Design**

While it may seem like associative design addresses many of the shortcomings inherent in additive design – and indeed, in many ways, it does – it isn't a catch-all solution. Creating a model using associative design principles generally requires more time than employing a "traditional" additive approach. This is due in part to the steep learning curve and the necessary shift in mindset when implementing associative design practices.

In addition, prescribing steps for intricate, detailed models can prove excessively complex, as these models may require a multitude of steps. In such cases, handling details manually often proves more efficient. This is especially true for models that have too many details and have no logical sequence to them (I see this a lot in older and older “artistic“ models )

Therefore, despite the numerous benefits of associative design, it shouldn't be viewed as a direct replacement or a superior alternative to additive design. Instead, it's best considered as another valuable tool in the modeller's arsenal.

**Final Thoughts**

In the realm of computational design, there's no one-size-fits-all approach. The effectiveness of methodologies is often dependent on the specific task at hand. The traditional additive design, for instance, is the go-to for simplicity and directness, and it mirrors the intuitive process of construction we see in the physical world. It is often the go-to method for anything requiring intricate detail and changes.

On the other hand, the associative design and its computational concepts offer a different kind of value. They bring the power of standardization, flexibility, parametric modelling, robustness, and efficient modifications to the table.

In my 4 years of using Grasshopper, I've learned that not every project should or must adhere to the principles of associative design. A hybrid approach, where manual (additive) and computational (associative) techniques both play a role is often the most effective process. This typically means using computational methods to complete 60-80% of the model and manual changes to complete the remaining 40-20%.

The goal here isn’t to find the “best” methodology but to minimize the amount of manual, repetitive work required and to identify those portions of your model that might benefit from computational design.

In my experience, you should consider adopting an associative design approach if you:

- Find a lot of repetition in your model (both simple or complex repetitions are suitable, provided they follow a discernable pattern),
- Anticipate numerous changes to the model over time, or
- Wish to process data on your models.

Embracing both the traditional and the new, learning to balance the manual with the computational, can lead us to ever more innovative and efficient solutions. In the end, the key is to remain flexible and open-minded in the evolving world of computational design. I hope this article has given you a deeper understanding of Computational Design and its applications.

Thanks for reading,

Braden