Generic Annotations in Revit
I have been working on a Revit implementation and just discovered by accident that you can include dimension parameters that behave like reporting parameters in the labels of Generic Annotations. While very intrigued, I have not come up with a really practical use of this yet.
For those of you not familiar, let me take a few moments to explain Generic Annotations. For the AutoCAD users, a Generic Annotation Symbol in Revit is basically a block with attributes from AutoCAD. In other words, it is a simple symbol with user editable text field(s). The nice thing about these is that the text fields can receive basically any input you like and you can even schedule all the values in a “Note Block” schedule. For the BIM purists, Generic Annotations are NOT very “smart.” This is because the data is not being reported from the model like a normal tag, rather the data lives in the fields of the Generic Annotation object itself. However, smart or not, they have their uses and in some cases can be just what you need in your documentation efforts.
There are some unfortunate terminology hurdles to overcome when using them however:
- To create a new Generic Annotation family, use the Generic Annotation.rte family template. (Application menu>New>Annotation Symbol). Do not change the category.
- To place a Generic Annotation family in your project, use the Symbol tool. (Annotate tab > Symbol panel > Symbol tool).
- To schedule the values you input in the fields, create a Note Block schedule. (View tab > Create panel > Schedules drop down > Note Block).
Got it? The family is a Generic Annotation, the tool is Symbol and the schedule is Note Block. Weird.
When creating the Generic Annotation, if you want to have fields, add a Label like you would in any annotation family. When you do, the list will appear empty. This is because we left the category set to Generic Annotations. This is what we want. At the bottom left corner of the dialog, you can add custom parameters to the symbol. These will become the fields that we can edit. Click the Add Parameter icon, configure the parameter as you like, usually a Text parameter so that you can type in anything you want. However, in some cases you may want Number or Integer. Add it to the label. You can add as many as you like.
A really interesting tidbit here. You can add several additional parameters beyond what you need to appear in the symbol. In other words, you can add “hidden” fields. Any parameters that you add but do not include in the label on the right will still be able to receive values in the project and more importantly, will still appear in the Note Block schedule! Just add the parameters, but do not put them in the label at the right. When you OK out of the dialog, you can add some graphics like a circle or hexagon if you like.
OK, so far so good. However, none of this is new. We have been able to do this for quite some time in Revit. Here is the part I just discovered. I wanted the circle to be parametric: I wanted to be able to flex the size of the circle. So I drew the circle, added a diameter dimension and then labeled the dimension with a family parameter that I called D.
Now the really interesting part. Create another label (Create tab > Text panel > Label button).
Notice that you can add the dimension parameter D to the label! This basically means that the symbol will be able to tell you how big it is!!!
So D is now both a driving and a reporting parameter. Very cool! Let’s test it out. Save the family, load it into a project and place a few.
To edit the visible fields, you can click right on the symbol. To edit the invisible fields, use the Properties palette. Go ahead and create a Note Block schedule to list them all. Sort and group it how you like.
Annotation families are very useful. They are view-specific, adjust with the scale of the view and can be embedded in other families. All of the Revit tags and symbols are annotation families. But ONLY generic annotation families (Symbols) can report to Note Block schedules. They are useful for those cases where a true tag will not work, like certain types of finish annotation or other very specialized documentation.
I am not sure if this little “reporting parameter” behavior I stumbled on here will prove useful in a practical sense. But you can bet I will be exploring it further.
Have you found a practical use for this? Post in the comments, I’d love to hear about it. Thanks!
Here’s a file with a sample.