IFClite TypeScript API
    Preparing search index...

    Function storeyFloorsFromMeshes

    • Per-storey floor levels (ascending) derived from mesh geometry, for current-floor projection scoping (issue #979 follow-up).

      Each storey's level is the MINIMUM world-Y over its member meshes, read from positions in the RTC-shifted render frame — the SAME frame as the section cut position. This deliberately avoids IfcBuildingStorey.Elevation, which omits the building/site placement Z and is wrong for georeferenced models.

      elementToStorey keys are LOCAL express ids, so callers must restrict this to single-model use (mesh expressId then equals the local id). Storeys whose members produced no mesh contribute no level and are dropped.

      Known limitations (bounded; documented intentionally)

      • The min-Y is the underside of the storey's lowest member, typically the floor SLAB which conventionally extrudes a little BELOW the level datum — so the returned level sits ~one slab thickness below the architectural floor. The effect is a small (~slab-thickness) over-projection at storey boundaries, not a whole-floor bleed.
      • An element assigned to an upper storey but geometrically descending into a lower one (a stair flight, a double-height shaft) pulls that storey's level down, which can collapse two levels together; the scoping then degrades toward the unscoped full-extent behavior for that cut — never worse than the pre-#979-follow-up baseline. A placement-Z / percentile derivation is a possible future hardening.

      Parameters

      • meshes: readonly StoreyFloorMesh[]
      • elementToStorey: ReadonlyMap<number, number>

      Returns number[]