Rhynamo workflow best practice


I’m wondering what the best practice workflow is for using Rhynamo to transfer a Rhino model into Revit. Assuming the Rhino model is pretty detailed - including massing, floors, mullions, etc., what is the best procedure for each element?:

  • Floor - surfaces or polysurfaces. I don't see any node in Dynamo to extract the boundary of a surface so I assume it's best to do this in Rhino and then reference these polycurves into Floor.ByOutlineAndLevel? This obviously needs to be done in the project environment.
  • Massing - I haven't been able to get the ReadRhino.Rhino_BrepsToDS to work on its own. I need to add the ImportInstance.ByGeometry to it for any Revit geometry to appear. Is this the only way? Is this best done in a family or the project environment? If it is placed in the project, there doesn't seem a way to use the imported geometry to generate any other geometry, such as wall by face, etc. But if I try to use ImportInstance.ByGeometry in a conceptual mass family, it fails?
  • walls - surface. Is there a way to generate walls from surfaces? The surfaces have an 'edited profile' so its not possible to extract the wall location line and define the height. the ideal solution would be to take the (planar) surface and generate a wall by face. Not sure how single or double curved surfaces work in this regard


Just a quick reply to two of the things you wrote:

There’s a built-in node called Surface.PerimeterCurves that’ll get you the surface boundary.

And I recently added a Wall.ByFace node to package Clockwork.


Rhino to Revit at the moment is a complicated <span style=“color: #222222;”>endeavor. I wrote Mantis Shrimp to make Rhino to Dynamo a breeze, but to get stuff from Dynamo to Revit is a whole new animal. For once, your floors are probably a series of surfaces with thickness in Rhino so when imported into Dynamo they become PolySurfaces. There is no Floor by PolySurface node yet, so you have to break this thing down and extract the floor boundary curves before you can generate a full fledged Revit element. Now, multiply that effort by couple hundred elements and you have some serious work cut out for you. Of course it’s possible, but question is, is it worth your time? If its something that you would do on every project, maybe yes, because you set up a process and you can re-use it later. In that case, your best bet is to use Mantis Shrimp or Rhynamo to get the Rhino stuff into Dynamo and go from there…there is no wholesale answer that you are gonna get here. Go piece by piece, ask questions and people will be here to help. </span>

Ps. There are other plug-ins like GeometryGym for Grasshopper that make generating Revit elements from Rhino content a lot easier. I personally prefer Lyrebird.

Ps2. Generating adaptive components is easy, other things, not so much.

Ps3. Andreas added some great nodes to Dynamo that I am sure will make this easier if not entirely a breeze. Give it a shot. I am curious as to see your progress and I am definitely willing to help.

Hi guys

Thanks for the responses. I’ve tried all the Grasshopper plus-ins for dealing with transferring Rhino geometry to Revit (Grevit, Chameleon, Hummingbird, etc). I find these plug-ins very temperamental and the aren’t well supported. Some I believe are no longer being developed. So I’m looking to Dynamo as an alternative.

Families are fine. Its pretty easy to get the insertions point and rotation from Grasshopper. Then using Lunchbox, write this to excel and use Dynamo to read and place families. Columns and adaptive components are similar. Massing, floors and walls are proving to be more difficult.

The only Dynamo method I’ve seen able to be able to deal with massing is ‘ImportInstance.ByGeometry’.As described above, this has serious limitations. So it seems that the old fashioned *sat file export is more robust and versatile. Unless there is another way?

Floors seem manageable. As long as you are aware that what needs to come out of Grasshopper is a perimeter curve, and not a surface or polysurface, Rhynamo or Mantis Shrimp should be able to translate that into floors.

Walls seem to be the most difficult. I tried using the Clockwork ‘Wall.ByFace’ node but couldn’t get it to work. I tried both the NURBS surface and import instance as the input. But it is asking for a face. Does this mean it need to be a mesh? And being able to extract the perimeter of a surface seems to be useless as its not possible to generate a wall from a perimeter curve???




The Wall.ByFace node needs the surface of an object that exists in the Revit model - that’s just how that particular method in the Revit API works. Unfortunately, if it is an ImportInstance you want to use, you would first have to explode it manually in Revit since that command is not exposed in the Revit API - and there goes your automated workflow… :frowning:

Maybe a feature request for Team Dynamo?

Some time ago the question about wall creation arose in another thread:


If you can get the surfaces of the walls from Rhino, you could use an approach similar to the one shown there: