Rhino Inside Revit - Direct Shape Update Existing vs Create New Geometry after Modification

I’m using the AddDirectShape.ByGeometry component in grasshopper to translate geometry from Rhino to Revit. When I modify the geometry in Rhino it creates new geometry in Revit, and leaves the old geometry in place. In the past I use plugins like Lyrebird, Hummingbird etc. which did a decent job at updating existing geometry rather than fully replacing, or creating new geometry.

Full replacing would be one step in the right direction, but modifying the geometry while retaining tags, dimensions, etc would be even better.

Rhino inside is amazing, the potential is incredible! Keep up the great work everyone!


Which version of Revit are you doing this in?


I saw that behavior in 2018 but it doesn’t seem to be happening in 2019. Sorry I don’t know more. I just know that it worked better in 2019.

This is the behaviour I have here, but you know, things always work in the developer PC :upside_down_face:.
Could you please share a gh and a 3dm file that shows the problem, please?

It looks like if we close Revit, and then re-open, the connection of model elements is lost. So if you update the geometry in Rhino, it just adds geometry in Revit, it does not replace it.

1 Like

I see, this should be fixed.


I think the same behavoir is true for walls and floors and presumably other elements, but I haven’t checked further.

I’d love to see them updating :+1:

1 Like

+1 on that
Things get messy pretty quickly.

sorry for a bit long video, reopening RIR takes some time

Consistent connection between Grasshopper and Revit elements after reopening programs is one of the most important functions for me.


I agree, it would be extremely helpful if the rhino/grasshopper connection to Revit can be maintained even when Revit or RiR have been closed & reopened.

I believe this is stemming from the way the GUID’s are being assigned or read (haven’t had the time to dig deep into the source code). In the same session, all id’s are maintained hence Revit/RiR understands what to update vs model from scratch.

Not sure how this could be fixed or if there is a workaround as guids are automatically assigned and cannot be reassigned programmatically (to my knowledge).

can @kike shed some light on this?

I have done some additional research and Dynamo seems to successfully maintain guid’s using element bindings. Would it be possible for RiR to implement this or have an equivalent?

Dynamo forum post explaining element bindings in detail.

1 Like

How can I solve this problem?

In Revit an object must be added to the database before it can be read. This means that sometimes the object cannot be accessed until a second iteration of grasshopper script. A couple strategies to deal with this is to:

  1. Use rhino geometry to make the actual calculations and simply set the Revit elements at the end. This is my preferred method.
  2. Set a timer on a component in grasshopper to fire off a second of third recalculation on the grasshopper definition to push thru all the Revit updates needed. The timer component can help.
1 Like

Thank you so much!! May you be blessed with all things good.

When adding multiple Rhino Breps by direct shape as shown in Wlsgmlk17’s post; is there a way to then edit those objects in Revit individually? Because when you click on them in Revit they are one grouping. The Breps I have are columns in a building and I would like to adjust there location directly in Revit. Thanks.

Each Column would need to be it’s own direct shape, or better yet, a family.

Does this address each column being its own Family?

So this guide shows how I might approach this problem.


Here the Column, footing and bracket happen to be placed in a family as Brep forms. It is a Column family. Then a series of instances are placed along a path. The result is a model that can be edited in the Revit Family editor. Limited editing by dragging the handles.

If one column is edited, all the columns update. And the graphic properties as section line and hatch can be edited in Revit for that specific Family/Type.

Even if you have one object that only appears once in the project it still might be worth creating a Family and inserting it as an instance. Then you can edit the form a little in the Revit Family editor if you want.

Graft the Geometry while inputting it from the Brep component. This will let you select each geometry individually.

The video is invalid. Can you please repost?