Construct wwih a wasm module.
The wasm module.
Optionalsettings: LoadersettingsOptionalprecomputed: IfcProxyLoadStateOptionalfsReadonlymodelIDContains all the logic and methods regarding properties, psets, qsets, etc.
Are the model's source bytes spilled to an external store (served through on-demand windows) rather than fully resident?
True after spillSourceToExternalStore.
Creates a new model and returns a modelID number (unimplemented)
Optionalsettings: Loadersettingssettings for generating data the model
model ID
Page in the byte range backing a record so a following synchronous read (getLine / attribute access) succeeds. Fast no-op while the source is fully resident.
Note: covers the record itself (including its inline elements), NOT entities it merely references — recursive flattening across references needs each referenced record ensured in turn.
The record's express ID.
Resolves when resident.
Opens a model and returns a modelID number
containing IFC data (bytes)
Light attribute read: Name / LongName / GlobalId as web-ifc value
handles, WITHOUT materialising the entity's full flattened record.
Reads go through the typed entity's lazy per-field getters — the
first access tokenizes the record's field offsets into the shared
vtable, but only these attributes' values are deserialized. Used by
the spatial structure's 'names' mode.
{ Name?, LongName?, GlobalId? } string handles
({type: 1, value}), each present only when the attribute exists
and is non-null on the entity.
OptionalGlobalOptionalLongOptionalName?: NodeValueHandleDrop this model's materialised entity/descriptor cache (and lazily rebuilt vtable data), returning that memory to the JS heap. Entities and attributes rematerialise transparently on next access, so this is safe to call between UI interactions to keep the property working set bounded to what the active UI has touched.
Lazily iterate the express IDs of all IfcRoot-derived entities (products, relationships, property sets, quantities — everything carrying a GlobalId) straight from the type index, without materialising entity descriptors or touching the source buffer.
This lets property sweeps skip the ~96% of records in large models that are geometric resources, and stays safe on a spilled source. Multi-mapped entities may repeat, so callers should dedupe.
Express IDs of IfcRoot subtypes.
Release the resident source buffer and serve subsequent record reads through fixed-size windows paged in from the given external store (which must hold exactly the model's source bytes — e.g. the original file already sitting in OPFS). See StepModelBase.spillSourceToExternalStore.
The external byte store.
OptionalchunkBytes: numberOptional window size in bytes.
OptionalmaxResidentChunks: numberOptional residency cap in windows.
StaticcreateCooperative construction (conway extension, used by OpenModelAsync): identical parse/extraction to the constructor path, but periodically yields to the event loop so progress UI can repaint — issue #301 §2.
The model ID being opened.
The IFC data buffer.
The wasm module.
Optionalsettings: LoadersettingsLoader settings (ON_PROGRESS is honored).
The constructed proxy.
StaticcreateStreamed-open construction (conway extension, used by OpenModelStreamed): the parse runs through the streaming columnar indexer, so the model's index is columnar from birth and the per-record object phase — the dominant JS-heap cost of the classic parse on large models — never exists. Geometry extraction is the same cooperative path OpenModelAsync uses, and everything downstream (meshes, properties, SpillModelSource) behaves identically to a classic open.
The model ID being opened.
The IFC data buffer.
The wasm module.
Optionalsettings: LoadersettingsLoader settings (ON_PROGRESS is honored).
The constructed proxy.
The proxy for IFC from the shim.