Dynamo or pyRevit tag all: how each one tags a view, and where both break
Tag elements in Revit with a Dynamo graph or a pyRevit script. See how each works, then why both break on production MEPF drawings across projects, views, and Revit versions.
We make RayCAD.
On this page
The working method in Dynamo
- Open Dynamo from the Manage tab and start a new graph.
- Select the elements to tag, for example all ducts in the active view, using category and view nodes.
- Add a Python Script node that opens a transaction and creates a tag for each element through the Revit API. If a package node already does what you need, use that instead.
- Choose the tag type and position. Many graphs offset each tag from the element's center.
- Run the graph on a copy of the project and check the result.
The working method in pyRevit
- Create a pyRevit extension folder with a tab, a panel, and a pushbutton, and put a
script.pyin the button's folder. - In the script, get the active document and view, and collect the elements to tag with a
FilteredElementCollectorscoped to the view. - Open a transaction, and for each element create a tag through the Revit API with
IndependentTag.Create. - Reload pyRevit, click the button on a copy of a test view, and check the tags.
To align tags in either tool, a second pass reads each tag's position and moves it to a shared line.
Where both break
They are limited by what the tool exposes. In Dynamo, a function that is not a node leaves the Python node as the only way out. pyRevit scripts reach only part of the Revit API. Autodesk's forum answer says simple tasks suit Dynamo, and complex add-ins are easier to build and maintain as .NET add-ins. Serious plugins are written in .NET. Very large graphs or heavy element operations can also slow Revit or crash it.
They do not carry to new projects. The graph or script works on the view it was made for. A new project brings linked models, section views, rotated views, fabrication parts, and crowded sheets, and tags land on top of each other.
Placement is the hard part. Placing a tag is easy. Placing it clear of every duct, fitting, and other tag needs the 2D footprint of each element as drawn in the view and the real size of each tag. Much of that API is undocumented.
Your firm's standard. Tags inside or outside the duct, above or below, leader rules, and where size and elevation sit are all logic you build and maintain yourself.
Revit changes underneath them. Each Revit release can change the API, and Revit 2025 moved to .NET 8. Dynamo versions change too. Graphs and scripts need rework each year.
No safety net. A graph or script that edits or deletes the wrong thing has no undo for the whole run unless you build one. A crash costs the unsaved work, because Revit has no autosave.
The time trap. Automating a four-hour job in two hours, failing, and doing the rest by hand is a common story. Each fix can break another case.
What it costs
Dynamo and pyRevit are good for small tasks. For tagging production sheets, RayCAD does the job inside Revit with no graph or script to maintain, across Revit 2021 to 2027. Read the full build vs buy comparison, and see how RayCAD places tags.
What building a Dynamo or pyRevit tagging script yourself really costs
- Time. Whoever builds and maintains the script is doing software development instead of the billable engineering and drafting work they were hired for.
- The AI loop.With Claude or ChatGPT it becomes an endless loop of “fix this”, “now fix that”. Each fix can break a case that worked before, and nobody on the team owns the code.
- Cost. Hours spent building and maintaining scripts, times your hourly rate, against $200 per month for RayCAD for the whole company.
You can build a Dynamo or pyRevit tagging script, and this page shows how. For production MEPF sheets, RayCAD is the cheaper and safer choice. Try it free for 15 days.
Frequently asked questions
Can Dynamo or pyRevit tag all elements in a view?
Yes. A Dynamo graph or a pyRevit button can collect the elements in a view and create a tag for each one through the Revit API, inside a transaction.
Can they align tags?
Yes. A second pass can move tags to a shared line. Doing it well needs each tag's real size and a check against everything else in the view.
Are they good enough for production tagging?
For small, repeatable tasks, or a tool used by one person, yes. For production MEPF sheets, graphs and scripts are brittle across projects and hard to maintain as they grow.
When should I use C# instead?
When the logic is complex, the performance matters, or the tool must run reliably for many users. Autodesk's own forum guidance points the same way.
Sources
- Autodesk forum, Dynamo vs C# comparison (checked October 21, 2026)
- Autodesk University, Pros and cons of Dynamo versus Revit add-ins (checked October 21, 2026)
- Autodesk, migrating from .NET Framework 4.8 to .NET 8 (Revit 2025) (checked October 21, 2026)