IDS
IDS copied to clipboard
How requirements on enumerated properties should be interpreted
This is related to the following files: IDS IFC
The IDS requires that the enumerated value has simple value "EXISTING". The actual value of the property contains two values "EXISTING" and "DEMOLISH". Implicitly then it is sufficient that this list contains the "EXISTING" value, but is there a way to require that the value only contains that and nothing else?
Isn't it asking new a value of "NEW" in the Enumerated Value property?
<requirements>
<property measure="IfcLabel" minOccurs="1" maxOccurs="1">
<propertySet>
<simpleValue>Pset_WallCommon</simpleValue>
</propertySet>
<name>
<simpleValue>Status</simpleValue>
</name>
<value>
<simpleValue>NEW</simpleValue>
</value>
</property>
</requirements>
But the entity actually contains "EXISTING" and "DEMOLISH", so you'd expect it to fail?
#11=IFCPROPERTYENUMERATEDVALUE('Status',$,(IFCLABEL('EXISTING'),IFCLABEL('DEMOLISH')),#10);
The ids file referenced by @pasi-paasiala is indeed intended to fail as indicated by the name *fail*-any_matching_value_in_an_enumerated_property_will_pass_3_3.ids
. Maybe the intended ids file to referenced was this one: pass-any_matching_value_in_an_enumerated_property_will_pass_1_3.ids
I think the current behaviour in the test cases is consistently that for any multi-valued construct (layered material, bounded prop, list prop, enum prop, ...) that at least one of these elements then must match the constraint.
It's been a while, but I also remember it has been discussed that for applicability the behaviour could be to have any of the values match: "A concrete wall is a wall with at least one layer of concrete", but for the requirement part all should match: e.g as you said: "existing or demolish, but nothing else". I think this was scrapped for being too magical and/or confusing.
So I don't think there is currently a way to specify that.
Make sure the test suite covers passes and failures appropriately. This specific file seems to be ok.