brepjs-bim 0.23.2 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,14 +25,25 @@ the low-level path (and covers elements the declarative route doesn't yet). See
25
25
 
26
26
  Parametric authoring of the common IFC4 building elements plus the data layers that make a model
27
27
  useful downstream (psets, classification, materials, quantities), with import, export, and
28
- validation. Geometry is produced by brepjs (OCCT); each element carries a `ValidSolid` (or, for
29
- curtain walls, a panel/mullion grid). Element geometry is **unplaced template geometry** in local
30
- coordinates placement (`origin` / `axisX` / `axisZ`) is applied by the IFC layer via
31
- `IfcLocalPlacement`, not baked into the brepjs solid. Use `placedSolids(element)` to read fresh,
32
- caller-owned solids transformed by the element's own placement (stairs and ramps return one solid
33
- per flight, curtain walls their panels and mullions). When an element is beneath a placed spatial
34
- structure, pass its cumulative frame as `placedSolids(element, { parentFrame })` to obtain world
35
- coordinates. This is especially important for parent-local Proxy and Earthworks Fill bodies.
28
+ validation. Geometry is produced by brepjs (OCCT). Walls and railings carry a `ProductBody`, either
29
+ a parametric solid or a non-empty collection of authoritative exact solids. Use `bodySolids()` to
30
+ borrow their Product-local model handles and narrow `geometry.kind` when a caller specifically
31
+ needs the parametric branch. Other solid-bearing categories continue to expose their existing
32
+ geometry types.
33
+
34
+ `takeExactProductBody(localId, { kind: 'EXACT', solids })` installs an authoritative wall or
35
+ railing Body atomically. Success transfers every supplied handle to the model and disposes the
36
+ superseded parametric Body; failure transfers nothing. Add wall openings before takeover, because
37
+ an exact wall rejects later `addDoor()` and `addWindow()` mutations.
38
+
39
+ Element geometry is **unplaced template geometry** in local coordinates. Placement (`origin` /
40
+ `axisX` / `axisZ`) is applied by the IFC layer via `IfcLocalPlacement`, not baked into the brepjs
41
+ solid. Use `placedSolids(element)` to read fresh, caller-owned solids transformed by the element's
42
+ own placement. Stairs and ramps return one solid per flight, curtain walls return their panels and
43
+ mullions, and an exact Product Body returns one placed copy per Body item. When an element is
44
+ beneath a placed spatial structure, pass its cumulative frame as
45
+ `placedSolids(element, { parentFrame })` to obtain world coordinates. This is especially important
46
+ for parent-local Proxy and Earthworks Fill bodies.
36
47
 
37
48
  IFC import reconstructs every supported Body item independently. `ImportedGeometry.solids` owns
38
49
  the resulting World-placed handles and `completeness` reports `COMPLETE`, `PARTIAL`, or `NONE`.