Emit one IfcSpatialZone per zone, plus the reference relationships.
Placement is ABSOLUTE (PlacementRelTo = $): the caller supplies world
coordinates because that is what it has - the mesh pipeline already resolved
every placement chain to world when it drew the zone against the model.
Chaining to the site instead would mean inverting that chain to get back a
local offset, which is arithmetic with nothing to gain: an absolute local
placement is valid IFC and says exactly where the user put the box.
Emit one
IfcSpatialZoneper zone, plus the reference relationships.Placement is ABSOLUTE (
PlacementRelTo = $): the caller supplies world coordinates because that is what it has - the mesh pipeline already resolved every placement chain to world when it drew the zone against the model. Chaining to the site instead would mean inverting that chain to get back a local offset, which is arithmetic with nothing to gain: an absolute local placement is valid IFC and says exactly where the user put the box.