Revit IFC Export #5: Property Sets pt 2 – Remapping

by | Feb 9, 2024 | BIM

As noted previously, consistency is the key when working with IFC. Unfortunately, consistency to the nth degree is difficult to control in a widespread design team. Even if you can agree that each discipline will include certain data, if the parameters are used are not shared, or they are created by plugins, it is quite likely that each IFC contains the correct information but in entirely different locations / property sets. This can make finding and using the data across multiple files difficult.

Using one example, that of a Uniclass classification added to objects, the final property set and property will depend on how the parameter has been created, and which name has been used.

Using the Standardized Data extension (previously Classification Manager) the parameter will be located in Data.Classification.Uniclass.Pr.Number.

Using Assembly Code*, the parameter will be Identity Data.Assembly Code.

It could also be entered using Keynote, depending on how your specifications are referenced, which would make it Identity Data.Keynote.

Or you could manually create a ClassificationCode* or other “Uniclass” parameter which means it could be located in any group, and potentially called anything.

Of course, ideally, you’d want to standardise this in your project documentation, but it is fairly common for a widely used parameter such as this to be pre-defined in families. To change might be a considerable administrative task. Multiply that by potentially hundreds of parameters, across many projects and consultants, and you can see how a method to map the parameters to a consistent property set and property would be beneficial.

Export user defined property sets

This can be done using a user-defined property mapping – a text file that copies any parameter to a specific user-defined property set, and renames it as required.

Using the example parameters described above, the resultant IFC properties are all different:

Creating consistent properties in IFC will save time and allow easier automation of any checks. To end up with all the parameters in a single property set is one of the reasons to use a parameter mapping file:

To achieve something similar to the above example create a copy of the Autodesk template available here:

Add a section similar to this. The entries are tab delimited:


PropertySet:      My_PropertySet    I     IfcElement, IfcElementType               

      UniclassAssemblyCode    Text  Assembly Code

      UniclassCOBieTypeCategory     Text  COBie.Type.Category

      UniclassClassificationManager Text  Classification.Uniclass.Pr.Number

      UniclassKeynote   Text  Keynote


What does this do?

The # is simply a divider.

The first row “PropertySet:  My_PropertySet” defines the property set that will be created in the IFC.

“I    IfcElement, IfcElementType” creates instance properties for both IfcElement and IfcElementTypes. This is probably the hardest part of writing these tables, as you will need to identify the relevant IFC classes / entities. Most of the time it will be the same IfcElement, IfcElementType, but you will need to use others, such as IfcBuildingStorey for parameters mapped onto floors, IfcSpace for rooms, etc.

The next 4 lines then map each parameter to a new name in the My_PropertySet property set. It works like this:

[New Property Name]     [Type of Property]      [Revit Parameter]

The types of properties allowed are listed out here:

The group of the Revit parameter is not required. That helps when tidying up parameters that have been created in different locations. The mapping file will just search for the parameter on each element.

Save the file and load it into Revit’s IFC settings in the Property Sets tab in the Export user defined property sets field:

In this example, once exported to IFC, the properties will now be as shown below:

Note: the export copies the properties to the new property set, so they will still be available in their original location.

Note: yours will differ, of course, based on the parameters you are trying to map.

A much tidier and consistent result!

* IfcClassificationReference is a specific type of IFC property defined for classification system references. You can force certain parameters to become IfcClassificationReferences in the Classification Settings of the Property Sets tab, or use predefined parameters. Those will be explained fully next time.