@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
|
@@ -43,7 +43,9 @@
|
|
|
43
43
|
* `exterior` nor `sheathing`, whose interior finish is then applied to BOTH
|
|
44
44
|
* faces and no cladding or sheathing is drawn (see `resolveWallAssembly`).
|
|
45
45
|
*/
|
|
46
|
+
import { getLibraryMaterialIdFromRef, getMaterialsForCategory, } from '../../material-library.js';
|
|
46
47
|
import { WallAssembly } from '../../schema/nodes/wall.js';
|
|
48
|
+
import { WallTypeDefinition } from '../../schema/wall-type.js';
|
|
47
49
|
import { DEFAULT_WALL_THICKNESS } from './wall-footprint.js';
|
|
48
50
|
import { pointToKey } from './wall-mitering.js';
|
|
49
51
|
// ============================================================================
|
|
@@ -67,6 +69,19 @@ export const GYPSUM_SHEATHING = inches(0.5);
|
|
|
67
69
|
export const STUD_2X4 = inches(3.5);
|
|
68
70
|
/** 2x6 stud, actual 5-1/2 in. Same source as STUD_2X4. */
|
|
69
71
|
export const STUD_2X6 = inches(5.5);
|
|
72
|
+
/** 2x8 stud, actual 7-1/4 in: the PS 20 dressed size the IRC lumber tables assume. */
|
|
73
|
+
export const STUD_2X8 = inches(7.25);
|
|
74
|
+
/**
|
|
75
|
+
* Steel stud webs, 3-1/2, 5-1/2 and 8 in: members 350S162, 550S162 and 800S162, whose designation
|
|
76
|
+
* leads with the web depth in hundredths of an inch (AISI S201, the designations 2021 IRC R603
|
|
77
|
+
* uses).
|
|
78
|
+
*/
|
|
79
|
+
export const LGS_STUD_350 = inches(3.5);
|
|
80
|
+
export const LGS_STUD_550 = inches(5.5);
|
|
81
|
+
export const LGS_STUD_800 = inches(8);
|
|
82
|
+
/** Stud spacings the 2021 IRC stud tables are written for, 16 and 24 in on centre (Table R602.3(5)). */
|
|
83
|
+
export const STUD_SPACING_16 = inches(16);
|
|
84
|
+
export const STUD_SPACING_24 = inches(24);
|
|
70
85
|
/** Vinyl / wood lap siding bounding depth, 3/4 in. 2021 IRC R703.11 / R703.5 + Table R703.3(1). */
|
|
71
86
|
export const SIDING_LAP = inches(0.75);
|
|
72
87
|
/** Fiber cement lap board, 5/16 in board. 2021 IRC R703.10.2 + Table R703.3(1). */
|
|
@@ -182,6 +197,7 @@ export function wallAssemblyFromLegacy(legacy) {
|
|
|
182
197
|
core: true,
|
|
183
198
|
material: legacy.framing.kind,
|
|
184
199
|
thickness: legacy.framing.depth,
|
|
200
|
+
...(legacy.framing.spacing !== undefined ? { spacing: legacy.framing.spacing } : {}),
|
|
185
201
|
});
|
|
186
202
|
if (interior)
|
|
187
203
|
layers.push({ id: 'interior', ...interior });
|
|
@@ -242,6 +258,7 @@ export function wallAssemblyToLegacy(assembly) {
|
|
|
242
258
|
legacy.framing = {
|
|
243
259
|
kind: framing.material,
|
|
244
260
|
depth: framing.thickness,
|
|
261
|
+
...(framing.spacing !== undefined ? { spacing: framing.spacing } : {}),
|
|
245
262
|
};
|
|
246
263
|
const lining = take('lining');
|
|
247
264
|
if (layers.length > 0)
|
|
@@ -270,6 +287,7 @@ export function wallAssemblyToLegacy(assembly) {
|
|
|
270
287
|
restored.role === layer.role &&
|
|
271
288
|
restored.core === layer.core &&
|
|
272
289
|
restored.material === layer.material &&
|
|
290
|
+
restored.spacing === layer.spacing &&
|
|
273
291
|
Math.abs(restored.thickness - layer.thickness) < 1e-12);
|
|
274
292
|
});
|
|
275
293
|
if (!sameLayers)
|
|
@@ -305,6 +323,10 @@ const INTERIOR_FINISH_LABEL = {
|
|
|
305
323
|
plaster: 'plaster',
|
|
306
324
|
none: 'none',
|
|
307
325
|
};
|
|
326
|
+
const INSULATION_LABEL = {
|
|
327
|
+
'rigid-foam': 'rigid foam insulation',
|
|
328
|
+
'mineral-wool': 'mineral wool board',
|
|
329
|
+
};
|
|
308
330
|
/** An F2 layer as the WS5 drawing role and its inspector / poché label. */
|
|
309
331
|
function drawnLayer(layer) {
|
|
310
332
|
const material = layer.material;
|
|
@@ -325,9 +347,13 @@ function drawnLayer(layer) {
|
|
|
325
347
|
case 'substrate':
|
|
326
348
|
case 'membrane':
|
|
327
349
|
case 'underlay':
|
|
350
|
+
// Continuous insulation is a board on the face of the frame, drawn as one.
|
|
351
|
+
case 'insulation':
|
|
328
352
|
return {
|
|
329
353
|
role: 'sheathing',
|
|
330
|
-
material: (material && SHEATHING_LABEL[material]
|
|
354
|
+
material: (material && (SHEATHING_LABEL[material] ?? INSULATION_LABEL[material])) ??
|
|
355
|
+
material ??
|
|
356
|
+
layer.role,
|
|
331
357
|
};
|
|
332
358
|
default:
|
|
333
359
|
return {
|
|
@@ -542,20 +568,193 @@ export function wallAssemblyFraming(wall) {
|
|
|
542
568
|
return undefined;
|
|
543
569
|
return { depth: core.thickness, ...(core.material ? { kind: core.material } : {}) };
|
|
544
570
|
}
|
|
545
|
-
/**
|
|
571
|
+
/**
|
|
572
|
+
* `library:` ref for the wall's assembly cladding, or null when it has none: the product picked
|
|
573
|
+
* for its cladding layer while drafting (`wallAssemblyFinishSlots`), else the kind's own
|
|
574
|
+
* (`WALL_FINISH_LIBRARY_REF`). A picked product that no longer dresses the cladding (the layer
|
|
575
|
+
* changed from siding to stucco since) gives way to the kind's own.
|
|
576
|
+
*/
|
|
546
577
|
export function wallAssemblyFinishRef(wall) {
|
|
547
|
-
const
|
|
548
|
-
|
|
578
|
+
const layer = layersOutsideIn(wall).layers.find((layer) => layer.role === 'finish');
|
|
579
|
+
const finish = layer?.material;
|
|
580
|
+
if (!(layer && finish))
|
|
549
581
|
return null;
|
|
582
|
+
const picked = wall.slots?.[assemblyLayerSlotKey(layer)];
|
|
583
|
+
if (isWallCladdingProduct(finish, picked))
|
|
584
|
+
return picked;
|
|
550
585
|
return WALL_FINISH_LIBRARY_REF[finish] ?? null;
|
|
551
586
|
}
|
|
587
|
+
/**
|
|
588
|
+
* The finish the wall's assembly gives one geometric face (`a` is the +normal face) where the
|
|
589
|
+
* face has no paint of its own: on the exterior face its cladding (`wallAssemblyFinishRef`), on a
|
|
590
|
+
* lined face the paint picked for that lining while drafting. Null where the assembly says
|
|
591
|
+
* nothing, and the face shows the wall's slot default.
|
|
592
|
+
*/
|
|
593
|
+
export function wallAssemblyFaceFinish(wall, face) {
|
|
594
|
+
const { layers, exteriorSideResolved } = layersOutsideIn(wall);
|
|
595
|
+
const exterior = face === (exteriorSideResolved === 1 ? 'a' : 'b');
|
|
596
|
+
if (exterior) {
|
|
597
|
+
const cladding = wallAssemblyFinishRef(wall);
|
|
598
|
+
if (cladding)
|
|
599
|
+
return cladding;
|
|
600
|
+
}
|
|
601
|
+
const drawn = layers.filter((layer) => layer.thickness > 0);
|
|
602
|
+
const outer = exterior ? drawn[0] : drawn[drawn.length - 1];
|
|
603
|
+
if (outer?.role !== 'lining')
|
|
604
|
+
return null;
|
|
605
|
+
return wall.slots?.[assemblyLayerSlotKey(outer)] ?? null;
|
|
606
|
+
}
|
|
607
|
+
// ============================================================================
|
|
608
|
+
// FINISHES PICKED WHILE DRAFTING
|
|
609
|
+
// ============================================================================
|
|
610
|
+
/** The `slots` key a layer's look is kept under: its own `slot`, else `layer:<id>` (`AssemblyLayer.slot`). */
|
|
611
|
+
export function assemblyLayerSlotKey(layer) {
|
|
612
|
+
return layer.slot ?? `layer:${layer.id}`;
|
|
613
|
+
}
|
|
614
|
+
/** An outdoor wall finish: a brick or stone made for a wall outside, not a floor tile. */
|
|
615
|
+
const outdoorWall = (item) => !!item.surfaces?.includes('wall') && item.surfaces.includes('outdoor');
|
|
616
|
+
/** Which catalog finishes dress each cladding kind. */
|
|
617
|
+
const CLADDING_PRODUCTS = {
|
|
618
|
+
siding: () => getMaterialsForCategory('siding'),
|
|
619
|
+
'fiber-cement': () => getMaterialsForCategory('siding'),
|
|
620
|
+
// The textured coat, then the flat colours of an integrally coloured or painted finish coat.
|
|
621
|
+
stucco: () => [
|
|
622
|
+
...getMaterialsForCategory('concrete').filter((item) => item.id.includes('stucco')),
|
|
623
|
+
...getMaterialsForCategory('colors'),
|
|
624
|
+
],
|
|
625
|
+
brick: () => getMaterialsForCategory('brick').filter(outdoorWall),
|
|
626
|
+
stone: () => getMaterialsForCategory('stone').filter(outdoorWall),
|
|
627
|
+
};
|
|
628
|
+
/**
|
|
629
|
+
* The catalog products a cladding kind (`siding`, `stucco`, `brick`, …) can be finished with,
|
|
630
|
+
* the kind's own (`WALL_FINISH_LIBRARY_REF`) among them: what the drafting finish picker offers
|
|
631
|
+
* for a wall type with that cladding. Empty for a kind with none (`none`, an unknown kind).
|
|
632
|
+
*/
|
|
633
|
+
export function wallCladdingProducts(kind) {
|
|
634
|
+
return (kind && CLADDING_PRODUCTS[kind]?.()) || [];
|
|
635
|
+
}
|
|
636
|
+
/** Whether `ref` is a `library:` product `wallCladdingProducts(kind)` lists. */
|
|
637
|
+
export function isWallCladdingProduct(kind, ref) {
|
|
638
|
+
const id = getLibraryMaterialIdFromRef(ref);
|
|
639
|
+
return !!id && wallCladdingProducts(kind).some((item) => item.id === id);
|
|
640
|
+
}
|
|
641
|
+
/**
|
|
642
|
+
* Whether a stack builds an exterior wall, read from its own layers: it has a cladding side — a
|
|
643
|
+
* finish or sheathing layer, or a lining on one face only (block or framing left bare outside).
|
|
644
|
+
* A stack lined on both faces, or bare on both, is a partition.
|
|
645
|
+
*/
|
|
646
|
+
export function isExteriorWallAssembly(assembly) {
|
|
647
|
+
const layers = [...assembly.layers, ...(assembly.backing ?? [])].filter((layer) => layer.thickness > 0);
|
|
648
|
+
if (layers.some((layer) => layer.role === 'finish' || layer.role === 'sheathing'))
|
|
649
|
+
return true;
|
|
650
|
+
return (layers[0]?.role === 'lining') !== (layers[layers.length - 1]?.role === 'lining');
|
|
651
|
+
}
|
|
652
|
+
/**
|
|
653
|
+
* The framing cores a project wall type is built around: wood studs (2x4, 2x6, 2x8) and steel
|
|
654
|
+
* studs (the 3-1/2, 5-1/2 and 8 in webs the framers size steel walls by) at 16 or 24 in on
|
|
655
|
+
* centre, or an 8 in block. The core's depth and spacing are what a framer studs the wall at.
|
|
656
|
+
*/
|
|
657
|
+
export const WALL_TYPE_CORES = [
|
|
658
|
+
...[
|
|
659
|
+
['2x4', STUD_2X4],
|
|
660
|
+
['2x6', STUD_2X6],
|
|
661
|
+
['2x8', STUD_2X8],
|
|
662
|
+
].flatMap(([size, thickness]) => [16, 24].map((oc) => ({
|
|
663
|
+
id: `wood-${size}-${oc}`,
|
|
664
|
+
label: `${size} wood studs @ ${oc}" o.c.`,
|
|
665
|
+
material: 'wood',
|
|
666
|
+
thickness,
|
|
667
|
+
spacing: oc === 16 ? STUD_SPACING_16 : STUD_SPACING_24,
|
|
668
|
+
}))),
|
|
669
|
+
...[
|
|
670
|
+
['3-1/2"', '350', LGS_STUD_350],
|
|
671
|
+
['5-1/2"', '550', LGS_STUD_550],
|
|
672
|
+
['8"', '800', LGS_STUD_800],
|
|
673
|
+
].flatMap(([depth, web, thickness]) => [16, 24].map((oc) => ({
|
|
674
|
+
id: `lgs-${web}-${oc}`,
|
|
675
|
+
label: `${depth} steel studs @ ${oc}" o.c.`,
|
|
676
|
+
material: 'lgs',
|
|
677
|
+
thickness,
|
|
678
|
+
spacing: oc === 16 ? STUD_SPACING_16 : STUD_SPACING_24,
|
|
679
|
+
}))),
|
|
680
|
+
{ id: 'cmu-8', label: 'CMU 8" block', material: 'cmu', thickness: CMU_8_ACTUAL },
|
|
681
|
+
];
|
|
682
|
+
const near = (a, b) => Math.abs(a - b) < 1e-6;
|
|
683
|
+
/**
|
|
684
|
+
* The listed core a stack is built around, or undefined for one off the list. A core with no
|
|
685
|
+
* spacing of its own (every preset's: the framer's default) reads as the 16 in one.
|
|
686
|
+
*/
|
|
687
|
+
export function wallTypeCoreOf(assembly) {
|
|
688
|
+
const core = assembly.layers.find((layer) => layer.core);
|
|
689
|
+
if (!core)
|
|
690
|
+
return undefined;
|
|
691
|
+
const spacing = core.spacing ?? STUD_SPACING_16;
|
|
692
|
+
return WALL_TYPE_CORES.find((option) => option.material === core.material &&
|
|
693
|
+
near(option.thickness, core.thickness) &&
|
|
694
|
+
(option.spacing === undefined || near(option.spacing, spacing)));
|
|
695
|
+
}
|
|
696
|
+
/** The id each layer role takes in a project wall type, as the presets name them. */
|
|
697
|
+
const WALL_TYPE_LAYER_ID = {
|
|
698
|
+
finish: 'exterior',
|
|
699
|
+
air: 'air-space',
|
|
700
|
+
sheathing: 'sheathing',
|
|
701
|
+
structure: 'framing',
|
|
702
|
+
};
|
|
703
|
+
/**
|
|
704
|
+
* A project wall type's stack from its layers listed outside-in, with ids as the presets give
|
|
705
|
+
* them (`exterior`, `sheathing`, `framing`, `interior`, a lining outside the core
|
|
706
|
+
* `interior-back`, a repeat numbered `-2`, `-3`…), so a stack the inspector's cladding /
|
|
707
|
+
* sheathing / framing / interior rows can express stays editable there.
|
|
708
|
+
*/
|
|
709
|
+
export function wallTypeAssembly(id, layers) {
|
|
710
|
+
const coreIndex = layers.findIndex((layer) => layer.core);
|
|
711
|
+
const used = new Set();
|
|
712
|
+
return {
|
|
713
|
+
layers: layers.map((layer, index) => {
|
|
714
|
+
const base = layer.role === 'lining'
|
|
715
|
+
? index < coreIndex
|
|
716
|
+
? 'interior-back'
|
|
717
|
+
: 'interior'
|
|
718
|
+
: (WALL_TYPE_LAYER_ID[layer.role] ?? layer.role);
|
|
719
|
+
let layerId = base;
|
|
720
|
+
for (let n = 2; used.has(layerId); n += 1)
|
|
721
|
+
layerId = `${base}-${n}`;
|
|
722
|
+
used.add(layerId);
|
|
723
|
+
return { id: layerId, ...layer };
|
|
724
|
+
}),
|
|
725
|
+
face: 'exterior',
|
|
726
|
+
presetId: id,
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* The project's own wall types: those saved on its site (`SiteNode.wallTypes`), in their saved
|
|
731
|
+
* order. A scene is loaded without parsing, so an entry that does not parse, or repeats an id, is
|
|
732
|
+
* skipped rather than trusted.
|
|
733
|
+
*/
|
|
734
|
+
export function projectWallTypes(nodes, rootNodeIds) {
|
|
735
|
+
const site = rootNodeIds.map((id) => nodes[id]).find((node) => node?.type === 'site');
|
|
736
|
+
return parseWallTypes(site?.type === 'site' ? site.wallTypes : undefined);
|
|
737
|
+
}
|
|
738
|
+
/** A saved `SiteNode.wallTypes` list as `projectWallTypes` reads it: parsed, first id wins. */
|
|
739
|
+
export function parseWallTypes(saved) {
|
|
740
|
+
const seen = new Set();
|
|
741
|
+
const types = [];
|
|
742
|
+
for (const entry of Array.isArray(saved) ? saved : []) {
|
|
743
|
+
const parsed = WallTypeDefinition.safeParse(entry);
|
|
744
|
+
if (!parsed.success || seen.has(parsed.data.id))
|
|
745
|
+
continue;
|
|
746
|
+
seen.add(parsed.data.id);
|
|
747
|
+
types.push(parsed.data);
|
|
748
|
+
}
|
|
749
|
+
return types;
|
|
750
|
+
}
|
|
552
751
|
/**
|
|
553
752
|
* What the wall's exterior face shows when its assembly declares no cladding and no lining over
|
|
554
753
|
* the core and the core is masonry or concrete: the structure itself, exposed. A foundation wall's
|
|
555
754
|
* block or cast concrete above grade, and from under the ground, is what it is. `null` for a wall
|
|
556
755
|
* with a cladding (`wallAssemblyFinishRef` speaks for it), a lining outside the core (a
|
|
557
756
|
* partition), a framed or foam core (`wood`, `lgs`, `icf`), and a wall whose exterior side is not
|
|
558
|
-
* yet resolved.
|
|
757
|
+
* yet resolved.
|
|
559
758
|
*/
|
|
560
759
|
export function wallAssemblyExposedStructure(wall) {
|
|
561
760
|
if (resolveWallExteriorSide(wall) === null)
|
|
@@ -66,7 +66,8 @@ export declare function wallFinishMaterialIndex(layout: WallFinishLayout, face:
|
|
|
66
66
|
/**
|
|
67
67
|
* The wall's own chain for one face, in the order the renderer walks it:
|
|
68
68
|
* `slots[face]` ref → legacy inline finish (per-face, then wall-wide) → the
|
|
69
|
-
*
|
|
69
|
+
* face's default (`getWallFaceDefault`: the interior paint, or raw drywall on
|
|
70
|
+
* the exterior side). A dangling ref renders the face's default.
|
|
70
71
|
*/
|
|
71
72
|
export type WallFaceChainFinish = {
|
|
72
73
|
kind: 'ref';
|
|
@@ -78,7 +79,42 @@ export type WallFaceChainFinish = {
|
|
|
78
79
|
kind: 'default';
|
|
79
80
|
ref: string;
|
|
80
81
|
};
|
|
81
|
-
export declare function resolveWallFaceChain(wall: Pick<WallNode, 'slots' | 'legacyFaceMaterials' | 'material' | 'materialPreset'
|
|
82
|
+
export declare function resolveWallFaceChain(wall: Pick<WallNode, 'slots' | 'legacyFaceMaterials' | 'material' | 'materialPreset'> & Partial<Pick<WallNode, 'frontSide' | 'backSide'>>, face: WallFace): WallFaceChainFinish;
|
|
83
|
+
export type WallFaceStretchSource = 'room_face_override' | 'room_wall_material' | 'wall_face';
|
|
84
|
+
/** A stretch of one wall face that shows one finish. */
|
|
85
|
+
export type WallFaceStretch = {
|
|
86
|
+
/** Metres from the wall's start, along its reference line. */
|
|
87
|
+
u0: number;
|
|
88
|
+
u1: number;
|
|
89
|
+
source: WallFaceStretchSource;
|
|
90
|
+
/** The finish ref that shows; null when the wall's own finish is an inline spec naming no preset. */
|
|
91
|
+
ref: string | null;
|
|
92
|
+
/** The room that gives the finish (a room source only). */
|
|
93
|
+
roomId?: string;
|
|
94
|
+
roomName?: string;
|
|
95
|
+
/** How the wall's own face reached `ref` (a `wall_face` source only): chosen, legacy or default. */
|
|
96
|
+
chain?: WallFaceChainFinish['kind'];
|
|
97
|
+
};
|
|
98
|
+
/** A paint region on a face: it shows over the stretches it covers (`v` is metres above the face's base). */
|
|
99
|
+
export type WallFacePaintRegion = {
|
|
100
|
+
id: string;
|
|
101
|
+
ref: string;
|
|
102
|
+
u0?: number;
|
|
103
|
+
u1?: number;
|
|
104
|
+
v0?: number;
|
|
105
|
+
v1?: number;
|
|
106
|
+
};
|
|
107
|
+
export type WallFaceFinishes = Record<WallFace, {
|
|
108
|
+
stretches: WallFaceStretch[];
|
|
109
|
+
paintRegions: WallFacePaintRegion[];
|
|
110
|
+
}>;
|
|
111
|
+
/**
|
|
112
|
+
* What each face of a wall shows, for a reader that cannot render it: the resolution order above run
|
|
113
|
+
* along the face, with the room that gives each stretch. The renderer and the paint tool resolve a
|
|
114
|
+
* face through the same layout, so this agrees with both. Paint regions sit over the stretches and
|
|
115
|
+
* are listed apart; what is not modelled here: exterior assembly cladding, a ref that does not resolve.
|
|
116
|
+
*/
|
|
117
|
+
export declare function describeWallFaceFinishes(wall: WallNode, nodes: Readonly<Record<string, AnyNode | undefined>>): WallFaceFinishes;
|
|
82
118
|
export type WallPaintRole = {
|
|
83
119
|
kind: 'slot';
|
|
84
120
|
slotId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wall-finish.d.ts","sourceRoot":"","sources":["../../../src/systems/wall/wall-finish.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wall-finish.d.ts","sourceRoot":"","sources":["../../../src/systems/wall/wall-finish.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { containsPoint } from '../../lib/polygon-boolean.js';
|
|
2
2
|
import { sampleWallPointsForRoomDetection, WALL_JUNCTION_TOLERANCE } from '../../lib/room-graph.js';
|
|
3
|
-
import { getEffectiveWallFaceMaterial,
|
|
3
|
+
import { getEffectiveWallFaceMaterial, getWallFaceDefault, WALL_FACE_REGION_LIMIT, } from '../../schema/nodes/wall.js';
|
|
4
4
|
import { isCurvedWall } from './wall-curve.js';
|
|
5
5
|
const FACE_PROBE = 0.01;
|
|
6
6
|
const SPLIT_EPSILON = 1e-6;
|
|
@@ -232,7 +232,75 @@ export function resolveWallFaceChain(wall, face) {
|
|
|
232
232
|
const spec = getEffectiveWallFaceMaterial(wall, face);
|
|
233
233
|
if (spec.materialPreset || spec.material)
|
|
234
234
|
return { kind: 'legacy', spec };
|
|
235
|
-
return { kind: 'default', ref:
|
|
235
|
+
return { kind: 'default', ref: getWallFaceDefault(wall, face) };
|
|
236
|
+
}
|
|
237
|
+
const toMillimetre = (value) => Math.round(value * 1000) / 1000;
|
|
238
|
+
/**
|
|
239
|
+
* What each face of a wall shows, for a reader that cannot render it: the resolution order above run
|
|
240
|
+
* along the face, with the room that gives each stretch. The renderer and the paint tool resolve a
|
|
241
|
+
* face through the same layout, so this agrees with both. Paint regions sit over the stretches and
|
|
242
|
+
* are listed apart; what is not modelled here: exterior assembly cladding, a ref that does not resolve.
|
|
243
|
+
*/
|
|
244
|
+
export function describeWallFaceFinishes(wall, nodes) {
|
|
245
|
+
const layout = buildWallFinishLayout(wall, getWallLevelZones(wall, nodes));
|
|
246
|
+
const underRegions = { ...layout, regions: { a: [], b: [] } };
|
|
247
|
+
const read = (face) => {
|
|
248
|
+
const cuts = new Set([0, layout.length]);
|
|
249
|
+
for (const span of layout.spans[face])
|
|
250
|
+
for (const u of [span.u0, span.u1])
|
|
251
|
+
if (u > SPLIT_EPSILON && u < layout.length - SPLIT_EPSILON)
|
|
252
|
+
cuts.add(u);
|
|
253
|
+
const stations = [...cuts].sort((x, y) => x - y);
|
|
254
|
+
const own = resolveWallFaceChain(wall, face);
|
|
255
|
+
const ownRef = own.kind === 'legacy' ? (own.spec.materialPreset ?? null) : own.ref;
|
|
256
|
+
const stretches = [];
|
|
257
|
+
const push = (stretch) => {
|
|
258
|
+
const last = stretches.at(-1);
|
|
259
|
+
if (last &&
|
|
260
|
+
last.source === stretch.source &&
|
|
261
|
+
last.ref === stretch.ref &&
|
|
262
|
+
last.roomId === stretch.roomId &&
|
|
263
|
+
last.chain === stretch.chain &&
|
|
264
|
+
stretch.u0 - last.u1 < SPLIT_EPSILON)
|
|
265
|
+
last.u1 = stretch.u1;
|
|
266
|
+
else
|
|
267
|
+
stretches.push(stretch);
|
|
268
|
+
};
|
|
269
|
+
for (let index = 0; index + 1 < stations.length; index += 1) {
|
|
270
|
+
const u0 = toMillimetre(stations[index]);
|
|
271
|
+
const u1 = toMillimetre(stations[index + 1]);
|
|
272
|
+
if (u1 - u0 < SPLIT_EPSILON)
|
|
273
|
+
continue;
|
|
274
|
+
const hit = resolveWallFinish(underRegions, face, (u0 + u1) / 2, 0);
|
|
275
|
+
if (hit.source === 'override' || hit.source === 'zone') {
|
|
276
|
+
const zone = nodes[hit.zoneId];
|
|
277
|
+
const roomName = zone?.type === 'zone' ? zone.name : undefined;
|
|
278
|
+
push({
|
|
279
|
+
u0,
|
|
280
|
+
u1,
|
|
281
|
+
source: hit.source === 'override' ? 'room_face_override' : 'room_wall_material',
|
|
282
|
+
ref: hit.ref,
|
|
283
|
+
roomId: hit.zoneId,
|
|
284
|
+
...(roomName ? { roomName } : {}),
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
else
|
|
288
|
+
push({ u0, u1, source: 'wall_face', ref: ownRef, chain: own.kind });
|
|
289
|
+
}
|
|
290
|
+
// A wall with no length has no stretch to read; its own face is what it would show.
|
|
291
|
+
if (stretches.length === 0)
|
|
292
|
+
stretches.push({ u0: 0, u1: 0, source: 'wall_face', ref: ownRef, chain: own.kind });
|
|
293
|
+
const paintRegions = layout.regions[face].map((region) => ({
|
|
294
|
+
id: region.id,
|
|
295
|
+
ref: region.finish,
|
|
296
|
+
...(region.u0 !== undefined ? { u0: toMillimetre(region.u0) } : {}),
|
|
297
|
+
...(region.u1 !== undefined ? { u1: toMillimetre(region.u1) } : {}),
|
|
298
|
+
...(region.v0 !== undefined ? { v0: toMillimetre(region.v0) } : {}),
|
|
299
|
+
...(region.v1 !== undefined ? { v1: toMillimetre(region.v1) } : {}),
|
|
300
|
+
}));
|
|
301
|
+
return { stretches, paintRegions };
|
|
302
|
+
};
|
|
303
|
+
return { a: read('a'), b: read('b') };
|
|
236
304
|
}
|
|
237
305
|
export function wallRegionRole(regionId) {
|
|
238
306
|
return `region:${regionId}`;
|
|
@@ -56,11 +56,11 @@ export function getWallPlanFootprint(wallNode, miterData) {
|
|
|
56
56
|
};
|
|
57
57
|
const polygon = [pStartRight, pEndRight];
|
|
58
58
|
if (endJunction) {
|
|
59
|
-
polygon.push(endJunction.closing ?? wallEnd);
|
|
59
|
+
polygon.push(...(endJunction.closingPath ?? [endJunction.closing ?? wallEnd]));
|
|
60
60
|
}
|
|
61
61
|
polygon.push(pEndLeft, pStartLeft);
|
|
62
62
|
if (startJunction) {
|
|
63
|
-
polygon.push(startJunction.closing ?? wallStart);
|
|
63
|
+
polygon.push(...(startJunction.closingPath ?? [startJunction.closing ?? wallStart]));
|
|
64
64
|
}
|
|
65
65
|
return polygon;
|
|
66
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wall-merge.d.ts","sourceRoot":"","sources":["../../../src/systems/wall/wall-merge.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EAMd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,cAAc,CAAA;AAGrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAK1D,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAA;AAY5E,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC,EACrC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,OAAO,GAAG,KAAK,GAAG,IAAI,CAIxB;AAMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,QAAQ,EACX,CAAC,EAAE,QAAQ,EACX,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAA;CAAE,GACjE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"wall-merge.d.ts","sourceRoot":"","sources":["../../../src/systems/wall/wall-merge.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EAMd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACd,MAAM,cAAc,CAAA;AAGrB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAK1D,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAA;AAY5E,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC,EACrC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GACtB,OAAO,GAAG,KAAK,GAAG,IAAI,CAIxB;AAMD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,QAAQ,EACX,CAAC,EAAE,QAAQ,EACX,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,MAAM,CAAA;CAAE,GACjE,MAAM,GAAG,IAAI,CAiCf;AA4CD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,cAAc,EAAE,GAAG,IAAI,CAqEzB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,QAAQ,EACnB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,KAAK,CAAC;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC,GAAG,IAAI,CA+C1D;AAED,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,WAE/D;AAED,wBAAgB,4BAA4B,CAC1C,CAAC,EAAE,QAAQ,EACX,CAAC,EAAE,QAAQ,EACX,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,WAgB9B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,QAAQ,EACnB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAC5B;IAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAkBpD;AA8BD,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,QAAQ,EACnB,YAAY,EAAE,SAAS,EACvB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAChC,oBAAoB,EAAE,CAyDxB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,SAAS,SAAS,EAAE,GAC5B;IAAE,OAAO,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;CAAE,CA2G1D"}
|
|
@@ -46,10 +46,12 @@ export function wallStyleMismatch(a, b, options) {
|
|
|
46
46
|
: (a.height == null) !== (b.height == null) ||
|
|
47
47
|
Math.abs((a.height ?? 0) - (b.height ?? 0)) > 1e-6)
|
|
48
48
|
return 'height';
|
|
49
|
-
// Faces are compared as the merged wall will carry them: b read in a's direction.
|
|
49
|
+
// Faces are compared as the merged wall will carry them: b read in a's direction. An unpainted
|
|
50
|
+
// face's default follows its room side, which room detection reclassifies, so it is set aside.
|
|
51
|
+
const painted = (wall) => ({ ...wall, frontSide: undefined, backSide: undefined });
|
|
50
52
|
for (const face of ['a', 'b']) {
|
|
51
|
-
if (JSON.stringify(resolveWallFaceChain(a, face)) !==
|
|
52
|
-
JSON.stringify(resolveWallFaceChain(alignedB, face)))
|
|
53
|
+
if (JSON.stringify(resolveWallFaceChain(painted(a), face)) !==
|
|
54
|
+
JSON.stringify(resolveWallFaceChain(painted(alignedB), face)))
|
|
53
55
|
return `side ${face.toUpperCase()} finish`;
|
|
54
56
|
}
|
|
55
57
|
if (wallTrimSignature(a) !== wallTrimSignature(alignedB))
|
|
@@ -260,13 +262,19 @@ export function resolveMergedWallEndpoints(primary, secondary, sharedPoint) {
|
|
|
260
262
|
* 0 front / π back). A wall read backwards turns that frame by 180° about Y,
|
|
261
263
|
* so the face and the yaw swap and the caller mirrors depth. Hinges, handles
|
|
262
264
|
* and swing hang off the node's own yaw (the plan symbol flips them from it),
|
|
263
|
-
* so they stay as stored.
|
|
265
|
+
* so they stay as stored. Door and window casing is kept per wall face, so it
|
|
266
|
+
* swaps faces too and stays on the same side of the wall.
|
|
264
267
|
*/
|
|
265
268
|
function reversedWallChildPatch(child) {
|
|
266
269
|
const patch = {};
|
|
267
270
|
if ('side' in child && (child.side === 'front' || child.side === 'back')) {
|
|
268
271
|
patch.side = child.side === 'front' ? 'back' : 'front';
|
|
269
272
|
}
|
|
273
|
+
if (child.type === 'door' || child.type === 'window') {
|
|
274
|
+
const [faceA, faceB] = [child.casingFaceA === true, child.casingFaceB === true];
|
|
275
|
+
if (faceA !== faceB)
|
|
276
|
+
Object.assign(patch, { casingFaceA: faceB, casingFaceB: faceA });
|
|
277
|
+
}
|
|
270
278
|
if ('rotation' in child && Array.isArray(child.rotation)) {
|
|
271
279
|
const yaw = child.rotation[1] + Math.PI;
|
|
272
280
|
patch.rotation = [
|
|
@@ -355,13 +363,26 @@ export function planWallMerge(nodes, wallIds) {
|
|
|
355
363
|
}
|
|
356
364
|
if (!(next && joint))
|
|
357
365
|
throw Error('Merge walls that touch end to end.');
|
|
366
|
+
if (!areWallsCollinearAcrossPoint(merged, next, joint))
|
|
367
|
+
throw Error('Merge walls that continue in a straight line.');
|
|
368
|
+
// A wall meeting the joint from the side stays T'd into the merged wall's
|
|
369
|
+
// body there; one running along the line would be buried in it.
|
|
370
|
+
const runX = merged.end[0] - merged.start[0];
|
|
371
|
+
const runZ = merged.end[1] - merged.start[1];
|
|
372
|
+
const alongRun = (wall) => {
|
|
373
|
+
const free = getWallFreeEndpoint(wall, joint);
|
|
374
|
+
const x = free[0] - joint[0];
|
|
375
|
+
const z = free[1] - joint[1];
|
|
376
|
+
const length = Math.hypot(x, z) * Math.hypot(runX, runZ);
|
|
377
|
+
return length < 1e-12 || Math.abs(x * runZ - z * runX) / length < 1e-4;
|
|
378
|
+
};
|
|
358
379
|
const atJoint = Object.values(virtual).filter((node) => node?.type === 'wall' &&
|
|
380
|
+
node.id !== merged.id &&
|
|
381
|
+
node.id !== next.id &&
|
|
359
382
|
(node.parentId ?? null) === levelId &&
|
|
360
383
|
getWallEndpointAtPoint(node, joint) !== null);
|
|
361
|
-
if (atJoint.
|
|
384
|
+
if (atJoint.some(alongRun))
|
|
362
385
|
throw Error('Another wall meets this joint, so merging would disconnect it.');
|
|
363
|
-
if (!areWallsCollinearAcrossPoint(merged, next, joint))
|
|
364
|
-
throw Error('Merge walls that continue in a straight line.');
|
|
365
386
|
const mismatch = wallStyleMismatch(merged, next, {
|
|
366
387
|
sides: false,
|
|
367
388
|
heightOf: (wall) => getWallEffectiveHeightForNodes(wall, virtual),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wall-mitering.d.ts","sourceRoot":"","sources":["../../../src/systems/wall/wall-mitering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAQ5C,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;CACpB;
|
|
1
|
+
{"version":3,"file":"wall-mitering.d.ts","sourceRoot":"","sources":["../../../src/systems/wall/wall-mitering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAQ5C,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;CACpB;AAWD,KAAK,iBAAiB,GAAG,GAAG,CAC1B,MAAM,EACN;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,CAChF,CAAA;AAGD,KAAK,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAmBlD,iBAAS,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,SAAY,GAAG,MAAM,CAG7D;AA8CD,UAAU,QAAQ;IAChB,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,QAAQ,CAAC;QAAC,OAAO,EAAE,OAAO,GAAG,KAAK,GAAG,aAAa,CAAA;KAAE,CAAC,CAAA;IACnF,YAAY,EAAE,OAAO,CAAA;CACtB;AA4fD,MAAM,WAAW,aAAa;IAE5B,YAAY,EAAE,YAAY,CAAA;IAE1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CACjC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW,SAAI,GAAG,aAAa,CAUtF;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,aAAa,EACxB,WAAW,SAAI,GACd,uBAAuB,GAAG,IAAI,CA2BhC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CA8C/F;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA"}
|