@ifc-lite/create 3.2.0 → 5.1.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 +43 -0
- package/dist/in-store/align-boxes.d.ts +38 -0
- package/dist/in-store/align-boxes.d.ts.map +1 -0
- package/dist/in-store/align-boxes.js +97 -0
- package/dist/in-store/align-boxes.js.map +1 -0
- package/dist/in-store/anchor.d.ts.map +1 -1
- package/dist/in-store/anchor.js +13 -2
- package/dist/in-store/anchor.js.map +1 -1
- package/dist/in-store/auto-space-detect.d.ts +1 -1
- package/dist/in-store/auto-space-detect.js +1 -1
- package/dist/in-store/beam.d.ts +10 -1
- package/dist/in-store/beam.d.ts.map +1 -1
- package/dist/in-store/beam.js +17 -35
- package/dist/in-store/beam.js.map +1 -1
- package/dist/in-store/column.d.ts +10 -1
- package/dist/in-store/column.d.ts.map +1 -1
- package/dist/in-store/column.js +23 -22
- package/dist/in-store/column.js.map +1 -1
- package/dist/in-store/copy-array.d.ts +17 -0
- package/dist/in-store/copy-array.d.ts.map +1 -0
- package/dist/in-store/copy-array.js +47 -0
- package/dist/in-store/copy-array.js.map +1 -0
- package/dist/in-store/copy-batch.d.ts +27 -0
- package/dist/in-store/copy-batch.d.ts.map +1 -0
- package/dist/in-store/copy-batch.js +101 -0
- package/dist/in-store/copy-batch.js.map +1 -0
- package/dist/in-store/copy-dependent-walk.d.ts +27 -0
- package/dist/in-store/copy-dependent-walk.d.ts.map +1 -0
- package/dist/in-store/copy-dependent-walk.js +61 -0
- package/dist/in-store/copy-dependent-walk.js.map +1 -0
- package/dist/in-store/copy-frame.d.ts +53 -0
- package/dist/in-store/copy-frame.d.ts.map +1 -0
- package/dist/in-store/copy-frame.js +112 -0
- package/dist/in-store/copy-frame.js.map +1 -0
- package/dist/in-store/copy-product.d.ts +76 -0
- package/dist/in-store/copy-product.d.ts.map +1 -0
- package/dist/in-store/copy-product.js +318 -0
- package/dist/in-store/copy-product.js.map +1 -0
- package/dist/in-store/curtain-wall.d.ts +87 -0
- package/dist/in-store/curtain-wall.d.ts.map +1 -0
- package/dist/in-store/curtain-wall.js +237 -0
- package/dist/in-store/curtain-wall.js.map +1 -0
- package/dist/in-store/edit/effective-mutation-view.d.ts +6 -0
- package/dist/in-store/edit/effective-mutation-view.d.ts.map +1 -0
- package/dist/in-store/edit/effective-mutation-view.js +45 -0
- package/dist/in-store/edit/effective-mutation-view.js.map +1 -0
- package/dist/in-store/edit/effective-storey.d.ts +13 -0
- package/dist/in-store/edit/effective-storey.d.ts.map +1 -0
- package/dist/in-store/edit/effective-storey.js +36 -0
- package/dist/in-store/edit/effective-storey.js.map +1 -0
- package/dist/in-store/edit/effective-storeys.d.ts +9 -0
- package/dist/in-store/edit/effective-storeys.d.ts.map +1 -0
- package/dist/in-store/edit/effective-storeys.js +16 -0
- package/dist/in-store/edit/effective-storeys.js.map +1 -0
- package/dist/in-store/edit/hosted-opening-refit.d.ts +29 -0
- package/dist/in-store/edit/hosted-opening-refit.d.ts.map +1 -0
- package/dist/in-store/edit/hosted-opening-refit.js +168 -0
- package/dist/in-store/edit/hosted-opening-refit.js.map +1 -0
- package/dist/in-store/edit/length-unit-scale.d.ts +24 -0
- package/dist/in-store/edit/length-unit-scale.d.ts.map +1 -0
- package/dist/in-store/edit/length-unit-scale.js +37 -0
- package/dist/in-store/edit/length-unit-scale.js.map +1 -0
- package/dist/in-store/edit/linear-element-edit.d.ts +131 -0
- package/dist/in-store/edit/linear-element-edit.d.ts.map +1 -0
- package/dist/in-store/edit/linear-element-edit.js +259 -0
- package/dist/in-store/edit/linear-element-edit.js.map +1 -0
- package/dist/in-store/edit/metadata-clone-effective.d.ts +5 -0
- package/dist/in-store/edit/metadata-clone-effective.d.ts.map +1 -0
- package/dist/in-store/edit/metadata-clone-effective.js +47 -0
- package/dist/in-store/edit/metadata-clone-effective.js.map +1 -0
- package/dist/in-store/edit/metadata-clone.d.ts +40 -0
- package/dist/in-store/edit/metadata-clone.d.ts.map +1 -0
- package/dist/in-store/edit/metadata-clone.js +107 -0
- package/dist/in-store/edit/metadata-clone.js.map +1 -0
- package/dist/in-store/edit/placement-core.d.ts +140 -0
- package/dist/in-store/edit/placement-core.d.ts.map +1 -0
- package/dist/in-store/edit/placement-core.js +317 -0
- package/dist/in-store/edit/placement-core.js.map +1 -0
- package/dist/in-store/edit/polygon-clip.d.ts +58 -0
- package/dist/in-store/edit/polygon-clip.d.ts.map +1 -0
- package/dist/in-store/edit/polygon-clip.js +153 -0
- package/dist/in-store/edit/polygon-clip.js.map +1 -0
- package/dist/in-store/edit/read-profile.d.ts +6 -0
- package/dist/in-store/edit/read-profile.d.ts.map +1 -0
- package/dist/in-store/edit/read-profile.js +95 -0
- package/dist/in-store/edit/read-profile.js.map +1 -0
- package/dist/in-store/edit/slab-edit-frame.d.ts +40 -0
- package/dist/in-store/edit/slab-edit-frame.d.ts.map +1 -0
- package/dist/in-store/edit/slab-edit-frame.js +146 -0
- package/dist/in-store/edit/slab-edit-frame.js.map +1 -0
- package/dist/in-store/edit/slab-edit.d.ts +112 -0
- package/dist/in-store/edit/slab-edit.d.ts.map +1 -0
- package/dist/in-store/edit/slab-edit.js +275 -0
- package/dist/in-store/edit/slab-edit.js.map +1 -0
- package/dist/in-store/edit/slab-opening-carry.d.ts +10 -0
- package/dist/in-store/edit/slab-opening-carry.d.ts.map +1 -0
- package/dist/in-store/edit/slab-opening-carry.js +65 -0
- package/dist/in-store/edit/slab-opening-carry.js.map +1 -0
- package/dist/in-store/edit/split-guid.d.ts +29 -0
- package/dist/in-store/edit/split-guid.d.ts.map +1 -0
- package/dist/in-store/edit/split-guid.js +64 -0
- package/dist/in-store/edit/split-guid.js.map +1 -0
- package/dist/in-store/edit/split-target.d.ts +90 -0
- package/dist/in-store/edit/split-target.d.ts.map +1 -0
- package/dist/in-store/edit/split-target.js +116 -0
- package/dist/in-store/edit/split-target.js.map +1 -0
- package/dist/in-store/edit/target.d.ts +8 -0
- package/dist/in-store/edit/target.d.ts.map +1 -0
- package/dist/in-store/edit/target.js +5 -0
- package/dist/in-store/edit/target.js.map +1 -0
- package/dist/in-store/edit/trim-extend-geometry.d.ts +99 -0
- package/dist/in-store/edit/trim-extend-geometry.d.ts.map +1 -0
- package/dist/in-store/edit/trim-extend-geometry.js +105 -0
- package/dist/in-store/edit/trim-extend-geometry.js.map +1 -0
- package/dist/in-store/edit/wall-axis-edit.d.ts +16 -0
- package/dist/in-store/edit/wall-axis-edit.d.ts.map +1 -0
- package/dist/in-store/edit/wall-axis-edit.js +40 -0
- package/dist/in-store/edit/wall-axis-edit.js.map +1 -0
- package/dist/in-store/edit/wall-edit.d.ts +157 -0
- package/dist/in-store/edit/wall-edit.d.ts.map +1 -0
- package/dist/in-store/edit/wall-edit.js +276 -0
- package/dist/in-store/edit/wall-edit.js.map +1 -0
- package/dist/in-store/edit/wall-hosted-cuts.d.ts +35 -0
- package/dist/in-store/edit/wall-hosted-cuts.d.ts.map +1 -0
- package/dist/in-store/edit/wall-hosted-cuts.js +27 -0
- package/dist/in-store/edit/wall-hosted-cuts.js.map +1 -0
- package/dist/in-store/edit/wall-opening-reassign.d.ts +18 -0
- package/dist/in-store/edit/wall-opening-reassign.d.ts.map +1 -0
- package/dist/in-store/edit/wall-opening-reassign.js +50 -0
- package/dist/in-store/edit/wall-opening-reassign.js.map +1 -0
- package/dist/in-store/element-align.d.ts +13 -0
- package/dist/in-store/element-align.d.ts.map +1 -0
- package/dist/in-store/element-align.js +90 -0
- package/dist/in-store/element-align.js.map +1 -0
- package/dist/in-store/element-replacement.d.ts +26 -0
- package/dist/in-store/element-replacement.d.ts.map +1 -0
- package/dist/in-store/element-replacement.js +68 -0
- package/dist/in-store/element-replacement.js.map +1 -0
- package/dist/in-store/element-size-edit.d.ts +40 -0
- package/dist/in-store/element-size-edit.d.ts.map +1 -0
- package/dist/in-store/element-size-edit.js +103 -0
- package/dist/in-store/element-size-edit.js.map +1 -0
- package/dist/in-store/element-split-axis.d.ts +6 -0
- package/dist/in-store/element-split-axis.d.ts.map +1 -0
- package/dist/in-store/element-split-axis.js +87 -0
- package/dist/in-store/element-split-axis.js.map +1 -0
- package/dist/in-store/element-split-joined.d.ts +13 -0
- package/dist/in-store/element-split-joined.d.ts.map +1 -0
- package/dist/in-store/element-split-joined.js +74 -0
- package/dist/in-store/element-split-joined.js.map +1 -0
- package/dist/in-store/element-split-placement.d.ts +19 -0
- package/dist/in-store/element-split-placement.d.ts.map +1 -0
- package/dist/in-store/element-split-placement.js +48 -0
- package/dist/in-store/element-split-placement.js.map +1 -0
- package/dist/in-store/element-split-slab.d.ts +19 -0
- package/dist/in-store/element-split-slab.d.ts.map +1 -0
- package/dist/in-store/element-split-slab.js +86 -0
- package/dist/in-store/element-split-slab.js.map +1 -0
- package/dist/in-store/element-split.d.ts +49 -0
- package/dist/in-store/element-split.d.ts.map +1 -0
- package/dist/in-store/element-split.js +52 -0
- package/dist/in-store/element-split.js.map +1 -0
- package/dist/in-store/element-transform-edit.d.ts +33 -0
- package/dist/in-store/element-transform-edit.d.ts.map +1 -0
- package/dist/in-store/element-transform-edit.js +97 -0
- package/dist/in-store/element-transform-edit.js.map +1 -0
- package/dist/in-store/element-transform-frames.d.ts +58 -0
- package/dist/in-store/element-transform-frames.d.ts.map +1 -0
- package/dist/in-store/element-transform-frames.js +110 -0
- package/dist/in-store/element-transform-frames.js.map +1 -0
- package/dist/in-store/element-transform-joins.d.ts +4 -0
- package/dist/in-store/element-transform-joins.d.ts.map +1 -0
- package/dist/in-store/element-transform-joins.js +62 -0
- package/dist/in-store/element-transform-joins.js.map +1 -0
- package/dist/in-store/element-transform-plan.d.ts +38 -0
- package/dist/in-store/element-transform-plan.d.ts.map +1 -0
- package/dist/in-store/element-transform-plan.js +115 -0
- package/dist/in-store/element-transform-plan.js.map +1 -0
- package/dist/in-store/element-trim-extend.d.ts +25 -0
- package/dist/in-store/element-trim-extend.d.ts.map +1 -0
- package/dist/in-store/element-trim-extend.js +97 -0
- package/dist/in-store/element-trim-extend.js.map +1 -0
- package/dist/in-store/extract-grids.d.ts +36 -0
- package/dist/in-store/extract-grids.d.ts.map +1 -0
- package/dist/in-store/extract-grids.js +220 -0
- package/dist/in-store/extract-grids.js.map +1 -0
- package/dist/in-store/extract-walls.d.ts +12 -23
- package/dist/in-store/extract-walls.d.ts.map +1 -1
- package/dist/in-store/extract-walls.js +6 -69
- package/dist/in-store/extract-walls.js.map +1 -1
- package/dist/in-store/generate-spaces.d.ts +1 -1
- package/dist/in-store/grid-column.d.ts +23 -0
- package/dist/in-store/grid-column.d.ts.map +1 -0
- package/dist/in-store/grid-column.js +73 -0
- package/dist/in-store/grid-column.js.map +1 -0
- package/dist/in-store/grid-intersection-read.d.ts +10 -0
- package/dist/in-store/grid-intersection-read.d.ts.map +1 -0
- package/dist/in-store/grid-intersection-read.js +45 -0
- package/dist/in-store/grid-intersection-read.js.map +1 -0
- package/dist/in-store/grid.d.ts +124 -0
- package/dist/in-store/grid.d.ts.map +1 -0
- package/dist/in-store/grid.js +204 -0
- package/dist/in-store/grid.js.map +1 -0
- package/dist/in-store/group-evidence.d.ts +49 -0
- package/dist/in-store/group-evidence.d.ts.map +1 -0
- package/dist/in-store/group-evidence.js +111 -0
- package/dist/in-store/group-evidence.js.map +1 -0
- package/dist/in-store/group-graph.d.ts +51 -0
- package/dist/in-store/group-graph.d.ts.map +1 -0
- package/dist/in-store/group-graph.js +213 -0
- package/dist/in-store/group-graph.js.map +1 -0
- package/dist/in-store/group.d.ts +34 -0
- package/dist/in-store/group.d.ts.map +1 -0
- package/dist/in-store/group.js +181 -0
- package/dist/in-store/group.js.map +1 -0
- package/dist/in-store/host-geometry-frame.d.ts +48 -0
- package/dist/in-store/host-geometry-frame.d.ts.map +1 -0
- package/dist/in-store/host-geometry-frame.js +190 -0
- package/dist/in-store/host-geometry-frame.js.map +1 -0
- package/dist/in-store/hosted-element-edit.d.ts +29 -0
- package/dist/in-store/hosted-element-edit.d.ts.map +1 -0
- package/dist/in-store/hosted-element-edit.js +120 -0
- package/dist/in-store/hosted-element-edit.js.map +1 -0
- package/dist/in-store/hosted-element.d.ts +41 -0
- package/dist/in-store/hosted-element.d.ts.map +1 -0
- package/dist/in-store/hosted-element.js +124 -0
- package/dist/in-store/hosted-element.js.map +1 -0
- package/dist/in-store/hosted-fill-read.d.ts +56 -0
- package/dist/in-store/hosted-fill-read.d.ts.map +1 -0
- package/dist/in-store/hosted-fill-read.js +197 -0
- package/dist/in-store/hosted-fill-read.js.map +1 -0
- package/dist/in-store/hosted-global-id.d.ts +8 -0
- package/dist/in-store/hosted-global-id.d.ts.map +1 -0
- package/dist/in-store/hosted-global-id.js +53 -0
- package/dist/in-store/hosted-global-id.js.map +1 -0
- package/dist/in-store/hosted-placement-edit.d.ts +30 -0
- package/dist/in-store/hosted-placement-edit.d.ts.map +1 -0
- package/dist/in-store/hosted-placement-edit.js +123 -0
- package/dist/in-store/hosted-placement-edit.js.map +1 -0
- package/dist/in-store/hosted-scale-chain.d.ts +12 -0
- package/dist/in-store/hosted-scale-chain.d.ts.map +1 -0
- package/dist/in-store/hosted-scale-chain.js +74 -0
- package/dist/in-store/hosted-scale-chain.js.map +1 -0
- package/dist/in-store/hosted-shape-edit.d.ts +9 -0
- package/dist/in-store/hosted-shape-edit.d.ts.map +1 -0
- package/dist/in-store/hosted-shape-edit.js +79 -0
- package/dist/in-store/hosted-shape-edit.js.map +1 -0
- package/dist/in-store/index.d.ts +66 -0
- package/dist/in-store/index.d.ts.map +1 -0
- package/dist/in-store/index.js +71 -0
- package/dist/in-store/index.js.map +1 -0
- package/dist/in-store/linear-profile-frame.d.ts +10 -0
- package/dist/in-store/linear-profile-frame.d.ts.map +1 -0
- package/dist/in-store/linear-profile-frame.js +17 -0
- package/dist/in-store/linear-profile-frame.js.map +1 -0
- package/dist/in-store/material.d.ts.map +1 -1
- package/dist/in-store/material.js +17 -6
- package/dist/in-store/material.js.map +1 -1
- package/dist/in-store/member.d.ts +8 -2
- package/dist/in-store/member.d.ts.map +1 -1
- package/dist/in-store/member.js +15 -21
- package/dist/in-store/member.js.map +1 -1
- package/dist/in-store/ordinary-element.d.ts +47 -0
- package/dist/in-store/ordinary-element.d.ts.map +1 -0
- package/dist/in-store/ordinary-element.js +38 -0
- package/dist/in-store/ordinary-element.js.map +1 -0
- package/dist/in-store/placement-frame.d.ts +15 -5
- package/dist/in-store/placement-frame.d.ts.map +1 -1
- package/dist/in-store/placement-frame.js +25 -36
- package/dist/in-store/placement-frame.js.map +1 -1
- package/dist/in-store/profile.d.ts +141 -0
- package/dist/in-store/profile.d.ts.map +1 -0
- package/dist/in-store/profile.js +174 -0
- package/dist/in-store/profile.js.map +1 -0
- package/dist/in-store/railing.d.ts +65 -0
- package/dist/in-store/railing.d.ts.map +1 -0
- package/dist/in-store/railing.js +112 -0
- package/dist/in-store/railing.js.map +1 -0
- package/dist/in-store/rel-connects-path.d.ts +43 -0
- package/dist/in-store/rel-connects-path.d.ts.map +1 -0
- package/dist/in-store/rel-connects-path.js +65 -0
- package/dist/in-store/rel-connects-path.js.map +1 -0
- package/dist/in-store/resolve-anchor.d.ts +3 -2
- package/dist/in-store/resolve-anchor.d.ts.map +1 -1
- package/dist/in-store/resolve-anchor.js +7 -5
- package/dist/in-store/resolve-anchor.js.map +1 -1
- package/dist/in-store/resolve-host.d.ts +12 -1
- package/dist/in-store/resolve-host.d.ts.map +1 -1
- package/dist/in-store/resolve-host.js +169 -85
- package/dist/in-store/resolve-host.js.map +1 -1
- package/dist/in-store/resolve-relations.d.ts +3 -1
- package/dist/in-store/resolve-relations.d.ts.map +1 -1
- package/dist/in-store/resolve-relations.js +8 -3
- package/dist/in-store/resolve-relations.js.map +1 -1
- package/dist/in-store/resolve-source.d.ts.map +1 -1
- package/dist/in-store/resolve-source.js +39 -59
- package/dist/in-store/resolve-source.js.map +1 -1
- package/dist/in-store/room-candidates.d.ts +58 -0
- package/dist/in-store/room-candidates.d.ts.map +1 -0
- package/dist/in-store/room-candidates.js +135 -0
- package/dist/in-store/room-candidates.js.map +1 -0
- package/dist/in-store/room-creation-plan.d.ts +16 -0
- package/dist/in-store/room-creation-plan.d.ts.map +1 -0
- package/dist/in-store/room-creation-plan.js +28 -0
- package/dist/in-store/room-creation-plan.js.map +1 -0
- package/dist/in-store/room-floor-height.d.ts +24 -0
- package/dist/in-store/room-floor-height.d.ts.map +1 -0
- package/dist/in-store/room-floor-height.js +32 -0
- package/dist/in-store/room-floor-height.js.map +1 -0
- package/dist/in-store/room-footprint-native.d.ts +19 -0
- package/dist/in-store/room-footprint-native.d.ts.map +1 -0
- package/dist/in-store/room-footprint-native.js +117 -0
- package/dist/in-store/room-footprint-native.js.map +1 -0
- package/dist/in-store/room-layout-cache.d.ts +23 -0
- package/dist/in-store/room-layout-cache.d.ts.map +1 -0
- package/dist/in-store/room-layout-cache.js +84 -0
- package/dist/in-store/room-layout-cache.js.map +1 -0
- package/dist/in-store/room-layout-core.d.ts +68 -0
- package/dist/in-store/room-layout-core.d.ts.map +1 -0
- package/dist/in-store/room-layout-core.js +153 -0
- package/dist/in-store/room-layout-core.js.map +1 -0
- package/dist/in-store/room-population.d.ts +5 -0
- package/dist/in-store/room-population.d.ts.map +1 -0
- package/dist/in-store/room-population.js +28 -0
- package/dist/in-store/room-population.js.map +1 -0
- package/dist/in-store/room-space-meshes.d.ts +15 -0
- package/dist/in-store/room-space-meshes.d.ts.map +1 -0
- package/dist/in-store/room-space-meshes.js +38 -0
- package/dist/in-store/room-space-meshes.js.map +1 -0
- package/dist/in-store/room-store.d.ts +55 -0
- package/dist/in-store/room-store.d.ts.map +1 -0
- package/dist/in-store/room-store.js +173 -0
- package/dist/in-store/room-store.js.map +1 -0
- package/dist/in-store/room-storey-elevation.d.ts +5 -0
- package/dist/in-store/room-storey-elevation.d.ts.map +1 -0
- package/dist/in-store/room-storey-elevation.js +42 -0
- package/dist/in-store/room-storey-elevation.js.map +1 -0
- package/dist/in-store/room-storey-frame.d.ts +47 -0
- package/dist/in-store/room-storey-frame.d.ts.map +1 -0
- package/dist/in-store/room-storey-frame.js +48 -0
- package/dist/in-store/room-storey-frame.js.map +1 -0
- package/dist/in-store/room-wall-rects.d.ts +117 -0
- package/dist/in-store/room-wall-rects.d.ts.map +1 -0
- package/dist/in-store/room-wall-rects.js +157 -0
- package/dist/in-store/room-wall-rects.js.map +1 -0
- package/dist/in-store/schema-attributes.d.ts +8 -3
- package/dist/in-store/schema-attributes.d.ts.map +1 -1
- package/dist/in-store/schema-attributes.js +18 -9
- package/dist/in-store/schema-attributes.js.map +1 -1
- package/dist/in-store/slab.d.ts.map +1 -1
- package/dist/in-store/slab.js +1 -4
- package/dist/in-store/slab.js.map +1 -1
- package/dist/in-store/space-footprints.d.ts +55 -0
- package/dist/in-store/space-footprints.d.ts.map +1 -0
- package/dist/in-store/space-footprints.js +260 -0
- package/dist/in-store/space-footprints.js.map +1 -0
- package/dist/in-store/space.d.ts.map +1 -1
- package/dist/in-store/space.js +15 -3
- package/dist/in-store/space.js.map +1 -1
- package/dist/in-store/spatial-children.d.ts +1 -1
- package/dist/in-store/spatial-children.js +1 -1
- package/dist/in-store/stair-edit.d.ts +24 -0
- package/dist/in-store/stair-edit.d.ts.map +1 -0
- package/dist/in-store/stair-edit.js +190 -0
- package/dist/in-store/stair-edit.js.map +1 -0
- package/dist/in-store/stair-removal.d.ts +17 -0
- package/dist/in-store/stair-removal.d.ts.map +1 -0
- package/dist/in-store/stair-removal.js +134 -0
- package/dist/in-store/stair-removal.js.map +1 -0
- package/dist/in-store/stair.d.ts +58 -0
- package/dist/in-store/stair.d.ts.map +1 -0
- package/dist/in-store/stair.js +156 -0
- package/dist/in-store/stair.js.map +1 -0
- package/dist/in-store/storey-plan-frame.d.ts +2 -1
- package/dist/in-store/storey-plan-frame.d.ts.map +1 -1
- package/dist/in-store/storey-plan-frame.js +20 -11
- package/dist/in-store/storey-plan-frame.js.map +1 -1
- package/dist/in-store/storey-reassignment-plan.d.ts +53 -0
- package/dist/in-store/storey-reassignment-plan.d.ts.map +1 -0
- package/dist/in-store/storey-reassignment-plan.js +237 -0
- package/dist/in-store/storey-reassignment-plan.js.map +1 -0
- package/dist/in-store/storey-reassignment.d.ts +8 -0
- package/dist/in-store/storey-reassignment.d.ts.map +1 -0
- package/dist/in-store/storey-reassignment.js +52 -0
- package/dist/in-store/storey-reassignment.js.map +1 -0
- package/dist/in-store/trim-extend-plan.d.ts +27 -0
- package/dist/in-store/trim-extend-plan.d.ts.map +1 -0
- package/dist/in-store/trim-extend-plan.js +49 -0
- package/dist/in-store/trim-extend-plan.js.map +1 -0
- package/dist/in-store/wall-join-apply.d.ts +74 -0
- package/dist/in-store/wall-join-apply.d.ts.map +1 -0
- package/dist/in-store/wall-join-apply.js +137 -0
- package/dist/in-store/wall-join-apply.js.map +1 -0
- package/dist/in-store/wall-join-edit.d.ts +53 -0
- package/dist/in-store/wall-join-edit.d.ts.map +1 -0
- package/dist/in-store/wall-join-edit.js +251 -0
- package/dist/in-store/wall-join-edit.js.map +1 -0
- package/dist/in-store/wall-join-read.d.ts +60 -0
- package/dist/in-store/wall-join-read.d.ts.map +1 -0
- package/dist/in-store/wall-join-read.js +230 -0
- package/dist/in-store/wall-join-read.js.map +1 -0
- package/dist/in-store/wall-join.d.ts +122 -0
- package/dist/in-store/wall-join.d.ts.map +1 -0
- package/dist/in-store/wall-join.js +231 -0
- package/dist/in-store/wall-join.js.map +1 -0
- package/dist/in-store/wall-opening-fit.d.ts +11 -0
- package/dist/in-store/wall-opening-fit.d.ts.map +1 -0
- package/dist/in-store/wall-opening-fit.js +27 -0
- package/dist/in-store/wall-opening-fit.js.map +1 -0
- package/dist/in-store/wall-section-edit.d.ts +16 -0
- package/dist/in-store/wall-section-edit.d.ts.map +1 -0
- package/dist/in-store/wall-section-edit.js +75 -0
- package/dist/in-store/wall-section-edit.js.map +1 -0
- package/dist/in-store/wall-size-edit.d.ts +29 -0
- package/dist/in-store/wall-size-edit.d.ts.map +1 -0
- package/dist/in-store/wall-size-edit.js +65 -0
- package/dist/in-store/wall-size-edit.js.map +1 -0
- package/dist/in-store/wall.d.ts +32 -0
- package/dist/in-store/wall.d.ts.map +1 -1
- package/dist/in-store/wall.js +77 -13
- package/dist/in-store/wall.js.map +1 -1
- package/dist/index.d.ts +25 -38
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -40
- package/dist/index.js.map +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/** Canonical atomic Room graph writes over the native DCEL's candidates (#6232 D5). */
|
|
5
|
+
import { editOwnershipRefusal } from '@ifc-lite/export';
|
|
6
|
+
import { QuantityType } from '@ifc-lite/data';
|
|
7
|
+
import { getSchemaRegistryForVersion } from '@ifc-lite/parser';
|
|
8
|
+
import { recordSessionMutation } from '@ifc-lite/mutations';
|
|
9
|
+
import { addSpaceToStore } from './space.js';
|
|
10
|
+
import { GENERATED_SPACE_OBJECTTYPE } from './generate-spaces.js';
|
|
11
|
+
import { resolveSpatialAnchor } from './resolve-anchor.js';
|
|
12
|
+
import { resolveSplitTarget } from './edit/split-target.js';
|
|
13
|
+
import { getModelLengthUnitScale } from './edit/length-unit-scale.js';
|
|
14
|
+
import { effectiveStoreyId } from './edit/effective-storey.js';
|
|
15
|
+
import { emitClippedProfile } from './element-split-slab.js';
|
|
16
|
+
import { readAttributes } from './edit/placement-core.js';
|
|
17
|
+
import { cloneElementMetadata } from './edit/metadata-clone.js';
|
|
18
|
+
import { deriveSplitGlobalId, globalIdTakenIn, keepsFirstPiece } from './edit/split-guid.js';
|
|
19
|
+
import { polygonArea as polyArea, pointInPolygon as pointInPoly } from './room-footprint-offset.js';
|
|
20
|
+
import { roomAt, interiorPoint, roomOutline } from './room-candidates.js';
|
|
21
|
+
/** Source and overlay use the exact same supported extrusion predicate. */
|
|
22
|
+
export function roomChainInStore(store, editor, id) {
|
|
23
|
+
const view = editor.getMutationView();
|
|
24
|
+
const target = resolveSplitTarget(store, view, editor, id, getModelLengthUnitScale(store));
|
|
25
|
+
if (!target.ok)
|
|
26
|
+
return { ok: false, reason: target.code === 'storey' || target.code === 'container' ? 'storey' : 'shape' };
|
|
27
|
+
if (target.kind !== 'slab' || target.chain.elementType !== 'IfcSpace')
|
|
28
|
+
return { ok: false, reason: 'shape' };
|
|
29
|
+
const storeyId = effectiveStoreyId(store, view, id);
|
|
30
|
+
return storeyId === undefined ? { ok: false, reason: 'storey' } : { ok: true, storeyId, chain: target.chain };
|
|
31
|
+
}
|
|
32
|
+
/** Auto/pick/draw commit their supplied native outlines together as one operation. */
|
|
33
|
+
export function createRoomsInStore(store, editor, storeyId, rooms) {
|
|
34
|
+
if (rooms.length > 10000)
|
|
35
|
+
throw new Error('Room batch exceeds 10000 rooms');
|
|
36
|
+
return editor.runAtomic(draft => {
|
|
37
|
+
const anchor = resolveSpatialAnchor(store, storeyId, draft.getMutationView());
|
|
38
|
+
return rooms.map(room => addSpaceToStore(draft, anchor, {
|
|
39
|
+
Profile: 'polygon', OuterCurve: room.outline, Position: [0, 0, room.z], Height: room.height, Name: room.Name,
|
|
40
|
+
...(room.PredefinedType !== undefined ? { PredefinedType: room.PredefinedType } : {}),
|
|
41
|
+
...(room.ObjectType ? { ObjectType: room.ObjectType } : room.derived ? { ObjectType: GENERATED_SPACE_OBJECTTYPE } : {}),
|
|
42
|
+
grossFloorArea: room.grossArea, netFloorArea: room.netArea,
|
|
43
|
+
}).spaceId);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export function setRoomAreasInStore(editor, id, areas, height) {
|
|
47
|
+
const view = editor.getMutationView(), qto = 'Qto_SpaceBaseQuantities';
|
|
48
|
+
view.setQuantity(id, qto, 'GrossFloorArea', areas.grossArea, QuantityType.Area);
|
|
49
|
+
view.setQuantity(id, qto, 'NetFloorArea', areas.netArea, QuantityType.Area);
|
|
50
|
+
view.setQuantity(id, qto, 'GrossVolume', areas.grossArea * height, QuantityType.Volume);
|
|
51
|
+
}
|
|
52
|
+
/** Preserve root identity, placement, metadata and links while replacing only its profile. */
|
|
53
|
+
export function rewriteRoomOutlineInStore(store, editor, id, chain, outline, areas) {
|
|
54
|
+
const ownership = editOwnershipRefusal(store, editor.getMutationView(), [chain.extrudedSolidId], new Set([id]));
|
|
55
|
+
if (ownership)
|
|
56
|
+
throw new Error(ownership);
|
|
57
|
+
const origin = chain.placementOrigin;
|
|
58
|
+
const emitted = emitClippedProfile(editor, outline, origin, chain.baseElevation - origin[2], getModelLengthUnitScale(store));
|
|
59
|
+
editor.setPositionalAttribute(chain.extrudedSolidId, 0, `#${emitted.profile}`);
|
|
60
|
+
editor.setPositionalAttribute(chain.extrudedSolidId, 1, `#${emitted.solidPosition}`);
|
|
61
|
+
editor.setPositionalAttribute(chain.extrudedSolidId, 2, `#${emitted.up}`);
|
|
62
|
+
setRoomAreasInStore(editor, id, areas, chain.thickness);
|
|
63
|
+
}
|
|
64
|
+
export function updateRoomOutlineInStore(store, editor, id, boundary, roomsOn) {
|
|
65
|
+
return editor.runAtomic(draft => {
|
|
66
|
+
const target = roomChainInStore(store, draft, id);
|
|
67
|
+
if (!target.ok)
|
|
68
|
+
return target;
|
|
69
|
+
const room = roomAt(roomsOn(target.storeyId), interiorPoint(target.chain.footprint));
|
|
70
|
+
if (!room)
|
|
71
|
+
return { ok: false, reason: 'noRoom' };
|
|
72
|
+
const outline = roomOutline(room, boundary);
|
|
73
|
+
rewriteRoomOutlineInStore(store, draft, id, target.chain, outline, room);
|
|
74
|
+
return { ok: true, outline };
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function dropCollinear(ring) {
|
|
78
|
+
const out = ring.filter((p, i) => {
|
|
79
|
+
const a = ring[(i + ring.length - 1) % ring.length], b = ring[(i + 1) % ring.length];
|
|
80
|
+
const cross = (p[0] - a[0]) * (b[1] - a[1]) - (p[1] - a[1]) * (b[0] - a[0]);
|
|
81
|
+
return Math.abs(cross) > 1e-9 * Math.max(1, Math.hypot(b[0] - a[0], b[1] - a[1]));
|
|
82
|
+
});
|
|
83
|
+
return out.length >= 3 ? out : [...ring];
|
|
84
|
+
}
|
|
85
|
+
const outlineOf = (face, link) => dropCollinear(roomOutline(face, link.boundary));
|
|
86
|
+
const ringKey = (ring) => ring.map(p => `${p[0].toFixed(4)},${p[1].toFixed(4)}`).join(';');
|
|
87
|
+
const areasOf = (face) => ({ grossArea: polyArea(face.centre), netArea: polyArea(face.inner) });
|
|
88
|
+
function chainOf(store, editor, id) {
|
|
89
|
+
const target = roomChainInStore(store, editor, id);
|
|
90
|
+
if (!target.ok)
|
|
91
|
+
throw new Error(`Room layout refuses unsupported ${target.reason} for #${id}`);
|
|
92
|
+
return target.chain;
|
|
93
|
+
}
|
|
94
|
+
function faceHolding(faces, p) {
|
|
95
|
+
let hit = null;
|
|
96
|
+
for (const face of faces)
|
|
97
|
+
if (pointInPoly(p[0], p[1], face.centre) && (!hit || polyArea(face.centre) < polyArea(hit.centre)))
|
|
98
|
+
hit = face;
|
|
99
|
+
return hit;
|
|
100
|
+
}
|
|
101
|
+
/** Native layout edit keeps the larger split/merged room identity and its metadata. */
|
|
102
|
+
export function syncRoomLayoutInStore(store, editor, before, after, globalIdScopes = [], editedStoreyId) {
|
|
103
|
+
return editor.runAtomic(draft => {
|
|
104
|
+
const out = { created: [], deleted: [], remesh: [] }, view = draft.getMutationView();
|
|
105
|
+
const seen = new Set(view.getMutations().map(mutation => mutation.id));
|
|
106
|
+
const pre = new Map(before.map(c => [c.face, c])), post = new Map(after.map(f => [f.face, f]));
|
|
107
|
+
const removed = before.filter(c => !post.has(c.face)), handled = new Set();
|
|
108
|
+
for (const face of after) {
|
|
109
|
+
if (pre.has(face.face))
|
|
110
|
+
continue;
|
|
111
|
+
const parent = faceHolding(before, interiorPoint(face.inner.length >= 3 ? face.inner : face.centre));
|
|
112
|
+
const kept = parent ? post.get(parent.face) : undefined;
|
|
113
|
+
if (!parent?.room || !kept || handled.has(kept.face))
|
|
114
|
+
continue;
|
|
115
|
+
const { room: link } = parent, chain = chainOf(store, draft, link.expressId);
|
|
116
|
+
const keepFirst = keepsFirstPiece(polyArea(outlineOf(kept, link)), polyArea(outlineOf(face, link)));
|
|
117
|
+
const [keptFace, cutFace] = keepFirst ? [kept, face] : [face, kept];
|
|
118
|
+
const attrs = readAttributes(store, view, draft, link.expressId);
|
|
119
|
+
if (!attrs)
|
|
120
|
+
throw new Error('Room layout refuses unreadable source attributes');
|
|
121
|
+
const classification = attrs[9];
|
|
122
|
+
if (classification != null && typeof classification !== 'string')
|
|
123
|
+
throw new Error('Room layout refuses invalid classification');
|
|
124
|
+
const schema = store.schemaVersion;
|
|
125
|
+
const registry = getSchemaRegistryForVersion(schema === 'IFC2X3' || schema === 'IFC4X3' ? schema : 'IFC4');
|
|
126
|
+
if (classification == null && !registry.entities.IfcSpace.allAttributes[9].optional)
|
|
127
|
+
throw new Error('Room layout requires source classification');
|
|
128
|
+
const target = roomChainInStore(store, draft, link.expressId);
|
|
129
|
+
if (!target.ok)
|
|
130
|
+
throw new Error('Room layout requires a storey');
|
|
131
|
+
const added = addSpaceToStore(draft, resolveSpatialAnchor(store, target.storeyId, view), {
|
|
132
|
+
Profile: 'polygon', Position: [0, 0, chain.baseElevation], OuterCurve: outlineOf(cutFace, link), Height: chain.thickness,
|
|
133
|
+
...(typeof attrs[2] === 'string' ? { Name: attrs[2] } : {}),
|
|
134
|
+
...(typeof classification === 'string' ? { PredefinedType: classification.replace(/^\.|\.$/g, '') } : {}),
|
|
135
|
+
...(typeof attrs[4] === 'string' ? { ObjectType: attrs[4] } : {}),
|
|
136
|
+
GlobalId: deriveSplitGlobalId(typeof attrs[0] === 'string' ? attrs[0] : String(link.expressId), globalIdTakenIn([{ dataStore: store, view }, ...globalIdScopes])),
|
|
137
|
+
}).spaceId;
|
|
138
|
+
if (classification == null)
|
|
139
|
+
draft.setPositionalAttribute(added, 9, null);
|
|
140
|
+
rewriteRoomOutlineInStore(store, draft, link.expressId, chain, outlineOf(keptFace, link), areasOf(keptFace));
|
|
141
|
+
cloneElementMetadata(store, view, draft, link.expressId, [added]);
|
|
142
|
+
setRoomAreasInStore(draft, added, areasOf(cutFace), chain.thickness);
|
|
143
|
+
handled.add(kept.face).add(face.face);
|
|
144
|
+
out.created.push(added);
|
|
145
|
+
out.remesh.push(link.expressId, added);
|
|
146
|
+
}
|
|
147
|
+
for (const face of after) {
|
|
148
|
+
if (handled.has(face.face))
|
|
149
|
+
continue;
|
|
150
|
+
const own = pre.get(face.face), absorbed = removed.filter(r => pointInPoly(r.interior[0], r.interior[1], face.centre));
|
|
151
|
+
const sources = [...(own ? [own] : []), ...absorbed];
|
|
152
|
+
const links = [...new Map(sources.flatMap(c => c.room ? [[c.room.expressId, c.room]] : [])).values()];
|
|
153
|
+
if (links.length === 0 || (absorbed.length === 0 && own && ringKey(own.centre) === ringKey(face.centre)))
|
|
154
|
+
continue;
|
|
155
|
+
const chains = links.map(link => ({ link, chain: chainOf(store, draft, link.expressId) }));
|
|
156
|
+
chains.sort((x, y) => polyArea(y.chain.footprint) - polyArea(x.chain.footprint));
|
|
157
|
+
const [{ link, chain }, ...merged] = chains;
|
|
158
|
+
rewriteRoomOutlineInStore(store, draft, link.expressId, chain, outlineOf(face, link), areasOf(face));
|
|
159
|
+
out.remesh.push(link.expressId);
|
|
160
|
+
for (const entry of merged) {
|
|
161
|
+
if (!draft.removeEntity(entry.link.expressId))
|
|
162
|
+
throw new Error('Room layout could not remove merged room');
|
|
163
|
+
out.deleted.push(entry.link.expressId);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Native callers pass the storey after a changed layout operation.
|
|
167
|
+
if (editedStoreyId !== undefined && !view.getMutations().some(mutation => !seen.has(mutation.id))) {
|
|
168
|
+
recordSessionMutation(view, editedStoreyId, 'room-layout');
|
|
169
|
+
}
|
|
170
|
+
return out;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=room-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-store.js","sourceRoot":"","sources":["../../src/in-store/room-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
2
|
+
import { type IfcDataStore } from '@ifc-lite/parser';
|
|
3
|
+
/** Renderer-frame floor height for a live storey, including authored Elevation. */
|
|
4
|
+
export declare function effectiveStoreyElevation(store: IfcDataStore, view: MutablePropertyView | null | undefined, storeyId: number): number;
|
|
5
|
+
//# sourceMappingURL=room-storey-elevation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-storey-elevation.d.ts","sourceRoot":"","sources":["../../src/in-store/room-storey-elevation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpG,mFAAmF;AACnF,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,EAC5C,QAAQ,EAAE,MAAM,GACf,MAAM,CAkCR"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
import { EntityExtractor, resolveEffectiveEntityRecord } from '@ifc-lite/parser';
|
|
5
|
+
/** Renderer-frame floor height for a live storey, including authored Elevation. */
|
|
6
|
+
export function effectiveStoreyElevation(store, view, storeyId) {
|
|
7
|
+
const created = view?.getNewEntity(storeyId);
|
|
8
|
+
const retype = view?.getEntityTypeMutation(storeyId)?.newType;
|
|
9
|
+
const named = view?.getAttributeMutationsForEntity(storeyId) ?? [];
|
|
10
|
+
const positional = view?.getPositionalMutationsForEntity(storeyId);
|
|
11
|
+
// Hover raycasts ask for this floor repeatedly. The parsed hierarchy is
|
|
12
|
+
// already in metres, so avoid extracting an unchanged source record.
|
|
13
|
+
if (!created && !retype && !positional?.has(9)
|
|
14
|
+
&& !named.some(({ name }) => name === 'Elevation')) {
|
|
15
|
+
return store.spatialHierarchy?.storeyElevations.get(storeyId) ?? 0;
|
|
16
|
+
}
|
|
17
|
+
// @raw-entity-enumeration-ok point lookup for the already-selected effective storey's source record
|
|
18
|
+
const ref = created ? undefined : store.entityIndex.byId.get(storeyId)
|
|
19
|
+
?? store.deferredEntityIndex?.get(storeyId);
|
|
20
|
+
const source = ref && store.source.byteLength > 0
|
|
21
|
+
? new EntityExtractor(store.source).extractEntity(ref)
|
|
22
|
+
: null;
|
|
23
|
+
const entity = created ?? source;
|
|
24
|
+
if (entity) {
|
|
25
|
+
const record = resolveEffectiveEntityRecord(entity, {
|
|
26
|
+
retype,
|
|
27
|
+
named: named.map(({ name, value }) => [name, value]),
|
|
28
|
+
positional: positional ?? [],
|
|
29
|
+
}, store.schemaVersion);
|
|
30
|
+
const value = record.attributes[9]; // IfcBuildingStorey.Elevation in IFC2X3/IFC4.
|
|
31
|
+
const raw = typeof value === 'number' ? value
|
|
32
|
+
: typeof value === 'string' && value.trim() ? Number(value)
|
|
33
|
+
: value && typeof value === 'object' && 'real' in value && typeof value.real === 'number'
|
|
34
|
+
? value.real
|
|
35
|
+
: Array.isArray(value) && typeof value[1] === 'number' ? value[1] : undefined;
|
|
36
|
+
if (raw !== undefined && Number.isFinite(raw))
|
|
37
|
+
return raw * (store.lengthUnitScale ?? 1);
|
|
38
|
+
}
|
|
39
|
+
// The parsed hierarchy also includes ObjectPlacement-Z when Elevation is null.
|
|
40
|
+
return store.spatialHierarchy?.storeyElevations.get(storeyId) ?? 0;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=room-storey-elevation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-storey-elevation.js","sourceRoot":"","sources":["../../src/in-store/room-storey-elevation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The storey plan frame the authored-element mirror meshes are drawn through
|
|
3
|
+
* (#6233). Picks go the other way through the storey workplane
|
|
4
|
+
* (`lib/commands/modeling/workplane.ts`), which takes its plan from here.
|
|
5
|
+
*
|
|
6
|
+
* Every builder (`addWallToStore`, `addColumnToStore`, …) anchors its element
|
|
7
|
+
* to the storey's own placement, so the coordinates it is handed are STOREY-
|
|
8
|
+
* LOCAL: a reader applies the storey's whole placement chain (storey axis ∘
|
|
9
|
+
* building ∘ site) to them. A click, a hover and the instant 3D mirror all
|
|
10
|
+
* live in the MODEL frame — the rendered geometry, which already has that
|
|
11
|
+
* chain baked in. Handing a model-frame click to a builder as if it were
|
|
12
|
+
* storey-local applies the chain a second time: on the demo project the
|
|
13
|
+
* storey hangs 3 m east and 3 m north of the model origin, so every element
|
|
14
|
+
* the Model workspace authored landed 3 m away on export and reload, while
|
|
15
|
+
* the mirror drew it under the cursor.
|
|
16
|
+
*
|
|
17
|
+
* Same frame algebra as the Room tool's space writer, reused rather
|
|
18
|
+
* than re-derived: `storeyPlanFrame` composes the chain, and the offset back to
|
|
19
|
+
* the file's own world frame is the whole `world = render + originShift + rtc`
|
|
20
|
+
* reconstruction — `roomFramePlanOffsets` (the TS origin shift, which Space
|
|
21
|
+
* Sketch's room frame already carries) plus `roomFrameToModelWorld` (the survey
|
|
22
|
+
* anchor the wasm path subtracted). Both are zero for a model near the origin.
|
|
23
|
+
*
|
|
24
|
+
* Unlike the Room tool this falls back to the identity instead of refusing when
|
|
25
|
+
* the chain will not resolve: that is exactly what the tool did before for
|
|
26
|
+
* every storey, and a storey authored in this session (no source record) has
|
|
27
|
+
* no chain to read. Refusing would block authoring outright on such a storey.
|
|
28
|
+
*/
|
|
29
|
+
import { type StoreyPlanFrame } from './storey-plan-frame.js';
|
|
30
|
+
import type { CoordinateInfo } from '@ifc-lite/geometry';
|
|
31
|
+
import type { MutablePropertyView } from '@ifc-lite/mutations';
|
|
32
|
+
import type { IfcDataStore } from '@ifc-lite/parser';
|
|
33
|
+
type Vec2 = [number, number];
|
|
34
|
+
export interface StoreyAuthoringFrame {
|
|
35
|
+
/** Current placement could not be verified; callers must not render its identity placeholder. */
|
|
36
|
+
unavailable?: true;
|
|
37
|
+
/** The storey's chain as a planar rigid motion in the model's world frame. */
|
|
38
|
+
plan: StoreyPlanFrame;
|
|
39
|
+
/** Model-world = rendered model frame + this (origin shift + survey anchor). */
|
|
40
|
+
offset: Vec2;
|
|
41
|
+
}
|
|
42
|
+
/** Resolve the frame a storey's authored elements are written in. */
|
|
43
|
+
export declare function storeyAuthoringFrame(store: IfcDataStore | null | undefined, storeyExpressId: number, coordinateInfo: CoordinateInfo | undefined, view?: MutablePropertyView | null): StoreyAuthoringFrame;
|
|
44
|
+
/** Storey-local plan point → the rendered model frame. Inverse of the above. */
|
|
45
|
+
export declare function storeyLocalToModelPlan(frame: StoreyAuthoringFrame, p: Vec2): Vec2;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=room-storey-frame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-storey-frame.d.ts","sourceRoot":"","sources":["../../src/in-store/room-storey-frame.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7B,MAAM,WAAW,oBAAoB;IACnC,iGAAiG;IACjG,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,8EAA8E;IAC9E,IAAI,EAAE,eAAe,CAAC;IACtB,gFAAgF;IAChF,MAAM,EAAE,IAAI,CAAC;CACd;AAID,qEAAqE;AACrE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,EACtC,eAAe,EAAE,MAAM,EACvB,cAAc,EAAE,cAAc,GAAG,SAAS,EAC1C,IAAI,CAAC,EAAE,mBAAmB,GAAG,IAAI,GAChC,oBAAoB,CAMtB;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,IAAI,GAAG,IAAI,CAGjF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* The storey plan frame the authored-element mirror meshes are drawn through
|
|
6
|
+
* (#6233). Picks go the other way through the storey workplane
|
|
7
|
+
* (`lib/commands/modeling/workplane.ts`), which takes its plan from here.
|
|
8
|
+
*
|
|
9
|
+
* Every builder (`addWallToStore`, `addColumnToStore`, …) anchors its element
|
|
10
|
+
* to the storey's own placement, so the coordinates it is handed are STOREY-
|
|
11
|
+
* LOCAL: a reader applies the storey's whole placement chain (storey axis ∘
|
|
12
|
+
* building ∘ site) to them. A click, a hover and the instant 3D mirror all
|
|
13
|
+
* live in the MODEL frame — the rendered geometry, which already has that
|
|
14
|
+
* chain baked in. Handing a model-frame click to a builder as if it were
|
|
15
|
+
* storey-local applies the chain a second time: on the demo project the
|
|
16
|
+
* storey hangs 3 m east and 3 m north of the model origin, so every element
|
|
17
|
+
* the Model workspace authored landed 3 m away on export and reload, while
|
|
18
|
+
* the mirror drew it under the cursor.
|
|
19
|
+
*
|
|
20
|
+
* Same frame algebra as the Room tool's space writer, reused rather
|
|
21
|
+
* than re-derived: `storeyPlanFrame` composes the chain, and the offset back to
|
|
22
|
+
* the file's own world frame is the whole `world = render + originShift + rtc`
|
|
23
|
+
* reconstruction — `roomFramePlanOffsets` (the TS origin shift, which Space
|
|
24
|
+
* Sketch's room frame already carries) plus `roomFrameToModelWorld` (the survey
|
|
25
|
+
* anchor the wasm path subtracted). Both are zero for a model near the origin.
|
|
26
|
+
*
|
|
27
|
+
* Unlike the Room tool this falls back to the identity instead of refusing when
|
|
28
|
+
* the chain will not resolve: that is exactly what the tool did before for
|
|
29
|
+
* every storey, and a storey authored in this session (no source record) has
|
|
30
|
+
* no chain to read. Refusing would block authoring outright on such a storey.
|
|
31
|
+
*/
|
|
32
|
+
import { storeyPlanFrame, fromStoreyLocal } from './storey-plan-frame.js';
|
|
33
|
+
import { roomFramePlanOffsets, roomFrameToModelWorld } from './room-wall-rects.js';
|
|
34
|
+
const IDENTITY_PLAN = { origin: [0, 0], axisX: [1, 0] };
|
|
35
|
+
/** Resolve the frame a storey's authored elements are written in. */
|
|
36
|
+
export function storeyAuthoringFrame(store, storeyExpressId, coordinateInfo, view) {
|
|
37
|
+
const plan = store ? storeyPlanFrame(store, storeyExpressId, view) : null;
|
|
38
|
+
const { cx, cy } = roomFramePlanOffsets(coordinateInfo);
|
|
39
|
+
const { dx, dy } = roomFrameToModelWorld(coordinateInfo);
|
|
40
|
+
return { plan: plan ?? IDENTITY_PLAN, offset: [cx + dx, cy + dy],
|
|
41
|
+
...(view && !plan ? { unavailable: true } : {}) };
|
|
42
|
+
}
|
|
43
|
+
/** Storey-local plan point → the rendered model frame. Inverse of the above. */
|
|
44
|
+
export function storeyLocalToModelPlan(frame, p) {
|
|
45
|
+
const world = fromStoreyLocal(frame.plan, p);
|
|
46
|
+
return [world[0] - frame.offset[0], world[1] - frame.offset[1]];
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=room-storey-frame.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-storey-frame.js","sourceRoot":"","sources":["../../src/in-store/room-storey-frame.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAwB,MAAM,wBAAwB,CAAC;AAIhG,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAanF,MAAM,aAAa,GAAoB,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAEzE,qEAAqE;AACrE,MAAM,UAAU,oBAAoB,CAClC,KAAsC,EACtC,eAAuB,EACvB,cAA0C,EAC1C,IAAiC;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACxD,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC;IACzD,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,KAA2B,EAAE,CAAO;IACzE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wall footprint RECTANGLES for the face-based room derivation, read from the
|
|
3
|
+
* RENDERED meshes — the exact geometry the user sees in the 3D scene and behind
|
|
4
|
+
* the sketch as the construction underlay.
|
|
5
|
+
*
|
|
6
|
+
* Why not the STEP source geometry (`@ifc-lite/create` extract-walls)? Because a
|
|
7
|
+
* source-geometry centreline is only ever self-consistent: it was repeatedly
|
|
8
|
+
* validated against its OWN output, yet the room lines still landed off the
|
|
9
|
+
* rendered walls. Measured on a real 1036-wall structural model, the source path
|
|
10
|
+
* had (a) NO thickness for 0/1036 walls → every wall drawn at the 0.2 m default
|
|
11
|
+
* while real walls span 0.08–1.04 m, and (b) a PCA-centroid axis bias up to
|
|
12
|
+
* 0.33 m on thick walls. Deriving the rectangle straight from the rendered mesh
|
|
13
|
+
* footprint eliminates both: the OBB width IS the rendered thickness, and the
|
|
14
|
+
* min/max OBB axis is distribution-invariant. Room edges then sit on the rendered
|
|
15
|
+
* wall faces to ~1 mm (measured), because they ARE the rendered faces.
|
|
16
|
+
*
|
|
17
|
+
* Frame: the rendered meshes are WebGL Y-up (`world = origin + position`). The
|
|
18
|
+
* plan footprint is render XZ; we map it to the "room frame", which is the model's OWN IFC frame —
|
|
19
|
+
* `ifcX = renderX + shift.x`, `ifcY = −renderZ − shift.z`.
|
|
20
|
+
*
|
|
21
|
+
* NOT the georeferenced world frame. `wasmRtcOffset` is the offset the WASM
|
|
22
|
+
* mesh path subtracted when it resolved a site placement that anchors the
|
|
23
|
+
* building to a survey grid; adding it back here yields survey coordinates,
|
|
24
|
+
* and those are wrong for every consumer downstream. `addSpace` writes the
|
|
25
|
+
* outline into a storey whose placement chain ALREADY carries that anchor, so
|
|
26
|
+
* survey coordinates get the offset applied twice; the 3D ghost
|
|
27
|
+
* (`buildElementMesh`) reads render-frame corners; and the storey band below
|
|
28
|
+
* compares against render-frame mesh heights. Measured on a 6-storey LV95
|
|
29
|
+
* model (rtc = 2665510 / 1259339 / 381.3 m, geometry local to ~360 m): the
|
|
30
|
+
* band landed 381 m under the building so NO storey found a wall, and once it
|
|
31
|
+
* did, the baked rooms were written 2.66 million metres off. rtc is null for
|
|
32
|
+
* any model within 10 km of the origin, which is why neither showed up until
|
|
33
|
+
* a georeferenced file arrived.
|
|
34
|
+
*
|
|
35
|
+
* Storey scoping is a render-Y (height) band overlap, so a full-height wall
|
|
36
|
+
* correctly bounds rooms on every storey it passes through. `floorElevation`
|
|
37
|
+
* is the storey's own `IfcBuildingStorey.Elevation` — local to the building,
|
|
38
|
+
* the same frame the rendered geometry is in.
|
|
39
|
+
*
|
|
40
|
+
* The one consumer that DOES need the file's own placement-chain coordinates
|
|
41
|
+
* — the Room tool's space writer, which divides the storey chain out of the outline
|
|
42
|
+
* before `addSpace` (#4503) — gets the survey anchor back explicitly through
|
|
43
|
+
* `roomFrameToModelWorld`, so the room frame stays local here and the bake
|
|
44
|
+
* still folds through the right frame.
|
|
45
|
+
*/
|
|
46
|
+
import type { MeshData, CoordinateInfo } from '@ifc-lite/geometry';
|
|
47
|
+
export { roomConvexHull as convexHull } from './room-footprint-native.js';
|
|
48
|
+
type Pt = [number, number];
|
|
49
|
+
/** One wall's footprint: the 4-corner rectangle (engine input), plus its
|
|
50
|
+
* centreline + thickness (for the diagnostics overlay / "has wall data"). */
|
|
51
|
+
export interface WallRect {
|
|
52
|
+
corners: Pt[];
|
|
53
|
+
centreline: [Pt, Pt];
|
|
54
|
+
thickness: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The render → room-frame plan offsets: `ifcX = renderX + cx`,
|
|
58
|
+
* `ifcY = cy − renderZ`.
|
|
59
|
+
*
|
|
60
|
+
* The room frame is the MODEL'S OWN IFC frame — `ifcLocal = renderLocal +
|
|
61
|
+
* shift` with the Y-up→Z-up swap — NOT the georeferenced survey frame.
|
|
62
|
+
* `wasmRtcOffset` is what the WASM mesh path subtracted when it resolved a
|
|
63
|
+
* site placement that anchors the building to a survey grid; folding it back
|
|
64
|
+
* in here would put the room frame a whole survey offset away from the
|
|
65
|
+
* rendered walls and from the storey band below (see the module docstring
|
|
66
|
+
* for the LV95 measurement that showed this). The anchor is carried by
|
|
67
|
+
* {@link roomFrameToModelWorld} instead, for the one consumer that needs the
|
|
68
|
+
* file's own placement-chain coordinates.
|
|
69
|
+
*
|
|
70
|
+
* Exported because this is where the room frame is DEFINED, and the bake needs
|
|
71
|
+
* to know which frame that is — see {@link roomFrameToModelWorld}.
|
|
72
|
+
*/
|
|
73
|
+
export declare function roomFramePlanOffsets(coord: CoordinateInfo | undefined): {
|
|
74
|
+
cx: number;
|
|
75
|
+
cy: number;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* The plan offset that takes a room-frame point into the MODEL'S OWN WORLD
|
|
79
|
+
* FRAME — the coordinates the STEP file's placement chains resolve to, which
|
|
80
|
+
* is the frame `storeyPlanFrame` reads the storey out of.
|
|
81
|
+
*
|
|
82
|
+
* Exactly the survey anchor {@link roomFramePlanOffsets} leaves out: the
|
|
83
|
+
* canonical reconstruction is worldYup = renderLocal + shift + rtcYup with
|
|
84
|
+
* The viewer-axis conversion lives in `coordinate-frame.ts`; in IFC-plan axes, ifcX gains `rtc.x` and
|
|
85
|
+
* ifcY gains `rtc.y` on top of the room frame. Zero for any model within
|
|
86
|
+
* ~10 km of the origin (rtc is null there). Anything that changes which
|
|
87
|
+
* terms `roomFramePlanOffsets` carries changes this one too;
|
|
88
|
+
* `wall-rects-from-meshes.test.ts` pins the two together.
|
|
89
|
+
*/
|
|
90
|
+
export declare function roomFrameToModelWorld(coord: CoordinateInfo | undefined): {
|
|
91
|
+
dx: number;
|
|
92
|
+
dy: number;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* MINIMUM-AREA bounding rectangle of a thin plan point cloud (rotating calipers
|
|
96
|
+
* on the convex hull) → its 4 CCW corners (long edge first), length, thickness.
|
|
97
|
+
*
|
|
98
|
+
* NOT PCA. PCA orients by minimizing variance, so on a wall whose mesh has uneven
|
|
99
|
+
* vertex density (short structural stubs especially) the principal axis tilts by
|
|
100
|
+
* several degrees even though the wall is axis-aligned — which skews the room into
|
|
101
|
+
* a parallelogram. The min-area rectangle depends only on the footprint OUTLINE
|
|
102
|
+
* (the hull), so it returns the true rectangle: measured 0.000° skew / 0 m off the
|
|
103
|
+
* rendered faces on the storeys where PCA produced ~5° skew.
|
|
104
|
+
*/
|
|
105
|
+
export declare function footprintOBB(pts: Pt[]): {
|
|
106
|
+
corners: [Pt, Pt, Pt, Pt];
|
|
107
|
+
length: number;
|
|
108
|
+
thickness: number;
|
|
109
|
+
} | null;
|
|
110
|
+
/**
|
|
111
|
+
* Per-wall footprint rectangles (4 CCW corners, room frame) for the walls whose
|
|
112
|
+
* height range overlaps the storey band `[floorElevation, floorElevation +
|
|
113
|
+
* floorToFloor]`. Aggregates all mesh fragments of one wall (a void-cut wall
|
|
114
|
+
* renders as several) by `expressId` before taking the OBB.
|
|
115
|
+
*/
|
|
116
|
+
export declare function wallRectsFromMeshes(meshes: readonly MeshData[], coord: CoordinateInfo | undefined, floorElevation: number, floorToFloor: number): WallRect[];
|
|
117
|
+
//# sourceMappingURL=room-wall-rects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-wall-rects.d.ts","sourceRoot":"","sources":["../../src/in-store/room-wall-rects.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE1E,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3B;8EAC8E;AAC9E,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,EAAE,EAAE,CAAC;IACd,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAYD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAGlG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAGnG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG;IAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA8B/G;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GACnB,QAAQ,EAAE,CAsCZ"}
|