@pascal-app/core 1.0.6 → 1.0.7
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/dist/agent-operations/__fixtures__/add-object-cases.d.ts +31 -0
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +27 -0
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +19 -11
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +25 -2
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +509 -66
- package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts +30 -0
- package/dist/agent-operations/__fixtures__/dressing-scenes.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/dressing-scenes.js +82 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +407 -9
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/notation-cases.js +14 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +7253 -4053
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +1 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +57 -1
- package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts +51 -0
- package/dist/agent-operations/__fixtures__/room-check-scenes.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/room-check-scenes.js +121 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +152 -18
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +91 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +40 -1
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +199 -18
- package/dist/agent-operations/__fixtures__/unit-cases.d.ts +6 -0
- package/dist/agent-operations/__fixtures__/unit-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/unit-cases.js +266 -0
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +109 -73
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +32 -3
- package/dist/agent-operations/add-fence.d.ts.map +1 -1
- package/dist/agent-operations/add-fence.js +2 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +4 -4
- package/dist/agent-operations/add-object.d.ts +32 -6
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +59 -12
- package/dist/agent-operations/add-wall.d.ts +3 -8
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +31 -8
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +2 -1
- package/dist/agent-operations/asset-catalog.d.ts +63 -0
- package/dist/agent-operations/asset-catalog.d.ts.map +1 -0
- package/dist/agent-operations/asset-catalog.js +182 -0
- package/dist/agent-operations/asset-views.d.ts +4 -2
- package/dist/agent-operations/asset-views.d.ts.map +1 -1
- package/dist/agent-operations/asset-views.js +1 -3
- package/dist/agent-operations/author-scene-checks.d.ts +38 -0
- package/dist/agent-operations/author-scene-checks.d.ts.map +1 -0
- package/dist/agent-operations/author-scene-checks.js +266 -0
- package/dist/agent-operations/author-scene.d.ts +54 -20
- package/dist/agent-operations/author-scene.d.ts.map +1 -1
- package/dist/agent-operations/author-scene.js +1164 -196
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -1
- package/dist/agent-operations/authored-scene-merge.js +61 -3
- package/dist/agent-operations/batch.d.ts +1 -1
- package/dist/agent-operations/batch.d.ts.map +1 -1
- package/dist/agent-operations/batch.js +38 -39
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -1
- package/dist/agent-operations/ceiling-object-observations.js +5 -4
- package/dist/agent-operations/circulation-geometry.d.ts +14 -0
- package/dist/agent-operations/circulation-geometry.d.ts.map +1 -0
- package/dist/agent-operations/circulation-geometry.js +151 -0
- package/dist/agent-operations/circulation-graph.d.ts +72 -0
- package/dist/agent-operations/circulation-graph.d.ts.map +1 -0
- package/dist/agent-operations/circulation-graph.js +713 -0
- package/dist/agent-operations/circulation-non-spaces.d.ts +10 -0
- package/dist/agent-operations/circulation-non-spaces.d.ts.map +1 -0
- package/dist/agent-operations/circulation-non-spaces.js +88 -0
- package/dist/agent-operations/circulation-spaces.d.ts +5880 -0
- package/dist/agent-operations/circulation-spaces.d.ts.map +1 -0
- package/dist/agent-operations/circulation-spaces.js +368 -0
- package/dist/agent-operations/collections.d.ts.map +1 -1
- package/dist/agent-operations/collections.js +9 -7
- package/dist/agent-operations/corner-window.d.ts.map +1 -1
- package/dist/agent-operations/corner-window.js +2 -4
- package/dist/agent-operations/create-roof.d.ts.map +1 -1
- package/dist/agent-operations/create-roof.js +5 -7
- package/dist/agent-operations/create-room.d.ts +4 -1
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +7 -4
- package/dist/agent-operations/create-stair.js +2 -2
- package/dist/agent-operations/design-brief.d.ts +13 -7
- package/dist/agent-operations/design-brief.d.ts.map +1 -1
- package/dist/agent-operations/design-brief.js +172 -92
- package/dist/agent-operations/door-clearance.d.ts +68 -8
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +127 -20
- package/dist/agent-operations/dress-targets.d.ts +23 -0
- package/dist/agent-operations/dress-targets.d.ts.map +1 -0
- package/dist/agent-operations/dress-targets.js +34 -0
- package/dist/agent-operations/duplicate-node.d.ts +14 -0
- package/dist/agent-operations/duplicate-node.d.ts.map +1 -0
- package/dist/agent-operations/duplicate-node.js +173 -0
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +3 -0
- package/dist/agent-operations/furnish-room.d.ts +2 -0
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +15 -4
- package/dist/agent-operations/furniture-kind.d.ts +28 -1
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -1
- package/dist/agent-operations/furniture-kind.js +105 -6
- package/dist/agent-operations/ground-reader.d.ts +10 -0
- package/dist/agent-operations/ground-reader.d.ts.map +1 -0
- package/dist/agent-operations/ground-reader.js +25 -0
- package/dist/agent-operations/index.d.ts +118 -12
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +26 -1
- package/dist/agent-operations/item-solids.d.ts +39 -0
- package/dist/agent-operations/item-solids.d.ts.map +1 -0
- package/dist/agent-operations/item-solids.js +128 -0
- package/dist/agent-operations/layout-clearance.d.ts +91 -11
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +280 -73
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -1
- package/dist/agent-operations/level-height-fill.js +7 -1
- package/dist/agent-operations/level-reads.d.ts +5 -0
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +38 -2
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +2 -4
- package/dist/agent-operations/move-node.d.ts +12 -0
- package/dist/agent-operations/move-node.d.ts.map +1 -0
- package/dist/agent-operations/move-node.js +28 -0
- package/dist/agent-operations/move-plan.d.ts +28 -0
- package/dist/agent-operations/move-plan.d.ts.map +1 -0
- package/dist/agent-operations/move-plan.js +257 -0
- package/dist/agent-operations/node-patch.d.ts.map +1 -1
- package/dist/agent-operations/node-patch.js +15 -0
- package/dist/agent-operations/paint.d.ts +3 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +14 -1
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -1
- package/dist/agent-operations/photo-elevation.js +2 -1
- package/dist/agent-operations/place-in-room.d.ts.map +1 -1
- package/dist/agent-operations/place-in-room.js +1 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -1
- package/dist/agent-operations/place-items.js +3 -4
- package/dist/agent-operations/plan-clearance.d.ts +28 -0
- package/dist/agent-operations/plan-clearance.d.ts.map +1 -0
- package/dist/agent-operations/plan-clearance.js +47 -0
- package/dist/agent-operations/plan-geometry.d.ts +2 -0
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +10 -0
- package/dist/agent-operations/project-files.d.ts +10 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -1
- package/dist/agent-operations/reachability.d.ts +41 -0
- package/dist/agent-operations/reachability.d.ts.map +1 -0
- package/dist/agent-operations/reachability.js +199 -0
- package/dist/agent-operations/room-checks.d.ts +60 -0
- package/dist/agent-operations/room-checks.d.ts.map +1 -0
- package/dist/agent-operations/room-checks.js +226 -0
- package/dist/agent-operations/room-faces.d.ts +30 -0
- package/dist/agent-operations/room-faces.d.ts.map +1 -0
- package/dist/agent-operations/room-faces.js +31 -0
- package/dist/agent-operations/room-findings.d.ts +5 -2
- package/dist/agent-operations/room-findings.d.ts.map +1 -1
- package/dist/agent-operations/room-findings.js +30 -0
- package/dist/agent-operations/room-finishes.d.ts +87 -0
- package/dist/agent-operations/room-finishes.d.ts.map +1 -0
- package/dist/agent-operations/room-finishes.js +193 -0
- package/dist/agent-operations/room-floor-script.d.ts +3 -3
- package/dist/agent-operations/room-floor-script.js +3 -3
- package/dist/agent-operations/room-readings.d.ts +90 -0
- package/dist/agent-operations/room-readings.d.ts.map +1 -0
- package/dist/agent-operations/room-readings.js +369 -0
- package/dist/agent-operations/room-tile.d.ts +15 -0
- package/dist/agent-operations/room-tile.d.ts.map +1 -0
- package/dist/agent-operations/room-tile.js +30 -0
- package/dist/agent-operations/room-wet.d.ts +55 -0
- package/dist/agent-operations/room-wet.d.ts.map +1 -0
- package/dist/agent-operations/room-wet.js +203 -0
- package/dist/agent-operations/scene-check-policy.d.ts +5 -0
- package/dist/agent-operations/scene-check-policy.d.ts.map +1 -0
- package/dist/agent-operations/scene-check-policy.js +24 -0
- package/dist/agent-operations/scene-checkpoint.d.ts +10 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -1
- package/dist/agent-operations/scene-checkpoint.js +31 -0
- package/dist/agent-operations/scene-issue-groups.d.ts +17 -0
- package/dist/agent-operations/scene-issue-groups.d.ts.map +1 -0
- package/dist/agent-operations/scene-issue-groups.js +71 -0
- package/dist/agent-operations/scene-materials.d.ts +23 -0
- package/dist/agent-operations/scene-materials.d.ts.map +1 -1
- package/dist/agent-operations/scene-materials.js +41 -0
- package/dist/agent-operations/scene-queries.d.ts +1667 -866
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +3 -3
- package/dist/agent-operations/scene-review.d.ts.map +1 -1
- package/dist/agent-operations/scene-review.js +3 -2
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +91 -21
- package/dist/agent-operations/search-assets.d.ts +10 -6
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +37 -22
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -1
- package/dist/agent-operations/set-checkpoint.js +1 -0
- package/dist/agent-operations/set-ground-level.d.ts +1 -1
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -1
- package/dist/agent-operations/set-ground-level.js +3 -14
- package/dist/agent-operations/site.js +3 -2
- package/dist/agent-operations/slab-surface-script.d.ts +25 -0
- package/dist/agent-operations/slab-surface-script.d.ts.map +1 -0
- package/dist/agent-operations/slab-surface-script.js +60 -0
- package/dist/agent-operations/stair-plan-footprint.d.ts +9 -0
- package/dist/agent-operations/stair-plan-footprint.d.ts.map +1 -0
- package/dist/agent-operations/stair-plan-footprint.js +50 -0
- package/dist/agent-operations/types.d.ts +10 -5
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/units.d.ts +26 -0
- package/dist/agent-operations/units.d.ts.map +1 -0
- package/dist/agent-operations/units.js +110 -0
- package/dist/agent-operations/unreachable-rooms-check.d.ts +17 -0
- package/dist/agent-operations/unreachable-rooms-check.d.ts.map +1 -0
- package/dist/agent-operations/unreachable-rooms-check.js +35 -0
- package/dist/agent-operations/usage-checks.d.ts +2 -0
- package/dist/agent-operations/usage-checks.d.ts.map +1 -0
- package/dist/agent-operations/usage-checks.js +12 -0
- package/dist/agent-operations/verify-scene.d.ts +8 -11
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +55 -11
- package/dist/agent-operations/wall-face-defaults.d.ts +44 -0
- package/dist/agent-operations/wall-face-defaults.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-defaults.js +229 -0
- package/dist/agent-operations/wall-joins.d.ts +119 -0
- package/dist/agent-operations/wall-joins.d.ts.map +1 -0
- package/dist/agent-operations/wall-joins.js +308 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -1
- package/dist/agent-operations/wall-object-observations.js +4 -6
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -1
- package/dist/agent-operations/wall-skirting.js +2 -0
- package/dist/agent-operations/wall-type.d.ts +49 -0
- package/dist/agent-operations/wall-type.d.ts.map +1 -0
- package/dist/agent-operations/wall-type.js +31 -0
- package/dist/agent-operations/zone-coverage.d.ts +85 -0
- package/dist/agent-operations/zone-coverage.d.ts.map +1 -0
- package/dist/agent-operations/zone-coverage.js +208 -0
- package/dist/agent-tools/add-object.d.ts +31 -0
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +44 -7
- package/dist/agent-tools/assets.d.ts +4 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +11 -1
- package/dist/agent-tools/author-scene.d.ts +810 -15
- package/dist/agent-tools/author-scene.d.ts.map +1 -1
- package/dist/agent-tools/author-scene.js +275 -34
- package/dist/agent-tools/batch.d.ts +1 -1
- package/dist/agent-tools/batch.d.ts.map +1 -1
- package/dist/agent-tools/batch.js +5 -1
- package/dist/agent-tools/checkpoints.js +1 -1
- package/dist/agent-tools/columns.d.ts +14 -0
- package/dist/agent-tools/columns.d.ts.map +1 -1
- package/dist/agent-tools/columns.js +14 -2
- package/dist/agent-tools/contract.d.ts +10 -0
- package/dist/agent-tools/contract.d.ts.map +1 -1
- package/dist/agent-tools/contract.js +5 -1
- package/dist/agent-tools/corner-window.d.ts +1 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -1
- package/dist/agent-tools/corner-window.js +1 -1
- package/dist/agent-tools/create-room.d.ts +85 -0
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +8 -1
- package/dist/agent-tools/design-brief.d.ts +513 -7
- package/dist/agent-tools/design-brief.d.ts.map +1 -1
- package/dist/agent-tools/design-brief.js +192 -14
- package/dist/agent-tools/designs.js +1 -1
- package/dist/agent-tools/find-by-type.js +1 -1
- package/dist/agent-tools/index.d.ts +658 -10
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +9 -1
- package/dist/agent-tools/levels.js +4 -4
- package/dist/agent-tools/move-duplicate.d.ts +65 -0
- package/dist/agent-tools/move-duplicate.d.ts.map +1 -0
- package/dist/agent-tools/move-duplicate.js +68 -0
- package/dist/agent-tools/paint.d.ts +6 -0
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +7 -3
- package/dist/agent-tools/photo-elevation.js +1 -1
- package/dist/agent-tools/project-files.d.ts +2 -2
- package/dist/agent-tools/project-files.d.ts.map +1 -1
- package/dist/agent-tools/project-files.js +1 -1
- package/dist/agent-tools/refusal.d.ts +9 -1
- package/dist/agent-tools/refusal.d.ts.map +1 -1
- package/dist/agent-tools/refusal.js +5 -1
- package/dist/agent-tools/roofs.js +1 -1
- package/dist/agent-tools/room-structure.d.ts +60 -0
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +20 -1
- package/dist/agent-tools/search-materials.d.ts +1 -0
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/site.js +1 -1
- package/dist/agent-tools/stairs.js +1 -1
- package/dist/agent-tools/units.d.ts +84 -0
- package/dist/agent-tools/units.d.ts.map +1 -0
- package/dist/agent-tools/units.js +54 -0
- package/dist/agent-tools/verify-scene-usage.d.ts +44 -0
- package/dist/agent-tools/verify-scene-usage.d.ts.map +1 -0
- package/dist/agent-tools/verify-scene-usage.js +146 -0
- package/dist/agent-tools/verify-scene.d.ts +12 -1
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +183 -3
- package/dist/agent-tools/view-scene.d.ts +3 -0
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +4 -1
- package/dist/agent-tools/wall-openings.d.ts +121 -2
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +123 -18
- package/dist/agent-tools/walls.d.ts +30 -0
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +54 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +340 -195
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +13 -0
- package/dist/building/code-profile.d.ts +231 -0
- package/dist/building/code-profile.d.ts.map +1 -0
- package/dist/building/code-profile.js +208 -0
- package/dist/building/corner-window.d.ts +2 -2
- package/dist/building/corner-window.d.ts.map +1 -1
- package/dist/building/corner-window.js +11 -2
- package/dist/building/door-types.d.ts +1 -0
- package/dist/building/door-types.d.ts.map +1 -1
- package/dist/building/door-types.js +2 -0
- package/dist/building/floor-item-fit.d.ts.map +1 -1
- package/dist/building/floor-item-fit.js +2 -4
- package/dist/building/ground-level.d.ts +1 -3
- package/dist/building/ground-level.d.ts.map +1 -1
- package/dist/building/ground-level.js +3 -5
- package/dist/building/index.d.ts +2 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +2 -0
- package/dist/building/level-duplication.d.ts +5951 -4351
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-insertion.d.ts +1 -1
- package/dist/building/level-wall-copy.d.ts +24 -0
- package/dist/building/level-wall-copy.d.ts.map +1 -0
- package/dist/building/level-wall-copy.js +53 -0
- package/dist/building/merge-windows.d.ts.map +1 -1
- package/dist/building/merge-windows.js +1 -0
- package/dist/building/opening-style-presets.d.ts +2 -0
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- package/dist/building/opening-style-presets.js +26 -5
- package/dist/building/room-use.d.ts +26 -0
- package/dist/building/room-use.d.ts.map +1 -0
- package/dist/building/room-use.js +102 -0
- package/dist/building/wall-openings.d.ts +115 -7
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +121 -29
- package/dist/building/window-types.d.ts +1 -0
- package/dist/building/window-types.d.ts.map +1 -1
- package/dist/building/window-types.js +3 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.d.ts +84 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.d.ts.map +1 -0
- package/dist/coherence/__fixtures__/enclosure-scenes.js +44 -0
- package/dist/commands/structure/attached-walls.d.ts +16 -0
- package/dist/commands/structure/attached-walls.d.ts.map +1 -0
- package/dist/commands/structure/attached-walls.js +53 -0
- package/dist/commands/structure/index.d.ts +3 -0
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +3 -0
- package/dist/commands/structure/move-separators.d.ts +62 -0
- package/dist/commands/structure/move-separators.d.ts.map +1 -0
- package/dist/commands/structure/move-separators.js +346 -0
- package/dist/commands/structure/set-floor-foundation.d.ts +5 -0
- package/dist/commands/structure/set-floor-foundation.d.ts.map +1 -1
- package/dist/commands/structure/set-wall-geometry.d.ts.map +1 -1
- package/dist/commands/structure/set-wall-geometry.js +44 -11
- package/dist/commands/structure/set-zone-intent.d.ts +26 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +107 -2
- package/dist/commands/structure/shared.d.ts +888 -88
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/wall-overlap.d.ts +45 -0
- package/dist/commands/structure/wall-overlap.d.ts.map +1 -0
- package/dist/commands/structure/wall-overlap.js +289 -0
- package/dist/commands/structure/zone-wall-merge.d.ts +3326 -2370
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-discovery.d.ts +2 -2
- package/dist/contracts/reference-discovery.d.ts.map +1 -1
- package/dist/contracts/reference-discovery.js +5 -3
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +75 -24
- package/dist/events/bus.d.ts +15 -2
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts +40 -0
- package/dist/hooks/spatial-grid/built-in-floor-placed.d.ts.map +1 -0
- package/dist/hooks/spatial-grid/built-in-floor-placed.js +220 -0
- package/dist/hooks/spatial-grid/floor-placed-elevation.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/floor-placed-elevation.js +13 -7
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +56 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +177 -27
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +1631 -831
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-sync.js +24 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +10 -10
- package/dist/i18n/format.d.ts +41 -0
- package/dist/i18n/format.d.ts.map +1 -0
- package/dist/i18n/format.js +124 -0
- package/dist/i18n/index.d.ts +5 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/registry.d.ts +78 -0
- package/dist/i18n/registry.d.ts.map +1 -0
- package/dist/i18n/registry.js +252 -0
- package/dist/i18n/use-translate.d.ts +16 -0
- package/dist/i18n/use-translate.d.ts.map +1 -0
- package/dist/i18n/use-translate.js +23 -0
- package/dist/index.d.ts +32 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -15
- package/dist/lib/__fixtures__/mezzanine.d.ts +6840 -4169
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +2128 -1328
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/beam.d.ts +137 -0
- package/dist/lib/beam.d.ts.map +1 -0
- package/dist/lib/beam.js +297 -0
- package/dist/lib/below-grade-footprints.d.ts +13 -5
- package/dist/lib/below-grade-footprints.d.ts.map +1 -1
- package/dist/lib/below-grade-footprints.js +53 -10
- package/dist/lib/build-up.d.ts +89 -0
- package/dist/lib/build-up.d.ts.map +1 -0
- package/dist/lib/build-up.js +216 -0
- package/dist/lib/corner-pair.d.ts +205 -4
- package/dist/lib/corner-pair.d.ts.map +1 -1
- package/dist/lib/deck-boards.d.ts +80 -0
- package/dist/lib/deck-boards.d.ts.map +1 -0
- package/dist/lib/deck-boards.js +184 -0
- package/dist/lib/deck-framing.d.ts +150 -0
- package/dist/lib/deck-framing.d.ts.map +1 -0
- package/dist/lib/deck-framing.js +515 -0
- package/dist/lib/deepest-drawn.d.ts +3 -6
- package/dist/lib/deepest-drawn.d.ts.map +1 -1
- package/dist/lib/deepest-drawn.js +4 -8
- package/dist/lib/door-opening.d.ts +19 -0
- package/dist/lib/door-opening.d.ts.map +1 -0
- package/dist/lib/door-opening.js +27 -0
- package/dist/lib/door-operation.d.ts +2 -0
- package/dist/lib/door-operation.d.ts.map +1 -1
- package/dist/lib/door-operation.js +4 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -1
- package/dist/lib/exterior-wall-loops.js +2 -1
- package/dist/lib/finish-script.d.ts +5 -5
- package/dist/lib/finish-script.d.ts.map +1 -1
- package/dist/lib/finish-script.js +12 -5
- package/dist/lib/floor-footprint-name.d.ts +17 -0
- package/dist/lib/floor-footprint-name.d.ts.map +1 -1
- package/dist/lib/floor-footprint-name.js +17 -4
- package/dist/lib/floor-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +60 -35
- package/dist/lib/floor-opening-footprints.d.ts +1 -1
- package/dist/lib/floor-opening-footprints.d.ts.map +1 -1
- package/dist/lib/floor-opening-footprints.js +10 -4
- package/dist/lib/floor-plate-paint.d.ts +2 -0
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +12 -0
- package/dist/lib/floor-plates.d.ts +250 -0
- package/dist/lib/floor-plates.d.ts.map +1 -1
- package/dist/lib/floor-plates.js +43 -4
- package/dist/lib/floor-script.d.ts +35 -6
- package/dist/lib/floor-script.d.ts.map +1 -1
- package/dist/lib/floor-script.js +96 -16
- package/dist/lib/foundation-construction.d.ts +4 -13
- package/dist/lib/foundation-construction.d.ts.map +1 -1
- package/dist/lib/foundation-construction.js +4 -14
- package/dist/lib/foundation-standard.d.ts +2 -3
- package/dist/lib/foundation-standard.d.ts.map +1 -1
- package/dist/lib/foundation-standard.js +2 -3
- package/dist/lib/foundation-wall.d.ts +1 -2
- package/dist/lib/foundation-wall.d.ts.map +1 -1
- package/dist/lib/foundation-wall.js +1 -2
- package/dist/lib/framing-post.d.ts +91 -0
- package/dist/lib/framing-post.d.ts.map +1 -0
- package/dist/lib/framing-post.js +174 -0
- package/dist/lib/geometry-script-node.d.ts +11 -0
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +35 -0
- package/dist/lib/grade-standing.d.ts +16 -2
- package/dist/lib/grade-standing.d.ts.map +1 -1
- package/dist/lib/grade-standing.js +129 -9
- package/dist/lib/ground-seat.d.ts +2 -22
- package/dist/lib/ground-seat.d.ts.map +1 -1
- package/dist/lib/ground-seat.js +2 -17
- package/dist/lib/ground-window.d.ts +2 -1
- package/dist/lib/ground-window.d.ts.map +1 -1
- package/dist/lib/ground-window.js +5 -2
- package/dist/lib/level-footprints.d.ts +2 -0
- package/dist/lib/level-footprints.d.ts.map +1 -1
- package/dist/lib/level-footprints.js +7 -0
- package/dist/lib/opening-casing.d.ts +67 -0
- package/dist/lib/opening-casing.d.ts.map +1 -0
- package/dist/lib/opening-casing.js +131 -0
- package/dist/lib/opening-exterior-face.d.ts +6 -0
- package/dist/lib/opening-exterior-face.d.ts.map +1 -0
- package/dist/lib/opening-exterior-face.js +15 -0
- package/dist/lib/opening-floor-datum.d.ts +11 -5
- package/dist/lib/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +38 -6
- package/dist/lib/opening-frame-depth.d.ts +18 -0
- package/dist/lib/opening-frame-depth.d.ts.map +1 -0
- package/dist/lib/opening-frame-depth.js +22 -0
- package/dist/lib/outdoor-room.d.ts +32 -0
- package/dist/lib/outdoor-room.d.ts.map +1 -0
- package/dist/lib/outdoor-room.js +66 -0
- package/dist/lib/plate-surface.d.ts +8 -0
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +53 -3
- package/dist/lib/porch-framing-sync.d.ts +46 -0
- package/dist/lib/porch-framing-sync.d.ts.map +1 -0
- package/dist/lib/porch-framing-sync.js +206 -0
- package/dist/lib/porch-framing.d.ts +44 -0
- package/dist/lib/porch-framing.d.ts.map +1 -0
- package/dist/lib/porch-framing.js +159 -0
- package/dist/lib/railing-rooms.d.ts +13 -0
- package/dist/lib/railing-rooms.d.ts.map +1 -0
- package/dist/lib/railing-rooms.js +37 -0
- package/dist/lib/roof-eave.d.ts +135 -0
- package/dist/lib/roof-eave.d.ts.map +1 -0
- package/dist/lib/roof-eave.js +186 -0
- package/dist/lib/room-floor-plate.d.ts +3 -1
- package/dist/lib/room-floor-plate.d.ts.map +1 -1
- package/dist/lib/room-floor-plate.js +7 -0
- package/dist/lib/space-detection.d.ts +13 -0
- package/dist/lib/space-detection.d.ts.map +1 -1
- package/dist/lib/space-detection.js +112 -24
- package/dist/lib/structure-kernel.d.ts +22 -9
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +146 -28
- package/dist/lib/structure-reconcile.d.ts +1 -1
- package/dist/lib/structure-reconcile.d.ts.map +1 -1
- package/dist/lib/structure-reconcile.js +7 -4
- package/dist/lib/surface-intent.d.ts +10 -0
- package/dist/lib/surface-intent.d.ts.map +1 -0
- package/dist/lib/surface-intent.js +18 -0
- package/dist/lib/terrain-source.d.ts.map +1 -1
- package/dist/lib/terrain-source.js +2 -1
- package/dist/lib/wall-face-script.d.ts.map +1 -1
- package/dist/lib/wall-face-script.js +5 -2
- package/dist/material-kinds.d.ts +1 -1
- package/dist/material-kinds.d.ts.map +1 -1
- package/dist/material-kinds.js +1 -0
- package/dist/material-library.d.ts +15 -0
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +458 -59
- package/dist/node-slots/door.d.ts +3 -4
- package/dist/node-slots/door.d.ts.map +1 -1
- package/dist/node-slots/door.js +4 -3
- package/dist/node-slots/wall.d.ts.map +1 -1
- package/dist/node-slots/wall.js +21 -3
- package/dist/node-slots/window.d.ts +2 -2
- package/dist/node-slots/window.d.ts.map +1 -1
- package/dist/node-slots/window.js +6 -1
- package/dist/procedural-items/design.d.ts +8 -0
- package/dist/procedural-items/design.d.ts.map +1 -1
- package/dist/procedural-items/design.js +169 -21
- package/dist/procedural-items/motion-controller.d.ts +2 -0
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.js +2 -1
- package/dist/registry/index.d.ts +2 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +1 -1
- package/dist/registry/mechanism.d.ts +4 -1
- package/dist/registry/mechanism.d.ts.map +1 -1
- package/dist/registry/mechanism.js +10 -0
- package/dist/registry/types.d.ts +65 -23
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/runtime/__fixtures__/live-scene.d.ts +14 -0
- package/dist/runtime/__fixtures__/live-scene.d.ts.map +1 -0
- package/dist/runtime/__fixtures__/live-scene.js +64 -0
- package/dist/runtime/apply.d.ts +42 -0
- package/dist/runtime/apply.d.ts.map +1 -0
- package/dist/runtime/apply.js +274 -0
- package/dist/runtime/dependencies.d.ts +97 -0
- package/dist/runtime/dependencies.d.ts.map +1 -0
- package/dist/runtime/dependencies.js +42 -0
- package/dist/runtime/ids.d.ts +11 -0
- package/dist/runtime/ids.d.ts.map +1 -0
- package/dist/runtime/ids.js +80 -0
- package/dist/runtime/index.d.ts +14 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +11 -0
- package/dist/runtime/node-queries.d.ts +16 -0
- package/dist/runtime/node-queries.d.ts.map +1 -0
- package/dist/runtime/node-queries.js +30 -0
- package/dist/runtime/patch.d.ts +26 -0
- package/dist/runtime/patch.d.ts.map +1 -0
- package/dist/runtime/patch.js +165 -0
- package/dist/runtime/reader.d.ts +104 -0
- package/dist/runtime/reader.d.ts.map +1 -0
- package/dist/runtime/reader.js +455 -0
- package/dist/runtime/scene-runtime.d.ts +112 -0
- package/dist/runtime/scene-runtime.d.ts.map +1 -0
- package/dist/runtime/scene-runtime.js +302 -0
- package/dist/schema/__fixtures__/node-fixtures.d.ts.map +1 -1
- package/dist/schema/__fixtures__/node-fixtures.js +1 -0
- package/dist/schema/assembly.d.ts +3 -0
- package/dist/schema/assembly.d.ts.map +1 -1
- package/dist/schema/assembly.js +13 -0
- package/dist/schema/asset-url.d.ts +37 -2
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/asset-url.js +80 -11
- package/dist/schema/base.d.ts +8 -0
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +19 -1
- package/dist/schema/build-up.d.ts +247 -0
- package/dist/schema/build-up.d.ts.map +1 -0
- package/dist/schema/build-up.js +83 -0
- package/dist/schema/geometry-source.d.ts +80 -0
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +38 -0
- package/dist/schema/index.d.ts +12 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +12 -6
- package/dist/schema/material.d.ts +5 -0
- package/dist/schema/material.d.ts.map +1 -1
- package/dist/schema/material.js +6 -0
- package/dist/schema/nodes/beam.d.ts +264 -0
- package/dist/schema/nodes/beam.d.ts.map +1 -0
- package/dist/schema/nodes/beam.js +139 -0
- package/dist/schema/nodes/box-vent.d.ts +5 -0
- package/dist/schema/nodes/box-vent.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.d.ts +10 -0
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.d.ts +48 -0
- package/dist/schema/nodes/ceiling.d.ts.map +1 -1
- package/dist/schema/nodes/ceiling.js +5 -0
- package/dist/schema/nodes/chimney.d.ts +10 -0
- package/dist/schema/nodes/chimney.d.ts.map +1 -1
- package/dist/schema/nodes/column.d.ts +42 -0
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +11 -1
- package/dist/schema/nodes/cupola.d.ts +5 -0
- package/dist/schema/nodes/cupola.d.ts.map +1 -1
- package/dist/schema/nodes/door.d.ts +54 -3
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +41 -7
- package/dist/schema/nodes/dormer.d.ts +20 -0
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +5 -0
- package/dist/schema/nodes/downspout.d.ts.map +1 -1
- package/dist/schema/nodes/elevator.d.ts +5 -0
- package/dist/schema/nodes/elevator.d.ts.map +1 -1
- package/dist/schema/nodes/eyebrow-vent.d.ts +5 -0
- package/dist/schema/nodes/eyebrow-vent.d.ts.map +1 -1
- package/dist/schema/nodes/fence.d.ts +5 -0
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/guide.d.ts +14 -0
- package/dist/schema/nodes/guide.d.ts.map +1 -1
- package/dist/schema/nodes/guide.js +2 -0
- package/dist/schema/nodes/gutter.d.ts +5 -0
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/item.d.ts +71 -0
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/item.js +5 -1
- package/dist/schema/nodes/level.d.ts +1 -1
- package/dist/schema/nodes/level.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.d.ts +13 -0
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/opening-types.js +8 -1
- package/dist/schema/nodes/railing-wall.d.ts +112 -0
- package/dist/schema/nodes/railing-wall.d.ts.map +1 -0
- package/dist/schema/nodes/railing-wall.js +160 -0
- package/dist/schema/nodes/ridge-vent.d.ts +5 -0
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.d.ts +224 -1
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +57 -10
- package/dist/schema/nodes/roof-types.d.ts +11 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -1
- package/dist/schema/nodes/roof-types.js +6 -0
- package/dist/schema/nodes/roof.d.ts +60 -0
- package/dist/schema/nodes/roof.d.ts.map +1 -1
- package/dist/schema/nodes/roof.js +4 -0
- package/dist/schema/nodes/shelf.d.ts +5 -0
- package/dist/schema/nodes/shelf.d.ts.map +1 -1
- package/dist/schema/nodes/site.d.ts +80 -0
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -0
- package/dist/schema/nodes/skylight.d.ts +10 -0
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +137 -0
- package/dist/schema/nodes/slab.d.ts.map +1 -1
- package/dist/schema/nodes/slab.js +3 -0
- package/dist/schema/nodes/solar-panel.d.ts +10 -0
- package/dist/schema/nodes/solar-panel.d.ts.map +1 -1
- package/dist/schema/nodes/stair-segment.d.ts +5 -0
- package/dist/schema/nodes/stair-segment.d.ts.map +1 -1
- package/dist/schema/nodes/stair-structure.d.ts +69 -0
- package/dist/schema/nodes/stair-structure.d.ts.map +1 -0
- package/dist/schema/nodes/stair-structure.js +39 -0
- package/dist/schema/nodes/stair.d.ts +46 -0
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +3 -0
- package/dist/schema/nodes/turbine-vent.d.ts +5 -0
- package/dist/schema/nodes/turbine-vent.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +135 -2
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +42 -6
- package/dist/schema/nodes/window.d.ts +66 -1
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +50 -5
- package/dist/schema/nodes/zone.d.ts +68 -0
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +32 -0
- package/dist/schema/scene-material.d.ts +5 -0
- package/dist/schema/scene-material.d.ts.map +1 -1
- package/dist/schema/types.d.ts +1079 -4
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/schema/types.js +2 -0
- package/dist/schema/wall-type.d.ts +95 -0
- package/dist/schema/wall-type.d.ts.map +1 -0
- package/dist/schema/wall-type.js +32 -0
- package/dist/services/roof-bearing.d.ts.map +1 -1
- package/dist/services/roof-bearing.js +6 -3
- package/dist/services/roof-level.d.ts.map +1 -1
- package/dist/services/roof-level.js +4 -3
- package/dist/services/roof-move.d.ts.map +1 -1
- package/dist/services/roof-move.js +13 -7
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +13 -8
- package/dist/spatial/usage-field/beds.d.ts +51 -0
- package/dist/spatial/usage-field/beds.d.ts.map +1 -0
- package/dist/spatial/usage-field/beds.js +346 -0
- package/dist/spatial/usage-field/blocked.d.ts +28 -0
- package/dist/spatial/usage-field/blocked.d.ts.map +1 -0
- package/dist/spatial/usage-field/blocked.js +185 -0
- package/dist/spatial/usage-field/boxes.d.ts +17 -0
- package/dist/spatial/usage-field/boxes.d.ts.map +1 -0
- package/dist/spatial/usage-field/boxes.js +82 -0
- package/dist/spatial/usage-field/catalogue-shapes.d.ts +3 -0
- package/dist/spatial/usage-field/catalogue-shapes.d.ts.map +1 -0
- package/dist/spatial/usage-field/catalogue-shapes.js +257 -0
- package/dist/spatial/usage-field/catalogue.d.ts +6 -0
- package/dist/spatial/usage-field/catalogue.d.ts.map +1 -0
- package/dist/spatial/usage-field/catalogue.js +11 -0
- package/dist/spatial/usage-field/clash.d.ts +40 -0
- package/dist/spatial/usage-field/clash.d.ts.map +1 -0
- package/dist/spatial/usage-field/clash.js +187 -0
- package/dist/spatial/usage-field/door-stairs.d.ts +18 -0
- package/dist/spatial/usage-field/door-stairs.d.ts.map +1 -0
- package/dist/spatial/usage-field/door-stairs.js +129 -0
- package/dist/spatial/usage-field/entry-way.d.ts +14 -0
- package/dist/spatial/usage-field/entry-way.d.ts.map +1 -0
- package/dist/spatial/usage-field/entry-way.js +219 -0
- package/dist/spatial/usage-field/fences.d.ts +18 -0
- package/dist/spatial/usage-field/fences.d.ts.map +1 -0
- package/dist/spatial/usage-field/fences.js +253 -0
- package/dist/spatial/usage-field/field.d.ts +44 -0
- package/dist/spatial/usage-field/field.d.ts.map +1 -0
- package/dist/spatial/usage-field/field.js +145 -0
- package/dist/spatial/usage-field/findings.d.ts +76 -0
- package/dist/spatial/usage-field/findings.d.ts.map +1 -0
- package/dist/spatial/usage-field/findings.js +252 -0
- package/dist/spatial/usage-field/fixtures.d.ts +18 -0
- package/dist/spatial/usage-field/fixtures.d.ts.map +1 -0
- package/dist/spatial/usage-field/fixtures.js +160 -0
- package/dist/spatial/usage-field/flag.d.ts +10 -0
- package/dist/spatial/usage-field/flag.d.ts.map +1 -0
- package/dist/spatial/usage-field/flag.js +12 -0
- package/dist/spatial/usage-field/floors.d.ts +13 -0
- package/dist/spatial/usage-field/floors.d.ts.map +1 -0
- package/dist/spatial/usage-field/floors.js +36 -0
- package/dist/spatial/usage-field/index.d.ts +7 -0
- package/dist/spatial/usage-field/index.d.ts.map +1 -0
- package/dist/spatial/usage-field/index.js +5 -0
- package/dist/spatial/usage-field/items.d.ts +38 -0
- package/dist/spatial/usage-field/items.d.ts.map +1 -0
- package/dist/spatial/usage-field/items.js +261 -0
- package/dist/spatial/usage-field/labels.d.ts +8 -0
- package/dist/spatial/usage-field/labels.d.ts.map +1 -0
- package/dist/spatial/usage-field/labels.js +14 -0
- package/dist/spatial/usage-field/level-field.d.ts +47 -0
- package/dist/spatial/usage-field/level-field.d.ts.map +1 -0
- package/dist/spatial/usage-field/level-field.js +96 -0
- package/dist/spatial/usage-field/measure.d.ts +324 -0
- package/dist/spatial/usage-field/measure.d.ts.map +1 -0
- package/dist/spatial/usage-field/measure.js +458 -0
- package/dist/spatial/usage-field/obstacles.d.ts +63 -0
- package/dist/spatial/usage-field/obstacles.d.ts.map +1 -0
- package/dist/spatial/usage-field/obstacles.js +215 -0
- package/dist/spatial/usage-field/openings.d.ts +12 -0
- package/dist/spatial/usage-field/openings.d.ts.map +1 -0
- package/dist/spatial/usage-field/openings.js +162 -0
- package/dist/spatial/usage-field/path.d.ts +48 -0
- package/dist/spatial/usage-field/path.d.ts.map +1 -0
- package/dist/spatial/usage-field/path.js +354 -0
- package/dist/spatial/usage-field/pieces.d.ts +27 -0
- package/dist/spatial/usage-field/pieces.d.ts.map +1 -0
- package/dist/spatial/usage-field/pieces.js +89 -0
- package/dist/spatial/usage-field/shapes.d.ts +18 -0
- package/dist/spatial/usage-field/shapes.d.ts.map +1 -0
- package/dist/spatial/usage-field/shapes.js +92 -0
- package/dist/spatial/usage-field/stairs.d.ts +23 -0
- package/dist/spatial/usage-field/stairs.d.ts.map +1 -0
- package/dist/spatial/usage-field/stairs.js +163 -0
- package/dist/spatial/usage-field/support.d.ts +24 -0
- package/dist/spatial/usage-field/support.d.ts.map +1 -0
- package/dist/spatial/usage-field/support.js +46 -0
- package/dist/spatial/usage-field/swings.d.ts +846 -0
- package/dist/spatial/usage-field/swings.d.ts.map +1 -0
- package/dist/spatial/usage-field/swings.js +427 -0
- package/dist/spatial/usage-field/types.d.ts +65 -0
- package/dist/spatial/usage-field/types.d.ts.map +1 -0
- package/dist/spatial/usage-field/types.js +1 -0
- package/dist/spatial/usage-field/walls.d.ts +1057 -0
- package/dist/spatial/usage-field/walls.d.ts.map +1 -0
- package/dist/spatial/usage-field/walls.js +166 -0
- package/dist/spatial/usage-field/way-in.d.ts +26 -0
- package/dist/spatial/usage-field/way-in.d.ts.map +1 -0
- package/dist/spatial/usage-field/way-in.js +113 -0
- package/dist/store/actions/node-actions.d.ts +2124 -1322
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +42 -16
- package/dist/store/derived-node-guard.d.ts +10 -2
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/derived-node-guard.js +31 -11
- package/dist/store/document-settling.d.ts +9 -0
- package/dist/store/document-settling.d.ts.map +1 -0
- package/dist/store/document-settling.js +22 -0
- package/dist/store/history-control.d.ts +19 -10
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +176 -127
- package/dist/store/history-drafts.d.ts.map +1 -1
- package/dist/store/history-drafts.js +21 -17
- package/dist/store/live-previews.d.ts +9 -0
- package/dist/store/live-previews.d.ts.map +1 -0
- package/dist/store/live-previews.js +19 -0
- package/dist/store/scene-annotations.d.ts +6751 -5151
- package/dist/store/scene-annotations.d.ts.map +1 -1
- package/dist/store/scene-environment.d.ts +33 -0
- package/dist/store/scene-environment.d.ts.map +1 -0
- package/dist/store/scene-environment.js +54 -0
- package/dist/store/scene-hydration.d.ts.map +1 -1
- package/dist/store/scene-hydration.js +41 -30
- package/dist/store/use-interactive.d.ts +9 -3
- package/dist/store/use-interactive.d.ts.map +1 -1
- package/dist/store/use-interactive.js +43 -11
- package/dist/store/use-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-node-overrides.js +3 -0
- package/dist/store/use-scene.d.ts +25 -0
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +408 -336
- package/dist/systems/document-reconcile.d.ts +40 -0
- package/dist/systems/document-reconcile.d.ts.map +1 -0
- package/dist/systems/document-reconcile.js +159 -0
- package/dist/systems/elevator/elevator-opening-system.d.ts.map +1 -1
- package/dist/systems/elevator/elevator-opening-system.js +9 -24
- package/dist/systems/fence/guard-layout.d.ts +69 -0
- package/dist/systems/fence/guard-layout.d.ts.map +1 -0
- package/dist/systems/fence/guard-layout.js +194 -0
- package/dist/systems/owned-floor-openings.d.ts +13 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +58 -2
- package/dist/systems/reconcile-owned-floor-openings.d.ts +3 -1
- package/dist/systems/reconcile-owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/reconcile-owned-floor-openings.js +4 -4
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +8 -26
- package/dist/systems/roof/roof-elevation.d.ts +16 -1
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +85 -4
- package/dist/systems/roof/roof-footprint.d.ts +42 -1
- package/dist/systems/roof/roof-footprint.d.ts.map +1 -1
- package/dist/systems/roof/roof-footprint.js +160 -4
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +3163 -1934
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +2495 -1249
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/stair/stair-clearance.d.ts +7 -0
- package/dist/systems/stair/stair-clearance.d.ts.map +1 -1
- package/dist/systems/stair/stair-clearance.js +31 -11
- package/dist/systems/stair/stair-construction.d.ts +8 -3
- package/dist/systems/stair/stair-construction.d.ts.map +1 -1
- package/dist/systems/stair/stair-construction.js +55 -4
- package/dist/systems/stair/stair-opening-preview.d.ts +889 -89
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.d.ts.map +1 -1
- package/dist/systems/stair/stair-opening-system.js +18 -34
- package/dist/systems/stair/stair-presets.d.ts +36 -0
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +3 -2
- package/dist/systems/stair/stair-rise.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise.js +6 -0
- package/dist/systems/stair/stair-sizing.d.ts +42 -11
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/stair/stair-sizing.js +10 -1
- package/dist/systems/stair/stair-structure.d.ts +277 -0
- package/dist/systems/stair/stair-structure.d.ts.map +1 -0
- package/dist/systems/stair/stair-structure.js +496 -0
- package/dist/systems/wall/wall-assembly.d.ts +84 -6
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +204 -5
- package/dist/systems/wall/wall-finish.d.ts +38 -2
- package/dist/systems/wall/wall-finish.d.ts.map +1 -1
- package/dist/systems/wall/wall-finish.js +70 -2
- package/dist/systems/wall/wall-footprint.js +2 -2
- package/dist/systems/wall/wall-merge.d.ts.map +1 -1
- package/dist/systems/wall/wall-merge.js +28 -7
- package/dist/systems/wall/wall-mitering.d.ts +1 -0
- package/dist/systems/wall/wall-mitering.d.ts.map +1 -1
- package/dist/systems/wall/wall-mitering.js +152 -52
- package/dist/systems/wall/wall-move.d.ts +23 -6
- package/dist/systems/wall/wall-move.d.ts.map +1 -1
- package/dist/systems/wall/wall-move.js +65 -0
- package/dist/systems/wall/wall-top.d.ts +2 -2
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +6 -1
- package/dist/systems/wall/wall-topology.d.ts +32 -1
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +118 -10
- package/dist/systems/wall/wall-trim-profiles.d.ts +12 -0
- package/dist/systems/wall/wall-trim-profiles.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim-profiles.js +191 -0
- package/dist/utils/ensure-scene-openings.d.ts +6523 -4923
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +5 -0
- package/dist/utils/floor-piece-adoption.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.d.ts +1930 -1130
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/owned-floor-opening-migration.d.ts +888 -88
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +1930 -1130
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/structure-id.d.ts.map +1 -1
- package/dist/utils/structure-id.js +4 -0
- package/package.json +22 -5
- package/dist/lib/generic-foundation.d.ts +0 -40
- package/dist/lib/generic-foundation.d.ts.map +0 -1
- package/dist/lib/generic-foundation.js +0 -200
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type Aabb, type Obstacle } from './obstacles.js';
|
|
2
|
+
export type Grid = {
|
|
3
|
+
x0: number;
|
|
4
|
+
z0: number;
|
|
5
|
+
h: number;
|
|
6
|
+
W: number;
|
|
7
|
+
H: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const cellX: (g: Grid, i: number) => number;
|
|
10
|
+
export declare const cellZ: (g: Grid, j: number) => number;
|
|
11
|
+
export declare const cellOf: (g: Grid, x: number, z: number) => number;
|
|
12
|
+
export declare function makeGrid(domain: Aabb, h: number): Grid;
|
|
13
|
+
/**
|
|
14
|
+
* A uniform bucket index over obstacle boxes. A query widens ring by ring around the point and
|
|
15
|
+
* stops when no farther bucket can hold a nearer obstacle, so the answer is exact.
|
|
16
|
+
*/
|
|
17
|
+
export declare class BucketIndex {
|
|
18
|
+
private readonly domain;
|
|
19
|
+
private readonly cell;
|
|
20
|
+
private readonly buckets;
|
|
21
|
+
private readonly stamp;
|
|
22
|
+
private pass;
|
|
23
|
+
private readonly nx;
|
|
24
|
+
private readonly nz;
|
|
25
|
+
constructor(obstacles: Obstacle[], domain: Aabb, cell?: number);
|
|
26
|
+
private range;
|
|
27
|
+
/** Signed distance to the nearest obstacle (negative inside) and which it is; `skipNode` leaves one node out. */
|
|
28
|
+
query(px: number, pz: number, skipNode?: string): {
|
|
29
|
+
d: number;
|
|
30
|
+
arg: number;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export type Baked = {
|
|
34
|
+
/** Signed distance to the nearest obstacle at every cell centre (negative inside one). */
|
|
35
|
+
F: Float32Array;
|
|
36
|
+
/** The nearest obstacle's index, -1 where there is none. */
|
|
37
|
+
A: Int32Array;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Bakes the clearance field in tiles: a tile tests only the obstacles that can still win in it
|
|
41
|
+
* (those within the tile's reach of the nearest one), which is exact, not an approximation.
|
|
42
|
+
*/
|
|
43
|
+
export declare function bakeGrid(g: Grid, obstacles: Obstacle[]): Baked;
|
|
44
|
+
//# sourceMappingURL=field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAoB,MAAM,aAAa,CAAA;AAExE,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAA;IACV,EAAE,EAAE,MAAM,CAAA;IACV,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV,CAAA;AAED,eAAO,MAAM,KAAK,MAAO,IAAI,KAAK,MAAM,WAA2B,CAAA;AACnE,eAAO,MAAM,KAAK,MAAO,IAAI,KAAK,MAAM,WAA2B,CAAA;AACnE,eAAO,MAAM,MAAM,MAAO,IAAI,KAAK,MAAM,KAAK,MAAM,WAInD,CAAA;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAQtD;AAED;;;GAGG;AACH,qBAAa,WAAW;IASpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IATvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAQ;IAE3B,YACE,SAAS,EAAE,QAAQ,EAAE,EACJ,MAAM,EAAE,IAAI,EACZ,IAAI,SAAM,EAW5B;IAED,OAAO,CAAC,KAAK;IAWb,iHAAiH;IACjH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAoC3E;CACF;AAQD,MAAM,MAAM,KAAK,GAAG;IAClB,0FAA0F;IAC1F,CAAC,EAAE,YAAY,CAAA;IACf,4DAA4D;IAC5D,CAAC,EAAE,UAAU,CAAA;CACd,CAAA;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CA4C9D"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { obstacleDistance } from './obstacles.js';
|
|
2
|
+
export const cellX = (g, i) => g.x0 + (i + 0.5) * g.h;
|
|
3
|
+
export const cellZ = (g, j) => g.z0 + (j + 0.5) * g.h;
|
|
4
|
+
export const cellOf = (g, x, z) => {
|
|
5
|
+
const i = Math.floor((x - g.x0) / g.h);
|
|
6
|
+
const j = Math.floor((z - g.z0) / g.h);
|
|
7
|
+
return i < 0 || j < 0 || i >= g.W || j >= g.H ? -1 : j * g.W + i;
|
|
8
|
+
};
|
|
9
|
+
export function makeGrid(domain, h) {
|
|
10
|
+
return {
|
|
11
|
+
x0: domain[0],
|
|
12
|
+
z0: domain[1],
|
|
13
|
+
h,
|
|
14
|
+
W: Math.max(1, Math.round((domain[2] - domain[0]) / h)),
|
|
15
|
+
H: Math.max(1, Math.round((domain[3] - domain[1]) / h)),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* A uniform bucket index over obstacle boxes. A query widens ring by ring around the point and
|
|
20
|
+
* stops when no farther bucket can hold a nearer obstacle, so the answer is exact.
|
|
21
|
+
*/
|
|
22
|
+
export class BucketIndex {
|
|
23
|
+
domain;
|
|
24
|
+
cell;
|
|
25
|
+
buckets;
|
|
26
|
+
stamp;
|
|
27
|
+
pass = 0;
|
|
28
|
+
nx;
|
|
29
|
+
nz;
|
|
30
|
+
constructor(obstacles, domain, cell = 0.5) {
|
|
31
|
+
this.domain = domain;
|
|
32
|
+
this.cell = cell;
|
|
33
|
+
this.nx = Math.max(1, Math.ceil((domain[2] - domain[0]) / cell));
|
|
34
|
+
this.nz = Math.max(1, Math.ceil((domain[3] - domain[1]) / cell));
|
|
35
|
+
this.buckets = Array.from({ length: this.nx * this.nz }, () => []);
|
|
36
|
+
this.stamp = new Uint32Array(obstacles.length);
|
|
37
|
+
for (const obstacle of obstacles) {
|
|
38
|
+
const [i0, j0, i1, j1] = this.range(obstacle.aabb);
|
|
39
|
+
for (let j = j0; j <= j1; j++)
|
|
40
|
+
for (let i = i0; i <= i1; i++)
|
|
41
|
+
this.buckets[j * this.nx + i].push(obstacle);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
range(a) {
|
|
45
|
+
const clamp = (v, n) => Math.max(0, Math.min(n - 1, v));
|
|
46
|
+
const c = this.cell;
|
|
47
|
+
return [
|
|
48
|
+
clamp(Math.floor((a[0] - this.domain[0]) / c), this.nx),
|
|
49
|
+
clamp(Math.floor((a[1] - this.domain[1]) / c), this.nz),
|
|
50
|
+
clamp(Math.floor((a[2] - this.domain[0]) / c), this.nx),
|
|
51
|
+
clamp(Math.floor((a[3] - this.domain[1]) / c), this.nz),
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
/** Signed distance to the nearest obstacle (negative inside) and which it is; `skipNode` leaves one node out. */
|
|
55
|
+
query(px, pz, skipNode) {
|
|
56
|
+
let best = Number.POSITIVE_INFINITY;
|
|
57
|
+
let arg = -1;
|
|
58
|
+
const c = this.cell;
|
|
59
|
+
const bi = Math.max(0, Math.min(this.nx - 1, Math.floor((px - this.domain[0]) / c)));
|
|
60
|
+
const bj = Math.max(0, Math.min(this.nz - 1, Math.floor((pz - this.domain[1]) / c)));
|
|
61
|
+
const stamp = ++this.pass;
|
|
62
|
+
const reach = Math.max(this.nx, this.nz);
|
|
63
|
+
for (let r = 0; r <= reach; r++) {
|
|
64
|
+
for (let j = bj - r; j <= bj + r; j++) {
|
|
65
|
+
if (j < 0 || j >= this.nz)
|
|
66
|
+
continue;
|
|
67
|
+
const edge = j === bj - r || j === bj + r;
|
|
68
|
+
for (let i = bi - r; i <= bi + r; i += edge ? 1 : 2 * r || 1) {
|
|
69
|
+
if (i < 0 || i >= this.nx)
|
|
70
|
+
continue;
|
|
71
|
+
for (const obstacle of this.buckets[j * this.nx + i]) {
|
|
72
|
+
if (this.stamp[obstacle.index] === stamp)
|
|
73
|
+
continue;
|
|
74
|
+
this.stamp[obstacle.index] = stamp;
|
|
75
|
+
if (skipNode && obstacle.prism.nodeId === skipNode)
|
|
76
|
+
continue;
|
|
77
|
+
const v = obstacleDistance(obstacle, px, pz);
|
|
78
|
+
if (v < best) {
|
|
79
|
+
best = v;
|
|
80
|
+
arg = obstacle.index;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// everything not seen yet lies wholly outside the block of buckets searched
|
|
86
|
+
const bound = Math.min(px - (this.domain[0] + (bi - r) * c), this.domain[0] + (bi + r + 1) * c - px, pz - (this.domain[1] + (bj - r) * c), this.domain[1] + (bj + r + 1) * c - pz);
|
|
87
|
+
if (best <= bound)
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
return { d: best, arg };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const TILE = 16;
|
|
94
|
+
function aabbDistance(x0, z0, x1, z1, a) {
|
|
95
|
+
return Math.hypot(Math.max(a[0] - x1, x0 - a[2], 0), Math.max(a[1] - z1, z0 - a[3], 0));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Bakes the clearance field in tiles: a tile tests only the obstacles that can still win in it
|
|
99
|
+
* (those within the tile's reach of the nearest one), which is exact, not an approximation.
|
|
100
|
+
*/
|
|
101
|
+
export function bakeGrid(g, obstacles) {
|
|
102
|
+
const F = new Float32Array(g.W * g.H).fill(Number.POSITIVE_INFINITY);
|
|
103
|
+
const A = new Int32Array(g.W * g.H).fill(-1);
|
|
104
|
+
if (obstacles.length === 0)
|
|
105
|
+
return { F, A };
|
|
106
|
+
const TW = Math.ceil(g.W / TILE);
|
|
107
|
+
const TH = Math.ceil(g.H / TILE);
|
|
108
|
+
for (let tj = 0; tj < TH; tj++)
|
|
109
|
+
for (let ti = 0; ti < TW; ti++) {
|
|
110
|
+
const i0 = ti * TILE;
|
|
111
|
+
const j0 = tj * TILE;
|
|
112
|
+
const i1 = Math.min(g.W, i0 + TILE) - 1;
|
|
113
|
+
const j1 = Math.min(g.H, j0 + TILE) - 1;
|
|
114
|
+
const x0 = cellX(g, i0);
|
|
115
|
+
const z0 = cellZ(g, j0);
|
|
116
|
+
const x1 = cellX(g, i1);
|
|
117
|
+
const z1 = cellZ(g, j1);
|
|
118
|
+
const mx = (x0 + x1) / 2;
|
|
119
|
+
const mz = (z0 + z1) / 2;
|
|
120
|
+
const radius = Math.hypot(x1 - x0, z1 - z0) / 2;
|
|
121
|
+
let bound = Number.POSITIVE_INFINITY;
|
|
122
|
+
for (const o of obstacles)
|
|
123
|
+
bound = Math.min(bound, obstacleDistance(o, mx, mz));
|
|
124
|
+
bound += radius;
|
|
125
|
+
const candidates = obstacles.filter((o) => aabbDistance(x0, z0, x1, z1, o.aabb) <= Math.max(bound, 0));
|
|
126
|
+
for (let j = j0; j <= j1; j++) {
|
|
127
|
+
const pz = cellZ(g, j);
|
|
128
|
+
for (let i = i0; i <= i1; i++) {
|
|
129
|
+
const px = cellX(g, i);
|
|
130
|
+
let best = Number.POSITIVE_INFINITY;
|
|
131
|
+
let arg = -1;
|
|
132
|
+
for (const o of candidates) {
|
|
133
|
+
const v = obstacleDistance(o, px, pz);
|
|
134
|
+
if (v < best) {
|
|
135
|
+
best = v;
|
|
136
|
+
arg = o.index;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
F[j * g.W + i] = best;
|
|
140
|
+
A[j * g.W + i] = arg;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return { F, A };
|
|
145
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { type CodeProfileId, type ThresholdSource } from '../../building/code-profile.js';
|
|
2
|
+
import { type MeasureOptions } from './measure.js';
|
|
3
|
+
import type { Nodes } from './walls.js';
|
|
4
|
+
/** Clear width of a path in a house: 0,90 m, the arrêté du 24 décembre 2015 art. 11 II (36 in is the IRC hall). */
|
|
5
|
+
export declare const PASSAGE_M: 0.9;
|
|
6
|
+
/** Clear width through an interior door: 32 in; the same arrêté art. 11 II asks 0,80 m nominal and 0,77 m clear. */
|
|
7
|
+
export declare const DOOR_M: 0.8;
|
|
8
|
+
/** Wheelchair turning space: 1.50 m (arrêté du 24 décembre 2015 art. 13; ADA 304.3). */
|
|
9
|
+
export declare const TURNING_M: 1.5;
|
|
10
|
+
/** One unit of passage: 0.60 m (a clearance of 0.30 m); a pocket smaller than this is not worth a finding. */
|
|
11
|
+
export declare const POCKET_MIN_M2 = 0.36;
|
|
12
|
+
/** A reading within this of its threshold is the threshold. */
|
|
13
|
+
export declare const TOLERANCE_M = 0.005;
|
|
14
|
+
/** Rooms whose passages are the same pinch: the same things bound it, a figure within this, a spot within `PLACE_AT_M`. */
|
|
15
|
+
export declare const PLACE_WIDTH_M = 0.005;
|
|
16
|
+
export type UsageObstacle = {
|
|
17
|
+
nodeId: string;
|
|
18
|
+
name: string;
|
|
19
|
+
kind: string;
|
|
20
|
+
shape: 'exact' | 'approx';
|
|
21
|
+
movable: boolean;
|
|
22
|
+
};
|
|
23
|
+
export type UsageIssue = {
|
|
24
|
+
type: 'usage_passage_narrow' | 'usage_turning_narrow' | 'usage_pocket' | 'usage_clash' | 'usage_opening_blocked' | 'usage_door_swing' | 'usage_entry_narrow' | 'usage_door_over_stair' | 'usage_fixture_clearance' | 'usage_bed_clearance';
|
|
25
|
+
message: string;
|
|
26
|
+
/** Use defects warn even on approximate shapes; measurements and unassigned code checks inform. */
|
|
27
|
+
severity: 'warning' | 'info';
|
|
28
|
+
nodeIds: string[];
|
|
29
|
+
valueM?: number;
|
|
30
|
+
valueM2?: number;
|
|
31
|
+
thresholdM?: number;
|
|
32
|
+
/** A door's free swing, and the 90 degrees it should have. */
|
|
33
|
+
valueDeg?: number;
|
|
34
|
+
thresholdDeg?: number;
|
|
35
|
+
/** For a finding that applies a code: which one, the section, whether its text was read, and whether the project named it or it is the default US IRC applied to a project that names none. */
|
|
36
|
+
code?: {
|
|
37
|
+
profile: CodeProfileId;
|
|
38
|
+
cite: string;
|
|
39
|
+
source: ThresholdSource;
|
|
40
|
+
byDefault: boolean;
|
|
41
|
+
};
|
|
42
|
+
place: {
|
|
43
|
+
room: string;
|
|
44
|
+
roomId: string;
|
|
45
|
+
at: [number, number];
|
|
46
|
+
};
|
|
47
|
+
obstacles: UsageObstacle[];
|
|
48
|
+
fromDoorId?: string;
|
|
49
|
+
/** A passage: every room the way through this place leads to, each with the best other exterior door when that reaches it more widely. */
|
|
50
|
+
serves?: {
|
|
51
|
+
room: string;
|
|
52
|
+
roomId: string;
|
|
53
|
+
alternative?: {
|
|
54
|
+
doorId: string;
|
|
55
|
+
widthM: number;
|
|
56
|
+
};
|
|
57
|
+
}[];
|
|
58
|
+
/** A doorway between its jambs: the door as drawn, where `valueM` is the clear width between the jambs. */
|
|
59
|
+
doorWidthM?: number;
|
|
60
|
+
/** The name of the door a passage was measured from (the ground floor's entrance), when there is one. */
|
|
61
|
+
fromDoor?: string;
|
|
62
|
+
/** What the model's answer says of the finding when the note carries the rest: a room entry's clause for a turning circle and a pocket, a passage's sentence without the entrance (`verify-scene-usage`). */
|
|
63
|
+
brief?: string;
|
|
64
|
+
/** A pocket that is the whole room's free floor: the room cannot be left by a 0.60 m unit at all. */
|
|
65
|
+
wholeRoom?: boolean;
|
|
66
|
+
approximate: boolean;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* The usage findings of a scene: narrow passages (measured from the chosen entrance, one for each
|
|
70
|
+
* place that is narrow with the rooms it leads to, and the best other door as a fact), missing turning circles, floor a 0.60 m unit cannot get out of, wall
|
|
71
|
+
* objects that stand out into circulation, pieces inside something solid, what stands in front of a
|
|
72
|
+
* window or a door, a bed's room, a room's headroom and its ceiling. Every threshold is an indicator,
|
|
73
|
+
* not a compliance check.
|
|
74
|
+
*/
|
|
75
|
+
export declare function usageIssues(nodes: Nodes, options?: MeasureOptions): UsageIssue[];
|
|
76
|
+
//# sourceMappingURL=findings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/findings.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EAErB,MAAM,6BAA6B,CAAA;AASpC,OAAO,EACL,KAAK,cAAc,EAKpB,MAAM,WAAW,CAAA;AAGlB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,mHAAmH;AACnH,eAAO,MAAM,SAAS,KAAiC,CAAA;AACvD,oHAAoH;AACpH,eAAO,MAAM,MAAM,KAAmC,CAAA;AACtD,wFAAwF;AACxF,eAAO,MAAM,SAAS,KAAiC,CAAA;AACvD,8GAA8G;AAC9G,eAAO,MAAM,aAAa,OAAO,CAAA;AACjC,+DAA+D;AAC/D,eAAO,MAAM,WAAW,QAAQ,CAAA;AAChC,2HAA2H;AAC3H,eAAO,MAAM,aAAa,QAAQ,CAAA;AAGlC,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAA;IACzB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EACA,sBAAsB,GACtB,sBAAsB,GACtB,cAAc,GACd,aAAa,GACb,uBAAuB,GACvB,kBAAkB,GAClB,oBAAoB,GACpB,uBAAuB,GACvB,yBAAyB,GACzB,qBAAqB,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,mGAAmG;IACnG,QAAQ,EAAE,SAAS,GAAG,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,+LAA+L;IAC/L,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAA;IAC5F,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;IAC7D,SAAS,EAAE,aAAa,EAAE,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0IAA0I;IAC1I,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EAAE,CAAA;IAC7F,2GAA2G;IAC3G,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,6MAA6M;IAC7M,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qGAAqG;IACrG,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAuND;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,GAAE,cAAmB,GAAG,UAAU,EAAE,CAiDpF"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { USAGE_INDICATORS, } from '../../building/code-profile.js';
|
|
2
|
+
import { bedIssues } from './beds.js';
|
|
3
|
+
import { blockedOpeningIssues } from './blocked.js';
|
|
4
|
+
import { clashIssues } from './clash.js';
|
|
5
|
+
import { doorOverStairIssues } from './door-stairs.js';
|
|
6
|
+
import { entryIssues } from './entry-way.js';
|
|
7
|
+
import { fixtureClearanceIssues } from './fixtures.js';
|
|
8
|
+
import { m, nameOf, quote, unique } from './labels.js';
|
|
9
|
+
import { measureUsage, } from './measure.js';
|
|
10
|
+
import { usageShapes } from './shapes.js';
|
|
11
|
+
import { doorSwingIssues } from './swings.js';
|
|
12
|
+
/** Clear width of a path in a house: 0,90 m, the arrêté du 24 décembre 2015 art. 11 II (36 in is the IRC hall). */
|
|
13
|
+
export const PASSAGE_M = USAGE_INDICATORS.passage.value;
|
|
14
|
+
/** Clear width through an interior door: 32 in; the same arrêté art. 11 II asks 0,80 m nominal and 0,77 m clear. */
|
|
15
|
+
export const DOOR_M = USAGE_INDICATORS.doorClear.value;
|
|
16
|
+
/** Wheelchair turning space: 1.50 m (arrêté du 24 décembre 2015 art. 13; ADA 304.3). */
|
|
17
|
+
export const TURNING_M = USAGE_INDICATORS.turning.value;
|
|
18
|
+
/** One unit of passage: 0.60 m (a clearance of 0.30 m); a pocket smaller than this is not worth a finding. */
|
|
19
|
+
export const POCKET_MIN_M2 = 0.36;
|
|
20
|
+
/** A reading within this of its threshold is the threshold. */
|
|
21
|
+
export const TOLERANCE_M = 0.005;
|
|
22
|
+
/** Rooms whose passages are the same pinch: the same things bound it, a figure within this, a spot within `PLACE_AT_M`. */
|
|
23
|
+
export const PLACE_WIDTH_M = 0.005;
|
|
24
|
+
const PLACE_AT_M = 0.5;
|
|
25
|
+
const MOVABLE = /chair|stool|bedside|night ?stand|ottoman|pouf/i;
|
|
26
|
+
function describe(nodes, refs) {
|
|
27
|
+
return refs.map((ref) => {
|
|
28
|
+
const node = nodes[ref.nodeId];
|
|
29
|
+
const label = ref.kind === 'void'
|
|
30
|
+
? 'stairwell opening'
|
|
31
|
+
: ref.kind === 'stair-rail'
|
|
32
|
+
? `${nameOf(nodes, ref.nodeId)} railing`
|
|
33
|
+
: nameOf(nodes, ref.nodeId);
|
|
34
|
+
return {
|
|
35
|
+
nodeId: ref.nodeId,
|
|
36
|
+
name: label,
|
|
37
|
+
kind: ref.kind,
|
|
38
|
+
shape: ref.shape,
|
|
39
|
+
movable: node?.type === 'item' &&
|
|
40
|
+
MOVABLE.test(`${node.asset.id} ${node.asset.name}`),
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/** The things a finding names, once each: the two parts of one door frame are that door, not two things. */
|
|
45
|
+
const distinctOf = (items) => items.filter((item, at) => items.findIndex((o) => o.nodeId === item.nodeId) === at);
|
|
46
|
+
/** The door whose two frame members are the pinch: it is passed through, not against. */
|
|
47
|
+
const framedBy = (items) => {
|
|
48
|
+
const distinct = distinctOf(items);
|
|
49
|
+
return distinct.length === 1 && items.length >= 2 && distinct[0].kind === 'jamb'
|
|
50
|
+
? distinct[0]
|
|
51
|
+
: null;
|
|
52
|
+
};
|
|
53
|
+
function between(items) {
|
|
54
|
+
const distinct = distinctOf(items);
|
|
55
|
+
if (distinct.length >= 2)
|
|
56
|
+
return ` between ${quote(distinct[0].name)} and ${quote(distinct[1].name)}`;
|
|
57
|
+
if (distinct.length === 1)
|
|
58
|
+
return ` against ${quote(distinct[0].name)}`;
|
|
59
|
+
return '';
|
|
60
|
+
}
|
|
61
|
+
const beside = (items) => {
|
|
62
|
+
const distinct = distinctOf(items);
|
|
63
|
+
return distinct.length ? `, beside ${distinct.map((item) => quote(item.name)).join(' and ')}` : '';
|
|
64
|
+
};
|
|
65
|
+
const listOf = (names) => names.length < 2
|
|
66
|
+
? (names[0] ?? '')
|
|
67
|
+
: `${names.slice(0, -1).join(', ')} and ${names[names.length - 1]}`;
|
|
68
|
+
/** The room's narrow passage, with what bounds it and the limit it is read against; null when it is not narrow. */
|
|
69
|
+
function narrowPassage(nodes, room) {
|
|
70
|
+
const passage = room.passage;
|
|
71
|
+
if (!passage)
|
|
72
|
+
return null;
|
|
73
|
+
const sides = describe(nodes, passage.by);
|
|
74
|
+
// a pinch between two door-frame members is a doorway, and a doorway needs 0.80 m, not 0.90 m
|
|
75
|
+
const doorway = passage.by.some((o) => o.kind === 'jamb');
|
|
76
|
+
const limit = doorway ? DOOR_M : PASSAGE_M;
|
|
77
|
+
return passage.width < limit - TOLERANCE_M ? { room, passage, sides, limit, doorway } : null;
|
|
78
|
+
}
|
|
79
|
+
const sameStuff = (a, b) => {
|
|
80
|
+
const ids = (items) => [...new Set(items.map((o) => o.nodeId))].sort().join('|');
|
|
81
|
+
return ids(a) === ids(b);
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* One finding for each place a way is narrow, however many rooms it leads to: the rooms whose
|
|
85
|
+
* narrowest point is the same pinch (the same things bound it, the same width, the same spot) are
|
|
86
|
+
* its `serves`, each with the best other exterior door when that reaches it more widely.
|
|
87
|
+
*/
|
|
88
|
+
function passageIssues(nodes, rooms) {
|
|
89
|
+
const places = [];
|
|
90
|
+
for (const room of rooms) {
|
|
91
|
+
const narrow = narrowPassage(nodes, room);
|
|
92
|
+
if (!narrow)
|
|
93
|
+
continue;
|
|
94
|
+
const place = places.find(([first]) => {
|
|
95
|
+
const a = first.passage;
|
|
96
|
+
const b = narrow.passage;
|
|
97
|
+
return (sameStuff(first.sides, narrow.sides) &&
|
|
98
|
+
Math.abs(a.width - b.width) <= PLACE_WIDTH_M &&
|
|
99
|
+
Math.hypot(a.at[0] - b.at[0], a.at[1] - b.at[1]) <= PLACE_AT_M);
|
|
100
|
+
});
|
|
101
|
+
if (place)
|
|
102
|
+
place.push(narrow);
|
|
103
|
+
else
|
|
104
|
+
places.push([narrow]);
|
|
105
|
+
}
|
|
106
|
+
return places.map((members) => passageIssue(nodes, members));
|
|
107
|
+
}
|
|
108
|
+
function passageIssue(nodes, members) {
|
|
109
|
+
const narrowest = members.reduce((best, n) => (n.passage.width < best.passage.width ? n : best));
|
|
110
|
+
const { passage, sides, limit, doorway } = narrowest;
|
|
111
|
+
const door = passage.fromDoorId ? nameOf(nodes, passage.fromDoorId) : null;
|
|
112
|
+
const approximate = passage.by.some((o) => o.shape === 'approx');
|
|
113
|
+
const target = (room) => room.kind === 'stair-foot'
|
|
114
|
+
? `the foot of ${quote(room.name.replace(/^Foot of /, ''))}`
|
|
115
|
+
: quote(room.name);
|
|
116
|
+
// the best other exterior door, said once when it is the same for every room and by room when it is not
|
|
117
|
+
const first = members[0].room.alternative;
|
|
118
|
+
const shared = first &&
|
|
119
|
+
members.every(({ room }) => room.alternative?.doorId === first.doorId && room.alternative.width === first.width)
|
|
120
|
+
? first
|
|
121
|
+
: null;
|
|
122
|
+
const alternativeOf = (alternative) => `${m(alternative.width)} m from ${quote(nameOf(nodes, alternative.doorId))}`;
|
|
123
|
+
const targets = listOf(members.map(({ room }) => !shared && room.alternative
|
|
124
|
+
? `${target(room)} (${alternativeOf(room.alternative)})`
|
|
125
|
+
: target(room)));
|
|
126
|
+
// a doorway is read between its jambs; the door as drawn is said beside it
|
|
127
|
+
const frame = framedBy(sides);
|
|
128
|
+
const drawn = frame ? nodes[frame.nodeId]?.width : undefined;
|
|
129
|
+
const clause = `${frame
|
|
130
|
+
? `${m(passage.width)} m clear between the jambs of ${quote(frame.name)}${typeof drawn === 'number' ? `, a ${m(drawn)} m door` : ''}`
|
|
131
|
+
: `${m(passage.width)} m${between(sides)}`}${shared ? `; ${alternativeOf(shared)}` : ''}`;
|
|
132
|
+
const sentence = `${targets}: ${clause}`;
|
|
133
|
+
// a leaf drawn at least the doorway's 0.80 m is a standard door: what it leaves is information
|
|
134
|
+
const standardLeaf = typeof drawn === 'number' && drawn >= DOOR_M - TOLERANCE_M ? drawn : null;
|
|
135
|
+
const tail = standardLeaf === null
|
|
136
|
+
? ` (below ${m(limit)} m${doorway ? ', a doorway' : ''}).`
|
|
137
|
+
: ` (a ${m(standardLeaf)} m door leaf: the frame leaves ${m(passage.width)} m clear).`;
|
|
138
|
+
const lead = members[0].room;
|
|
139
|
+
return {
|
|
140
|
+
type: 'usage_passage_narrow',
|
|
141
|
+
message: `Narrow passage to ${sentence}${door ? `, measured from ${quote(door)}` : ''}${tail}`,
|
|
142
|
+
brief: `Passage to ${sentence}${tail}`,
|
|
143
|
+
...(door ? { fromDoor: door } : {}),
|
|
144
|
+
severity: standardLeaf === null ? 'warning' : 'info',
|
|
145
|
+
nodeIds: unique([
|
|
146
|
+
...members.map(({ room }) => (room.roomId.startsWith('zone_') ? room.roomId : undefined)),
|
|
147
|
+
...sides.map((s) => s.nodeId),
|
|
148
|
+
]),
|
|
149
|
+
valueM: passage.width,
|
|
150
|
+
thresholdM: limit,
|
|
151
|
+
...(typeof drawn === 'number' ? { doorWidthM: drawn } : {}),
|
|
152
|
+
place: { room: lead.name, roomId: lead.roomId, at: passage.at },
|
|
153
|
+
obstacles: sides,
|
|
154
|
+
...(passage.fromDoorId ? { fromDoorId: passage.fromDoorId } : {}),
|
|
155
|
+
serves: members.map(({ room }) => ({
|
|
156
|
+
room: room.name,
|
|
157
|
+
roomId: room.roomId,
|
|
158
|
+
...(room.alternative
|
|
159
|
+
? { alternative: { doorId: room.alternative.doorId, widthM: room.alternative.width } }
|
|
160
|
+
: {}),
|
|
161
|
+
})),
|
|
162
|
+
approximate,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function turningIssue(room) {
|
|
166
|
+
const turning = room.turning;
|
|
167
|
+
if (!turning || !(turning.diameter < TURNING_M - TOLERANCE_M))
|
|
168
|
+
return null;
|
|
169
|
+
return {
|
|
170
|
+
type: 'usage_turning_narrow',
|
|
171
|
+
message: `No ${m(TURNING_M)} m turning circle in ${quote(room.name)}: largest ${m(turning.diameter)} m.`,
|
|
172
|
+
brief: `no ${m(TURNING_M)} m turning circle, largest ${m(turning.diameter)} m`,
|
|
173
|
+
// A turning circle measures the room, not a defect of a piece: it informs, exact outline or not.
|
|
174
|
+
severity: 'info',
|
|
175
|
+
nodeIds: [room.roomId],
|
|
176
|
+
valueM: turning.diameter,
|
|
177
|
+
thresholdM: TURNING_M,
|
|
178
|
+
place: { room: room.name, roomId: room.roomId, at: turning.at },
|
|
179
|
+
obstacles: [],
|
|
180
|
+
approximate: turning.approximate,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
function pocketIssue(nodes, room, from) {
|
|
184
|
+
const pocket = room.pocket;
|
|
185
|
+
if (!(pocket.isolatedM2 >= POCKET_MIN_M2) || !pocket.at)
|
|
186
|
+
return null;
|
|
187
|
+
const around = describe(nodes, pocket.by);
|
|
188
|
+
const approximate = pocket.by.some((o) => o.shape === 'approx');
|
|
189
|
+
const brief = pocket.whole
|
|
190
|
+
? `no 0.60 m way out from ${from} (${m(pocket.isolatedM2)} m²)`
|
|
191
|
+
: `${m(pocket.isolatedM2)} m² of floor with no 0.60 m way out${beside(around)}`;
|
|
192
|
+
return {
|
|
193
|
+
type: 'usage_pocket',
|
|
194
|
+
message: `${quote(room.name)}: ${brief}.`,
|
|
195
|
+
brief,
|
|
196
|
+
...(pocket.whole ? { wholeRoom: true } : {}),
|
|
197
|
+
severity: 'warning',
|
|
198
|
+
nodeIds: unique([room.roomId, ...around.map((o) => o.nodeId)]),
|
|
199
|
+
valueM2: pocket.isolatedM2,
|
|
200
|
+
place: { room: room.name, roomId: room.roomId, at: pocket.at },
|
|
201
|
+
obstacles: around,
|
|
202
|
+
approximate,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* The usage findings of a scene: narrow passages (measured from the chosen entrance, one for each
|
|
207
|
+
* place that is narrow with the rooms it leads to, and the best other door as a fact), missing turning circles, floor a 0.60 m unit cannot get out of, wall
|
|
208
|
+
* objects that stand out into circulation, pieces inside something solid, what stands in front of a
|
|
209
|
+
* window or a door, a bed's room, a room's headroom and its ceiling. Every threshold is an indicator,
|
|
210
|
+
* not a compliance check.
|
|
211
|
+
*/
|
|
212
|
+
export function usageIssues(nodes, options = {}) {
|
|
213
|
+
const shapes = usageShapes(nodes);
|
|
214
|
+
const measure = measureUsage(nodes, shapes, options);
|
|
215
|
+
const issues = [];
|
|
216
|
+
for (const group of measure.groups) {
|
|
217
|
+
const from = group.source.kind === 'door' ? 'the entrance' : 'the stair arrival';
|
|
218
|
+
const rooms = group.rooms;
|
|
219
|
+
const stuck = rooms.filter((room) => room.kind === 'room' && room.pocket.freeM2 > 0);
|
|
220
|
+
// a whole floor cut off from where it is entered is one finding, not one per room
|
|
221
|
+
const wholeFloor = stuck.length > 1 && stuck.every((room) => room.pocket.whole) && group.source.kind !== 'none';
|
|
222
|
+
if (wholeFloor) {
|
|
223
|
+
const level = nodes[group.levelId];
|
|
224
|
+
const area = stuck.reduce((sum, room) => sum + room.pocket.isolatedM2, 0);
|
|
225
|
+
issues.push({
|
|
226
|
+
type: 'usage_pocket',
|
|
227
|
+
message: `${quote(String(level?.name ?? `Level ${level?.level ?? ''}`))}: no 0.60 m way out from ${from} (${m(area)} m²).`,
|
|
228
|
+
brief: `no 0.60 m way out from ${from} (${m(area)} m²)`,
|
|
229
|
+
wholeRoom: true,
|
|
230
|
+
severity: 'warning',
|
|
231
|
+
nodeIds: unique([group.levelId, ...stuck.map((room) => room.roomId)]),
|
|
232
|
+
valueM2: Math.round(area * 1000) / 1000,
|
|
233
|
+
place: { room: String(level?.name ?? 'Level'), roomId: group.levelId, at: stuck[0].at },
|
|
234
|
+
obstacles: [],
|
|
235
|
+
approximate: false,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
issues.push(...passageIssues(nodes, rooms));
|
|
239
|
+
for (const room of rooms) {
|
|
240
|
+
const turning = turningIssue(room);
|
|
241
|
+
if (turning)
|
|
242
|
+
issues.push(turning);
|
|
243
|
+
if (!wholeFloor) {
|
|
244
|
+
const pocket = pocketIssue(nodes, room, from);
|
|
245
|
+
if (pocket)
|
|
246
|
+
issues.push(pocket);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
issues.push(...clashIssues(nodes, shapes), ...blockedOpeningIssues(nodes, shapes), ...doorSwingIssues(nodes, shapes), ...entryIssues(nodes, shapes), ...doorOverStairIssues(nodes, shapes), ...fixtureClearanceIssues(nodes, shapes), ...bedIssues(nodes, shapes));
|
|
251
|
+
return issues;
|
|
252
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { UsageIssue } from './findings.js';
|
|
2
|
+
import type { UsageShapes } from './types.js';
|
|
3
|
+
import type { Nodes } from './walls.js';
|
|
4
|
+
/**
|
|
5
|
+
* Bathroom fixture clearances: a toilet's centre to the nearest obstruction on each side and its clear
|
|
6
|
+
* space in front, a lavatory's front (and, for a single basin, its side), a shower's clear space at its
|
|
7
|
+
* best open side. Read on the exact outlines of the feet band. The fixture's front is its +Z, checked
|
|
8
|
+
* against the wall behind it (a fixture whose back is free and whose +Z meets a wall is read the other
|
|
9
|
+
* way round); a shower has no opening side in the model, so the best of its four sides is read, which is
|
|
10
|
+
* as good as the opening can be.
|
|
11
|
+
*
|
|
12
|
+
* These are a code's numbers. With no `site.metadata.codeProfile` the scene has no jurisdiction, and a
|
|
13
|
+
* finding is information that names the US IRC it used; with `irc-2021` set it is a warning. A profile
|
|
14
|
+
* with no row for it (the Australian NCC, France hold none of the bathroom figures) reports nothing.
|
|
15
|
+
* Approximate fixture outlines remain labeled as such without downgrading a clearance defect.
|
|
16
|
+
*/
|
|
17
|
+
export declare function fixtureClearanceIssues(nodes: Nodes, shapes: UsageShapes): UsageIssue[];
|
|
18
|
+
//# sourceMappingURL=fixtures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../src/spatial/usage-field/fixtures.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAI5C,OAAO,KAAK,EAAS,WAAW,EAAE,MAAM,SAAS,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AA6BpC;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,EAAE,CAiItF"}
|