IfcRelDefinesByProperties usage

Hello,
I want to have an IFC4 file where multiple PropertySets are related to an object via IfcRelDefinesByProperties.

I’m able to create a valid file when I add a relation for each property set, but since the attribute RelatingPropertyDefinition could also be a IfcPropertySetDefinitionSet I am wondering if I can define a single IfcRelDefinesByProperties to bind multiple PropertySets.

This code seems to be valid

#100=IFCBUILDINGELEMENTPROXY([…])
#101=IFCPROPERTYSET([…]);
#102=IFCPROPERTYSET([…]);
#103=IFCRELDEFINESBYPROPERTIES(‘id1’,$,$,$,(#100),#101);
#104=IFCRELDEFINESBYPROPERTIES(‘id2’,$,$,$,(#100),#102);

but this compact version is not valid

#200=IFCBUILDINGELEMENTPROXY([…])
#201=IFCPROPERTYSET([…]);
#202=IFCPROPERTYSET([…]);
#203=IFCRELDEFINESBYPROPERTIES(‘id1’,$,$,$,(#200),(#201,#202));

What I’m doing wrong?

I think at moment you can assign only one IfcPropertySet.
The IfcPropertySetDefinitionSet has been added for “upward compatiblity” :

The sole purpose of this select type is to enable an upward compatible enhancement of the objectified relationship IfcRelDefinesByProperties in order to assign multiple IfcPropertySet 's, IfcElementQuantity 's or other subtypes of IfcPropertySetDefinition to objects using a single instance of IfcRelDefinesByProperties .

Which means that such enhancment is planned for future versions of IFC.

1 Like

Your guess is correct, IfcPropertySetDefinitionSet is indeed intended to be used to assign multiple property sets to the same object, using one relationship (as @IFCWebServer pointed out).

The issue seems the serialisation of such Select type in STEP. As per the standard, a Select is serialised by wrapping the value with the class name.

See steptools.com/stds/step/IS_final_p21e3.html#clause-12-1-8 for more examples.

1 Like