A very time consuming issue that I commonly encounter is when a keynote appears in keynote legend but is not visible in any of the views on the sheet. As a dumbed down explanation, because the annotation exists within any view(s) on the sheet, the keynote value appears in the keynote legend whether it is visible or not. Keynotes can become invisible if the item they are hosted to is no longer visible, the annotation is no longer within crop boundary of the view, or simply the annotation is hidden. What usually gets overlooked is that this extends to phasing of elements, closed worksets, or even the view range of the view.

Finding a missing keynote involves toggling through just about every visibility setting. If there are multiple views on a sheet, you need to find out which view or views the keynote is in and remove it from the views to remove it from the legend. I wanted to create a better way of handling this using dynamo.

2 - Elevation View with Reveal Hidden Elements

In the Dynamo workspace shown below, I’ve setup a workspace where we can select all elements in the view and filter the list to get annotation items, and compare that list to the list of annotations in the model that should be in the view. This produces a list of non-visible annotations in the current view so we can delete them.

3 - Select Elevation Elements4 - Get List of annotations visible in view

Now that we have the list of annotations visible in this view we can compare that to the list of annotations for the entire project and remove them from that list.5 - Get List of annotations in model not visible in view

Next we need to compare the list of annotations that are not visible in the current view with the workset value of the current view. What we’re doing here is finding the non-visible annotation in the view. (See the post of Revision Clouds for more information on the code block and why the workset of the annotation in a view is one greater than the workset of the view.)6 - Detemine annotations associated with active view

When we put it all together and hit run, it will delete the hidden annotation.7 - Delete all annotations not visible in view



A topic I often see Revit users having troubles with is revisions showing up in a revision schedule on a titleblock and no revision clouds are visible on that sheet. This post is going to focus on using dynamo workspaces to delete revision clouds.

This post will identify workspaces to:

  • Delete all revision clouds in the model
  • Delete all revision clouds in active view
  • Delete all revision clouds on a list of sheets

Here’s brief background of the issue so anyone reading this will be on the same page. In the titleblock family, there is usually a revision schedule that displays when a revision cloud is drawn on that sheet or in any view that is on that sheet. This is a wonderful feature within Revit that makes it easy to track which sheets have revisions on them but can cause some frustrations when it’s not working as expected. At some point a Revit user will encounter a time where the revision schedule is populated and they don’t want it to be. This usually occurs when a project is taken from design into construction. The design team is directed to issue an “Issued for Construction” package without any of the previous revisions showing in the titleblock.1 - Sheet Revision Properties

Usually the solution is as simple as clicking “Revisions on Sheet” in the properties of the sheet and deselecting the unwanted revisions. (There’s a great post from What Revit Wants that walks through using Dynamo for updating the revisions with this method. Check out the post here)

Occasionally, this is not the case and the issue caused by a revision cloud that is in a view and for one reason or another, it’s not visible. This starts the hunting and pecking process to find and remove the revision cloud. This is where dynamo can really shine.

We’ll start with a simple task and build from there. A common task on a Revit project is to delete all the revisions as we move from the design phase into construction documents. This can be an extremely tedious task if done manually. In Dynamo, we can do this simply by getting all elements of a category and telling dynamo to delete them. In the Archi-Lab package, there’s a great custom node called “Delete Elements” and as its name would suggest it will do just that.

2 - Delete all Revision Clouds

Deleting all the revision clouds at once is pretty powerful but what if I only want to delete all the revisions on a specific sheet, view, or even sheets for a specific discipline? We need a way to filter the list of elements. When I start exploring something like this, I like to look at all the parameters that Dynamo will read for elements so I can start to sort and filter elements by information. Looking at the element properties, (assuming worksets are enabled) you may notice the workset is named after the view the element is in. When I first saw this, I thought, “great, I’ll filter the list by workset and the name of the view and I’ll be done.” It’s close but not quite that simple.3 - Revision Cloud Properties

Using the node “Element.GetParameterValueByName” to create a list of parameter values, you get a number instead of a name. So there goes my theory that we can filter the list by view name. This does end up being useful though.4 - Revision Cloud Wrokset NameHere’s a look at the parameters for the active view. The workset names match the annotation workset name. 5 - View Parameters

Oddly, when I take the workset by name, I notice the number is one less than the annotation’s value. The annotation workset was 163 and this one is 162. After some searching I found this to be consistent with annotations in views. So far the exception I found is with dependent views and that actually makes a lot of sense because the annotations are in multiple views. 6 - View Workset By name

Next, I’m going to show a few things on what I can do with this information.

Delete All revision clouds in the active view:

In the Dynamo workspace below, I am taking a list of all the revision clouds in the model, getting their workset parameter information, and filtering that information by elements that have a workset that equal the workset of the active view plus one. It works pretty well. 7 - Delete all Revision Clouds in active viewWe can now look to take this further. Looking at the parameters of views, I have a parameter for the sheet number that the view is on. This extends my capabilities of filtering annotations by any of the sheet parameters. Knowing this, I can isolate annotations that are on a specific sheet, sheets in the drawing list, a specific disciplines sheet, or really anything we can filter a sheet list by.8 - Sheet number of View

Deleting annotations in views based on sheets discipline:

The next few images are going to show the process required for deleting the chosen annotation category for views of a specific discipline. We’ll start by creating a list of the sheets that we want to remove the annotation from. For the purpose of this post, I’m going to filter all the architectural sheets. I typically use a parameter called “Discipline Order” to sort our sheet index in a non-alphabetical order. In the sheet index I use a calculated formula with an “If” statement to fill out the discipline in the schedule rather than have the Revit user enter the sheet discipline and the appropriate sorting number. Because of this, I’m filtering the list of sheets in the model by the discipline order that equals architectural which is 3. 9 - List of Views by DisciplineThe next step is to filter a list of all the views in a model that are on the list of sheets we just made. This portion of the workspace becomes the framework for a lot of different workspaces and is worth saving separately. We’re able to feed a list of sheets and create a list of views that are on those sheets. 10 - List of Views on SheetsNow, we will want to compare the list of annotations’ workset to the workset value for the list of views we just created. In the workspace below, we take the input of the list of views created above and compare them to the list of all the annotations worksets using the same formula from the delete all revision clouds in active view workspace in the start of this post. 11 - Delete Annotations on list of viewsPut it together, turn the Boolean for Delete to true and press run:12 - delete annotations on views by discipline

 up next… Delete all non-visible keynotes in active view