Many object occurrences have an attribute named PredefinedType being a specific enumeration. Such predefined type essentially provides another level of "classification by inheritance" to further differentiate objects without the need for additional sub types. Predefined types are not just informational; various rules apply such as applicable property sets, part composition, and distribution ports.Such predefined types are added by selecting the correct enumerator for the attribute PredefinedType. If a custom value is needed, the attribute ObjectType has to be used to define such custom type, whereas the PredefinedType is set to USERDEFINED.
The main attributes to be provided for a Object Occurrence Predefined Type are:
If the object is typed by an IfcTypeObject, then the PredefinedType at the IfcObject occurrence shall only be used if the PredefinedType at IfcTypeObject is set to NOTDEFINED.
Figure 23 illustrates an instance diagram.
Figure 23 — Object Predefined Type |
<?xml version="1.0"?>
<ConceptTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" uuid="25248261-98df-4d0a-9364-5653575ca421" name="Object Predefined Type" applicableSchema="IFC4" applicableEntity="IfcObject">
<Rules>
<AttributeRule RuleID="UserDefinedType" AttributeName="ObjectType">
<EntityRules>
<EntityRule EntityName="IfcLabel" />
</EntityRules>
</AttributeRule>
<AttributeRule RuleID="PredefinedType" AttributeName="PredefinedType" />
<AttributeRule AttributeName="IsTypedBy">
<EntityRules>
<EntityRule EntityName="IfcRelDefinesByType">
<AttributeRules>
<AttributeRule AttributeName="RelatingType">
<EntityRules>
<EntityRule EntityName="IfcTypeObject">
<AttributeRules>
<AttributeRule RuleID="TypeUserdefinedType" AttributeName="ElementType" />
<AttributeRule RuleID="TypePredefinedType" AttributeName="PredefinedType" />
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</AttributeRules>
</EntityRule>
</EntityRules>
</AttributeRule>
</Rules>
</ConceptTemplate>