IFC 4.3.0.1 (IFC4X3) development

4.4.4.2 Element Nesting

Provision of a nesting structure where the element, representing the host, has connectable components represented by other elements.

The nesting structure then provides the following:

  • Placement — the common object coordinate system to which the components are placed relative
  • Body Geometry — geometry of the nesting element is independent from the Body Geometry of nested parts;

The hosted component should not be contained in the spatial hierarchy, i.e. the concept Spatial Containment shall not be used at the level of hosted components. The hosted component is contained in the spatial structure by the spatial containment of its host.

Examples of element nesting include:

  • Doors having holes pre-drilled to attach knobs
  • Sinks having holes pre-drilled to attach faucets
  • Junction boxes having one or more gangs where switches, outlets, or fixtures may be attached

Element nesting should be used for cases where the hosting element has a specific position for attaching other elements of a particular type or form factor where there is no port connection. Ports should be used for scenarios where there is any distribution flow between objects (e.g. electricity, liquid, air/gas). For all other physical connections, the IfcRelConnectsElements relationship and its subtypes should be used.

A general rule for using nesting as opposed to aggregation is based on the contents of the manufactured product as ordered according to its specified article number. If the product includes the component (regardless of whether it comes assembled), then it should use aggregation. If the product does not include any such component but is specifically designed for attaching to other components, then it should use nesting.

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 IfcElement_0 IfcElement 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. ObjectType [0:1]      IsDeclaredBy [0:1]      Declares [0:?]      IsTypedBy [0:1]      IsDefinedBy [0:?] 6. ObjectPlacement [0:1] 7. Representation [0:1]      ReferencedBy [0:?]      PositionedRelativeTo [0:?]      ReferencedInStructures [0:?] 8. Tag [0:1]      FillsVoids [0:1]      ConnectedTo [0:?]      IsInterferedByElements [0:?]      InterferesElements [0:?]      HasProjections [0:?]      HasOpenings [0:?]      IsConnectionRealization [0:?]      ProvidesBoundaries [0:?]      ConnectedFrom [0:?]      ContainedInStructure [0:1]      HasCoverings [0:?]      HasSurfaceFeatures [0:?] IfcRelNests IfcRelNests 1. GlobalId [1:1] 2. OwnerHistory [0:1] 3. Name [0:1] 4. Description [0:1] 5. RelatingObject [1:1] Type 6. RelatedObjects [1:?] IfcElement_0:IsNestedBy1->IfcRelNests:RelatingObject0 IfcElement_1 IfcElement 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. ObjectType [0:1]      IsDeclaredBy [0:1]      Declares [0:?]      IsTypedBy [0:1]      IsDefinedBy [0:?] 6. ObjectPlacement [0:1] 7. Representation [0:1]      ReferencedBy [0:?]      PositionedRelativeTo [0:?]      ReferencedInStructures [0:?] 8. Tag [0:1]      FillsVoids [0:1]      ConnectedTo [0:?]      IsInterferedByElements [0:?]      InterferesElements [0:?]      HasProjections [0:?]      HasOpenings [0:?]      IsConnectionRealization [0:?]      ProvidesBoundaries [0:?]      ConnectedFrom [0:?]      ContainedInStructure [0:1]      HasCoverings [0:?]      HasSurfaceFeatures [0:?] ... PredefinedType PredefinedType IfcRelNests:RelatedObjects1->IfcElement_1:IfcElement0 IfcLocalPlacement IfcLocalPlacement 1. PlacementRelTo [0:1]      PlacesObject [0:?]      ReferencedByPlacements [0:?] 2. RelativePlacement [1:1] IfcElement_1:ObjectPlacement1->IfcLocalPlacement:IfcLocalPlacement0
Figure 4.4.4.2.A

General Usage

ApplicableEntity
IfcElement
Table 4.4.4.2.B

Edit on Github


Is this page difficult to understand? Let us know!