Choosing between Python and C# for writing custom nodes

Hello Dynamo community!

I am in the process of writing a few custom nodes to streamline some of the workflow at my office, and need some help in choosing how to do that. I have done some Python scripting in Dynamo, and I also have some general C# experience. However, I have not used the Revit API for anything other than copy-pasted Python scripts. I feel like I should commit to either Python or C# for writing custom nodes, and learn how to interact with the Revit API in that language. Here are my thoughts:

C#

Pros

  • More direct interaction with the Revit API, no need to translate it into its Python equivalent.
  • Easier source control with Visual Studio and Git. I like the idea of "compiling" the nodes.
  • I am more used to coding in C# than in Python.
  • Easier to build more advanced nodes using other C# assemblies and allows building custom UI.
Cons
  • More overhead. I can't just take a Python script I wrote in a Dynamo workflow and make a custom node, it needs to be translated into C#.
  • Higher learning curve. I must first learn how to compile C# into Dynamo nodes.
Python

Pros

  • Faster, I can just write a Python script in Dynamo and if I want to polish it to be more general it is not a lot of work.
  • It feels easier to build custom nodes using existing nodes + Python scripts.
  • By learning how to do more advanced stuff in Python, I will get better at the basics and be able to write simple scripts faster.
  • Lots of examples and code snippets are readily available.
Cons
  • I am at the moment worse at Python than C#.
  • I must first find what I need from the Revit API, then find its equivalent in Python.
  • Harder to maintain the source code. I want to use an external editor, and that would mean a lot of copy-pasting
These are my thoughts, please feel free to add yours or correct any wrong assumptions I've made.

/Isak

2 Likes