I have developed a working BIM360 to on-premises backup mechanism. There were a few different ways to go…

 

I initially considered:

  • Hacking Windows Explorer to touch the files in the BIM 360 node and try and trigger the BIM360 Docs download and copy to local PC or network location
  • Developing a Forge app that essentially pulls the desired models out of the BIM 360 cloud to desired location?

In the end, I decided to use the Revit API (Dynamo and Python), along with VirtualBuiltApp, to essentially reverse engineer a folder structure from the local CollaborationCache folder. These ideas are hinted at here.

 

In simple terms, the BIM 360 Docs on-premises backup workflow is:

  1. Create a super federated BIM 360 model (with all other BIM 360 models linked into it)
  2. A Dynamo script reloads all links in order to cache them locally
  3. The same script interrogates, then determines the target file name and folder from VirtualBuiltApp
  4. Dynamo then copies the files into their ‘backup’ location on the local network

 

Some more detail is presented below:

 

A) Cache Cleaner CMD Script (may not really be necessary, as the ‘reload’ should overwrite superseded cache anyway):

Kill Revit if Open… be careful of below steps, particularly if Revit has crashed recently. You might need these local copies 🙂

cd "%LOCALAPPDATA%\Autodesk\Revit\Autodesk Revit 2018"
cd CollaborationCache
rmdir oldCache
mkdir oldCache
for /d %i in (*) do move "%~i" oldCache

 

B) Manual steps to setup Revit model environment to run the script:

  1. Open Revit
  2. Open Federated BIM 360 file (worksets closed)
  3. Unload all links
  4. Open all Worksets

 

C) Dynamo Script:
Run Dynamo (Python) script that reloads and unloads all links (this collects .rvt into cache). Key Python commands to use are: RevitLinkType.Load() and RevitLinkType.Unload(None).

Potential Problems:

  • Coordination Monitor alert, no longer exists
  • Instance of link needs Coordination Review
  • “Some numerical data within the imported file was out of range. This numerical data has been truncated.”
  • “Geometry in the file … has extents greater than 20 miles (33km).”

Local cached Models appear into

%LOCALAPPDATA%\Autodesk\Revit\Autodesk Revit 2018\mainCacheFolder\hostModelIdFolder\LinkedModels\*.rvt

 

D) Dynamo Script continues to:
Rename and copy to desired target location. How do we determine this?

Using proprietary VirtualBuiltApp schema:

  1. Use known directory data along with known JSON data for the BIM 360 files (harvested previously by our proprietary systems)
  2. Build list of target paths
  3. Run copy from Dynamo to copy to target network directory

Part of the script:

 

Note: you can actually browse some BIM 360 Docs data in a .sqlite3 file located in path shown below. You can use DB Browser for SQLite as a viewer.

If you are still running a relatively small SSD (like 512gb), you might see that your C drive fills up pretty quickly while working on a large BIM 360 Design Revit cloud worksharing project. See below image, where the CollaborationCache folder is using almost 50gb of space on my machine:

 

While I realise that the SSD is the best place to have that data in terms of performance, if you don’t have the space available you may consider moving your CollaborationCache folder to a secondary, larger hard drive. I used a symbolic link to do this, with the script below:

if exist "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache" rename "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache" CollaborationCache.old
mklink /d "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache" E:\C4R
if not exist E:\C4R MD E:\C4R
robocopy /mir "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache.old" E:\C4R

 

This creates a folder called C4R on your E drive, copies the CollaborationCache over, and sets up the symbolic link. To use it:

  1. Sync all Revit instances and shut down Revit completely
  2. Make a CMD from the code above and run it as Administrator (elevated privileges required for mklink )
  3. In Explorer, confirm you have the symlink and delete the .old folder :

  4. Start Revit 2018

 

Please use the script with care 🙂

You can also refer to my previous post where I did the same with the Tekla BIMsight cache folder.

 

Here is the CMD script to move the folder for Revit 2018 to a drive with R drive letter:

if exist "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache" rename "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache" CollaborationCache.old
mklink /d "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache" R:\B3D\R2018
if not exist R:\B3D MD R:\B3D
if not exist R:\B3D\R2018 MD R:\B3D\R2018
robocopy /mir "%localappdata%\Autodesk\Revit\Autodesk Revit 2018\CollaborationCache.old" R:\B3D\R2018

 

Here is the CMD script to move the folder for Revit 2019 to a drive with R drive letter:

if exist "%localappdata%\Autodesk\Revit\Autodesk Revit 2019\CollaborationCache" rename "%localappdata%\Autodesk\Revit\Autodesk Revit 2019\CollaborationCache" CollaborationCache.old
mklink /d "%localappdata%\Autodesk\Revit\Autodesk Revit 2019\CollaborationCache" R:\B3D\R2019
if not exist R:\B3D MD R:\B3D
if not exist R:\B3DR2019 MD R:\B3D\R2019
robocopy /mir "%localappdata%\Autodesk\Revit\Autodesk Revit 2019\CollaborationCache.old" R:\B3D\R2019

 

Here is the CMD script to move the BIM 360 cache folder for Revit 2020 to a drive with R drive letter:

if exist "%localappdata%\Autodesk\Revit\Autodesk Revit 2020\CollaborationCache" rename "%localappdata%\Autodesk\Revit\Autodesk Revit 2020\CollaborationCache" CollaborationCache.old
mklink /d "%localappdata%\Autodesk\Revit\Autodesk Revit 2020\CollaborationCache" R:\B3D\R2020
if not exist R:\B3D MD R:\B3D
if not exist R:\B3D\R2020 MD R:\B3D\R2020
robocopy /mir "%localappdata%\Autodesk\Revit\Autodesk Revit 2020\CollaborationCache.old" R:\B3D\R2020

 

Here is the CMD script to move the BIM360 cache folder for Revit 2021 to a drive with R drive letter:

if exist "%localappdata%\Autodesk\Revit\Autodesk Revit 2021\CollaborationCache" rename "%localappdata%\Autodesk\Revit\Autodesk Revit 2021\CollaborationCache" CollaborationCache.old
mklink /d "%localappdata%\Autodesk\Revit\Autodesk Revit 2021\CollaborationCache" R:\B3D\R2021
if not exist R:\B3D MD R:\B3D
if not exist R:\B3D\R2021 MD R:\B3D\R2021
robocopy /mir "%localappdata%\Autodesk\Revit\Autodesk Revit 2021\CollaborationCache.old" R:\B3D\R2021

Here is the CMD script to move the BIM360 cache folder for Revit 2022 to a drive with R drive letter:

if exist "%localappdata%\Autodesk\Revit\Autodesk Revit 2022\CollaborationCache" rename "%localappdata%\Autodesk\Revit\Autodesk Revit 2022\CollaborationCache" CollaborationCache.old
mklink /d "%localappdata%\Autodesk\Revit\Autodesk Revit 2022\CollaborationCache" R:\B3D\R2022
if not exist R:\B3D MD R:\B3D
if not exist R:\B3D\R2022 MD R:\B3D\R2022
robocopy /mir "%localappdata%\Autodesk\Revit\Autodesk Revit 2022\CollaborationCache.old" R:\B3D\R2022

Here is the CMD script to move the BIM360 cache folder for Revit 2023 to a drive with R drive letter:

if exist "%localappdata%\Autodesk\Revit\Autodesk Revit 2023\CollaborationCache" rename "%localappdata%\Autodesk\Revit\Autodesk Revit 2023\CollaborationCache" CollaborationCache.old
mklink /d "%localappdata%\Autodesk\Revit\Autodesk Revit 2023\CollaborationCache" R:\B3D\R2023
if not exist R:\B3D MD R:\B3D
if not exist R:\B3D\R2023 MD R:\B3D\R2023
robocopy /mir "%localappdata%\Autodesk\Revit\Autodesk Revit 2023\CollaborationCache.old" R:\B3D\R2023

 

Here is a way to store your Outlook signatures on OneDrive using a symlink:

if exist %userprofile%\AppData\Roaming\Microsoft\Signatures rename %userprofile%\AppData\Roaming\Microsoft\Signatures Signatures.old
mklink /d %userprofile%\AppData\Roaming\Microsoft\Signatures E:\LukeOneDrive\USERPROFILE\Microsoft\Signatures