It is hard to give a definite answer to this question without knowing what kind of add-ons you have in mind developing for Revit. However, a few general points can perhaps be made:
- Simple and trivial add-ins and macros are very easily done with Dynamo, since one does not need to know anything at all about programming. Typical application include gathering concrete data from Revit elements.
- Complex add-ins that need some level of programming anyway (like Python nodes in Dynamo, etc.) seem to be easier to develop and maintain as .NET add-ins. It is not because they would not be possible to make them in Dynamo (within Dynamo limitations), but rather that the resulting Dynamo schemas would tend to be unreasonably large and hard to manage.
- Dynamo contains an extensive library of export and database utilities that aren't related to Revit. If your application would benefit from that extra functionality, then writing your macros as Dynamo app should be considered. (Unless the apps are expected to be too complex for Dynamo).
- Not that it is an infinite limitation (there are workarounds), but Dynamo application typically work with the active document only (e.g. the one that is currently visible and active in the Revit session), while .NET add-ins are free to work in any open document, whether visible or not.
- Dynamo is also a standalone program that has functionality on its own. If used to control Revit, however, it is inferior to API add-ins (e.g. C#), because Dynamo only uses a subset of the Revit API, whereas a standalone .NET add-in ca use the entire API.
- Macros (C#, VB, etc.) can be embedded to Revit documents, whereas Dynamo macros cannot.
- One can use C# macros with just Revit installed, out of the Box. To create Dynamo macros, Dynamo must be installed, obviously.
Arnošt
Arnošt Löbel