IFC 4.3.2.20240423 (IFC4X3_ADD2) under development

4.1.7.4.3 Product Local Placement

Product occurrences can be placed in 3D space relative to where they are contained. Placement is defined by a relative position (X, Y, Z coordinates), a horizontal reference direction, and a vertical axis direction. At the outermost level, relative directions are defined according to representation context; for example, +X may point east, +Y may point north, and +Z may point up.

Placement follows aggregation and containment relationships as follows:

  • at the outermost level, a site is globally positioned according to latitude, longitude, and elevation;
  • for spatial structures, positioning is relative to aggregation. For example, a site may aggregate multiple buildings, each building may aggregate multiple building storeys, and each building storey may aggregate multiple spaces;
  • for building elements, positioning is relative to the containing spatial structure. For example, a building storey may contain slabs, walls, columns, and beams;
  • for aggregated parts, positioning is relative to aggregation. For example, a staircase may aggregate one or more stair flights;
  • for feature elements, positioning is relative to the affected building element. For example, an opening element is positioned relative to the wall it voids, which in turn is positioned relative to a building storey;
  • for fillings, positioning is relative to the filled opening. For example, a door is positioned relative to an opening which in turn is positioned relative to a wall;
  • for distribution ports, positioning is relative to the containing distribution element. For example, an air terminal may have a port connection for a duct segment or fitting;
  • for distribution elements, positioning is relative to the containing spatial structure, however may be constrained by port connections. For example, a electrical junction box may fill an opening within a wall, and the junction box may contain ports for contained outlets or switches; the placement of such connected elements is constrained relative to connected port of the junction box. As another example, an air terminal may fill a ceiling covering which is placed relative to a space; the placement of a connecting duct fitting may be constrained relative to the air terminal.

If a containing spatial structure contains a grid, then placement may also be based relative to grid coordinates. In certain use cases, an absolute placement may be used by omitting the IfcObjectPlacement. In this case, the shape representation is defined within the world coordinate system.

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 table below shows a recommended list of general usage patterns that users may adopt.

G IfcProduct IfcProduct 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:?] HasPlacement 6. ObjectPlacement [0:1] 7. Representation [0:1]      ReferencedBy [0:?]      PositionedRelativeTo [0:?]      ReferencedInStructures [0:?] IfcLocalPlacement_0 IfcLocalPlacement 1. PlacementRelTo [0:1]      PlacesObject [0:?]      ReferencedByPlacements [0:?] 2. RelativePlacement [1:1] IfcProduct:ObjectPlacement1->IfcLocalPlacement_0:IfcLocalPlacement0 IfcAxis2Placement3D IfcAxis2Placement3D      LayerAssignment [0:1]      StyledByItem [0:1] 1. Location [1:1] 2. Axis [0:1] 3. RefDirection [0:1] IfcLocalPlacement_0:RelativePlacement1->IfcAxis2Placement3D:IfcAxis2Placement3D0 IfcLocalPlacement_1 IfcLocalPlacement 1. PlacementRelTo [0:1] RelativeToElement      PlacesObject [0:?]      ReferencedByPlacements [0:?] 2. RelativePlacement [1:1] IfcLocalPlacement_0:PlacementRelTo1->IfcLocalPlacement_1:IfcLocalPlacement0 IfcElement IfcElement 1. GlobalId [1:1] 2. OwnerHistory [0:1] ElementName 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:?] IfcLocalPlacement_1:PlacesObject1->IfcElement:ObjectPlacement0 IfcSpatialElement IfcSpatialElement 1. GlobalId [1:1] 2. OwnerHistory [0:1] SpatialElementName 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. LongName [0:1]      ContainsElements [0:?]      ServicedBySystems [0:?]      ReferencesElements [0:?]      IsInterferedByElements [0:?]      InterferesElements [0:?] IfcLocalPlacement_1:PlacesObject1->IfcSpatialElement:ObjectPlacement0 IfcLabel_0 IfcLabel IfcElement:Name1->IfcLabel_0:IfcLabel0 IfcLabel_1 IfcLabel IfcSpatialElement:Name1->IfcLabel_1:IfcLabel0
Figure 4.1.7.4.3.A

General Usage

ApplicableEntity
IfcProduct
Table 4.1.7.4.3.B

Edit on Github


Is this page difficult to understand? Let us know!