• CodedShapes
  • Posts
  • The Grasshopper Interoperability Toolbox

The Grasshopper Interoperability Toolbox

Grasshopper is widely recognised as the tool architects use to create complex geometry. But this association with complex geometry often intimidates people. There is a belief that Grasshopper is only for the advanced and complex. They may say, "It's not for me" or "I only have simple problems." The peddling of only complex tasks with Grasshopper dissuades more people from using it in their daily lives.

Unfortunately, complex geometry is what gets peddled by social media and it only serves to scare more users away. And because of that, it might feel “wrong” to use Grasshopper for simple problems. In reality, Grasshopper can and should be used to solve any pain points you have, no matter how simple or complex.

One of the most “simple” but effective features of Grasshopper is it’s ability to interact with various programs. Because of it’s visual programming nature, it let’s you transfer your data between programs with minimal manual effort. In fact, there is a vast open-source community of Grasshopper plugins for this very purpose. This is likely a plugin that connects Grasshopper with a program that you work with.

So, in this post, I am going to show you a list of commonly used interoperability Grasshopper plugins. Interoperability is a simple way of leveraging Grasshopper in your day-to-day. I hope that the series of examples inspires you to use Grasshopper more.

The Speckle Platform

One of the most popular interoperability plugins out there is Speckle. More than just a Grasshopper plugin, they are trying to be a platform for all 3D data. Being open-sourced and cloud-based, you can upload your model’s data and they handle the translation of that data to other programs.

Speckle connects other programs to their platform through “adapters”. This includes Grasshopper, which provide a set of components that let you upload your geometry and other metadata to their platform.

Image from Speckle Docs

Then when it’s time to download that data from another program, you just have to download that data from their platform.

Image from Speckle Docs

As you get started, Speckle let’s you “upload and forget” your data. Meaning you don’t have to write any custom code or Grasshopper script to get your data into their platform. You just need to use their “adapters” and the Speckle will handle the translation. If you wanted more control, you can modify their adapters and even the platform itself. Being open-sourced, most of their code is available to view.

From using Speckle, it’s very stable and it brings across most if not all the data when using it’s “adapters” without any modifications. It also has “adapters” to many programs and is very versatile. The one caveat is that you are entrusting your data to a third-party server. You can always host your own Speckle server but that comes with some cost and the extra effort of maintenance.

The Buildings and Habitats Object Model (BHoM)

BHoM is another impressive solution, particularly for those in the AEC (Architectural, Engineering, and Construction) industry. They have a focus on transferring data between structural programs and have support for many analysis programs like Midas or Robot.

BHoM is also open-sourced but follows a different approach to Speckle. They want to only be the data interpreter between programs. They don’t have a server or a platform, they just let you use their data model to translate between programs. This means you can build custom connections between programs.

The idea is to offer granular control over the exchange of data between programs. But this granularity increases the effort you need to put in. It isn’t like Speckle’s adapters where it’s “upload and forget”, you have to create the connection between the pairs of programs.

Other Plugins

BHoM and Speckle are what I call “universal” interoperability tools, even though they currently only support a limited number of programs, they have the ability to handle every program out there. Because their philosophy is platform-centric, all they need to do is create a new connection for every new program.

Even if I am a big fan of the platform approach, it sometimes misses the program-specific nuances. When trying to connect every program of every possible nature, it’s difficult to truly translate all that data. This is where 1-on-1 interoperability tools are better. They help address these nuances and give you a tailored approach to transferring your data.

There is a long list of them given the open-sourced community in Grasshopper but here are some of the most notable ones that I have used.

Rhino.Inside®.Revit
A stellar example of a direct program-program integration, Rhino.Inside Revit lets you run Grasshopper within the Revit environment. It allows users to not only interact with Revit elements in Grasshopper but also retain access to all your Grasshopper plugins. It’s design and philosophy let you manipulate Revit in a very Grasshopper-ey kind of way.

A grasshopper plugin that lets you run computational fluid design (CFD) in grasshopper itself. It’s part of Ladybug Tools and is used a lot for environmentally sustainable design (ESD). Yet because it’s an interface with an open-sourced CFD solver called OpenFOAM, you can set up any geometry in Grasshopper and run any type of CFD analysis you need, not just for ESD.

Tailored for structural engineers, Swallow provides components that interface with ETABS or SAP2000. This is a very simple but useful plugin. For me, it’s always easier to model in Rhino/Grasshopper and push that geometry and attributes into ETABS later. I can then pass that ETABS file to someone else for further refinement. But the bulk of the modelling can be done in Rhino/Grasshopper, which is much friendlier to geometry creation.

Similar to BHoM, GG offers ways to translate data between programs. But unlike BHoM, GG is paid and doesn’t aim to cater to all programs. They only support a few AEC programs, like SpaceGass or Strand7. GG offers a set of Grasshopper components for those programs that let you interact with them.

Another paid plugin, but one that is invaluable for naval architects. It brings connects the power of Grasshopper with marine design. Orca3D has components for hull design, stability design and even ship CFD. It’s made by the same company that created OrcaFlex which is an analysis package for offshore marine engineering. There is even the possibility of importing the mesh done in Orca3D to OrcaFlex.

Final Thoughts

Grasshopper's potential isn't confined to complexity or the “advanced” users. While social media might emphasize complex and intricate designs, Grasshopper should be used by everyone. By incorporating it into daily tasks, we can redefine problems and help alleviate manual pain points.

I hope that helps,

Thanks for reading,

Braden