The IFC for Revit addins that improve IFC import and export functionality are maintained at this GitHub site for versions newer than Revit 2018. In the past 2 weeks, updates have been release for all current Revit versions, and I have collected the direct links for you below. Note that the GitHub versions can be more up-to-date and current than the ones listed on the App Store.

If you want to check which version you currently have, you could use Start – Add or Remove Programs to do that without opening Revit:

checking Revit version in Add or Remove Programs
checking Revit version in Add or Remove Programs

If you are inside a Revit model, you can use File – Export – IFC and check the version in the dialog box header:

If you are looking for Revit 2018 and older versions of the IFC for Revit addins, check out the SourceForge site instead.

The update for Revit 2019 was particularly significant. Release notes copied below:

General:

  • This version marks a significant milestone for IFC Exporter as it is now IFC4 Reference View certified (for Architectural Export and Structural Export Exchange Requirements)

New Features/Improvements:

  • Export of Area can now be assigned to IfcSpatialZone in addition to the default IfcSpace using IfcExportAs
  • Support exporting IfcGroup using ZoneGroupName parameter
  • Improved heuristic for assigning color to polygonal face sets
  • Improved handling to support for direct export of polygonal face geometry in IFC4
  • Support for IfcShapeAspect in other objects that have part geometries
  • Improved handling of Complex Property in the PropertySet definition
  • General improvements to support IFC4 based geo-referencing information with addition UI in export, and integration to the information found inside Revit file (usually comes from AutoCAD or Civil3D)
  • Reorganize the location for Exchange Requirement setting in the header of IFC File to be less hidden (now located right after the IFC version in export option UI)
  • Updates shared parameter definitions and Property set definitions based on the latest IFC4 (4.4.0.2.2) specifications
  • Support allowing a predefined type for standard walls on export
  • General improvements dealing with objects with many holes
  • Added basic support to export Area as IfcSpatialZone entity

Bug Fixes:

Export bug fixes:

  • Fixed error during export for a specific object that became invalid in the export process with “Store the IFC GUID in an element after export” option
  • User defined property set can now be exported for IfcGeographiElement
  • Fixed export failure when ZoneClassificationName is set to Room for exporting IfcZone
  • Corrected GrossVolume quantity information with the correct unit
  • Fixed exporting issue for a Ceiling containing Arc geometry
  • Fixed issue with duplicate steel connection geometries or missing connection
  • Fixed issue with IFC export – steel connection steel connection elements missing or wrongly exported
  • Fixed issue on missing ceiling geometries in IFC4 RV export mode
  • Fixed issue on objects with Parts that is below the first (lowest) level
  • Fixed issue with export Roof in some cases
  • Fixed crash issue if the “Rasters” are set to be exported to “IFCGrid”
  • Fixed issue with IFC option “export links as separate models” causes wrong object placement
  • Improved export Parts functionality
  • Fixed issue that IFC Version doesn’t update when changing the “In-Session setup”
  • Fixed IsExternal calculation on element types to correctly determine value
  • New shared parameter assigned to Curtain walls is now exported when exporting from Revit to Navisworks
  • Update category mapping to deal with IfcSpaceTypes and IfcOpeningTypes
  • Fixed issue with incorrect slab thickness when Opening IFC in Revit
  • Fixed some issues on export with different coordinate base
  • Fixed some issues on exporting Wall elements
  • Improved handling reserved Windows name
  • Export HVAC_HEAT_GAIN with current units (Watts)
  • Removed duplicate base quantity NetSideArea exported for walls
  • Improved export with the Property Set option “Export schedules as property sets”
  • Fixed issue with IFC4 Reference view, which fails for some models from Factory Live
  • Update the CSIORG link in the IFC exporter
  • Changed IfcGeometricRepresentationContext from “Annotation” to “Plan”
  • ClassificationCode(2) is now processed during export even if ClassificationCode is missing
  • Corrected Area quantity property of doors
  • Improved Materials export, that works for some floors but not others of the same type
  • Fixed issue with wrong Base Quantity information in some scenarios in IFC export 2×3 Coordination View
  • Fixed issues with warnings are shown when exporting to IFC4RV in some models
  • Improved Railings import to Revit via IFC
  • Properly convert this Flow_Rate parameter on Export
  • Corrected 2D CurtainWall door swing on IFC Export
  • Nested curtain wall element now will get proper parameters while export to IFC
  • IFC-Export configuration will now remember the previous settings including: “Project Origin/Coordinate Base”
  • Improved exporting of Material parameter
  • Improved IFC4 RV Exchange Requirement, which may be missing when File Header is not initialized
  • Support allowing a predefined type for standard railings on export
  • Fixed IFC4 “opening as recess” code for ReinforcingMesh case
  • Fixed issue with IFC export where some geometries are exported slightly longer extrusion
  • Fixed issue with IfcGeographicElement not exporting user-defined PropertySets

Import bug fixes:

  • Improved Rebar import
  • Improved import of Windows that are not cutting a wall in a linked or opened IFC
  • Recognize the angle between Project North and Survey Point properly in Revit IFC import/link
  • Improved import of Columns that may be placed in the wrong location on IFC Link in some cases
  • Improved import of beam cover
  • Fixed issue with Certain Tekla IFC geometry not visible when using Link IFC
  • Improved link IFC that may have incorrect geometry imported for some cases
  • Improved Link IFC file in Revit that in some cases failed with the model empty and an error appears in log file
  • Fixed issue with translation IFC having mm units using Revit IFC loader makes default model view small unexpectedly on LMV
  • Fixed issue related to invalid/corrupt IFC files that “load” without any errors
  • Improved link IFC file properly inside Revit 2020
  • Grids placed by IFCOFFSETCURVE2D will be placed at open IFC in the correct unit
  • Fixed issue with multiple versions of the same IFC file get loaded into Revit Cloud Worksharing Host resulting in duplicate geometry
  • Improve the structure in Link IFC that may end up upside down
  • Fixed missing material information upon import IFC
  • Recreate IFC/Import_Quantities/Import_Quantities.txt
  • Support IfcGridPlacement for Link IFC
  • Avoid duplicate instance and type names when linking in an IFC file
  • Improved creation of Geometry which may be missing for some IFC models
  • Fixed issue for some IFC files that failed to show in BIM 360 viewer
  • IFC link – model is now correctly positioned when there is rotation component in IFCSite local placement
  • Improved issue due to “bad” data involving Wall with zero thickness inside the IFC file that caused differences between IFC from Allplan opened/imported vs linked in Revit
  • Improved handling of detailed geometry containing IfcAdvancedBrep in REVIT 2020 and 2021
  • Improved slab elements import which may be missing in some IFC file
  • Corrected IfcPort ConnectedTo IfcGUID information that contained its own GUID instead of the GUID of its connected Port

Known Issues/additional notes:

  • This release still contains issue that Steel Connections may not be exported correctly
  • Export configuration “IFC2x2 ePlan Check” has been removed as it is already obsolete. If there is any saved configuration, the option will be automatically assign to IFC2x3 as default

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:

Thanks to @BIM4GIB we have a script to automatically download the latest Uniclass 2015 tables from the NBS website.  You basically download and unzip, then run the script and you get a Uniclass2015 dataset downloaded.  Awesome stuff, nice work Rene Pellicer!

From the readme:

1. Copy the folder “Uniclass2015-GetLatest” from the ZIP file to your C:\ (This is critical or the script will fail)
2. Double-click on the “Uniclass2015-GetLatest” shortcut. A PowerShell icon will appear in your taskbar. Click ‘Open’ on the dialog box.
You might have to type “Y” (without the quotes) in PowerShell to confirm you want to run the script, depending on your security settings.
3. Wait approx. 50 seconds. Excel will open and close several times. That is a feature.
4. After the script has run, a dialog box will appear. Click OK
5. You should now see a new spreadsheet called “Uniclass2015-AllTables.xlsx” in C:\Uniclass2015-GetLatest\
6. Classification Manager…

Placing the folder in C drive:

 

Script running:

Download script here

or Uniclass2015-GetLatest

From https://twitter.com/BIM4GIB/status/1040552536988635137?s=19

 

If you try to build a connector to get some Revit data to a database like MySQL, you may hit an issue where some strings that are allowed in Revit will do funny things to your SQL instructions, like this:

What to do? We need to ‘escape’ these characters during our data export or INSERT to create something that the database engine can consume. There are some exotic ways to get around this (like encode your text in base-64), but in my case I just wanted to replace the problem character with the escaped version. Ideally, we would use characters that we know will never be found in Revit Type or Family Names.

Revit does not allow these characters in most type and family names:

Looks like a backslash could work, as this is an escape character in MySQL, and it is not allowed by Revit as above.

You can do this a lot of ways in various coding languages, but an easy way is with a String Replace in Dynamo, like:

This workaround doesn’t handle every situation – like if you are pulling parameters out of Revit that contain all kind of characters, you may have to look at a more reliable text cleanup or encoding solution. But this helps with the Type and Family names at least 🙂

Revit natively supports importing Sketchup up to version 8. If you want to import ‘new’ Trimble Sketchup files, like some nice content you have download from 3D Warehouse, you have at least 2 different options:

  1. Open the file in a new version of Sketchup and save down to version 8, then import to Revit

  2. Import to AutoCAD first (IMPORTSKP), then save as DWG, and then bring it into Revit. You may need to install the Sketchup Import addin for AutoCAD to import 2016 and newer versions of Sketchup.

Based on some preliminary testing, I think option 1 is probably the better / easier way to go at the current time.

https://wrw.is/wp-content/uploads/2017/03/materials.png

The BIM Collaboration Format is getting more popular and more widely supported as the months go by. I was interested to find to this little command line utility that quickly creates a PDF file from a BCFzip. It can batch process multiple BCF files and it outputs a relatively clean PDF with the image and issue name.

What is it? From Sourceforge:
This project provides conversion/rendering of a BIM Collaboration Format (BCFZIP) file exported from Tekla BIMSight and similar applications to a PDF report. It can be useful in several ways, such as:
1) sending someone a PDF report instead of BCF file.
2) Print a hard copy of BCF report for signoff
3) Review BCF content quickly without installing or launching any BIM software

Command line usage:

cmdline.png

PDF output looks like this, 1 issue per page:

pdf.png

Download and main page at:
BCF2PDF download | SourceForge.net

Instructions, showing you can also use drag-and-drop for multiple BCFs:
1. Download the file BCF2PDF.rar from Source Forge and place in a folder.
2. Export one or more .bcfzip files from Tekla BIMSight or other similar applications.
3. Drag the .bcfzip files and drop onto the icon of BCF2PDF.exe executable.
4. One or more PDF reports will be created in the same folder as the source .bcfzip files.

I have posted some other methods before…
Batch Convert DWF to Revit using Navisworks
How to Convert a DWF to Editable Format, or How to Export from Navisworks and Keep Modelling in BIM
Export Geometry from Navisworks into Revit (and back again) using only AutoCAD

… but here is one going via 3dsMax:

  • Export FBX from Navisworks
  • Import to 3dsMax
  • Export SAT
  • Import to Revit

via

http://www.revitforum.org/architecture-general-revit-questions/7636-anyone-ever-import-navisworks-file-intorevit.html#post63006

Also, keep in mind that newer versions of AutoCAD can directly link NWC or NWD Navisworks files using CMATTACH (Coordination Model Attach).

Links below:

IFC for Revit 2015 (v15.6):
http://apps.exchange.autodesk.com/RVT/en/Detail/Index?id=appstore.exchange.autodesk.com%3aifc2015_windows32and64%3aen

IFC for Revit 2016 (v16.3): http://apps.exchange.autodesk.com/RVT/en/Detail/Index?id=appstore.exchange.autodesk.com%3aifc2016_windows32and64%3aen

Update notes for IFC for Revit 2015 (v15.6):
General:
– Added some minor export performance tweaks.
– Added IFC4 Design Transfer View as an option.  With this option, Revit will attempt to create IfcAdvancedBReps in some cases.
– The import log file now contains the importer version at the end.

New Export Functionality:
– Display the element id for each element as it is exported.
– Create IfcGroups for multiple IfcReinforcingBars created by one rebar element in Revit.
– (IFC4) Add support for ConicalFace and fix RevolvedFace for IfcAdvancedBRep.
– (IFC4) Reuse IfcCartesianPoints when exporting an IfcAdvancedBRep.

Export Bug Fixes:
– Associate some entities with IfcBuilding if they have no other spatial containment, or there are no levels.
– Correctly export DirectShapes of Ramp, Stairs, or certain MEP categories.
– Correctly relate IfcAssembly to IfcBuildingStorey in certain cases.
– Export some elements with geometry that couldn’t be correctly split into multiple solids.
– Fix crash in certain cases where we can’t create a valid tessellation for a face.
– Fix crash when exporting certain vertical roofs.
– Fix crash when exporting elements with no bounding box when splitting elements by level.
– Fix crash when exporting filled regions with invalid color definitions.
– Fix the name of IfcArbitraryClosedProfileDef entities.
– Never export curtain wall panels independent of their curtain walls.
– Remove invisible geometry when exporting families when exporting elements in the current view.
– (IFC4) Correct export of IfcMechanicalFastener.

New Import Functionality:
– Add support for extra currency types.
– Allow import of unbounded grid lines, with a warning and an arbitrary length.

Import Bug Fixes:
– The IfcSweptSurface “Position” attribute is now optional.

resized_6c20dfe8-5576-4f70-b2a8-d02ccb23

Sometimes you have a set of DWFs that you would like to work with in Revit. For example, you might have DWFs of site equipment, fences and trucks that would be useful for site modelling in Revit. Here is one way to get those dwfs into a more Revit-friendly format…

Note: You need to have iConstruct with their Smart IFC Exporter for this workflow

Phase 1
Create a container NWD for DWF files, so that you can fix rotation and coordinates:

  1. Append DWFs
  2. Save as rotator.nwd
  3. Append to an NWF
  4. Adjust units, 90 degree rotation about 1-0-0 axis as per this link:
    http://forums.autodesk.com/t5/navisworks-general-discussion/naviswork-imports-dwfx-file-incorrectly-quickpen-dwfx-export/m-p/2879154#M1154
  5. Save as container.nwf

Phase 2
Steps to convert DWF to IFC with colours and object selectability:

  1. Open two Navisworks 2016 instances
  2. Open the rotator.nwd from above in one instance
  3. Append any DWFs you would like to convert
  4. Adjust their Units and Transform until they look right
  5. Save the rotator.nwd
  6. Open the container.nwf
  7. Refresh to reload the rotator if necessary
  8. Now, hide everything but ‘shell’ elements using a search like this:
  9. Save the search set for Item Type = Shell
  10. Set up an iConstruct IFC config…

    IFC2x3
    New
    Type a Name
    Press Building button
    Expand to IfcBuildingElementProxy, userdefined
    Choose search set for Item Type = Shell from above

    Save

  11. Should look like this…

  12. Close config dialog
  13. Go to Smart IFC Export and choose the export config you just saved
  14. Fill out next dialog and press ok
  15. Choose target IFC location
  16. Wait for Navisworks to export the IFC

Phase 3 – into Revit
After IFC is created, open Revit. Ensure you have latest IFC updates installed, then open the the IFC. Wait for Revit to complete importing… For the most part, you should get a pretty good looking result. One exception is where the DWF had one ‘shell’ with multiple materials, like this:

In any case, now you have a bunch of ‘Revit elements’ (yes, I use the term loosely) that can be made into Model Groups. They aren’t in families, but you can make them into little rvts to load as links. I realise there are some limitations in this workflow, but in some cases there is no other way…

If you are interested in more to do with DWF conversions, check out these links:

What Revit Wants: How to Convert a DWF to Editable Format, or How to Export from Navisworks and Keep Modelling in BIM
What Revit Wants: Convert DWF to DWG using free tools

Future post: hope to see some Dynamo method to consume DWFs and create DirectShapes in Revit 🙂

Updated links: https://www.autodesk.com/developer-network/platform-technologies/fbx-converter-archives

Windows

Mac

Autodesk have provided a bunch of handy FBX converters and plugins at this link.

The goal of FBX is to “constantly and significantly improve interoperability between Autodesk products and other Digital content creation (DCC) software packages.” http://en.wikipedia.org/wiki/FBX

Transfer files from one file format to another quickly and easily with the FBX Converter. This utility enables you to convert OBJ, DXF™, DAE, and 3DS files to or from multiple versions of the FBX format. New tools are now available with the FBX Converter 2012.1. You can view FBX animation files in real time with the FBX Viewer, explore and compare FBX file contents with the FBX Explorer, and manage animation takes with the FBX Take Manager.

Mac *

FBX 2012.2 Converter for Mac (tgz – 33931Kb)

via
Autodesk – Autodesk FBX – FBX Plug-Ins, Converter, and QuickTime Viewer Downloads

Here is a quick video of me converting a OBJ to FBX using the above tool.  In the video I also use the FBXIMPORT command to bring the FBX into AutoCAD.  From there, you could save as DWG and bring into Revit:

PS – This still doesn’t quite solve the Mesh to Solid conversion problem … I am currently experimenting with MESHSMOOTH and CONVTOSOLID.

EDIT:
Here is a vid showing Revit to 3dsMax via FBX.