Tag Archives: BIM Management

Managing View Templates with Revit links that are set to “By Linked View” per level

One of the biggest challenges of dealing with large Revit models is working with outside consultants’ linked Revit models. You may need to use a linked view to easily match said consultant’s floor plan views. In that case, you should use the By Linked View V/G setting of your RVT Link. The problem you will face is that you cannot control the linked view with a View Template unless you have a View Template for each level.

I’ve seen a number of projects that actually had a view template per level. Don’t do this! In my opinion, this is improper usage of templates because if you have to make a change to a template, you would actually have to do it several times (once per floor). Keep in mind that for large Revit projects, the less templates you have, the better.

So, how would you solve the issue of having linked models with their Visibility/Graphics set to “By Linked View” on multiple levels without managing a template per floor?

First of all, in your View Template settings, uncheck the V/G Overrides RVT Links.

You cannot use this setting if you have linked views that point to specific levels unless you have a view template for each linked level.

View template settings for levels that use By Linked View in Revit.

Second, create a view template that ONLY controls the V/G Overrides RVT Links.

Think about how you would like to apply the linked views in batch and set your linked view in that template. For this example, I needed to create a template per level.

I realize I seemingly contradicted myself by having a template per level, but keep in mind that these templates are never assigned to views themselves – we will use them to apply the RVT Links settings only. So in the rare event that you need to changed your By Linked View settings, you are still saving an enormous amount of time by using these templates to manage your “backgrounds”.

Using Revit View Templates to manage linked models with V/G set to By Linked View.

Managing view templates when you need to use a linked view from a linked Revit model


Lastly, apply the template properties to all views that need to display the linked view in your template.

Select the multiple views that you need to have the same linked background (most likely every view per level) and right click and select Apply Template Properties from the menu. Note that applying a template’s properties to a view does not assign the template to that view. It will only apply the properties that aren’t controlled by the assigned template.

Apply view template properties to all views in Revit.

Power-user tip: Change your Project Browser organization to group the views by Associate Level so that you can easily select all views for each level easily.

Revit tip to group all views by level to easily apply view template per view for linked views.

Best Practices: Managing Sheet Lists in Revit

The task of managing drawing lists has typically been a daunting one; Particularly on large projects. With the dawn of Revit adoption, we now have some options to make document control a little easier.

Avoid Two Sets of Data When Possible

You’ve heard this one a hundred times when using schedules on your drawings. If you have an itemized VAV schedule on your drawings, would you rather manually input that data into Excel or let Revit create a schedule for your automatically?

The same school of thought should be applied to drawing lists. The sheets exist in Revit, why not let Revit automatically create a sheet list for you? This will save you the step of comparing your sheets in Revit with  an Excel spreadsheet that is manually maintained.

Use Project Parameters to Create a Matrix of Sheets for Multiple Drawing Packages

There are several uses for Project Parameters in Revit. In this case, we find that a Project Parameter assigned to the Sheet category works great for this task.

Using project parameters to manage drawing lists in Revit.
Use Project Parameters assigned to the Sheets category to manage drawing sets.

We use a Text type of parameter, so that you can decide if you want to use an “x” or even a “•”. I’ve seen some cases where a yes/no parameter had been used. I do not personally like this method because by default the parameter is neither a yes nor a no, it is displayed as a grey checkbox on the schedule which can be confusing.

Assign an x for sheets being submitted per drawing set.
An example of what the sheet parameters look like in the Revit Properties window.

Once you have your Sheet project parameter(s) created, you can generate a sheet list by going to your ribbon under View > Schedules > Sheet List.

For a simple sheet list, you can simply add fields for the Sheet Number, Sheet Name, and any parameters you created to document which sheets are going into which package.

Add fields to your sheet list schedule in Revit for a matrix type of sheet list.

Revit sheet list in schedule view.
A Revit sheet list as a schedule.

Once you have the sheet list schedule created, you can then export to Excel (via a CSV file) or drag the schedule onto a sheet.

Use Dynamo to Create a Sheet Set for Printing Directly from a Sheet List

Dynamo is a visual scripting software which taps into the Revit API. If you don't know about Dynamo yet, check it out: http://dynamobim.com/

Creating Sheet Sets (for printing) in Revit has always been a manual and tedious process, forcing you to scroll through dozens, if not hundreds, of sheets. Ticking the boxes of each sheet you want to print can lead to errors.

With Dynamo, we were able to create a workflow that creates a sheet set in Revit for printing. The workflow is somewhat simple to understand, but I will go into detail on a separate post. In a nutshell, the workflow looks for any sheets that have an “x” in the relative drawing set package parameter. If the sheet is marked with an “x”, it is added to the sheet set.

Using Dynamo, you can then print directly from a sheet list in Revit.

Dynamo workflow to print a sheet set based on a sheet list in Revit.
Dynamo workflow to print a sheet set based on a sheet list in Revit.

Download the Dynamo Workflow:
Dynamo - Create Sheet Set Based on a Parameter Value (470 downloads)

Managing Multiple Models in a Single Drawing List

With multi-trade offices (like an MEP firm), it is common to maintain a single drawing list. On large projects, you are most likely to have multiple models, typically one model per trade.

I created a method to create a single drawing list of all trades from multiple models simply by creating an empty project and linking all models into it. After that, it was a breeze to create a sheet list of all disciplines by adding the appropriate field. The key is to make sure you check the box that says “include elements in links”.

Use an empty model to link in all disciplines and then generate a sheet list.
Use an empty model to link in all discipline models and generate a master sheet list within Revit.

Collaboration for Revit (C4R) and A360: Your Revit Model in the Cloud

Update: At some point after this article was published Autodesk has rebranded A360 – it is now called BIM 360.

Autodesk has launched a collaborative platform in which users have the ability to host their Revit central models on the A360 cloud. This method attempts to solve the limitation of multiple users in different physical locations who all need to work on the same central model.

The Problem

If you have ever worked in an environment where you have at least one designer at another office, you know the struggles associated with having a central model located anywhere but your local area network (LAN). Although not impossible, sharing a central model over a wide area network (WAN) has proven difficult – even with hardware such as Panzura or software such as Revit Server.

We’ve tried Panzura, however we’ve experienced several issues with the servers. One major issue is data corruption. I suspect that when syncing between servers happens too slowly it cause s the central models to become corrupt. Even when things ran “smoothly,” we still would have performance of the model slow down to a screeching halt if two people from opposite ends of country were in the same model. We solved this problem with worksets, but I digress.

Revit Server seems to work well, however it takes time to set up at each remote location and is recommended to have a dedicated machine per server.

The Solution

I recently had the opportunity to use Collaboration For Revit (C4R) and A360 to set up a Revit cloud model. Overall, my experience was positive; especially with the development team so actively engaged with the community.

Getting Your Model in The Cloud

The process of getting your Revit model on the A360 Cloud is simple. Install the C4R add-in and sign in to A360.

Sign In to A360 from Within Revit to use Collaboration for Revit C4R
Sign in to A360 from within Revit.

Once installed, the add-in will create a new button on the ribbon of the collaborate tab.

Collaborate on A360 and Revit
The Collaborate on A360 button appears once the add-in is installed.

By working through the steps in the Collaborate On A360 tool, your model will be uploaded to A360 and will be converted to a “Revit Cloud Model”.

Convert a local central model to a Cloud Model using Collaborate for Revit

At this point it would be wise to archive any duplicate Revit models on your LAN at this time. You wouldn't want a designer opening up the old central model on your network as opposed to the A360 Cloud Revit Model.

Working in The Cloud

Working from the A360 cloud is as simple as clicking on the A360 icon in the sidebar of Revit’s Open > Project window. You can also click the recent projects thumbnail. Note that this creates a new local automatically; did you notice that your username wasn’t added to the end of the filename?

Open an A360 Revit Cloud Model from within Revit

Once the model is open, you will work as you would if your central model was on your LAN, syncing to central and saving locally. Note the central model location will should now read: A360://[A360 Project Name]/[Revit Model]

A360 Central Model path when using Collaboration for Revit

Some Confusion Along the Way

The most confusing part of this experience was learning how A360 has two functions. It acts a file repository similar to Dropbox, but it also hosts your Revit Cloud Models. It is important to know that these are completely separate data sets. The Team Hub web interface does not directly modify your Cloud Revit Models, you must use the Manage A360 Models button on the Collaborate tab.

Manage A360 Models using Collaboration for Revit

This can be confusing because you can go so far as to delete a model from the A360 Team Hub (web interface), but the model will still exist when users browse to your A360 Project through the Revit Open > Project window.

Note the differences between two files stored on the A360 Team Hub:

A360 Team Hub to store Revit Models and Revit Cloud Models

One Revit model type “Revit Files” while the other type is “Cloud Revit Model”.

To add to the confusion, the Cloud Revit Model in the team hub is not the live model. You still need to publish your Cloud Revit Model by going to Manage A360 Models and clicking the Publish menu item. Publish your Revit Cloud Model to A360 Team HubNote that this only needs to happen if there is a need to download the Revit model from the Team Hub.

Notes for The BIM Managers

  • We ran into some limitations of using add-ins such as ElumTools. Granted we didn’t try very hard; as soon as it began to fail we bailed rather than investing hours into getting it to work.
  • Your A360 local model is not stored in the same location as the other models. If needed, you can find your local model here:%LOCALAPPDATA%\Autodesk\Revit\Autodesk Revit 2016\CollaborationCache\
  • If you have a model open that doesn’t use C4R, the “Collaborate on A360” button will be disabled or greyed out. You must either open a Cloud Revit Model or close all models to access this tool.

Yay or Nay

Collaboration for Revit requires minimal training to implement. Train your BIM Manager to setup the Revit Cloud Models and your designers can get started immediately with only about five minutes of training.

You can even have your Revit model in the A360 cloud within an hour if needed.

One downside is that we noticed at times Revit could not browse A360 projects. It was as if the server was down. After closing all Revit instances and closing the Communicator app, A360 was able to connect.

Overall, the product worked well for us. I think it is a little pricey for the service provided, however that may just be the price you pay for the luxury of accessing your models simultaneously from anywhere in the world.


Using Navisworks SwitchBack for fixing clashes in Revit

We are really excited to try out Navisworks SwitchBack. This add-in will allow you to select an element in Navisworks and switch to Revit to fix the clash. It appears as though we will finally have full Interoperability between Navisworks and Revit.

Rest assured that we will write a full review of the workflow once we’ve had a chance to use it in a real-world project!

Using a filter to show a future phase in Revit

If you are at all familiar with Revit’s phasing capabilities, you have undoubtedly run into an issue with showing future phasing. Revit currently does not allow you to do so. As of Revit 2016, future phases simply do not appear in your views and there is no way to show a future phase.

Fortunately, we have a work around and it does not involve using worksets to control visibility. It does still require some manual parametric input, however it is still a better use of visibility/graphic overrides than creating a workset.

Create a Yes/No Parameter

Revit shared parameter

The first step is to create a Project Parameter with the following settings:

  • Name: Future
  • Type/Instance: Instance
  • Discipline: Common
  • Type of Parameter: Yes/No
  • Group parameter under: Graphics

Be conscious of where you group the parameter so that it is easy to find in the Project Browser.

Personally, I would select only the categories that you need the parameter to apply to. For example, if you're in a mechanical model, you should only select Ducts, Duct Fittings, Duct Accessories, Duct Placeholders, and Flex Duct. You wouldn't want this parameter showing up on your Sheets and Views.

Check Yes for Elements That Should be Considered in The “Future Phase”

Revit parameter showing future phase

In the above example, we select the duct (highlighted in cyan) and check the box next to the “Future” parameter that we created.

Note: the checkbox will appear grey making it look disabled, however you can still tick the box.

Create a filter.

Defining rule for Revit future filter phase

In this case we will call our new filter “Future as Dashed”. In the Categories column, check the boxes of the categories in which you want this filter to apply to.

Note: If you select categories that do not have the project parameter assigned to, you will not be able to use the "Future" parameter under Filter Rules in the next step.

Modifying Revit Filters

Revit Filter - Future equals Yes

The Filter Rules should should Filter by: Future equals Yes

This tells Revit that any element that has the “Future” parameter ticked will be effected by the filter.

Add the new filter to your View or View Template.

Add a filter in Revit

Even though you’ve created the filter, you still need to add it to your View or View Template. Go to Visibility/Graphic Overrides and click Add.

Revit Visibility/Graphic Overrides Filter Future Phase as Dashed

Visibility graphic overrides with filters

Once the filter is added to your view, click on the Override button under Lines and  change the pattern to your desired linetype. In this case we will use Dash 1/8″.


Your view now successfully shows a dashed linetype for the duct we ticked as future.

Revit Ductwork dashed as Future Phase


While this is not the most ideal way to show future linetypes, it is a workaround. Until Revit offers a future setting in their Phase Filters, this is the best solution I have come up with.

I am open to discussions of why this works or doesn’t work for you. If you have a better suggestion, please don’t hesitate to comment so that we can discuss.

We should all be using Revit’s worksets for efficient worksharing, not visibility / graphic overrides.

More and more I’ve had debates regarding worksets being used for visibility. My stance is to avoid using worksets to control visibility and graphic overrides – save this task for filters. Using worksets for visibility graphic overrides will completely strip your ability to use works sets the Revit way, which is to efficiently share work.

This post isn’t about why you shouldn’t use worksets for visibility and graphic overrides in Revit, this post will be focused on how to increase Revit’s performance when using worksets in a large central model.

The Problem and Solution

Recently, I’ve had the opportunity to test some techniques on a large 500,000 square foot healthcare project in which we had multiple engineers in the model and in multiple offices. You can imagine the slow performance of Revit in this type situation. Connecting a pipe to a system would take 20 seconds or more. Does this sound familiar?

When I had set up this project I never relied on using worksets to control visibility of elements and everything was modeled on Workset1. This may seem odd to most of you, especially the AutoCAD users, but you must remember that Revit worksets are not the same thing as AutoCAD layers and should never be treated as such.

So, I sat down with the engineers and asked how they were sharing the workload load. They were splitting the workload by working on a single floor each. Too easy.

The first step is to create a workset per level. That was the easy part.

Reduce your workset usage in Revit.

I then drew a 3D section box using Rushforth‘s 3D section tool. This allowed me to create a 3D view of each floor individually. I then selected all of the elements on each level. I was careful not to select pipe risers in shafts because I wanted to leave them on Workset1 so that others will still be able to connect into them.

All pipes, pipe fittings, and pipe accessories were then moved to their respective level’s workset.

The next step was to check out the workset to the engineer who was working on that level. Now that he had ownership of the entire workset, connecting a pipe to a system was back to normal which was about two seconds to connect a pipe!

The beauty of this method is that once you split your model using worksets, it is extremely easy to merge the elements back with Workset1. Simply delete the workset and Revit will prompt you to choose a workset to move the elements to. No elements will be deleted in this process.

Deleting a workset in Revit and moving elements to Workset1

Why does checking out worksets help with efficiency of the central model?

Let’s get into some technical details about how this works.

When you are working in a local model and using the Borrow Elements method, every single time you modify an element, Revit has to communicate with the central model and check if someone else is borrowing that element. Furthermore, communication to the central model is needed when you claim ownership of an element.

The other method of worksharing in Revit is to Make Worksets Editable (or “checking out worksets”). This means you claim ownership of every element that is assigned to that workset. That means your local does not communicate with the central model until you synchronize with the central model. You are truly working locally.

Use worksets for worksharing purposes only.

Again, if you use worksets for V/G overrides, you will not have the ability to bifurcate your model because you don’t have the freedom to move elements between worksets on the fly.

Questions or comments? Drop us a line in the comment box below.

Revit Macro – List electrical panel schedules and the sheets that they are placed on

Revit Macro Programming in C# and Python. Create your own Revit add-in or macros.

We found a quick-and-dirty way to show what sheets your electrical panel schedules are on. Essentially, it is a schedule of schedules. We haven’t found any other way to accomplish this as of yet and we welcome any improvements to this code.

What this does is simply create a dialog box with all of your electrical panel schedules in your model and what sheets they are on. With the box open do a ctrl-c (copy to clipboard) and then paste into excel. Not very elegant but gets the job done.

For all you advanced coders out there, we could use some help in getting this to become a more elegant solution!

To create a Revit macro:

  1. Open up the macro manager and create a new C# module – name it whatever you want.
  2. With the module that you have just created selected, click the Macro button and name your macro “SchedulingSchedules”.
  3. Revit will then open “SharpDevelop”, an IDE for coding Revit macros. Look for the code block that SharpDevelop generated:
    public void SchedulingSchedules()

    and paste the code below in between the curly braces { }.

  4. Then you need to add “using System.Text;” at the top with the other using statements.
  5. Click ‘Build’ menu and then ‘Build Solution (F8)’.
  6. Switch back to Revit and you will see the “SchedulingSchedules” macro. Select the macro and click the Run button.


public void SchedulingSchedules()
             UIApplication uiApp = this.Application;    
             Application app = uiApp.Application;
             UIDocument uiDoc = uiApp.ActiveUIDocument; 
             Document Doc = uiDoc.Document;
             StringBuilder sb = new StringBuilder(); 
             ElementCategoryFilter sheetcf = new ElementCategoryFilter(BuiltInCategory.OST_Sheets);
             FilteredElementCollector sheetCollector = new FilteredElementCollector(Doc); 
             IList<Element> sheetlist = sheetCollector.WherePasses(sheetcf).WhereElementIsNotElementType().ToElements(); 
             foreach(Element sheet in sheetlist) { 
                 ElementCategoryFilter panelcf = new ElementCategoryFilter(BuiltInCategory.OST_PanelScheduleGraphics); 
                 FilteredElementCollector panelCollector = new FilteredElementCollector(Doc, sheet.Id); 
                 IList<Element> panellist = panelCollector.WherePasses(panelcf).WhereElementIsNotElementType().ToElements(); 
                 foreach(Element panel in panellist) { 
                     sb.AppendLine(panel.Name+" \t"+sheet.get_Parameter(BuiltInParameter.SHEET_NUMBER).AsString()); 
             TaskDialog.Show("Revit", sb.ToString()); 

ArchSmarter Toolbox – Free Macros for Revit to Maximize Efficiency


We recently stumbled onto a set of Revit macros that may be of use to all Revit users regardless of skill level. The good folks at ArchSmarter have a toolbox of Revit macros that maximize efficiency on mundane tasks such as duplicating views, aligning views on sheets, and batch linking Revit models. The best part about these macros is that they’re free – all you need to do is register on the ArchSmarter website.

We are currently working on trying these tools out, but we urge you to try them on your end and give us feedback on your experiences. We will updated this article as our experience with these Revit Macros progress.

Below is a list of the macros included in the ArchSmarter Toolbox for Revit

Join ArchSmarter to download the toolbox.

Overlapping Grid Bubbles in Revit and How to Fix Them Globally Across Multiple Views

Revit grid bubbles overlap when gridlines are too close.

How do you deal with overlapping grid bubbles? Whether you use “elbows” on your gridlines or offset your bubbles, you should never have to go to each view individually and manually change them.

Revit has the ability to apply the visual adjustments to your gridlines across multiple views using “Propagate Extents”. It seems as though this should be a relatively easy task, however there are a few tricks to getting this to work for your project.

1) Turn off the Crop View property of your view.

First of all, your “Propagate Extents” button will do absolutely nothing if your crop regions are ticked in your view. Ensure that this is not checked on the view your are adjusting your gridlines in.

Remove crop regions in your Revit views first

2) Adjust your Gridlines.

Once you’ve turned off the property which crops your view, you may adjust your gridlines to include elbows by clicking on the tiny break symbol near the bubble. This gives you a grip to freely move the grid bubble. Note that by default, Revit has grid overrides set to 3D, but it is worth looking for the small “3D” text next to your gridlines when you select them.

Add grid elbow for overlapping grid bubbles.

3) Turn off the Crop View property for all views you need to apply the grid override to.

Another key step in getting Propagate Extents to work for you is ensuring that the crop region is off for all views that you would like to apply these grid overrides to. Otherwise, they will not show up as an option to apply them to in your “propagate extents” dialogue box. You can select multiple views in the Project Browser by holding shift or control on your keyboard as you select views.

Revit - Select multiple views and adjust properties to crop.

4) Select all grids.

Once all of your grids are adjusted and all of your views have their crop regions turned off, you need to select all grids. An easy way to do so is to right click on a gridline and choose “Select All Instances” > “Visible in View”.

Select all grids in view in Revit

5) Apply Propagate Extents

With all grids still selected, click the Propagate Extents button on your ribbon under Modify | Grids (it will be a contextual tab on the far right when you have grids selected).

Use Revit to Propagate Extents across multiple views

A window will pop up showing all of your views. Remember, only views with the crop regions OFF will appear in this dialogue box.

Select views you would like to apply grid visibility to.

6) Don’t forget to turn your crop regions and/or scope boxes back on!

Revit - Select multiple views and adjust properties to crop.