As software and standards mature and even become archaic, they inevitably attract baggage along the way. Years of technical debt amassed by well-intentioned developers and product managers will be paid for by us and our children.

This is particularly evident when we start talking about the Id of Revit elements, and the IFC GUID syntax. As most of you are aware, Revit carries a number of different identifying attributes for each and every element. Here is a basic list:

  • Element Id – the numerical form of a Revit Id, you can interact directly with this using the Select By Id command in Revit
  • UniqueId – “A stable unique identifier for an element within the document.” This is not a correctly formed UUID, but rather a concatenation of a standard UUID for the Revit EpisodeId (session based), along with the Revit element Id. From Jeremy’s post: similar to the standard GUID format, but has 8 additional characters at the end. These 8 additional hexadecimal characters are large enough to store 4 bytes or a 32 bit number, which is exactly the size of a Revit element id.
  • DwfGuid (Export Guid) – this is a correctly formed UUID in .NET / standard format
  • IfcGuid – identical to DwfGuid, but encoded differently according to IFC rules created in the mid-90s. At the time, it was deemed worthwhile to ‘compress’ the IFC Guid to the shorter form we still have to deal with today.

It would be nice if Revit and IFC shared a single common unique identifying syntax, but unfortunately this is not the case.

The above Ids do actually bear some predictable relationship to each other. The UniqueId is formed by Revit joining the EpisodeId and the encoded Element Id, the Dwf or Export Guid is created by an algorithm that has a number of conditional rules, and the Dwf Guid can be converted to the backwards-compatible IfcGuid format through a different algorithm, originally created in C. Those algorithms can be sourced in various places (see links in Further Reading below).

Also, some of these get exposed in different ways – if you create Element-bound BCF files, they will typically show the IFC Guid syntax. Further, if you export an IFC file from Revit and tick the option on the Exporter, it will write the IfcGuid to a parameter on the element.

You can query the Element Id directly in Revit (Modify ribbon, Inquiry panel, IDs of Selection):

However, for the purpose of this post, let’s assume you are using Dynamo with IronPython, and you want to query all 4 Ids from an element.

We at least need to import the Revit API and the Revit IFC API:

clr.AddReference("RevitAPI")
import Autodesk 
from Autodesk.Revit.DB import *
clr.AddReference('RevitAPIIFC')
from Autodesk.Revit.DB.IFC import *

 

Following this, we can use the various Dynamo and Python commands to access the Ids:

elementIds, uniqueIds, DwfGuids, IfcGuids, successlist = [], [], [], [], []
for i in e:
    try:
        elementIds.append(i.Id)
        uniqueIds.append(i.UniqueId)
        DwfGuids.append(ExportUtils.GetExportId(doc, ElementId(i.Id)))
        IfcGuids.append(ExporterIFCUtils.CreateSubElementGUID (UnwrapElement(i),0))
        successlist.append("Success")
    except:
        successlist.append("Failure")
OUT = elementIds, uniqueIds, DwfGuids, IfcGuids, successlist

 

Notice the commands and properties used:

  • Element Id – query the Element.Id member
  • Unique Id – query the Element.UniqueId member
  • Dwf or Export Guid – use the ExportUtils.GetExportId method
  • IfcGuid – use the ExporterIFCUtils.CreateSubElementGUID method (index 0 refers to the main element itself)

 

From here, I create a Dynamo node that eats Revit elements and gives us back these Id values:

before node created

 

After “All The Ids” node created

 

This node will be published in the Bakery package on the package manager, and to Github.

 

Further, our VirtualBuiltApp platform has been developed to store and query multiple Ids for a single element.

 

Example output from the Dynamo / Python (initial test showed the Dwf Guid is still a .NET object, that probably should get converted to a string for consistency).

[2424]
['c98618bf-7112-4e90-8a71-8ab768f2b1c0-00000978']
[<System.Guid object at 0x0000000000000071 [c98618bf-7112-4e90-8a71-8ab768f2b8b8]>]
['39XXY$SH9Ea8fnYhTeyhYu']

 

I added str() to the Python:

 

Final test showing the 4 different Id values for a single object:

2424
'c98618bf-7112-4e90-8a71-8ab768f2b1c0-00000978'
'c98618bf-7112-4e90-8a71-8ab768f2b8b8'
'39XXY$SH9Ea8fnYhTeyhYu'

 

Further reading:

I love it when people take something I hacked together and make it even better! A while ago I posted a script to disable all Revit addins, and recently Thomas Vogt sent me some much improved versions.

  • Deactivate with Teilnehmer08_1_RevitAddonsDeaktivierenPowerShell.ps1
  • Activate with Teilnehmer08_2_RevitAddonsAktivierenPowerShell.ps1

 

You can download a ZIP file containing the Powershell scripts here:

Addin_Activate_Deactivate_2017-2020

 

Disclaimers (use at your own risk etc) and notes on how to use the scripts are as per previous post.

 

Here is the note from Thomas:

Hi Luke,
I have used your script from https://wrw.is/script-to-disable-all-revit-addins/ and I have adjusted it a bit. I have local users without admin rights (training center computers), so I go to the users computer, open the file with rightclick > Powershell and the Admin login is shown. I got also some problems with the allusersprofile and the appdata path variable, because as soon as I login as admin, the appdata path is not anymore the user path. Thus I have changed it to the path itself. The last 2 lines help to see the errors.

Thanks for your script, it helped me a lot! My scripts are attached if you want to use it on your blog =)

Thanks to Thomas Vogt for sharing his work on this!

A while back, I conducted extensive research into Revit content management tools. I was commissioned by Unifi to do this, and I told the story of the process over here. You can also watch the related webinar here. Over the last couple of years, some of you have approached me to gain access to the master Excel comparison matrix document that I produced. Recently, Jay Merlan updated this document on behalf of Unifi and it has now been approved for public release!

Here is a link to download a ZIP archive containing the Excel document.

Data Entry and Scoring Matrix

The document is very detailed and consists of a number of key sections:

  • Matrix – where data is entered and initial scores are calculated. This includes a ‘feature weight’ where you can allocate how important a given feature is to you personally.
  • Screencasts – links to actually tests undertaken
  • Test Results – summary sheet
  • Cost data – a series of sheets for attempting to compare and calculate overall cost of the content management system
  • Summary Pivot Tables and Charts
  • Overall Summary Chart
Summary PivotChart

 

As it is an Excel document using Formulas and Pivot Tables, it could be a very powerful starting point for you to dig in and investigate the various features of Revit and BIM Content Management systems and Content Providers. I hope you find it useful!

Feel free to comment here with any of your thoughts, and if you have any questions about the document and how it works.

Main benchmark categories:

  • Added Value Data 1 – AD1.
  • Batch Tests 1  – BT1.
  • Capability Tests 1 – CT1.
  • Company Info and Support Data – CD1.
  • Feature Comparison Data 1 – FD1.
  • Management Capability Scores 1 – MS1.
  • Management Feature Data 1 – MD1.
  • Metadata Tests 1 – MT1.
  • Speed Tests 1 – SP1.
  • Stability Tests 1 – ST1.
  • User Experience Data 1 – UX1.
  • User Experience Data 2 – Bad – UX2.

Information categories:

  • Company
  • Content
  • Cost
  • Deployment
  • Development
  • Management
  • Platform
  • Revit integration
  • Software
  • Support
  • User

I have been resisting the 2019.2 update because there were some issues with it originally, plus the forced upgrade of Dynamo. I decided to go ahead with Revit 2019.2.1 Hotfix today. I think that the forced Dynamo update occurred with the 2019.2 major point version, but 2019.2.1 seems to install without forcing the Dynamo upgrade – on my machine, Dynamo 1.3.4.6666 was not updated during the 2019.2.1 hotfix installation. Here are the links:

Direct Download Link: Autodesk_Revit_2019_2_1.exe

Autodesk® Revit® 2019.2.1 Hotfix Release Notes

Autodesk® Only Available Online

Improvements to the functionality. For more information about these improvements, see the What’s New section of the Revit 2019 Online Help.

Autodesk Revit 2019.2.1 Hotfix Readme

Autodesk Revit 2019.2.1 Hotfix Readme

If Revit 2019 and Revit LT 2019 are installed side-by-side and the 2019.2.1 Hotfix is only applied to one of these products, a “Could not load type ‘Autodesk.Revit.DB.ICloudExternalServer’ from assembly” error will be displayed when launching the non-updated product. To alleviate this error, make sure to apply the 2019.2.1 Hotfix to both Revit and Revit LT in side-by-side configurations.

Over at Virtual Built Technology, we have an aspirational view of our industry – that together, we can arrive at a set of best practice workflows for BIM and VDC projects.

We have been developing and refining our own set of internal workflows for a number of years, and today we would like to start sharing those with the world.

We will periodically post best practice workflows in the Resources menu on our site.

bim and vdc resources

From here you can browse to various resource types, including:

  • Workflows – for workflow documents and flow charts
  • Content – for BIM files like Revit templates and families
  • Automation – for scripts, like Dynamo graphs

The individual resource pages are also fully Disqus comment enabled, so you can start a conversation there. Let us know if you think we are on the right track… or not 🙂

Already, you will find our How to Use a Revit Control File guide, and a script that will automatically create section-boxed 3D views from a Revit Control File.

Also, from anywhere on our website you can immediately contact us using the Intercom badge at the bottom right of the screen – it looks like this:

Click on it anytime and let us know if you have any questions or suggestions, or would like assistance with your BIM and VDC projects.

We look forward to engaging with you soon!


Harlan Brumm recently tweeted about updates to Revit:


Details and direct links related to the above are provided below:

Revit 2018.3.2

Details:

  • includes an update to the product which is needed to maintain access to the following feature after October 31st, for more details refer to Autodesk Knowledge Network:
    • • P&ID Modeler
  • Fixed a security vulnerability in communicating with web services.

 

Revit 2017.2.4

Details:

  • Fixed a security vulnerability in communicating with web services.
  • Upgraded AdWebService to enable alternate user authentication methods.

 

Revit 2019 ?

  • Similar fixes were included in 2019.1 as per this related post

 

In unrelated news, latest Autodesk Desktop Connector can be downloaded at this link

 

I’m sure you are aware that intellectually Revit shared coordinates take minutes to explain, but emotionally they take years to master 🙂

I’ve been looking for a way to check and validate coordinates using the Revit API. One method I implemented in VirtualBuiltApp is to gather Grid Intersection coordinates and compare those, but obviously you need a federated model with links to achieve that comparison.

One interesting fact to note is this:

  • two Revit models can Report functionally identical shared coordinates (same translation and true north rotation), and you can still receive “The host model and the link do not share the same coordinate system. Default center-to-center positioning will be used”. hashtag sadface, hashtag why-revit-why

If we put this another way:

  • if two models don’t have some related history (created from the same file), or
  • if Acquire or Publish Coordinates has not occurred between those models, then
  • the Shared Coordinate error will appear — even if they report identical Spot Coordinates and True North Rotation

If you are wondering what the Revit API actually does support in terms of Shared Coordinate setup and validation, here is the best bit of Revit API Shared Coordinates information I can share:

A GUID-based relationship is set up between the files. Setting up the same relationship has been possible via the API via Document.AcquireCoordinates() for a few releases.

With 2018’s SiteLocation.IsCompatibleWith() it is also possible to identify if two coordinate systems are the same.

This is part of a long thread between Dale Bartlett, Jeremy Tammik, and the Revit development team.

Also, keep in mind that BIM 360 Design (Revit Cloud Worksharing) does not support Publish Coordinates. Only Acquire Coordinates can be used in that environment.

If you have Desktop Connector installed, you probably realise you can ‘upload’ Revit models and other files to BIM 360 Docs by dragging and dropping to the folder in Windows Explorer (using Desktop Connector). However, when you try and link this using the BIM 360 shortcut in Revit, you might not be able to see the file…

Here is a workaround that may allow you to link a non-initiated Revit model into your Revit file:

  1. Ensure you have Autodesk Desktop Connector installed
  2. Start Link Revit command from the ribbon
  3. Update: Click on the Address drop down
  4. Click on This PC
  5. Browse to BIM 360 from the window below:

  6. Select the file (non initiated) that you want to link

You should get the BIM 360 prefix in Manage Links:

Here is a video of this process (with audio, This PC – BIM 360 workflow):

https://knowledge.autodesk.com/community/screencast/3a990f58-ed3a-4dfb-9398-e4ab08fcebe5

 

Here is another short video of this process here (no audio, copy-paste directory from Windows Explorer method):

https://knowledge.autodesk.com/community/screencast/02ecf93e-6359-45e4-9253-48481e4e8ea6

The first point release of Revit 2019 is now available… Let the deployments begin. Your projects are now running out of excuses as to why they shouldn’t upgrade 🙂

Here are some direct links to the Revit and Navisworks update files.

Revit 2019.1 Update (Revit 2019 Update 1)

Direct download link

Readme

Release notes

Update: From Purvi Irwin on Twitter:

In the new homepage for #Revit 2019.1 when you hover over a recent project, you get the path of the central, your local, and the file size! If it’s not workshared, then you get the filepath and size. Pretty sweet.

 

Navisworks 2019.1 Update (Navisworks 2019 Update 1)

Direct Download Link

Readme PDF

interesting:

If you Close All Worksets when opening a model on BIM 360 Design, you may get this error (related to Project Info):

Can’t edit the element. It was deleted in the Central Model.

 

As you can see, it is related to the Project Info : Project Information element:


The error looks like this. You must click Cancel to proceed:

It appears to be some synchronisation bug or similar, possibly related to BIM 360 cloud worksharing. You can force the error to reappear by clicking on the Location option in the Ribbon

To fix it, try doing a full Sync with Central. It seems that this rectifies the bug for that session and future sessions with that particular cloud workshared model.