IFC 4.3.0.1 (IFC4X3_TC1)

4.3.2 Object Predefined Type

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:

  • PredefinedType: holds the entity specific enumeration of predefined types to further classify the entity
  • ObjectType: allows for a custom value, if no applicable enumerator can be found

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.

The following diagram shows the generic classes and relationships used when applying this concept. In addition, concepts may have particular importance to common or standardised industry practices and scenarios. For these specific usage scenarios, the tables below shows a recommended list of general usage patterns that users may adopt.

G IfcObject IfcObject 1. GlobalId [1:1] 2. OwnerHistory [0:1] 3. Name [0:1] 4. Description [0:1]      HasAssignments [0:?]      Nests [0:1]      IsNestedBy [0:?]      HasContext [0:1]      IsDecomposedBy [0:?]      Decomposes [0:1]      HasAssociations [0:?] UserDefinedType 5. ObjectType [0:1]      IsDeclaredBy [0:1]      Declares [0:?]      IsTypedBy [0:1]      IsDefinedBy [0:?] ... PredefinedType PredefinedType IfcLabel IfcLabel IfcObject:ObjectType1->IfcLabel:IfcLabel0 IfcRelDefinesByType IfcRelDefinesByType 1. GlobalId [1:1] 2. OwnerHistory [0:1] 3. Name [0:1] 4. Description [0:1] 5. RelatedObjects [1:?] 6. RelatingType [1:1] IfcObject:IsTypedBy1->IfcRelDefinesByType:RelatedObjects0 IfcTypeObject IfcTypeObject 1. GlobalId [1:1] 2. OwnerHistory [0:1] 3. Name [0:1] 4. Description [0:1]      HasAssignments [0:?]      Nests [0:1]      IsNestedBy [0:?]      HasContext [0:1]      IsDecomposedBy [0:?]      Decomposes [0:1]      HasAssociations [0:?] 5. ApplicableOccurrence [0:1] 6. HasPropertySets [1:?]      Types [0:1] ... TypeUserdefinedType ElementType TypePredefinedType PredefinedType IfcRelDefinesByType:RelatingType1->IfcTypeObject:IfcTypeObject0
Figure 4.3.2.A

General Usage

ApplicableEntity
IfcObject
Table 4.3.2.B