4.4.1.4 Spatial Composition
The order of spatial structure elements being included in the concept for builing projects are from high to low level: IfcProject, IfcSite, IfcBuilding, IfcBuildingStorey, and IfcSpace with IfcSite, IfcBuildingStorey and IfcSpace being optional levels. Therefore an spatial structure element can only be part of an element at the same or higher level.
Can someone clarify the intention for IfcSpatialZone? Does this mean that IfcSpatialZone must either belong to an IfcSite or an IfcProject and nothing else? What does the second paragraph mean?
Why is IfcExternalSpatialElement not mentioned at all? Where does it fit in the hierarchy? Is it hierarchical? I assume it is, as I haven’t read otherwise. Is it an optional level? I also assume it is. Common sense tells me it is an optional level that must either belong to an IfcSite or IfcProject, but I cannot find anything about this in the spec.
I’m trying to work with IfcSpatialZone, in relation to modelling fire compartments. This is not widely supported in software. I was partially able to generate them from Revit (but have problems with property sets and custom quantities) and trying but failing with Archicad which doesn’t support this entity, so we need to parse the IFC exported afterwards.
From my understanding of the above, there doesn’t seem to be a way to relate an IfcSpatialZone directly to an IfcBuildingStorey, at least not using the aggregation structure foreseen from the Spatial Composition concept. However, since IfcSpatialZone is effectively an IfcSpatialElement, this relation seems valid.
Can you aggregate an IfcSpatialZone into a building storey? Would that be valid IFC?
Do you believe we should rather use the Referenced in Spatial Structure relation?
Aggregating objects inside an IfcSpatialZone is problematic, as that would prevent these objects from being aggregated into another spatial element, such as IfcSpace.
I’m using them for modelling fire compartments (IfcSpatialZone.FIRESAFETY), but cannot relate them to a storey nor to any other spatial structure element, so it seems.
They can be generated from Revit (but not from Archicad), where Revit uses the IfcRelContainedInSpatialStructure relation to put them on building storeys. But that seems not allowed according the IFC scheme documentation: there is a “ContainsElements” reverse attribute but not a “ContainedInStructure” attribute.
It seems that IfcRelReferencedInSpatialStructure is the relation that should (could?) be used, but it is stated that this is not the be used to relate spatial structures into other spatial structure elements (unless it’s a space.
The relationship object shall not be used to include other spatial structure elements into a spatial structure element. The hierarchy of the spatial structure is defined using IfcRelAggregates. Exception: an IfcSpace can be referenced by another spatial structure element, in particular by an IfcSpatialZone.
Some testing with three IFC viewers
IFC viewers don’t mind the Contained In Structure relation: Solibri, BIMcollab Zoom, BIMvision all happily show the Spatial Zones in a building storey.
We missed this one, although I think my answer won’t fit your expectation
From what I understand and it is intended Aggregation is invalid: Do not aggregate an IfcSpatialZone into an IfcBuildingStorey, because spatial zones are explicitly designed to be non-hierarchical, potentially overlapping elements. So, theoretically:
Use the Referencing relation: To link your fire compartment to a storey or space, you should use the IfcRelReferencedInSpatialStructure relationship.
The software problem: BIM authoring tools (like Archicad) often struggle with this implementation because they natively try to force all spatial elements into a rigid “Site > Building > Storey” hierarchy, which defeats the independent nature of an IfcSpatialZone.
When we where working on the Technical Report (not the current Schema implementation, by the way)… the Software vendor’s involvement was very basic, just listening and acknowledging the technical proposal, but never getting into any “testing” activity, unfortunately.
The relationship object shall not be used to include other spatial structure elements into a spatial structure element. The hierarchy of the spatial structure is defined using IfcRelAggregates. Exception: an IfcSpace can be referenced by another spatial structure element, in particular by an IfcSpatialZone.
Isn’t this in contradiction with your recommendation? Can I reference an IfcSpatialZone into an IfcBuilding or an IfcBuildingStorey? The language above seems to disallow it. Or is it allowed and is the phrasing unfortunate?
An IfcSpatialZone is NOT an IfcSpatialStructureElement.
Here is how the hierarchy works in the IFC schema:
IfcSpatialZone is not part of this branch. It inherits directly from the higher-level abstract class IfcSpatialElement .
The rule you quoted specifically prohibits using IfcRelReferencedInSpatialStructure to link one IfcSpatialStructureElement to another IfcSpatialStructureElement (for example, you cannot use it to link a storey to a building, as those must use IfcRelAggregates )