You ever face a problem and you just can’t stop until you solve it? I came across a model recently that was like that… it was an Revit 2015 MEP file that had a serious problem:
Whenever you created a Duct or Pipe Fitting, it would always be created with System Classification and System Type “Undefined”.


No matter I did, I could not fix this. I tried all of the usual steps. Then, I took this pretty severe one: deleting all warning elements with dynamo:

And it kinda sorta worked, but not every time. I must have been doing something else as well. Was it Audit? Was it Purge?

Turns out it was Purge. And that was all this model actually needed – a good purge. But what element specifically was causing the problem? Well, does this look right to you?!?


Somehow there are multiple copies of Group 1. But purging Group 1s only didn’t fix it…

To fix this model all that was needed was to

  1. Purge
  2. select all Groups, using Shift to multi-select
  3. press Ok
Immediately, Duct and Pipe fittings were created properly.

To fix any that were in a broken state, all you have to do is momentarily drag to disconnect one element, and drag it back into position. The system will heal itself, and all Duct and Pipe Fittings will adopt the system they are connected to (as they should).

When troubleshooting, try to always test one thing at a time. In that way, you can more quickly isolate the problem… and the solution 🙂


Systems not working | Revit Products | Autodesk Knowledge Network

Insulation in Revit can be incredibly difficult to work with. It can be difficult to select the insulation individually, but you can select them by using a specific schedule (ie. Pipe Insulation Schedule) and then using the Highlight in Model ribbon button. However, once selected, you still can’t change the Workset (it is grayed out). And it seems that the Workset is set by whatever Workset was current when the Pipe Insulation was created (this issue seems to affect upgraded models, but it may occur in other situations). Some people have ‘solved’ this by going through and removing and then remaking all of the Insulation! But that is not What Revit Wants, not by a long way…

So, you might think “we can Group them and then change the Workset“. Also not possible – you can’t group Pipe Insulation without selecting its host Pipe. But guess what? When you select a host pipe and Group it, it will automatically add the insulation to the group too…

See where we are heading? If we want to change all Pipes and Pipe Insulations to one specific Workset, let’s do it this way:

  1. Make a Pipe Schedule
  2. Select all Pipes with Highlight in Model
  3. Group them (takes a while on 10000+ items). Now we have a massive group, let’s…
  4. Change the Workset of the Group
  5. Finally, Ungroup the massive group. Done!
    (Note: you will observe that the members of the group include Pipe Insulation, even though you didn’t explicitly add them)


Warning: be wary of the impact of grouping and ungrouping items in your particular project model. In most cases, it shouldn’t hurt too many things, but it would be advisable to test this process on a smaller set of your sample data first.

Slightly related tip – You can use Multicategory Schedules to Select Objects on Certain Categories
Let’s make a Multicategory Schedule, and then filter it to show only Pipes and Pipe Insulation (using some ‘greater than’ and ‘does not equal’ filters). Then, Select them all with Highlight in Model.


As part of meeting his RTCNA requests, Harry posted this idea for saving all groups to file:

  • API can be used to generate a text file listing all model groups. 
  • this text file can be used as input to a journal file that saves each group to its own file

Its good to keep this general principle in mind when working with and around Revit – if it doesn’t seem possible, try and think about it from a different direction. Usually there is another way to attack the problem you are facing. Don’t give up… just find the unobvious answer, make it work, and then share it with the rest of us!

View the demonstration video at:
#RTCNA Wish 6: Save all groups to file | Boost Your BIM

A great way to test if you know What Revit Wants is to try and run a complicated high rise or health facility using model groups. The principle and general functionality of groups is fine, but they can get very difficult to manage if not treated properly. However, they can be mastered.

As Ceilidh Higgins puts it:
Whilst groups are error prone and seem to have a lot of bugs … they are still the best available solution within revit for collecting together repetitive sets of objects. 

She recently presented at RTC on this subject, and she has provided the associated presentation slides for download and viewing.

Embedded here:

Get your groupon! A guide to Revit groups | The Midnight Lunch

You may also be interested in this AU class by Aaron Maller:
Autodesk® Revit® Links, Groups, and Documentation: How to Make It Really Work!

I have been searching for a quick and easy way to compare exclusions between Group instances – and nothing really exists at this point.  So, I have developed a method to do this by using Revit and some schedules.  It doesn’t require add-ins, macros or extensions – but it does require full Revit 2014.

Part A – create a Shared Parameter, applied to all Categories, that can vary by Group instance

Part B – To automatically create selection sets for each group instance

  1. Open a new 3D view
  2. Edit the most complete version of the Group (the one with the least exclusions, ideally none)
  3. Select everything
  4. Save Selection set
  5. Finish Group – Revit will automatically create a unique Selection Set for each Group instance

Part C – fill the parameter from Part A with appropriate values for each Group instance:

  1. Load one of the automatically created selection sets
  2. Determine what parameter value represents that Group instance (for example “Level 8”)
  3. Filter the Selection – you will need to untick Lines, Wall Openings and Curtain Wall Grids (these items do not accept parameters)
  4. Make Elements Editable
  5. Edit the Shared Parameter with the appropriate value and Apply (ie. “Level 8”)
  6. While the elements are still selected, save the filtered Selection Set
  7. Deselect everything
  8. Select the Group instance and Isolate it
  9. Load the Selection Set from step 6 and Temporary Hide
  10. Any elements left over will need to be selected and have the same parameter from step 2 applied to them
  11. Rinse and Repeat steps 1 to 10 for each Group instance you want to audit / compare.
Make a set of Schedules.  You will typically need at least these Schedule types (depending on what Categories exist in your Group):
  • Multicategory Schedule
  • Walls
  • Floors
  • Ceilings
  • Columns
Make sure the Schedules have at least these fields:
  • The Shared Parameter you created in Part A
  • Family and Type
  • Count field added and set to Calculate Totals
Filter the schedules – you can use the Shared Parameter you set up with an “is greater than” blank operator to show only elements that have something in that parameter.

Using Sorting to make things look right, you can end up with a schedule you can quickly scroll through to find differences in Model Groups:

Additionally, using Highlight in Model directly from the schedules will help you to figure out exactly what elements are missing or different.

EDIT Along similar lines, you can check out Dave Light’s post at:
Revit : Scheduling Apartments

Let’s say you have inherited a multi-storey project that has been set up with Model Groups for Typical Levels – not necessarily a bad thing (see this post).

There are a couple of things that do scare me a bit, like the fact that groups can break down after a long editing session, and that its not easy to find out which elements are excluded from which group instances.
EDIT Here is an answer using Compare Models by Julien Benoit (note – Compare Models is a Subscriber only Extension, now available on Exchange here.  You will need to login).

After installing Compare Models, you need to open two files.  I opened a ‘live’ version and a detached version of the same model.  Go to Extensions – Tools – Compare Models.  Wait for a while… you will get a list that shows you which Group instances have Members Excluded.

However, this method does not give the actual Excluded Elements, just the Group Instances with Exclusions.

There was a recent twitter exchange (initiated by me) about this (see below), but it didn’t really result in a nice solution.  The closest I came, in theory, was this:


Does anyone have an awesome way to list group instances and their excluded elements?  Anyone? 🙂

Recent post by Jay Holland demonstrates the methodology they adopted to create the Revit model for a multilevel residential project.  As it had lots of repeatable elements, its interesting to hear how Massing and Groups were used to limit the impact of changes and reduce rework.

Image from BIM Aficionado

Read the whole article:
BIM Aficionado: The End to CADdiction?

Groups or links?  Or something else?


EDIT – Some additional research:

1. Model groups for Floor Plates is a bad idea. Between Editability issues, Canvas editing mode, reconciliation issues, etc, its almost a given that the groups will eventually fail. Links- while more complicated- are much better suited for tall buildings and floor plates. Groups are also a lot heavier to work with, when you have something that large, and a large number of them.

2. As for how to model walls? i model the walls based on the intent of the walls. If its an exterior facade wall, and my intent is that the wall is 70 feet tall from the ground level, i model it 70 feet tall, from the ground level. If that happens to span 5 storeys so be it. A wall on the interior OF a floor? It DOESNT span multiple storeys. The only case you can make for interior walls spanning multiple storeys in revit, is really Shaft Walls. Even then, we dont do them this way, since groups for small things like Cores handle any alignment issues.

However, Navisworks isnt even a consideration. If youre doing any kind of real coordination in navisworks, youll be exporting to NWC in multiple segments anyway, so it doesnt even matter if you model the walls full height or storey by storey. Ive got an 11 floor building where the facade is modeled full height, and i still have everything (facade included) broken up in Navis Level by Level. Revt Section boxes and multiple export views make this a cinch.
Wall- Storey by storey or Multi-level – Page 2

The other issue with floor plates is it becomes too big of a group. Rooms (imho) are the perfect sizes for groups, so yes… We use Groups inside of Links. A few key things about groups:

1. They dont always check for item editability rights until you hit FINISH group…
2. Everything gets lost fi you cant succeed in finishing the group.
3. They break apart often if they have conflict resolutions

I did an AU class on using Links as a replacement for groups in taller buildings. The handouts are on my blog. I even talked about a slightly unconventional approach we use with a single floor plate and Design Options, which makes it so you only have one floor plate modeled, for all variations in upper floors. It works fine, as long as you dont try to use the upper plate models as Room Bounding. Its not an issue for us, since we put our rooms IN the Upper Plate model, for those floors. The only other drawback to it is it cant be Space Bounding (Room Bounding) for MEP, either. Room Bounding properties of linked files do not respect any option other than Primary, since Linked File Room Bounding is a File Type selection and DO is a view selection.
Best Practices for Groups in High-rise Tower Models