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.

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

2 Likes

Which version of Revit are you doing this in?

2019

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.

4 Likes

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.

1 Like

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.

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.

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