element tagging with dynamo

Today I was asked to help create some roof plans for a glass canopy system and then tag each panel with its unique Mark value. Well, this sounds easy enough in Revit if you ask me, so why Dynamo? I am definitely not trying to over-complicate my life, however I do enjoy automatic somewhat mundane tasks. Normally, tagging is not one of them, unless those tags just don’t seem to be willing to be placed exactly where I want them. In that case my only option is to either move them around manually, or call in the big bad Dynamo! I chose the latter and created another node called “Create Annotation Tag”, that you can now enjoy as part of the Package Manager. Here’s the problem:


You can see tags generated through standard method of Annotate>Tag All are overlapping randomly not only with each other but also with panel edges. That’s not very good looking plan. Here’s an image of what you can do in seconds with my new node:


Now that is a bit better! Good news is that you can use it on any element, in any view, and with any tag…it basically is a Revit’s Tag All tool but with extra control over where the tag actually gets placed. Remember that 3D Views have to be locked to be able to place Annotation.

Here’s a YouTube video with a brief demonstration.



  1. andrew says:

    Any luck using this for placing room tags? I’m getting “NULL” when i try to use it for that. Thanks.

    Attachment:  2015-06-10_1031.png

  2. This might sound like magic but Room Tags are not considered Annotation Tags per Revit API and actually have their own overload for placement/creation. newRoomTag = doc.Create.NewRoomTag(roomId, locationUV, viewId). Create Annotation Tag node will not work with Room Tags. Please try attached image instead. Good luck!

    Attachment:  Capture.png

  3. Richard says:


    Thanks for making all these tools! I am trying to use the “create annotation tag” on revision clouds, but am having trouble defining the location. The clouds themselves exist in views, not model space so I cant find a way to pull a location from them. Any thoughts?

    • Richard,

      A RevisionCloud is not an AnnotationTag Element. It has its own separate create method. If its not already in Dynamo, you would have to add it via something like a ZeroTouch node or a Python custom node. Also, a “location” for a revision cloud is more like an Array of curves instead of a single Point. Please see attached for a Revit API method that you would have to implement for this one:

      Attachment:  Capture2.png

  4. Richard says:

    Sorry, I wasn’t clear. The clouds are already created, but I wanted to tag them with a revision triangle using the “create annotation tag” node. I will take a look at the revision cloud API methods, the IList variables seem like they could be used to find a location for the revision tag/triangle. Thanks for your help!

  5. Richard says:


    I found the method I need to use RevisionCloud.GetSketchCurves() but cannot implement it properly. I tried adjusting your “filled region boundary curves” node by replacing the i.GetBoundaries() call with i.RevisionCloud.GetSketchCurves() but get the following error:

    Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
    Traceback (most recent call last):
    File “”, line 47, in
    AttributeError: ‘RevisionCloud’ object has no attribute ‘RevisionCloud’

    I then tried a dumbed down version (see attached) and get the following error:

    Warning: IronPythonEvaluator.EvaluateIronPythonScript operation failed.
    Traceback (most recent call last):
    File “”, line 30, in
    TypeError: expected RevisionCloud, got list

    I am new to working with the Revit API… In your boundary curves node, what are the process list and ToDSType functions accomplishing? (I am sure I am sending a revision cloud into the python script btw, or at least that’s what dynamo is telling me I am doing)

    Any help would be appreciated. Thanks you!

  6. Richard says:

    I had to “unwrap” the dynamo data :) my revision cloud sketch lines script works now. sorry for hijacking your comments section!

Leave a Comment