BIMserver
BIMserver copied to clipboard
IfcPropertySetDefinitionSet (IFC4)
IfcPropertySetDefinitionSet is a new defined type in IFC4. It is part of a select type that allows either a set of property sets or a single property set (IfcPropertySetDefinition) to be referred from IfcRelDefinesByProperties . Instead of just changing the cardinality of IfcRelDefinesByProperties.RelatingPropertyDefinition to S[1:?] this select type was apparently introduced assuming that it would help with forward compatibility.
BIMserver seems not to support this type and fails with "IFCPROPERTYSETDEFINITIONSET is not an existing IFC entity". Here is a sample file: ifcpropertysetdefinitionset.ifc.txt. Is this a known issue?
A similar issue, a defined type resolving to a list, is mentioned as wont-fix-issue in the wiki (for IfcCompoundPlaneAngleMeasure). But I believe this is actually solved, isn't it?
Interesting find. The IfcPropertySetDefinitionSet class is not even generated by EMF. So I am pretty sure this is missing from the BuildingSMARTLibrary [1]. I suspect it simply never happened before that a type is defined as a set of entities (or maybe not even that a type is defined as an entity). I have to say I find this a rather strange construct, but surely it should be supported by BIMserver.
Leaving this issue open, I currently don't have time to look into it.
As for the IfcCompoundPlaneAngleMeasure, I don't think that has been fixed either. If you look at the IfcCompoundPlaneAngleMeasure.java code [2] (or the IFC4 version), it only has a single long
value where it should have a list here as well.
[1] https://github.com/opensourceBIM/BuildingSMARTLibrary [2] https://github.com/opensourceBIM/BIMserver/blob/master/PluginBase/generated/org/bimserver/models/ifc2x3tc1/IfcCompoundPlaneAngleMeasure.java
Ah, I see. I had just checked the refLatitude
and refLongitute
attributes in IfcSite
for some projects, because that is a prominent place where IfcCompoundPlaneAngleMeasure
is used. That's why I thought it was fixed, but now I see that these attributes are directly represented as EList<Long>
. The other usage is in a large value select mainly for property sets, where it will certainly not work then.