When working with a large project, you may often close all or most Worksets for performance reasons.

Secret #1

Did you know that objects still show in Schedules when the Workset is closed? And even if the Visible in all views checkbox is unticked?

Additionally, the Schedules dialog does not give us an easy method to filter by Workset. Sometimes this results in some weird workarounds like using Dynamo to copy the Workset name to a parameter in each element (yes, I have seen this on real projects).

But what happens if we try Highlight in Model now, with these elements on closed worksets?

Secret #2

Interestingly, Revit will immediately and transparently open the Workset that the object resides on. This happens even if Revit can’t find the object in a view (such as because the Workset is set to be invisible in all views). You will not be warned or asked about this ‘open Workset’ action.

This automatic action does not create an entry in the Undo list, and therefore you must manually open the Worksets dialog and close the Workset yourself.

I’ll leave it up to you to decide if this is desired functionality or not? But it is definitely something to be aware of when working with Revit Schedules, Closed Worksets, and the Highlight in Model button.

Revizto works by maintaining a local copy of cloud models, that are synced periodically with the cloud. The Issue Tracker will always try and automatically remain in-sync if an internet connection is available. This allows you to do things like download all current models and sheets to an iPad, head out on site (where you may have no internet) and do some work, come back to the office and then sync the changes.

However, from time to time you may want to clear the cache of a particular project. Typically, this is so you can confirm you are running an identical version to the current cloud model. To do that, you have to clear your local cache of that particular model. Here is how you do it:

1. Sync the model if you have any recent local changes (this is to upload all of your local work)
2. Close Revizto.
3. Open Revizto. While in the project gallery, click on “Edit” button in the top right corner. Then click on that project and choose “Clear cache” option.

4. Open Revizto project. Your project will re-sync with the latest cloud version.

What if you want to completely remove all local project data at once? Or possibly, you are running out of disk space in the normal ‘working folder’ location (yourUser\Documents\Revizto4). In that case, you want to move the working folder. Then Revizto will download the latest cloud data for every project. As above, ensure you have synced all your local models first… Then take these steps:

  1. Open Revizto
  2. Click Preferences
  3. Click General tab
  4. Select ‘Change’ next to ‘Working folder’ and choose a new, empty folder. It should have sufficient disk space to download all the project data:

You probably should close and re-open Revizto, and then go ahead and open your project. Again, it will sync all data from the cloud for you.

Autodesk is looking at using “machine learning to automate speech and image recognition, make photos and videos searchable using system generated (automated) SmartTags, and to provide metrics on project safety, productivity and quality.”

From email:

Investment in Smartvid.io. Today Boston-based construction-focused startup Smartvid.io founder Josh Kanner announced the close of the company’s Series A funding round for which Autodesk is a proud investor. Smartvid.io embraces machine learning to automate speech and image recognition, make photos and videos searchable using system generated (automated) SmartTags, and to provide metrics on project safety, productivity and quality. The investment is expected to accelerate the delivery of AI to the Architecture, Engineering, and Construction (AEC) industry and the built environment as a whole. Smartvid.io is also now integrated into Autodesk’s BIM 360 software. Mr. Kanner was the co-founder of Vela Systems, which ultimately became Autodesk BIM 360 Field after Kanner’s company was acquired by Autodesk.

Revit creates a bit of a mess sometimes, leaving behind backup and journal files that can take up disk space and clog your system. I have posted about a few cleanup tools before, including:

You may also have heard about MoveBackup. This tool was created by Maxence Delannoy and has now been renamed to Wormhole for Revit. It comes as a 30 day trial and it can move your Revit backup files to a directory that you choose.

You can download the Revit 2016 – 2018 version here and the 2015 version here.

Set Path
Backups moved automatically

From the main page:

Wormhole for Revit with 2018 support (version 0.5

en-US version: https://docs.google.com/uc?export=download&id=0B_UzIApsl084UEdEb2dCQ2dsckU

fr-FR version: https://docs.google.com/uc?export=download&id=0B_UzIApsl084eFlHdjZNbTEwWms

Support for Revit 2015 has been dropped. So if you’re still using this version of Revit, please download the 0.4 here : https://docs.google.com/uc?export=download&id=0B_UzIApsl084dG9wWTYxUmRoTlU

When working in Revit with linked files and worksets, it can be pretty exciting / maddening to figure out where an element actually is. I’m not talking about the 33 Reasons Something Might be Hidden (and here), the Order of Linework Overrides, Places to Hide Things, or even the View Discipline.  I’m talking about whether or not an object is actually even loaded into the Revit session for viewing purposes…

Consider this hierarchy and let me know what you think:

“I can’t find this object, is it loaded?”

  • If the current model is non-workshared:
    1. Does the object reside in a link?
    2. Is the link loaded?
    3. In Manage Worksets for the link, is the relevant Workset open?
  • If the current model is workshared:
    1. Is the object in the current model?
      • If yes, is the Workset it resides on open?
    2. Does the object reside in a link? If yes:
      • Is the Link Type Workset Open?
      • Is the Link Instance Workset Open?
      • Is the Link loaded in Manage Links?
        • In Manage Worksets for the link, is the relevant Workset open?

The above does not even consider the next level of nesting (Attached Links to a Link loaded in the current Host Revit model).

Enjoy Revit everyone 🙂

There is a nice little addin in the works from Emanuel Favreau … he is working on a Revit to Unity exporter that includes all materials and textures. You can open a sample model in WebGL here (probably should use Chrome).

There is obviously a lot of development in the industry at the moment to create the best experience in moving BIM models into gaming environments for various reasons, and there are a lot of solutions that are doing this in various ways.  Typically, these offer real time rendering and visualization, and the side benefit of allowing models to be viewed in VR. Which method do you recommend?

Sample of Emanuel’s addin in action:

via Twitter at this link


I have posted about other game engine software for BIM previously, such as:

Export VR

Also on the app store, you can also find Walk-Through-3D™ for Autodesk ® Revit® by AMC Bridge. This is another Unity export plugin with the following features:

The add-in supports export of 3D model geometry from Revit to Unity allowing users to have the first person 3D shooter game like experience while using Revit created model as the 3D environment.

The main features of the add-in includes:

  • Export of 3D model geometry with materials and textures from Revit to Walk-Through-3D.
  • Manipulation of the resulting 3D model in a similar fashion to a 3D first-person shooter game.
  • Support of textures along with an ability to apply weather effects.
  • Generation of a standalone executable package to view the exported Revit model in a three-dimensional representation that requires neither Autodesk Revit nor Unity installations.
  • Support of HTC® Vive virtual reality headset and controllers.
  • Support for Intel® RealSense™ camera

The video below demonstrates the add-in’s basic functionalities:


Next video demonstrates the add-in control via HTC Vive:


Next video demonstrates the add-in control via Intel® RealSense™:


Walk-Through-3D is compatible with Revit 2016-2018.

Read Help Document

I have posted about BIMserver a few times before, including how to setup and run your own IFC web server. It seems that BIMserver and IFCWebserver are actually different but similar things (see this page). There is a publicly accessible instance of IFC Web Server over at this link.

The hosted version seems to be a bit of tech demonstration rather than a full production tool? Here is a link to the GitHub repos as well.

To test it out, you can take these basic steps:

  1. Create a user account and login
  2. Upload an IFC file (I tried a 20mb file which took quite a while)
  3. Wait for processing
  4. View and work with your file

Here is a look at the basic interface:

It offers a few interesting functions, including the ability to browse the data as a tree:


From the website:

IFC WebServer is a data model server and online viewer for Building Information Models (BIM) based on IFC standards.

It aims to simplify sharing and exchanging of information from BIM models using open and standard formats like (IFC, HTML, XML, CSV, JSON) and check the quality of BIM models (Level of Details, Level of Development). BIM managers and designers can query, filter and make reports about any information inside IFC models easily.

The project consists mainly of two parts:

(1) Data model server IFCWebServer

IFCWebServer enable 100% access to all information and relations inside IFC models. It supports  all IFC official release starting with IFC2X_Final issued on 2001 to the latest release IFC4 Add 2 release issued on July 2016. Moreover, it supports any valid IFC sub schema or extended schema so it can be used by researchers and IFC developers .

The IFCWebServer can be used also in universities as an easy to use portal within BIM courses. Students can register and upload IFC models, explore the models structure, apply filters, create sub-models, generate reports, study the IFC data model and compare IFC official releases.

(2) Online BIMViewer

Despite of having easy access to the information in BIM models as the main interest (through queries, filters, scripts and reports), the online 3D visualization offered by BIMViewer provide an handy way to view, share BIM models and visualize the results of data queries online inside the web browser.

Who qualifies?

  • available to subscribers and current maintenance plan customers

Direct Download Link

Top feature:

  • scale a fill pattern without having to reload it (plus it automatically previews the scale change)


As per the release notes, it will force a Dynamo upgrade onto your system. Currently for me, I keep DynamoInstall1.2.1.exe handy: so I uninstall Dynamo 1.3.2 and install 1.2.1. This allows me to have backward compatibility to Revit 2015, which I still need (for now).


Release Notes

YouTube Playlist here

Main Autodesk post here

Forum link here

Interesting little release by Dimitar Venkov on Github a few months ago. It is essentially a Python shell for Navisworks 2016. You install by unzipping as per instructions below. You may have heard about RevitPythonShell, but obviously this one is for Navis.

To install, simply extract the zip archive in the below folder:

%APPDATA%\Autodesk Navisworks Manage 2016\Plugins


You can read more about the features at the main page here.

  • interactive IronPython interpreter for exploring the API
    • with syntax highlighting and autocompletion (in the console only)
    • based on the IronLab project
  • batteries included! (Python standard library is bundled as a resource in the RpsRuntime.dll)
  • full access to the .NET framework and the Navis API
  • configurable “environment” variables that can be used in your scripts
  • save “external scripts” for reuse and start collecting your awesome hacks!
  • run scripts at Navisworks startup

And some example/s are in a GitHub folder:

The Revit API is actually something pretty special. People will go on and on about how Revit needs this feature or that feature, but the fact is that you can build almost any feature you like with the API. Recently, I have been running quite a few batch operations from the scope of a federated Revit model: so I will have one RVT file, with hundreds of Revit links, and I will process them from that main federated model.

On one recent project, we had to deliver to a Client a linked dataset, with Revit link file paths resolving correctly. As you know, people work in many different IT environments, and the pathing of Revit links may vary widely.

I set up an ‘approved’ list of Revit file paths, that looked something like this:

I knew that in Dynamo with Python I could get a lot of information about linked files using the ExternalFileReference class. What I discovered during this process is that there is a TransmissionData API class that let’s you do some pretty interesting things…

You see, I was thinking I would have to set up a batch method to open this files, change the file paths, and close them. But the TransmissionData class is basically what is implemented in eTransmit for Revit – it allows you to ‘lightly touch’ the Revit file and simply change the Revit link paths, and also set a switch saying ‘this file has been transmitted’. This puts the file in an appropriate state for re-opening in the new path environment. Pretty cool huh?

Once I figured out how to implement those TransmissionData actions in Python, I just had to build a node that, running from the federated model:

  • examines each link for the links inside of it
  • replaces erroneous paths with the correct file path
  • sets the new paths to the file

I did this in the hacky way of a “counter with List.Map” in Dynamo. In the future I’ll probably fix it up to be a ‘proper’ Python script but this works for now. In about an hour it fixed the linked file paths of 600 Revit links, all with the click of a single button 🙂

You can download the main definition here:

External References FINAL

You can get the supporting nodes from GitHub here:


As usual, please use with care. And it is probably worth backing up your files before running something like this.

It is kinda more Python than Dynamo but hey, you get the picture 🙂

In fact, here is the Python code:

import clr
from Autodesk.DesignScript.Geometry import *

# Import RevitAPI
import Autodesk
from Autodesk.Revit.DB import *

import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

from System.Collections.Generic import *

import Revit

from System import Guid

import System

import sys
pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'

import os.path

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

tempvalue = IN[0]
approvedFilenames = IN[1]
approvedFilepaths = IN[2]
targetfilepath = IN[5]

def stripquotes(string):
	string = string[1:-1]
	return string

transData = TransmissionData.ReadTransmissionData(tempvalue)
erefids = transData.GetAllExternalFileReferenceIds()
refdata = []
for x in erefids:

currentpaths, currenterefType, currenterefPath, pstr = [], [], [], []

for e in refdata:
for s in currentpaths:
filenames = []
for p in pstr:
	templist = os.path.split(p)
newpath = []
indices = []
failpath = []
origcounter = 0
matchrefs = []
newpathtypes, newbools = [], []
pathtypevar = IN[3]
for f in filenames:
	tempindex = approvedFilenames.index(f) if f in approvedFilenames else -1
	if tempindex == -1:
	origcounter = origcounter + 1

elementcount = len(erefids)
hostfile = currentfilepathstring * elementcount
currentdata = []

newdata = []

setlength = len(newpath)
setcounter = range(setlength)
successreport = []
setdata = IN[4]
if setdata:
	for s in setcounter:
			transData.SetDesiredReferenceData(matchrefs[s], newpath[s], newpathtypes[s], newbools[s])
			successreport.append("Success setting data")
			successreport.append("Failure setting data")
	successreport.append("You need to set the switch to True")

if setdata:
		transData.IsTransmitted = True
		transData.WriteTransmissionData(targetfilepath, transData)
		successreport.append("Success WRITING data")
		successreport.append("Failure WRITING data")
#Assign your output to the OUT variable.
OUT = successreport, currentdata, newdata

If you want to read more about the API methods used: