IfcPropertySet

A very interesting feature of the IFC model is the IfcPropertySet . According to the official IFC specification, the IfcPropertySet is “a container class that holds properties within a property tree”. This allow to add user-defined properties to IFC elements or types. To make an analogy with Revit, it is pretty much like creating shared parameter.

Since the IFC exporter for Revit is accessible as open source code, a new exporter have been developed, and offer far more control over the creation of IFC files from Revit. One of the improvement is the ability to select Revit properties to be exported as IfcPropertySet.

The default option only export common IFC properties, but you can also export the entire set of Revit properties, or just selected ones, through user-defined property sets.

IFCExportProperties

To create one, I download one of the example coming along with the source code of the new exporter.

In this example, we can see the global syntax for creating user defined property sets.

I use it to create my own PropertySet Definition File, and use it to export Creation Phase and Demolition Phase to a new PropertySet called Phases.

PropertySet:     Phases     I     IfcElement
Creation Phase     Text     Phase Created
Demolition Phase     Text     Phase Demolished

In this definition file, we set up the name of the PropertySet, its use (on instances or on types) and the list of elements were we want to apply our properties.
Then we add the mapping between IFC (left member) and Revit properties (right member), along with its data type (Text, Real, Integer or Boolean)

We add this file in the IFC Export configuration, and export our IFC file. We can now see these properties appearing under the Phases set :

Before :

Before

After :

After

If IFC export and import is still not powerfull enought in many software solutions to enable geometrical modifications directly in the IFC file, there are plenty of opportunities to add metadata to the element, directly in IFC.

8 thoughts on “IfcPropertySet

  1. Wonderful, Thanks for sharing…. I am wondering if i can get the same export option with Navisworks Exporter….

    • I generally use the Revit File Reader in Navisworks to retrieve every parameters, and don’t use IFC in this case.

  2. Hi!

    Thank you very much for the useful post.

    I got my IFC export to function with my user-defined property set…. almost.

    For some reason, the ‘real’ data values that I get in the IFC from Revit Family parameters such as opening width and height etc. are always in imperial values. For example, my door has a door width parameter with 2000mm and when exported to IFC using user-defined property sets, that parameter reads 6.5 (2m = 6.5f). My model and all families are modelled with metric units. Solibri, the IFC model viwer, is also set to metric units. Interestingly, when I have Revit to export these parameters not as user-defined property sets, but simply as Revit property sets, the values I get are in their correct unit values (i.e. a door wide parameter of 2m in Revit reads 2m wide in the Ifc.)

    Would you happen to know what has happened? Where did I make a mistake? Your help will be deeply appreciated. Thank you.

    • Hi Boris !

      After fumbling with the PropertySet Definition File, I realized that you have to specify carefully the data type of your property. In my exemple, I use Lenght, and it works fine :
      PropertySet: Phases I IfcElement
      Creation Phase Text Phase Created
      Demolition Phase Text Phase Demolished
      PropertySet: Size T IfcDoor
      Door Thickness Length Thickness

      Since all lengths in Revit are in feet under the hood, if you keep “Real” as data type, it will export it as feet.

      A quotation from a sample of a PropertySet Definition File :
      # Data types supported: Area, Boolean, ClassificationReference, ColorTemperature, Count, Currency,
      # ElectricalCurrent, ElectricalEfficacy, ElectricalVoltage, Force, Frequency, Identifier,
      # Illuminance, Integer, Label, Length, Logical, LuminousFlux, LuminousIntensity,
      # NormalisedRatio, MassDensity, PlaneAngle, PositiveLength, PositivePlaneAngle, PositiveRatio,
      # Power, Pressure, Ratio, Real, Text, ThermalTransmittance, ThermodynamicTemperature, Volume,
      # VolumetricFlowRate

      • Hi Simon!

        Thank you for your quick reply. As soon as I changed the data type from “Real” to “Length”, everything worked perfect. But is there a reason why in your post, you mentioned that one can only assign “Text”, “Real”, “Integer” or “Boolean” for data type? Are there actually many other possible data types outside those 4, like “Length”?Thanks again.

        I am working in German in Revit at the Moment and as you may know, German has a few Special characters such as ä,ö,ü and ß. I have set up all my shared parameters in German using these characters whenever I needed to (“Höhe” means “Height” etc). It seems every shared parameter containing these characters fail to be processed by the User-defined Parameter exportation. Aside from renaming all my shared parameters and modifying all my families, is there another way around that?

        Thanking you kindly.

        Boris

        • My first example of a PropertySet Definition File only mentioned “Text”, “Real”, “Integer” or “Boolean”, but after further research, I found out that the following data types are supported : Area, Boolean, ClassificationReference, ColorTemperature, Count, Currency, ElectricalCurrent, ElectricalEfficacy, ElectricalVoltage, Force, Frequency, Identifier, Illuminance, Integer, Label, Length, Logical, LuminousFlux, LuminousIntensity, NormalisedRatio, MassDensity, PlaneAngle, PositiveLength, PositivePlaneAngle, PositiveRatio, Power, Pressure, Ratio, Real, Text, ThermalTransmittance, ThermodynamicTemperature, Volume, VolumetricFlowRate.

          As a French user myself, I fully sympathize with your situation with special caracters, but I don’t see any way of dealing with them, aside from renaming all shared parameters :-(.

          • Hi Simon,

            Sounds like I can almost support everything now then 🙂 Thanks for clarifying that.

            That is very unfortunate 🙁 As a general rule, would you recommend avoiding special characters in Revit Projects (aside from dumb written text annotations which are unlikely going to cause any interferences later down the workflow)?

          • Obviously, avoiding special characters in Revit will solve this sort of issue, but it’s always a tradeoff between comprehension and solving technical issues. I generally rather go with comprehension…

Leave a Reply

Your email address will not be published. Required fields are marked *