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.
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.
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.
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.Here’s a look at the parameters for the active view. The workset names match the annotation workset name.
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.
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. We 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.
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. The 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. Now, 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. Put it together, turn the Boolean for Delete to true and press run:
up next… Delete all non-visible keynotes in active view