Async export that yields to the event loop between entity chunks, reporting progress via the onProgress callback. This keeps the UI responsive during large merged exports.
Like exportAsync, but assembles the merged STEP file as an
off-heap multi-part Blob (via assembleStepBlob) rather
than one contiguous Uint8Array. The merged file is the largest STEP
output ifc-lite produces (every federated model concatenated), so
skipping the final contiguous buffer is where the memory saving matters
most; the browser download path hands the Blob straight to downloadBlob
with no Uint8Array-to-BlobPart copy. Byte content is identical to
exportAsync.
Merges multiple IFC models into a single STEP file.
Uses the same approach as IfcOpenShell's MergeProjects recipe, extended with spatial hierarchy unification and unit-aware federation:
Conformance trade-off: when federation triggers (under the default
'auto'), the file contains more than one IfcProject, which intentionally relaxes the IfcSingleProjectInstance EXPRESS rule (SIZEOF(IfcProject) <= 1). This preserves both units without rewriting coordinates, and is strictly better than a silent mis-scale.MergeExportResult.stats.warningsflags it. To instead get one ordinary single-unit IfcProject, passunitReconciliation: 'normalize'— it rescales every length-valued datum of the differing-unit models into the first model's unit (see ./unit-normalize.ts). Use'assume-shared'only when the caller has already normalised units.Limitation: federation only unifies a model against the first model's unit group. Two non-first models that share a unit different from the first are each kept as independent projects (correct, just less deduplicated).