The AP214 passthrough proxy owning the step model.
Get every element of a STEP entity type, backed by the model type index.
The numeric AP214 entity type id.
When true, return raw line data; otherwise express ids.
The matching elements (ids or raw lines).
Resolve one express id to a web-ifc-shaped item, dispatching on what the id denotes:
descriptive_/measure_representation_item id,
referenced from a pset's HasProperties) → { expressID, Name: {type,value}, NominalValue: {type,value} }, the shape unpackHelper reads after it
dereferences a HasProperties handle;product_definition[_shape] id
for single-part files) → { expressID, Name: {type,value} }, the part's
identity row that the Properties panel runs through deref.Property-single ids and node ids are disjoint (distinct STEP entities), so the lookup is unambiguous.
Express id to resolve.
Unused; kept for web-ifc signature parity.
The web-ifc-shaped item.
Get a part's property sets: one IfcPropertySet-shaped set per grouping
label (plain attributes vs. validation properties). Each set's
HasProperties is an array of web-ifc reference handles
({ type: 5, value: itemExpressID }) that Share's Properties panel resolves
back to individual properties via getItemProperties — emitting inline
property objects instead would trip unpackHelper's reference-type guard.
Node express id.
Unused; kept for web-ifc signature parity.
The property sets for the element.
Get the real nested, named, occurrence-keyed product structure.
OptionalincludeProperties: IncludePropertiesWhen true, merge each node's item properties onto
the node (mirrors the IFC surface's includeProperties).
Optionaloptions: SpatialStructureOptionsOptional shaping: { includeSolids: true } adds the
ephemeral solid layer beneath multibody products (type: 'solid',
ephemeral: true nodes) — see design/new/step-nonproduct-semantics.md.
The root node. A single-root file returns its root directly; a multi-root file is wrapped in a synthetic container root.
Build the property/structure indexes NOW (they are otherwise built lazily on first property access). Called before a source-buffer spill: the index build is a full-model sweep of synchronous record reads, so it must run while the source is resident — after it, post-spill property reads are pure map lookups.
web-ifc-compatible property/spatial surface over an AP214/AP242 step model.
Backed by AP214ProductStructureExtraction and AP214PropertyExtraction:
getSpatialStructurereturns the real nested, named, occurrence-keyed tree (replacing the old flat, nameless stub);getItemProperties/getPropertySetsreturn the extracted attribute and validation rows;getAllItemsOfTypeis backed by the model type index.This is the seam Share consumes (via
IfcApiProxyAP214); nothing in Share changes — it lights up the moment this returns a real tree.