I've found this very interesting and useful article by Mark Twain on
RevitForum.org blog
I simply report it because it's another step closer to what I believe is a real standard usage of the Revit platform, headed in the same direction of the tools I've been developing lately. There are fair margins for further developments here.
So many thanks to Mark and the Revit community for sharing your knowledge.
How to deal with Legends in Revit
Edited due to remarks made by Forum users. Some pitfalls for the use of Assemblies added in light of honest comparison between the different options.
First of all:
AUTODESK, FIX IT ALREADY!!!! YOU CALL THIS A BIM AUTHORING SOFTWARE? I CAN'T EVEN PROPERLY DOCUMENT THE OBJECTS RESIDING IN MY MODEL, WHETHER IT'S WINDOWS, DOORS OR FREAKIN' TOILET SEATS. THE OOTB LEGEND TOOL IS AN ABSOLUTE TOTAL HEAP OF UTTERLY USELESS CRAP!
And breathe...
But seriously: It's an insult to all of us working on real projects needing to do real documentation. I have been on Revit since version 5.1 and it has been useless as long as I can remember (don't even know if there were Legends on that version, but if there were: they sucked back then too).
Why are legends bad?
1. You can only have a few different views: plan view, front and back elevation. How about sections? How about 3D views?
2. No tagging, no way to extract data from the elements (THAT is the freaking purpose!!!)
3. NO connection to the elements actually used in the model. If an element is deleted, it will remain in the Legend. No way of counting elements.
See image 1.
Image1: Useless crap
So: useless crap it is... The question is: what should it be like then? There are a few options, listed in order of usability:
1. Phases
The easiest to set up, but also the hardest to manage and check for model compliance.
Image2: Adding Legend Phases
Image3: Creating Legend Views and setting component Phases
Image4: Creating a coordination schedule
- Create two extra Phases: Legend and Demo Legend. Place them before the regular Phases, see image 2.
- Duplicate a Plan View, set Phase to Legend and place your Legend components. Select all Legend components and set the options to Demolish in phase Demo Legend, see image 3.
- Create all Legend views you want and Tag away happily.
- Create a Door schedule with 3 columns: Family and Type and Count. In the Properties screen, Sorting tab, sort by Family and Type. Check off "Itemize every instance". You now have a overview of all types in the model. Now duplicate that schedule and set the Phase to "Legend". You can now compare both schedules side by side to see if all elements are accounted for see image 4.
Pro's:
- Total control over Legend views, tagging, and so on.
- No influence over the model, no need to hide things in regular model views
- It's possible to create schedules to check whether all types are accounted for in the schedule.
Con's:
- Lot of work to set up views.
- No way of distinguishing different instances, there's only a limited amount of parameters that can be used to sort the schedule.
- Needs working knowledge of Phasing
- Needs two schedules and the ability to check them side by side. This could get difficult in large models with lots of types.
- Needs extra "space" in the model to place the Legend components.
- Not very suited for Legend views of multiple components (for instance a room layout, windows with ornaments, window sills and such).
2. Design options
Image5: Adding Design Options
Image6: Adding elements to a Design Option
Image7: Setting up coordination schedule
Image8: Coordination schedule
A bit harder to set up, but has better ways of checking for Legend-Model consistency:
- Set a Design Option Set called "Legend". Add 2 Options: "Model" and "Legend". See image 5.
- Duplicate a Plan View and place all elements you want to create Legends view from, somewhere outside the model's extents. Due to the setup of the Design Options, they will not be visible in the "normal" model views. See image 6.
- Create all Legend views you want and Tag away happily.
- Create a Door schedule with 3 columns: Family and Type, Mark (or any other text instance parameter) and Count. In the Properties screen, Sorting tab, sort by Family and Type and then by Mark. Check off "Itemize every instance". You now have a overview of all types in the model, see image 7.
- Go to the Legend door, select it, fill out the Mark value as shown in image 8. All the "normal" doors have a blank value.
Image 7 shows us that there is one type in the model that does NOT have a Legend component... This is a fast and reliable way to check whether all TYPES have Legend components. It does not help with instance based deviations...
Pro's:
- Total control over Legend views, tagging, and so on.
- No influence over the model, no need to hide things in regular model views
- It's possible to create schedules to check whether all types are accounted for in the schedule.
Con's:
- Lot of work to set up views.
- No way of distinguishing different instances, there's only a limited amount of parameters that can be used to sort the schedule.
- Needs working knowledge of Design Options
- Needs extra "space" in the model to place the Legend components.
- Not very suited for Legend views of multiple components (for instance a room layout, windows with ornaments, window sills and such).
3. Assemblies
My new favourite, and very close to what the Legend feature should be:
Image9: Creating an Assembly
- Place your components in the Model. Select a component and choose "Create Assembly" from the contextual tab. Choose an appropriate naming strategy (I use the family + typename which can expand dramatically when you're creating Assemblies from multiple elements), see image 9.
Image10: Selecting Assembly Views
- Select the Assembly and choose "Create Views" from the contextual tab. Select which views you want, and if they should be placed on a sheet, see image 10. Tag away happily.
- Select next item, repeat the steps above. IF your element matches an existing assembly, it will turn into the same one, see image 11. Best part: this is on instance level! So if you have different instance parameters, it will be a new Assembly. Only problem: when using a unique Mark value to differentiate between different elements of the same kind.
Image11: Duplicate Assemblies are recognised
- You can tag the Assembly in the model to refer to these Assembly views. Which solves the Mark problem...
- Create a Door schedule as shown in option 1 and 2. Add an extra field "Assembly Name" to check whether all components have been added to an Assembly.
Pro's:
- Legend Views with the click of a mouse button.
- Total control over Legend views, tagging, and so on. Crop Regions can be rotated to meet specific needs
- No influence over the model, no need to hide things in regular model views
- Simply add a column to your object schedules to check whether all types are accounted for in the schedule.
- Recognizes differences on an Instance Level.
- No extra "space" needed in the model to place Legend components
- Suited for Legend Views of multiple components.
- Easy to use workflow.
- (Shared) parameters can be added to assemblies to allow tagging and scheduling.
Con's:
- Instance parameter awareness can be a problem, however this is manageable by adding those parameters to the Assembly itself.
- There's no way to port parameter values from the objects inside an Assembly to the Assembly itself without using the API.
- It would be nice to be able to create Embedded Schedules for Assemblies to have both the Assembly AND the underlying objects in one schedule.
- Most annoying one: you need to manually place all elements in an Assembly one by one. No way to batch-create an Assembly. No way to properly place an Assembly when it's (wall) hosted (try placing an Assembly door...)
- MAJOR BIGGIE: Assemblies do NOT update when changes are applied to instance parameters. WTF??? It recognises differences in instance parameters upon creation, but not when changing them? I thought Revit ALWAYS updated modelled stuff? What the hell kind of cad solution is this?
- Adding objects to an Assembly (for instance, adding a windowsill to a window) creates a new Assembly type. Which is in some ways logical, but also a shame. Verdict on this one is still out...
- Groups cannot be Assembled (is that the correct term?). I get this, I think, because Groups are in many ways similar to Assemblies. I can imagine that these two might collide, but it's not perfect.
Summary
Legends suck. They suck for text notes, they suck for diagrams, and they suck big time for building components. The first two options described here are at best mediocre workarounds with lots of pitfalls and tons of extra work.
Then there were Assemblies... And all was better.
Provided Autodesk fixes a few minor bugs, it is the documenting feature we have been waiting for, for a LONG LONG time.
As far as I'm concerned, Autodesk can delete the Legend tool all together. I will be sticking with Assemblies for Building components from now on (and Generic Annotations for anything else).
HOWEVER: when you're on big projects with lots and lots of types, this solution might not work for you. Because whenever an INSTANCE parameter changes, you'll need to update all Assembly instances in the project. Which sucks big time. It's doable on smaller projects, and it works well when you're changing type parameters. But not when changing INSTANCE parameters. And that is a shortcoming well worth noting. (off course, you could do a "select all instances" > change, but it's the principal of things)
O, I added my sample files to
this thread on Revitforum.org.
Happy Reviting,
Mark Twain