Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; About_Widget has a deprecated constructor in /var/www/vhosts/ on line 275
Superb Lyrebird | LMNts

Superb Lyrebird

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.

Lyrebird plugin commands

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.

[download id=49]

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%AutodeskRevitAddins2014) and then copy the two files in the Grasshopper folder to their appropriate place (%appdata%GrasshopperLibraries).

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.



  • RC

    Looks great, guys! I’m having some installation troubles, however — I unblocked the files and copied them into the appropriate locations, but nothing is showing up in the Add-Ins menu when I open a new Revit file… Any ideas what it might be? Do I have to do something in Rhino/GH first?

  • RC

    Just kidding, disregard the previous comment, I got it working. I had left the addins in a folder, and put the folder into the Addins system folder — pasting the files directly into the addins folder solved it.

    • Tim Logan

      I’m going to work on an installer for Lyrebird to make it a little easier on people to get up and running.

  • Monttypetty

    Hi there,

    Tried with revit 2014, rhino/grasshopper newest version – was using closed curve to create floors, send data from grasshopper fine, revit end says new elements created but nothing shows on the screen.
    Although I’m only sending one floor, revit end receives new elements twice.

    Any ideas?

  • Bmoore

    I can’t get the same amount of family types as you guys show in your video…when I double click on the component to define the parameters (family, type…) I don’t have the same amount of options as you do in your video, such as cube for example. And so I end up exporting things that don’t seem to have any geometrical/physical properties in Revit, because the export process runs fine but then there’s nothing in the viewport…if that makes sense. Any help is greatly appreciated! thanks in advance.

    • Tim Logan


      The family types you get are entirely dependent on your Revit project. Cube is just a simple family I made just to quickly test the plugin. You can use any family you want, but you have to create things according to how Revit wants them created. For instance you can’t place a door with Lyrebird without there being a wall there. Just be aware of what family you’re placing and make sure you send the appropriate data to create that family.

  • DAVIDE madeddu

    i got this error “writing of entities of this schema is not allowed to the current add-in”. I was trying the 3rd example explained in your video.

    • Tim Logan


      I’m not sure what would cause that off the top of my head, but it’s not embedding the GH data into the Revit objects when that comes up, so creation should still be fine but updating wouldn’t be possible. Did you try anything else with Lyrebird and did it give you any errors?

  • Tim Logan


    If the create new elements popup comes up twice, I expect it’s because the button is pressed twice. Each time you press the button it sends data so make sure you’re only clicking on it once. It uses the Revit idling event so if Revit’s doing something when you initially send you’ll have to wait until it’s done before it shows up.

    As for no floor being created, I’m not sure. Maybe you could post a sample file with just the curve you were trying to create on the GH3d lyrebird group?

  • Eduardo

    Hi! I just installed Lyrebird but when I double click on the LBOut component there ar no families to choose from…

  • youngjae

    hello lmnts! always pleased to see your latest findings.
    I’m a regular visitor to your website.
    I have been lately trying to create a curtain system in revit with conceptuual masses created in grasshopper. I have tried all the available plugins – grevit, chamelon, hummingbird and your lyrbird, as well but I cannot find a way to import mass into revit from grasshopper.
    since I can only place mullions on curtain grid and curtain system on faces of a mass, it seems like being able to transfer conceptual mass easily would be a good starting point for many revit family instances.
    I have been tinkering with revit python shell to read excel file written from grasshopper and populate revit with various family instances.
    My long term goal is to automate some specification and documenting processes such as examples you can find at dp stuff for revit(
    Do you have any plan to make it possible for lyrebird to transfer conceptual masses or mass families ? I would be glad to help… if it seems like a practical thing.

  • youngjae

    I wanted to claritfy that I mean non-rectilinear masses. but I suppose how to stream a geometry from grasshopper to revit would greatly depend on what the geometry is .. I liked the method by grevit and mass family which takes closed curves or polylines but for some reason it doesnt work for me.

  • phoenixding

    i come here just wanna to say thank u! it’s really a good plugin!