A few months ago we posted about an interoperability tool that we made to help us go between Grasshopper and a couple of other applications that we were working with in the office. It was a great first pass, but we ran into some limitations with how it created elements and it really didn’t wind up getting used as much as I hoped. Nothing much happened with it for a month or two until we were contacted by fellow Tech Studio alumnus and current Robert McNeel and Associates employee Dan Belcher.
Dan was kind enough to show it around McNeel’s offices and they gave us the opportunity to show it to them in person and start a discussion of how we could make it better. We ended trading emails for a couple of months passing around different ideas about how we could improve the UX and element creation aspects and create a better overall plugin. The results of those discussions and their help is what we’re now calling Lyrebird after one of the great communicators of the animal world. If you haven’t seen this video you should take a couple of minutes and check out the Superb Lyrebird in action.
Lyrebird the plugin follows a similar logic as our previous interop tool, particularly that we create 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.
The video below tries to show most of the ways you can use the plugins to create Revit objects using information derived from Grasshopper.
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.
Most of the limitations or issues that I’ve run into I’ve tried to mention in the video, but overall this seems to be a much more robust plugin that the old one. It’s limited to Revit 2014 and I don’t expect it to ever be backwards compatible to any earlier versions because of some of the API changes with 2014. If there are no significant changes when Revit 2015 is released it should hopefully already work with that too, though we probably won’t know for a couple of months at least.
You can grab a copy of the files from the link above. It may be necessary to right click on the downloaded DLL and GHA files and unblock them from their properties. After you make sure they’re unblocked copy the three files in the Revit folder to their appropriate place (%appdata%\Autodesk\Revit\Addins\2014) and then copy the two files in the Grasshopper folder to their appropriate place (%appdata%\Grasshopper\Libraries).
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.
EDIT: You can download an installer for Lyrebird from our Food4Rhino project.