How to choose the best automation tool for your work in Revit. Designers vs programmers

New automation tools take planning to a new level of development.

Which tool will save us thousands of hours by automating BIM processes in Revit?


At the moment, we have 4 options for automating work in Autodesk Revit:



  • Dynamo (open source graphical programming)
  • Rhino.Inside (beta, with Grasshopper it's like Dynamo)
  • PythonShell or pyRevit (Python with Revit API)
  • C # (C # with Revit API)

On the graph, I gathered my thoughts on this topic:



This diagram can help you explain to managers in what cases and what needs to be applied when planning automation, taking into account the parameters speed_work / task_size / presence_vizualization .

Each solution has its own tools.


For example: if you are doing some kind of script using only the visual nodes in Dynamo for the first time, the speed of your script will be high. But in the case of expanding the parameters of the task and increasing conditions: the speed of your script can drop sharply.

Replacing Dynamo with Python (you can also use IronPython in Dynamo), the script will look more stable. You start to program the script slowly, but in this case, the growth of the script no longer causes problems either in speed or in the development process (although sometimes the script becomes so large that you can no longer work with the code using the standard built-in IronPython editor).

Each solution has its own tools.




When choosing a tool, you need to look at the “Perspective” ideas .

If your script is something fast and small , then visual programming is Dynamo or Grasshopper.

For medium-sized tasks, Python tools are more suitable.

If you have a large task with a lot of data and parameters, it is better to use C # (the same task written in Dynamo will work 10 times slower).

Designers vs programmers


BIM programmers don't like tools like Dynamo or Grasshopper because for programmers, the scripts in Dynamo look like "spaghetti code." Such developers write "relatively clean" (actually similar in quality to Dynamo) tools for Revit - in C # (or RevitPythonShell).

The problem is that such tools are written upon request from the planning department. Thus, the strong intrinsic motivation of the designer goes into artificial extrinsic motivation for the programmer.



As a result of the difficult work of transferring the designer’s logic into the programmer’s code, a new link is created during the planning process, which, in my opinion, may be replaced in the future by tools such as #Dynamo or #Grasshopper.



For people who have been designing for decades, tools like Dynamo and Rhino. InSide is a breath of fresh air in monotonous planning work.

God bless the open source community and developers of tools such as Dynamo and Grasshoper, PythonShell, pyRevit, Rhino.Inside!




I would be grateful for your comments and new contacts.

Tool Overview


#Dynamo is a visual programming tool that works with Revit. Dynamo extends the capabilities of Revit by providing access to the Revit API (application programming interface) in a more accessible way. Instead of entering code, in Dynamo you create programs by manipulating graphic elements called “nodes”. This programming approach is better suited for visually oriented types such as architects, designers, and engineers.



# Rhino.Inside is an open source Rhino WIP project that allows Rhino and Grasshopper to run in other 64-bit Windows applications such as Revit, AutoCAD, etc. With Rhino Inside Revit, you also get all the functionality of Rhino, including Grasshopper for Revit. Grasshopper is a visual programming language that is similar in concept to Dynamo (although there are some fundamental differences).



C # - Autodesk #Revit provides a rich API that you can use to customize existing product features or add completely new ones. You can automate repetitive, time-consuming tasks and extend basic functions without leaving the Autodesk Revit environment. The #API can be used to create custom tools and features that connect directly to Autodesk Revit, expanding its functionality.



#RevitPythonShell - Provides scripting capabilities for Autodesk Revit and Project Vasari software. Designers have the ability to interactively design and manipulate Revit elements using an algorithm and computational logic with Python code.


All Articles