@pascal-app/core 1.0.5 → 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"absorb-wall-separators.d.ts","sourceRoot":"","sources":["../../src/lib/absorb-wall-separators.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"absorb-wall-separators.d.ts","sourceRoot":"","sources":["../../src/lib/absorb-wall-separators.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmE5F"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId } from '../schema/index.js';
|
|
2
|
+
import { type BeamMaterial, BeamNode, type BeamPlacement, type BeamSizePreset, type BeamSizePresetId } from '../schema/nodes/beam.js';
|
|
3
|
+
type Nodes = Record<AnyNodeId, AnyNode>;
|
|
4
|
+
type P = [number, number];
|
|
5
|
+
/**
|
|
6
|
+
* The stock size with this id or label (`BEAM_SIZE_PRESETS`): '(2)2x10' and '(2) 2x10' are both
|
|
7
|
+
* the two-ply 2x10.
|
|
8
|
+
*/
|
|
9
|
+
export declare function beamSizePreset(idOrLabel: string): BeamSizePreset | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* The stock size a beam is, if it is one: as many plies of the same nominal size (when it names
|
|
12
|
+
* one), the same section, and a material that size comes in.
|
|
13
|
+
*/
|
|
14
|
+
export declare function matchBeamSizePreset(beam: Pick<BeamNode, 'width' | 'depth' | 'plies' | 'material'> & {
|
|
15
|
+
size?: string;
|
|
16
|
+
}): BeamSizePreset | null;
|
|
17
|
+
/**
|
|
18
|
+
* A length in inches and sixteenths, as a framing size prints it: 3.5 in reads "3-1/2", 0.75 in
|
|
19
|
+
* "3/4", 9 in "9".
|
|
20
|
+
*/
|
|
21
|
+
export declare function inchFractionLabel(metres: number, denominator?: number): string;
|
|
22
|
+
/** What each material is called in a list or a panel. */
|
|
23
|
+
export declare const BEAM_MATERIAL_LABELS: Record<BeamMaterial, string>;
|
|
24
|
+
/**
|
|
25
|
+
* How each material looks, from the material library: fir for sawn lumber, a weathered grey-brown
|
|
26
|
+
* for treated, the pale veneer of an LVL, the warm laminations of a glulam, steel.
|
|
27
|
+
*/
|
|
28
|
+
export declare const BEAM_MATERIAL_LIBRARY_REFS: Record<BeamMaterial, string>;
|
|
29
|
+
/**
|
|
30
|
+
* A beam's size as a framing plan prints it: "6x8", "(2) 2x10", "6x8 PT", "1-3/4x11-7/8 LVL",
|
|
31
|
+
* "W8x10"; a section that is no stock size by its actual inches ("3-1/2x9-1/4").
|
|
32
|
+
*/
|
|
33
|
+
export declare function beamSizeLabel(beam: Pick<BeamNode, 'width' | 'depth' | 'plies' | 'material'> & {
|
|
34
|
+
size?: string;
|
|
35
|
+
}): string;
|
|
36
|
+
/**
|
|
37
|
+
* The fields that make a beam a stock size. Sawn sizes keep a treated beam treated; any other
|
|
38
|
+
* size brings its own material.
|
|
39
|
+
*/
|
|
40
|
+
export declare function beamSizePresetPatch(beam: Pick<BeamNode, 'material'>, presetId: string): Partial<BeamNode>;
|
|
41
|
+
/** What `createBeam` builds a beam from. */
|
|
42
|
+
export type BeamInput = {
|
|
43
|
+
/** The centreline, level-local plan points `[x, z]`. */
|
|
44
|
+
start: readonly [number, number];
|
|
45
|
+
end: readonly [number, number];
|
|
46
|
+
/**
|
|
47
|
+
* A stock size by id or label (`BEAM_SIZE_PRESETS`), a 6x8 by default (an unknown one too).
|
|
48
|
+
* Ignored when `width` and `depth` are given.
|
|
49
|
+
*/
|
|
50
|
+
preset?: BeamSizePresetId | (string & {});
|
|
51
|
+
/** A custom section, metres (every ply together across), in place of a stock size. */
|
|
52
|
+
width?: number;
|
|
53
|
+
depth?: number;
|
|
54
|
+
/** How many plies a custom section is nailed up from (a stock size brings its own). */
|
|
55
|
+
plies?: number;
|
|
56
|
+
/** What it is made of; else what the stock size is (sawn lumber for a custom section). */
|
|
57
|
+
material?: BeamMaterial;
|
|
58
|
+
placement?: BeamPlacement;
|
|
59
|
+
/** Its top, level-local metres; absent = the level's ceiling plane over it. */
|
|
60
|
+
topElevation?: number;
|
|
61
|
+
/** The level it goes on: its `parentId`. */
|
|
62
|
+
levelId?: string;
|
|
63
|
+
/** The slab it belongs to, if any (a porch's or a deck's). */
|
|
64
|
+
supportSlabId?: string;
|
|
65
|
+
name?: string;
|
|
66
|
+
metadata?: Record<string, unknown>;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* A beam node from a centreline and a size, ready for `createNode` on its level: what the beam
|
|
70
|
+
* tool draws, and what code that frames a porch or a deck makes.
|
|
71
|
+
*/
|
|
72
|
+
export declare function createBeam(input: BeamInput): BeamNode;
|
|
73
|
+
/** A beam's plan, level-local: its centreline, run, the way it runs and across it. */
|
|
74
|
+
export type BeamPlan = {
|
|
75
|
+
start: P;
|
|
76
|
+
end: P;
|
|
77
|
+
length: number;
|
|
78
|
+
/** Unit vector start → end. */
|
|
79
|
+
direction: P;
|
|
80
|
+
/** Unit vector to the left of the run (the wall convention's +normal). */
|
|
81
|
+
normal: P;
|
|
82
|
+
width: number;
|
|
83
|
+
};
|
|
84
|
+
export declare function beamPlan(beam: Pick<BeamNode, 'start' | 'end' | 'width'>): BeamPlan;
|
|
85
|
+
/** The beam's outline in plan, level-local: four corners, start's left first. */
|
|
86
|
+
export declare function beamOutline(beam: Pick<BeamNode, 'start' | 'end' | 'width'>): P[];
|
|
87
|
+
/**
|
|
88
|
+
* The ceiling plane over a beam, level-local: the top of the level's walls there, the storey's
|
|
89
|
+
* height or the underside of a slab of the level above that covers the beam (`getWallPlaneTop`
|
|
90
|
+
* over the beam's width, as for a wall).
|
|
91
|
+
*/
|
|
92
|
+
export declare function beamCeilingPlane(nodes: Nodes, beam: Pick<BeamNode, 'start' | 'end' | 'width' | 'parentId'>): number;
|
|
93
|
+
/**
|
|
94
|
+
* Where a beam's top is, level-local. A stored `topElevation` stands; without one the beam
|
|
95
|
+
* follows the ceiling plane over it: a dropped beam hangs under it, the joists bearing on its
|
|
96
|
+
* top, and a flush one sits in the ceiling framing with its underside on it.
|
|
97
|
+
*/
|
|
98
|
+
export declare function beamTopElevation(nodes: Nodes, beam: Pick<BeamNode, 'start' | 'end' | 'width' | 'depth' | 'parentId' | 'placement' | 'topElevation'>): number;
|
|
99
|
+
/** Where a beam's underside is, level-local: what a post under it stands up to. */
|
|
100
|
+
export declare function beamBottomElevation(nodes: Nodes, beam: Pick<BeamNode, 'start' | 'end' | 'width' | 'depth' | 'parentId' | 'placement' | 'topElevation'>): number;
|
|
101
|
+
/** The floor at a plan point of a level, level-local: the highest floor slab there, its top and underside. */
|
|
102
|
+
export type LevelFloorAt = {
|
|
103
|
+
top: number;
|
|
104
|
+
underside: number;
|
|
105
|
+
slabId: string | null;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* The floor a level stands on at a plan point: the highest of its floor slabs there (not a pit,
|
|
109
|
+
* not the site's paving), its top and the underside of its body; the level's own plane, 0, where
|
|
110
|
+
* none is.
|
|
111
|
+
*/
|
|
112
|
+
export declare function levelFloorAt(nodes: Nodes, levelId: string, point: readonly [number, number]): LevelFloorAt;
|
|
113
|
+
/**
|
|
114
|
+
* Where a beam's top is set from, as the panel lists them: under the ceiling plane (a dropped
|
|
115
|
+
* beam, the default) or flush in the ceiling framing, both following the plane; flush with the
|
|
116
|
+
* floor (its top the floor's) or under the floor's framing (a girder in a crawl space, a deck's
|
|
117
|
+
* beam under its joists), both measured at the beam's middle.
|
|
118
|
+
*/
|
|
119
|
+
export type BeamTopReference = 'ceiling-dropped' | 'ceiling-flush' | 'floor-flush' | 'floor-under';
|
|
120
|
+
export declare const BEAM_TOP_REFERENCES: readonly BeamTopReference[];
|
|
121
|
+
export declare const BEAM_TOP_REFERENCE_LABELS: Record<BeamTopReference, string>;
|
|
122
|
+
/** The fields that put a beam's top at `reference`. */
|
|
123
|
+
export declare function beamTopReferencePatch(nodes: Nodes, beam: Pick<BeamNode, 'start' | 'end' | 'parentId'>, reference: BeamTopReference): Pick<BeamNode, 'topElevation' | 'placement'>;
|
|
124
|
+
/** Which of the references a beam's top is set from now, or null for a top typed in by hand. */
|
|
125
|
+
export declare function beamTopReferenceOf(nodes: Nodes, beam: Pick<BeamNode, 'start' | 'end' | 'parentId' | 'placement' | 'topElevation'>): BeamTopReference | null;
|
|
126
|
+
/**
|
|
127
|
+
* The beams of a level over a plan point, the lowest underside first: those whose outline,
|
|
128
|
+
* grown by `margin` all round, holds the point. What a post set there stands up to.
|
|
129
|
+
*/
|
|
130
|
+
export declare function beamsOverPoint(nodes: Nodes, levelId: string, point: readonly [number, number], margin?: number): BeamNode[];
|
|
131
|
+
/**
|
|
132
|
+
* Where posts stand under a beam run: at both ends and evenly between, no two further apart than
|
|
133
|
+
* `maxSpacing`. A porch's open edge gets its posts this way.
|
|
134
|
+
*/
|
|
135
|
+
export declare function postStationsAlong(start: readonly [number, number], end: readonly [number, number], maxSpacing: number): P[];
|
|
136
|
+
export {};
|
|
137
|
+
//# sourceMappingURL=beam.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beam.d.ts","sourceRoot":"","sources":["../../src/lib/beam.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/beam.js
ADDED
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { BEAM_SIZE_PRESETS, BeamNode, DEFAULT_BEAM_SIZE_PRESET_ID, } from '../schema/nodes/beam.js';
|
|
2
|
+
import { DEFAULT_LEVEL_HEIGHT } from '../services/level-height.js';
|
|
3
|
+
import { getWallPlaneTop } from '../services/storey.js';
|
|
4
|
+
import { pointInPolygon, pointOnPolygonBoundary } from '../systems/slab/slab-support.js';
|
|
5
|
+
import { isSiteFlatwork } from './site-flatwork.js';
|
|
6
|
+
const INCH = 0.0254;
|
|
7
|
+
/** Two sections within this of each other are one size (a 32nd of an inch). */
|
|
8
|
+
const SIZE_TOLERANCE = INCH / 32;
|
|
9
|
+
/**
|
|
10
|
+
* The stock size with this id or label (`BEAM_SIZE_PRESETS`): '(2)2x10' and '(2) 2x10' are both
|
|
11
|
+
* the two-ply 2x10.
|
|
12
|
+
*/
|
|
13
|
+
export function beamSizePreset(idOrLabel) {
|
|
14
|
+
return BEAM_SIZE_PRESETS.find((preset) => preset.id === idOrLabel || preset.label === idOrLabel);
|
|
15
|
+
}
|
|
16
|
+
/** Whether a beam of `material` can be a preset of `presetMaterial`: sawn stock comes treated too. */
|
|
17
|
+
function materialFits(material, presetMaterial) {
|
|
18
|
+
if (presetMaterial === 'sawn')
|
|
19
|
+
return material === 'sawn' || material === 'pressure-treated';
|
|
20
|
+
return material === presetMaterial;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The stock size a beam is, if it is one: as many plies of the same nominal size (when it names
|
|
24
|
+
* one), the same section, and a material that size comes in.
|
|
25
|
+
*/
|
|
26
|
+
export function matchBeamSizePreset(beam) {
|
|
27
|
+
for (const preset of BEAM_SIZE_PRESETS) {
|
|
28
|
+
if (preset.plies !== beam.plies)
|
|
29
|
+
continue;
|
|
30
|
+
if (beam.size !== undefined && beam.size !== preset.size)
|
|
31
|
+
continue;
|
|
32
|
+
if (!materialFits(beam.material, preset.material))
|
|
33
|
+
continue;
|
|
34
|
+
if (Math.abs(preset.width - beam.width) > SIZE_TOLERANCE)
|
|
35
|
+
continue;
|
|
36
|
+
if (Math.abs(preset.depth - beam.depth) > SIZE_TOLERANCE)
|
|
37
|
+
continue;
|
|
38
|
+
return preset;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A length in inches and sixteenths, as a framing size prints it: 3.5 in reads "3-1/2", 0.75 in
|
|
44
|
+
* "3/4", 9 in "9".
|
|
45
|
+
*/
|
|
46
|
+
export function inchFractionLabel(metres, denominator = 16) {
|
|
47
|
+
const total = Math.round((Math.abs(metres) / INCH) * denominator);
|
|
48
|
+
const whole = Math.floor(total / denominator);
|
|
49
|
+
let numerator = total % denominator;
|
|
50
|
+
let over = denominator;
|
|
51
|
+
while (numerator > 0 && numerator % 2 === 0) {
|
|
52
|
+
numerator /= 2;
|
|
53
|
+
over /= 2;
|
|
54
|
+
}
|
|
55
|
+
if (numerator === 0)
|
|
56
|
+
return `${whole}`;
|
|
57
|
+
return whole > 0 ? `${whole}-${numerator}/${over}` : `${numerator}/${over}`;
|
|
58
|
+
}
|
|
59
|
+
/** What a plan adds after the size to say what a beam is made of; a W shape is steel by its name. */
|
|
60
|
+
const MATERIAL_SUFFIX = {
|
|
61
|
+
sawn: '',
|
|
62
|
+
'pressure-treated': ' PT',
|
|
63
|
+
lvl: ' LVL',
|
|
64
|
+
glulam: ' GLB',
|
|
65
|
+
steel: '',
|
|
66
|
+
};
|
|
67
|
+
/** What each material is called in a list or a panel. */
|
|
68
|
+
export const BEAM_MATERIAL_LABELS = {
|
|
69
|
+
sawn: 'Sawn lumber',
|
|
70
|
+
'pressure-treated': 'Pressure-treated',
|
|
71
|
+
lvl: 'LVL',
|
|
72
|
+
glulam: 'Glulam',
|
|
73
|
+
steel: 'Steel',
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* How each material looks, from the material library: fir for sawn lumber, a weathered grey-brown
|
|
77
|
+
* for treated, the pale veneer of an LVL, the warm laminations of a glulam, steel.
|
|
78
|
+
*/
|
|
79
|
+
export const BEAM_MATERIAL_LIBRARY_REFS = {
|
|
80
|
+
sawn: 'library:wood-woodfine2',
|
|
81
|
+
'pressure-treated': 'library:wood-woodplank19',
|
|
82
|
+
lvl: 'library:wood-woodfine22',
|
|
83
|
+
glulam: 'library:wood-woodfine13',
|
|
84
|
+
steel: 'library:metal-steel',
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* A beam's size as a framing plan prints it: "6x8", "(2) 2x10", "6x8 PT", "1-3/4x11-7/8 LVL",
|
|
88
|
+
* "W8x10"; a section that is no stock size by its actual inches ("3-1/2x9-1/4").
|
|
89
|
+
*/
|
|
90
|
+
export function beamSizeLabel(beam) {
|
|
91
|
+
const suffix = MATERIAL_SUFFIX[beam.material];
|
|
92
|
+
const size = beam.size ?? matchBeamSizePreset(beam)?.size;
|
|
93
|
+
if (size)
|
|
94
|
+
return `${beam.plies > 1 ? `(${beam.plies}) ` : ''}${size}${suffix}`;
|
|
95
|
+
return `${inchFractionLabel(beam.width)}x${inchFractionLabel(beam.depth)}${suffix}`;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The fields that make a beam a stock size. Sawn sizes keep a treated beam treated; any other
|
|
99
|
+
* size brings its own material.
|
|
100
|
+
*/
|
|
101
|
+
export function beamSizePresetPatch(beam, presetId) {
|
|
102
|
+
const preset = beamSizePreset(presetId);
|
|
103
|
+
if (!preset)
|
|
104
|
+
return {};
|
|
105
|
+
return {
|
|
106
|
+
size: preset.size,
|
|
107
|
+
plies: preset.plies,
|
|
108
|
+
width: preset.width,
|
|
109
|
+
depth: preset.depth,
|
|
110
|
+
material: materialFits(beam.material, preset.material) ? beam.material : preset.material,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A beam node from a centreline and a size, ready for `createNode` on its level: what the beam
|
|
115
|
+
* tool draws, and what code that frames a porch or a deck makes.
|
|
116
|
+
*/
|
|
117
|
+
export function createBeam(input) {
|
|
118
|
+
const custom = input.width !== undefined && input.depth !== undefined;
|
|
119
|
+
const preset = custom
|
|
120
|
+
? undefined
|
|
121
|
+
: (beamSizePreset(input.preset ?? DEFAULT_BEAM_SIZE_PRESET_ID) ??
|
|
122
|
+
beamSizePreset(DEFAULT_BEAM_SIZE_PRESET_ID));
|
|
123
|
+
return BeamNode.parse({
|
|
124
|
+
start: [input.start[0], input.start[1]],
|
|
125
|
+
end: [input.end[0], input.end[1]],
|
|
126
|
+
width: custom ? input.width : preset?.width,
|
|
127
|
+
depth: custom ? input.depth : preset?.depth,
|
|
128
|
+
size: preset?.size,
|
|
129
|
+
plies: custom ? (input.plies ?? 1) : preset?.plies,
|
|
130
|
+
material: input.material ?? preset?.material ?? 'sawn',
|
|
131
|
+
placement: input.placement ?? 'dropped',
|
|
132
|
+
...(input.topElevation !== undefined ? { topElevation: input.topElevation } : {}),
|
|
133
|
+
...(input.levelId ? { parentId: input.levelId } : {}),
|
|
134
|
+
...(input.supportSlabId ? { supportSlabId: input.supportSlabId } : {}),
|
|
135
|
+
...(input.name ? { name: input.name } : {}),
|
|
136
|
+
...(input.metadata ? { metadata: input.metadata } : {}),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
export function beamPlan(beam) {
|
|
140
|
+
const dx = beam.end[0] - beam.start[0];
|
|
141
|
+
const dz = beam.end[1] - beam.start[1];
|
|
142
|
+
const length = Math.hypot(dx, dz);
|
|
143
|
+
const direction = length > 1e-9 ? [dx / length, dz / length] : [1, 0];
|
|
144
|
+
return {
|
|
145
|
+
start: [beam.start[0], beam.start[1]],
|
|
146
|
+
end: [beam.end[0], beam.end[1]],
|
|
147
|
+
length,
|
|
148
|
+
direction,
|
|
149
|
+
normal: [-direction[1], direction[0]],
|
|
150
|
+
width: beam.width,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/** The beam's outline in plan, level-local: four corners, start's left first. */
|
|
154
|
+
export function beamOutline(beam) {
|
|
155
|
+
const { start, end, normal, width } = beamPlan(beam);
|
|
156
|
+
const [nx, nz] = [normal[0] * (width / 2), normal[1] * (width / 2)];
|
|
157
|
+
return [
|
|
158
|
+
[start[0] + nx, start[1] + nz],
|
|
159
|
+
[end[0] + nx, end[1] + nz],
|
|
160
|
+
[end[0] - nx, end[1] - nz],
|
|
161
|
+
[start[0] - nx, start[1] - nz],
|
|
162
|
+
];
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* The ceiling plane over a beam, level-local: the top of the level's walls there, the storey's
|
|
166
|
+
* height or the underside of a slab of the level above that covers the beam (`getWallPlaneTop`
|
|
167
|
+
* over the beam's width, as for a wall).
|
|
168
|
+
*/
|
|
169
|
+
export function beamCeilingPlane(nodes, beam) {
|
|
170
|
+
if (!beam.parentId)
|
|
171
|
+
return DEFAULT_LEVEL_HEIGHT;
|
|
172
|
+
return getWallPlaneTop({ start: beam.start, end: beam.end, thickness: beam.width }, beam.parentId, nodes);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Where a beam's top is, level-local. A stored `topElevation` stands; without one the beam
|
|
176
|
+
* follows the ceiling plane over it: a dropped beam hangs under it, the joists bearing on its
|
|
177
|
+
* top, and a flush one sits in the ceiling framing with its underside on it.
|
|
178
|
+
*/
|
|
179
|
+
export function beamTopElevation(nodes, beam) {
|
|
180
|
+
if (beam.topElevation !== undefined)
|
|
181
|
+
return beam.topElevation;
|
|
182
|
+
const plane = beamCeilingPlane(nodes, beam);
|
|
183
|
+
return beam.placement === 'flush' ? plane + beam.depth : plane;
|
|
184
|
+
}
|
|
185
|
+
/** Where a beam's underside is, level-local: what a post under it stands up to. */
|
|
186
|
+
export function beamBottomElevation(nodes, beam) {
|
|
187
|
+
return beamTopElevation(nodes, beam) - beam.depth;
|
|
188
|
+
}
|
|
189
|
+
function slabHolds(slab, [x, z]) {
|
|
190
|
+
if (!(pointInPolygon(x, z, slab.polygon) || pointOnPolygonBoundary(x, z, slab.polygon)))
|
|
191
|
+
return false;
|
|
192
|
+
for (const hole of slab.holes ?? []) {
|
|
193
|
+
if (hole.length >= 3 && pointInPolygon(x, z, hole))
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* The floor a level stands on at a plan point: the highest of its floor slabs there (not a pit,
|
|
200
|
+
* not the site's paving), its top and the underside of its body; the level's own plane, 0, where
|
|
201
|
+
* none is.
|
|
202
|
+
*/
|
|
203
|
+
export function levelFloorAt(nodes, levelId, point) {
|
|
204
|
+
const level = nodes[levelId];
|
|
205
|
+
let floor = { top: 0, underside: 0, slabId: null };
|
|
206
|
+
if (level?.type !== 'level')
|
|
207
|
+
return floor;
|
|
208
|
+
let best = null;
|
|
209
|
+
for (const childId of level.children) {
|
|
210
|
+
const child = nodes[childId];
|
|
211
|
+
if (child?.type !== 'slab' || child.visible === false)
|
|
212
|
+
continue;
|
|
213
|
+
if (child.recessed === true || isSiteFlatwork(child) || child.polygon.length < 3)
|
|
214
|
+
continue;
|
|
215
|
+
if (!slabHolds(child, [point[0], point[1]]))
|
|
216
|
+
continue;
|
|
217
|
+
if (!best || child.elevation > best.elevation)
|
|
218
|
+
best = child;
|
|
219
|
+
}
|
|
220
|
+
if (best)
|
|
221
|
+
floor = { top: best.elevation, underside: best.elevation - best.thickness, slabId: best.id };
|
|
222
|
+
return floor;
|
|
223
|
+
}
|
|
224
|
+
export const BEAM_TOP_REFERENCES = [
|
|
225
|
+
'ceiling-dropped',
|
|
226
|
+
'ceiling-flush',
|
|
227
|
+
'floor-flush',
|
|
228
|
+
'floor-under',
|
|
229
|
+
];
|
|
230
|
+
export const BEAM_TOP_REFERENCE_LABELS = {
|
|
231
|
+
'ceiling-dropped': 'Under ceiling plane',
|
|
232
|
+
'ceiling-flush': 'Flush in ceiling',
|
|
233
|
+
'floor-flush': 'Flush with floor',
|
|
234
|
+
'floor-under': 'Under floor',
|
|
235
|
+
};
|
|
236
|
+
function beamFloor(nodes, beam) {
|
|
237
|
+
if (!beam.parentId)
|
|
238
|
+
return { top: 0, underside: 0, slabId: null };
|
|
239
|
+
const middle = [(beam.start[0] + beam.end[0]) / 2, (beam.start[1] + beam.end[1]) / 2];
|
|
240
|
+
return levelFloorAt(nodes, beam.parentId, middle);
|
|
241
|
+
}
|
|
242
|
+
/** The fields that put a beam's top at `reference`. */
|
|
243
|
+
export function beamTopReferencePatch(nodes, beam, reference) {
|
|
244
|
+
if (reference === 'ceiling-dropped')
|
|
245
|
+
return { topElevation: undefined, placement: 'dropped' };
|
|
246
|
+
if (reference === 'ceiling-flush')
|
|
247
|
+
return { topElevation: undefined, placement: 'flush' };
|
|
248
|
+
const floor = beamFloor(nodes, beam);
|
|
249
|
+
return reference === 'floor-flush'
|
|
250
|
+
? { topElevation: floor.top, placement: 'flush' }
|
|
251
|
+
: { topElevation: floor.underside, placement: 'dropped' };
|
|
252
|
+
}
|
|
253
|
+
/** Which of the references a beam's top is set from now, or null for a top typed in by hand. */
|
|
254
|
+
export function beamTopReferenceOf(nodes, beam) {
|
|
255
|
+
if (beam.topElevation === undefined)
|
|
256
|
+
return beam.placement === 'flush' ? 'ceiling-flush' : 'ceiling-dropped';
|
|
257
|
+
const floor = beamFloor(nodes, beam);
|
|
258
|
+
if (beam.placement === 'flush' && Math.abs(beam.topElevation - floor.top) < 1e-6)
|
|
259
|
+
return 'floor-flush';
|
|
260
|
+
if (beam.placement === 'dropped' && Math.abs(beam.topElevation - floor.underside) < 1e-6)
|
|
261
|
+
return 'floor-under';
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* The beams of a level over a plan point, the lowest underside first: those whose outline,
|
|
266
|
+
* grown by `margin` all round, holds the point. What a post set there stands up to.
|
|
267
|
+
*/
|
|
268
|
+
export function beamsOverPoint(nodes, levelId, point, margin = 0.01) {
|
|
269
|
+
const found = [];
|
|
270
|
+
for (const node of Object.values(nodes)) {
|
|
271
|
+
if (node?.type !== 'beam' || node.parentId !== levelId || node.visible === false)
|
|
272
|
+
continue;
|
|
273
|
+
const { start, length, direction, normal, width } = beamPlan(node);
|
|
274
|
+
const rx = point[0] - start[0];
|
|
275
|
+
const rz = point[1] - start[1];
|
|
276
|
+
const along = rx * direction[0] + rz * direction[1];
|
|
277
|
+
const across = rx * normal[0] + rz * normal[1];
|
|
278
|
+
if (along < -margin || along > length + margin)
|
|
279
|
+
continue;
|
|
280
|
+
if (Math.abs(across) > width / 2 + margin)
|
|
281
|
+
continue;
|
|
282
|
+
found.push({ beam: node, bottom: beamBottomElevation(nodes, node) });
|
|
283
|
+
}
|
|
284
|
+
return found.sort((a, b) => a.bottom - b.bottom).map(({ beam }) => beam);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Where posts stand under a beam run: at both ends and evenly between, no two further apart than
|
|
288
|
+
* `maxSpacing`. A porch's open edge gets its posts this way.
|
|
289
|
+
*/
|
|
290
|
+
export function postStationsAlong(start, end, maxSpacing) {
|
|
291
|
+
const length = Math.hypot(end[0] - start[0], end[1] - start[1]);
|
|
292
|
+
const spans = maxSpacing > 0 ? Math.max(1, Math.ceil(length / maxSpacing - 1e-9)) : 1;
|
|
293
|
+
return Array.from({ length: spans + 1 }, (_, index) => {
|
|
294
|
+
const t = index / spans;
|
|
295
|
+
return [start[0] + (end[0] - start[0]) * t, start[1] + (end[1] - start[1]) * t];
|
|
296
|
+
});
|
|
297
|
+
}
|
|
@@ -4,8 +4,7 @@ import { type Point2D } from './polygon-union.js';
|
|
|
4
4
|
* Where the ground meets the levels below grade, in the site's plan: each such level's floor slabs
|
|
5
5
|
* placed where its building stands and joined into outlines, the levels' together as one set (a
|
|
6
6
|
* deeper level wider than the one over it, or under part of it, gives one outline, not overlapping
|
|
7
|
-
* ones). The 3D view cuts its hole in the ground
|
|
8
|
-
* ground is veiled. An automatic floor follows the walls' centrelines, so an outline runs half a
|
|
7
|
+
* ones). The 3D view cuts its hole in the ground over them while the ground is veiled. An automatic floor follows the walls' centrelines, so an outline runs half a
|
|
9
8
|
* wall inside the outer faces. A level only partly below grade (a walk-out on a hillside) gives
|
|
10
9
|
* the part of its floor the ground stands over by more than {@link BELOW_GRADE_TOLERANCE}, the
|
|
11
10
|
* edge following the slope; fully buried levels give their whole floor.
|
|
@@ -36,6 +35,16 @@ export declare function belowGradeFootprints(nodes: Record<AnyNodeId, AnyNode>,
|
|
|
36
35
|
* cannot be cut around an island of itself, and closed is the safe side.
|
|
37
36
|
*/
|
|
38
37
|
export declare function coveredBelowGradeFootprints(nodes: Record<AnyNodeId, AnyNode>): Point2D[][];
|
|
38
|
+
/**
|
|
39
|
+
* The part of every floor plate the rendered terrain stands over, in the site's plan: each visible
|
|
40
|
+
* level's floor slabs (not a recessed pit, not site flatwork), cut where the ground (the triangle
|
|
41
|
+
* plane the terrain draws) is higher than that slab's own top. Inside a storey's floor the ground
|
|
42
|
+
* is never seen over it: the terrain is cut open there, whatever the level's grade standing. Unlike
|
|
43
|
+
* the below-grade outlines this takes no {@link BELOW_GRADE_TOLERANCE}: a slope interpolated a few
|
|
44
|
+
* centimetres to 0.3 m over a walk-out's floor near where the ground rises is cut too. Rings only,
|
|
45
|
+
* as the cover: an outline with an inner outline is left out. Empty on a site with no terrain.
|
|
46
|
+
*/
|
|
47
|
+
export declare function terrainOverFloors(nodes: Record<AnyNodeId, AnyNode>): Point2D[][];
|
|
39
48
|
/**
|
|
40
49
|
* How deep the pit under the hole goes: the world Y of the top of the lowest floor of the level
|
|
41
50
|
* shown (the sunken room of a split level, not its raised part), the deepest of the levels the hole
|
|
@@ -46,9 +55,8 @@ export declare function belowGradeFloorY(nodes: Record<AnyNodeId, AnyNode>, show
|
|
|
46
55
|
/** How far under the top of the floor plate the pit hangs its own floor: the default plate's thickness. */
|
|
47
56
|
export declare const GROUND_PIT_FLOOR_DROP = 0.05;
|
|
48
57
|
/**
|
|
49
|
-
* How far the pit's floor keeps from the plane of the plate's underside
|
|
50
|
-
*
|
|
51
|
-
* on the pit's floor, not share its plane: two faces on one plane flicker. 2 cm is what a 24-bit
|
|
58
|
+
* How far the pit's floor keeps from the plane of the plate's underside: two faces on one plane
|
|
59
|
+
* flicker. 2 cm is what a 24-bit
|
|
52
60
|
* depth buffer with the viewer's 0.3 m near plane tells apart out to about 300 m, further than
|
|
53
61
|
* the hole is ever looked into from.
|
|
54
62
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"below-grade-footprints.d.ts","sourceRoot":"","sources":["../../src/lib/below-grade-footprints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"below-grade-footprints.d.ts","sourceRoot":"","sources":["../../src/lib/below-grade-footprints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAiBnD,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,iBAAiB,CAAA;AAqE7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,OAAO,EAAE,EAAE,CAUb;AAID;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,EAAE,CA8B1F;AAMD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,EAAE,CA0BhF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,MAAM,GAAG,IAAI,CAGf;AAED,2GAA2G;AAC3G,eAAO,MAAM,qBAAqB,OAAO,CAAA;AACzC;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,OAAO,CAAA;AAE9C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,MAAM,GAAG,IAAI,CAQf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BELOW_GRADE_TOLERANCE, getLevelElevations, levelLowestFloorWorldY, levelPlaneWorldY, levelPlateUndersideWorldY, } from '../services/storey.js';
|
|
2
|
-
import { floorBuriedOnFlatSite, levelGradeStanding, terrainFieldOverLevel, } from './grade-standing.js';
|
|
2
|
+
import { floorBuriedOnFlatSite, levelGradeStanding, slabGradeElevation, terrainFieldOverLevel, } from './grade-standing.js';
|
|
3
3
|
import { groundOverPart } from './ground-over-part.js';
|
|
4
4
|
import { difference, intersection, union } from './polygon-boolean.js';
|
|
5
5
|
import { unionPolygons } from './polygon-union.js';
|
|
@@ -37,11 +37,12 @@ function levelPlates(nodes) {
|
|
|
37
37
|
plates.push(plate);
|
|
38
38
|
if (standing === 'at-grade')
|
|
39
39
|
continue;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const floorY = plane === null ? null : plane + slabGradeElevation(nodes, level, slab);
|
|
41
|
+
if (field && floorY !== null)
|
|
42
|
+
buried.push(...groundOverPart(plate, field, floorY + BELOW_GRADE_TOLERANCE));
|
|
43
|
+
else if (floorY !== null) {
|
|
43
44
|
// A flat site, a level of floors at different heights: a floor is buried or it is not.
|
|
44
|
-
if (floorBuriedOnFlatSite(
|
|
45
|
+
if (floorBuriedOnFlatSite(floorY))
|
|
45
46
|
buried.push(plate);
|
|
46
47
|
}
|
|
47
48
|
else
|
|
@@ -63,8 +64,7 @@ function levelPlates(nodes) {
|
|
|
63
64
|
* Where the ground meets the levels below grade, in the site's plan: each such level's floor slabs
|
|
64
65
|
* placed where its building stands and joined into outlines, the levels' together as one set (a
|
|
65
66
|
* deeper level wider than the one over it, or under part of it, gives one outline, not overlapping
|
|
66
|
-
* ones). The 3D view cuts its hole in the ground
|
|
67
|
-
* ground is veiled. An automatic floor follows the walls' centrelines, so an outline runs half a
|
|
67
|
+
* ones). The 3D view cuts its hole in the ground over them while the ground is veiled. An automatic floor follows the walls' centrelines, so an outline runs half a
|
|
68
68
|
* wall inside the outer faces. A level only partly below grade (a walk-out on a hillside) gives
|
|
69
69
|
* the part of its floor the ground stands over by more than {@link BELOW_GRADE_TOLERANCE}, the
|
|
70
70
|
* edge following the slope; fully buried levels give their whole floor.
|
|
@@ -140,6 +140,50 @@ export function coveredBelowGradeFootprints(nodes) {
|
|
|
140
140
|
coveredMemo.set(nodes, rings);
|
|
141
141
|
return rings;
|
|
142
142
|
}
|
|
143
|
+
/** Ground this little over a floor counts as level with it, not over it: the terrain's centimetre steps. */
|
|
144
|
+
const OVER_FLOOR_EPSILON = 0.005;
|
|
145
|
+
const overFloorsMemo = new WeakMap();
|
|
146
|
+
/**
|
|
147
|
+
* The part of every floor plate the rendered terrain stands over, in the site's plan: each visible
|
|
148
|
+
* level's floor slabs (not a recessed pit, not site flatwork), cut where the ground (the triangle
|
|
149
|
+
* plane the terrain draws) is higher than that slab's own top. Inside a storey's floor the ground
|
|
150
|
+
* is never seen over it: the terrain is cut open there, whatever the level's grade standing. Unlike
|
|
151
|
+
* the below-grade outlines this takes no {@link BELOW_GRADE_TOLERANCE}: a slope interpolated a few
|
|
152
|
+
* centimetres to 0.3 m over a walk-out's floor near where the ground rises is cut too. Rings only,
|
|
153
|
+
* as the cover: an outline with an inner outline is left out. Empty on a site with no terrain.
|
|
154
|
+
*/
|
|
155
|
+
export function terrainOverFloors(nodes) {
|
|
156
|
+
const hit = overFloorsMemo.get(nodes);
|
|
157
|
+
if (hit)
|
|
158
|
+
return hit;
|
|
159
|
+
const elevations = getLevelElevations(nodes);
|
|
160
|
+
const pieces = [];
|
|
161
|
+
for (const level of Object.values(nodes)) {
|
|
162
|
+
if (level.type !== 'level' || level.visible === false)
|
|
163
|
+
continue;
|
|
164
|
+
const field = terrainFieldOverLevel(nodes, level);
|
|
165
|
+
const plane = field ? levelPlaneWorldY(nodes, level.id) : null;
|
|
166
|
+
if (!field || plane === null)
|
|
167
|
+
continue;
|
|
168
|
+
const buildingId = elevations.get(level.id)?.buildingId;
|
|
169
|
+
const building = buildingId ? nodes[buildingId] : undefined;
|
|
170
|
+
const placed = building?.type === 'building' ? building : null;
|
|
171
|
+
for (const childId of level.children) {
|
|
172
|
+
const slab = nodes[childId];
|
|
173
|
+
if (slab?.type !== 'slab' || slab.recessed === true || isSiteFlatwork(slab))
|
|
174
|
+
continue;
|
|
175
|
+
if (slab.visible === false)
|
|
176
|
+
continue;
|
|
177
|
+
const plate = slab.polygon.map(([x, z]) => levelLocalToWorldXZ(placed, x, z));
|
|
178
|
+
pieces.push(...groundOverPart(plate, field, plane + slab.elevation + OVER_FLOOR_EPSILON));
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const rings = union(pieces)
|
|
182
|
+
.filter((polygon) => polygon.holes.length === 0)
|
|
183
|
+
.map((polygon) => polygon.outer);
|
|
184
|
+
overFloorsMemo.set(nodes, rings);
|
|
185
|
+
return rings;
|
|
186
|
+
}
|
|
143
187
|
/**
|
|
144
188
|
* How deep the pit under the hole goes: the world Y of the top of the lowest floor of the level
|
|
145
189
|
* shown (the sunken room of a split level, not its raised part), the deepest of the levels the hole
|
|
@@ -154,9 +198,8 @@ export function belowGradeFloorY(nodes, shownLevelId) {
|
|
|
154
198
|
/** How far under the top of the floor plate the pit hangs its own floor: the default plate's thickness. */
|
|
155
199
|
export const GROUND_PIT_FLOOR_DROP = 0.05;
|
|
156
200
|
/**
|
|
157
|
-
* How far the pit's floor keeps from the plane of the plate's underside
|
|
158
|
-
*
|
|
159
|
-
* on the pit's floor, not share its plane: two faces on one plane flicker. 2 cm is what a 24-bit
|
|
201
|
+
* How far the pit's floor keeps from the plane of the plate's underside: two faces on one plane
|
|
202
|
+
* flicker. 2 cm is what a 24-bit
|
|
160
203
|
* depth buffer with the viewer's 0.3 m near plane tells apart out to about 300 m, further than
|
|
161
204
|
* the hole is ever looked into from.
|
|
162
205
|
*/
|