Tuesday, February 25, 2014

Lyrebird: A Free, Open Source Grasshopper to Revit Add-in

LMN, an architecture firm that I proudly called my home away from home for the 4 years between 2007 and 2011, has an integrated design technology studio named LMN Tech Studio, or LMNts for short. Tim Logan and others in LMNts have been developing free Revit add-ins and I'll be posting about them here over the coming days. 

First up is Lyrebird, a Grasshopper to Revit interoperability tool. 

Excerpted from the LMNts website...

Lyrebird...create[s] intelligent objects (families) in Revit so that when we use Grasshopper as a computational design tool, we structure the data in Grasshopper to make it easier to instantiate those Revit objects.  This isn’t so much about translating geometry between programs but instead translating data between them.  With Lyrebird we have attempted to think through all of the possible ways we may want to translate between Grasshopper and Revit, and work within the constraints of both of their API’s to make sure the resulting elements are still user friendly and can be easily manipulated either in Revit or through Grasshopper.

The interface we’ve created is still pretty simple; there’s only one Grasshopper component that we hope has enough inputs and options to handle everything without being overwhelming.  On the Revit side, there are four commands added to manage Lyrebird and the elements that it creates.

Lyrebird plugin commands

We’ve tried to simplify the interaction between the programs, especially when it comes to mapping the Revit object to Grasshopper.  With our previous plugin that data was structured into a simple data tree, and then sent as a 2D array over to Revit where the data was mapped to a Revit family type, and then each list item was matched to a particular construction parameter (location point or rotation angle) or Revit parameter.  With Lyrebird this all takes place back in the Grasshopper interface so you’re seeing why the data is organized in a certain way immediately.  The process of sending information is also more intuitive, rather than clicking a button in Grasshopper, switching to Revit and activating another command, and then mapping all of the information, now you just click the button to send in Grasshopper and Revit automatically reads the incoming information and asks you if you want to create or modify the elements.

A word of warning though, Lyrebird’s Revit plugin is by default in the Off position (there’s a toggle) and you may want to leave it that way when it’s not going to be used.  It’s using the idling events in Revit to automatically trigger when data gets sent, but the idling event can be a resource hog and will cause Revit to use 100% of one of your cores at all times.

We’re also excited to say this is our first project of this nature that we’re making open source.  It’s not something we were actively promoting during development, but we do have the project up on GitHub if you’re curious about how we went about creating the different parts of the plugins or if you want to contribute so that we can make it better.

There's more information available on the LMNts website.

Further reading: Grasshopper-related add-ins

No comments: