From Rhino/Grasshopper to Revit using Dynamo - How?

Hi all,

I’ve been trying to bring in objects made in Rhino to Revit, the aim being to some how convert those objects so they are Revit objects/families and can be given all the same properties/materials that a Revit object can be. I am finding the process very difficult.

From Rhino I’ve exported .sat files and also .ifc files, they come into Revit fine and using the ‘wall by face’ I can convert some of the surface but it’s not clean and is a tedious method for complex geometry.

This led me to looking into Dynamo but it’s not a way of modelling I’m used to so it’s taken a lot to get my head around. I have attached as far as I’ve got which is to import the .sat file, can I convert this .sat to a Revit object through Dynamo?

I also read this ‘To further add to what Colin has mentioned above. My company in particular is using Dynamo as a tool to bring over Grasshopper geometry. Currently methods used to transfer Grasshopper to Revit requires messy files such as .SAT which cause an overload of polygons to be transferred in the process. By using Dynamo we are able to export primitive point data from Grasshopper > Import into Dynamo and generate form based on points. We can then apply created families onto the forms, such as curtain panels which can then be scheduled. This is part of BIM deliverables that are a major requirement in our documentation processes.’

The above sounds like a good way to do it, I haven’t used Grasshopper yet, can someone please further describe further this or another good workflow.




Hi Martin,

Thanks for your query (I see you saw my post somewhere on this forums)

To help you solve your question regarding the process, will need to know a little more about what you are trying to do.

  • What kind of object are you trying to bring through into Revit? is it in that Screenshot?
  • Is the object a fluid smooth surface or is it made of panels?
  • Does it need to be a Revit family? (will it need to tag or schedule or parametric?)
  • Do you know how to create adaptive families? (Most objects you bring through into Revit will be an adaptive family)
The reason for asking these questions, is because the process to bring Rhino models into Dynamo is quite difficult in some ways. But depending what kind of models you want to transfer across, can determine the best method.


Hi Danny,

Thank you for your reply.

The object is the one in the screenshot, it was made from 3 curves in Rhino using the plugin ‘Rhino Terrain’, the 2 base curves are level, the top curve is undulating.


It will be a landform so needs to be fluid. It will also need to be used for tags, scheduling as will have build ups similar to walls etc


It doesn’t have to have perimeters to change it’s shape but would be useful I guess, though I do prefer to make such forms in Rhino and if the process of conversion is straight forward I would probably like to stick with it.

I’m not sure I know what you mean by ‘creating adaptive families’, I don’t have much experience with Revit.

Let me know if you require some further info.



Hi Martin,

Sorry about the late reply, had to wait till Monday to get into the office with the programs.

Since you do not have much experience in Grasshopper and Revit, I suggest trying the following method. You will need to install a plugin/nodes into Dynamo, called “Rhynamo” (link below)

Essentially it is a simple, yet amazing set of nodes that enable the transfer of native Rhino files and objects to be interchanged with native Dynamo objects. The benefits of this process is that you can run the Rhino3d file directly in Dynamo.

From looking at the model you showed in the screenshot, I did an example of a possible Dynamo script. In the Dynamo screenshot, I have circled the Rhynamo nodes I used. The last node circled Red is what will be transferring the model into Revit.








How I setup my Revit project, is I generated the proposed model into a family file “Generic Model category” so that it acts like a simple family, that you can tag and schedule in a project as you see fit.

Unfortunately, to my knowledge you cannot create a freeform surface with walls (Unless someone else knows a method, would be keen to learn). You may just need to apply detail components in your section drawings to depict wall structure.

Hi Danny, Thank you very much for the little tutorial!

I’ve downloaded the package and I wanted to set up the nodes as you’ve done but the image is too small to read the nodes you have chosen. Can you repost that image on the left in a larger format?


I’ve also watched a tutorial …though even after creating the first 2 nodes (file path and read.rhino.Get.rhinoFile) and pressing ‘run’ it gives me a warning that one or more inputs do not match. I linked the file path to a very simple Rhino form to test it.

Just also wondering how this methods end output differs from exporting an .SAT or an .IFC file from Rhino?, are both of those file formats incapable of being tagged/scheduled as normal families?

Hi MC,

I tried re-uploading the image, see if it enlargers now.




Are you using Dynamo 7.4? if so, there is an issue with file path reading at the moment. Try adding in ‘File Path’ to browse for the file, and connecting it to the node ‘File.FromPath’ before going into the Read Rhino node.

Regarding your question between .SAT files and IFC, there are a few reasons why I prefer the Dynamo method.

SAT files hold simple surface geometry without metadata, so if we were to develop any Structural beam forms in an external software such as Rhino/Grasshopper, the import into Revit will bring in only the geometry representation. For example, if we used Excel/Dynamo method we can take the Structural Beam’s Centreline + Profile to attach native Revit Structural Framing families to them, which enables proper scheduling and tagging. Additionally, the import of SAT file geometry can lead to an increase in amount of polygons and control points in Revit, for example I had a beam imported into Revit through SAT which caused approximately 25 control points to appear, whilst Dynamo reduces the amount dramatically to only 2 points (Start and End).

I can’t comment on the IFC process, as I do not regularly go down that route. Although, I would still find Excel/Dynamo importation method to be more ‘clean’ in the long run, since we are essentially dealing with raw data that I can assure will not bring in any other information into a live project.





Hi Danny,

I’ve only just been able to get back to this. I am using Dynamo 0.7. I tried to replicate exactly what you have but I have warning messages next to ‘List.getitematindex’ and also next to the last import node.

I also tested just the first 2 nodes and clicked ‘run’ but still no geometry.

Hi MC,

Could you post screenshots of the script, would be easier to assist that way.




The warnings given don’t tell me much, the first that the List.getitematindex operation has failed, and the last node tells me that the value cannot be null, should I type something else into the ‘code block’?. I set them up as your image and then clicked ‘run’, is there any particular way they need to be set up before running?.. the .3dm file I’m using is a very simple surface

Hi MC,

When you click on the icon at bottom right of the node or attach a Watch node, do you see any data being transferred through?

If there is no data a possible issue may be due to the nodes not correctly referencing the right file locations. Double-Click on the Rhynamo nodes to open it, Edit the Python script and see if the Program file location is correct. In the image below, I highlight the folder file location, a common issue is that the original Python script is “Rhinoceros 5”, I needed to change it to “Rhinoceros 5.0” since that is how it is located in my computer’s folder name.



Hi guys, if its not too late i would like to offer a different approach to moving geometry from Rhino or Grasshopper directly into Dynamo: Mantis Shrimp. Again, Mantis Shrimp offers Grasshopper to Dynamo transfer as well as Rhino to Dynamo and soon it will offer Dynamo to Grasshopper exchanges. It’s also open source so all code can be found at : Here’s a few words of introduction as well as download instructions, tutorial to get started etc:

Here’s also a few other examples of what you can use Mantis Shrimp for:

Thank you,

This is definitely a late reply to this post, but I thought I’d try anyway. I’ve done a lot of digging, and it’s possible that I’m just not searching the right things, or no one has posted about this yet. What I’m trying to do is take a Rhino file, and have dynamo read the OPEN polysurfaces, then translate those to objects. I have tried nodes from both Mantis Shrimp, as well as Rhynamo. The reality is that designers work a lot with open polysurfaces, and don’t always translate them to closed polysurfaces, which actually do translate into geometry. They work with the open polysurfaces because they are faster to manipulate when their design changes, and turning them to closed polysurfaces takes way too much time. Is there a way to get an open polysurface to translate into geometry? I will attach the rhino file that i am trying to use. The attached image shows the dynamo script that I’m using to read the closed polysurface, which works fine. But it won’t read the open surface. Any help? URBADRIFTWOOD

Seems like a task for

I’m not a Rhino/Grasshopper user, so not sure.

Still looking for some help on this one!