Industry Foundation Classes (IFC) User Attributes

Property and Quantity Sets as Attributes

FME automatically converts IFC property sets and quantity sets into attributes on elements, named using the pattern SetName<delimiter>PropertyName or SetName<delimiter>QuantityName (for example, BuildingInfo.BuildingPermitId). If the same property occurs multiple times, FME combines these into a list attribute.

You can also create or extend property and quantity sets simply by adding attributes with this naming convention. Optionally, you may define a corresponding PropertySet or ElementQuantity feature. To link a user-defined PropertySet or ElementQuantity feature to an existing IFC element, please follow these steps:

  1. Each PropertySet or ElementQuantity feature has to have non-empty ifc_name and ifc_global_id attributes.

    • The value of ifc_global_id attribute can be set arbitrarily. The writer will replace the arbitrary value with a valid one on write.

  1. There must be two-way links between PropertySet or ElementQuantity feature and the IFC element they are attached to.

    • The IFC element must have ifc_is_defined_by{<index>}.Name and ifc_is_defined_by{<index>}.GlobalId attributes whose value matches with the value set in Step 1, where <index> is an integer that indicates the sequence of the PropertySet or ElementQuantity feature.

    • The PropertySet or ElementQuantity feature must have ifc_defines_occurrence attribute whose value is the ifc_global_id of the IFC element it is attached to.

  1. The prefix for IFC element attribute must match with the ifc_name value of the PropertySet or ElementQuantity feature.

    • For example, for a PropertySet feature named Pset_WallCommon, the IFC element must have attributes with format Pset_WallCommon.ThermalTransmittance (as an example).

  1. The corresponding PropertySet or ElementQuantity feature must have attributes that match the IFC element attributes.

    • For example, for a PropertySet feature named Pset_WallCommon in Step 3, this feature must have an attribute called ThermalTransmittance.PropertyType whose value is IfcPropertySingleValue (as an example).