Element Binding Properties


I am evaluating the rhino inside workflow to implement to my teams and want to understand how element binding works on a deeper level or how to have a workflow that won’t break the binding property, specifically in the context of using curves to generate native revit elements. What can break this connection between grasshopper/ Revit other than explicitly selecting an element and clicking on the release button.

Possible scenarios as test case.

  1. Use Test1.gh on Test1.Rvt - Generate native Revit elements using grasshopper curves

  2. Use Test1.gh on Test2.rvt, save files and then use the same Test1.gh on Test1.rvt - does this retain element binding properties in file Test1.rvt

  3. Make a copy of Test1.gh, Test1copy.gh and run on the same Revit file after making changes to the curves going into Revit, Test1.rvt - would this scenario break the binding property

  4. What happens when the Revit model is detached and saved as a new central file, will these still run as expected?

Edit - What if I take wall.gh - which generates revit walls and floor.gh which generates revit floors and merge them into combined.gh file. will this still keep element binding on walls and floors created using the individual definitions.

  1. A specific example of generating a blank curtain wall in Revit using a curve from grasshopper. User 1 generates the wall. User 2 in Revit, unpins the wall, adds grid lines, curtain panels as needed and saves and closes the file. Now the curve changes and user1, opens the model and runs the definition and updates the wall. What would happen to all the mullions and curtain panels placed in that empty wall if the wall length and height changes

All elements tracked through the Revit element id or Rhino inside or grasshopper/rhino tracks them
I’ll admit I haven’t fully tested this out yet and planning on doing some more tests soon. This sounds like a very promising workflow for the project we are working on.
The end goal is to have a rock solid workflow that will keep the elements bound across different copies of the same gh definition, multiple users opening and running the same gh file etc without having to do unnecessary manual work in revit.

I’m curious to learn what the community and the dev team has experimented with



Hi Sahil, Thanks your interest and input.

The end goal is critical here. How the Elements are going to be maintained and modified through out the workflow. Is that going to happen via Rhino Geometry and Data or by Revit users.

The Element Tracking isn’t by Revit Element ID but by the Grasshopper Index Item (not to be confused with List Item)

The grasshopper definition isn’t bound to a particular Element. You can run the definition in more than 1 project and it will work.

You can even run it in multiple projects at the same time.

Thanks for the response @Japhy,

This does clear up a few things.

My end goal is to have a robust workflow with the ability to rebind elements if possible, for the Massing, floors, and the external enclosure of the building being generated using grasshopper with a combination of walls/curtain walls/curtain panels/adaptive components. My main concern is the elements losing this binding property and the teams having to delete the entire facade and regenerate it again, potentially losing their annotation. We have a hard cutoff point after which the teams will be 100% revit, unless the building has complex geometry

Please see this image

  1. If some user accidentally flattens the inputs or vice versa and changes the data structure, would the element binding retain its properties as long as the data is of the same length in both cases.

  2. Is there any way to track elements created by rhino inside in terms of revit element ids. I know you did mention that it tracks via list id? Can this be written into a revit parameter and if someone accidently clicks on release elements, any possibility of reassigning revit element ids to bind them again?


  1. Additional tracking, say putting the Element ID, Sort Order as usertext is good idea. Be aware that ElementIDs can change if a file is centralized.

  2. Will have to get back to you on this one. I do like the idea of Re-associating a Sorted GH list to an Add Component sorted by a ordered list of pre-existing Element IDs.

  1. Can you give an example of implementing this? I am understanding that I would create a couple of text based parameters in revit and have the definition write the values of the item index/ and the sorting order in them . to keep as a ref
  2. I look forward to hearing back on this.

The Add Components are generally location info, in elements such as Wall, Families. So to re-reference and replace should be last resort. I understand the need to keep branching for data purposes and think that should be done as a separate process – roughly speaking.

Here’s a definition i’m using to reference curtain wall for an example.

I’m assigning UserData of Height and ElementID to the baked location line in Rhino.

The id’s from the Rhino linework are re-referenced in order.