@pascal-app/core 1.0.4 → 1.0.6
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 +102 -90
- package/dist/agent-operations/__fixtures__/add-object-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/add-object-cases.js +301 -1
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/add-stair-cases.js +176 -0
- package/dist/agent-operations/__fixtures__/build-room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/build-room-cases.js +410 -40
- package/dist/agent-operations/__fixtures__/cases.d.ts +18 -3
- package/dist/agent-operations/__fixtures__/cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/cases.js +183 -4
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/corner-window-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts +14 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/design-brief-cases.js +709 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts +7 -0
- package/dist/agent-operations/__fixtures__/finish-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/finish-cases.js +758 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/lot-info-cases.js +370 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/merge-windows-cases.js +321 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts +2237 -0
- package/dist/agent-operations/__fixtures__/native-materials.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/native-materials.js +82 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/node-read-cases.js +639 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts +24 -0
- package/dist/agent-operations/__fixtures__/notation-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/notation-cases.js +356 -0
- package/dist/agent-operations/__fixtures__/place-items-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/place-items-cases.js +80 -2
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts +19726 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-bearing-cases.js +106 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts +9 -0
- package/dist/agent-operations/__fixtures__/roof-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/roof-cases.js +382 -0
- package/dist/agent-operations/__fixtures__/room-cases.d.ts +2 -1
- package/dist/agent-operations/__fixtures__/room-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/room-cases.js +136 -1
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts +4 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/scene-check-cases.js +417 -0
- package/dist/agent-operations/__fixtures__/search-assets-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/search-assets-cases.js +15 -3
- package/dist/agent-operations/__fixtures__/site-cases.d.ts +290 -0
- package/dist/agent-operations/__fixtures__/site-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/site-cases.js +780 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts +1 -0
- package/dist/agent-operations/__fixtures__/structure-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/structure-cases.js +630 -3
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts +311 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.d.ts.map +1 -1
- package/dist/agent-operations/__fixtures__/verify-scene-cases.js +59 -11
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts +3 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-assets-cases.js +155 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts +50 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.d.ts.map +1 -0
- package/dist/agent-operations/__fixtures__/view-scene-cases.js +425 -0
- package/dist/agent-operations/achieved.d.ts +5 -0
- package/dist/agent-operations/achieved.d.ts.map +1 -1
- package/dist/agent-operations/achieved.js +21 -1
- package/dist/agent-operations/add-column.d.ts.map +1 -1
- package/dist/agent-operations/add-column.js +3 -1
- package/dist/agent-operations/add-fence.d.ts +18 -0
- package/dist/agent-operations/add-fence.d.ts.map +1 -0
- package/dist/agent-operations/add-fence.js +48 -0
- package/dist/agent-operations/add-level.d.ts +4 -1
- package/dist/agent-operations/add-level.d.ts.map +1 -1
- package/dist/agent-operations/add-level.js +48 -12
- package/dist/agent-operations/add-object.d.ts +38 -9
- package/dist/agent-operations/add-object.d.ts.map +1 -1
- package/dist/agent-operations/add-object.js +172 -11
- package/dist/agent-operations/add-wall.d.ts +1 -3
- package/dist/agent-operations/add-wall.d.ts.map +1 -1
- package/dist/agent-operations/add-wall.js +35 -9
- package/dist/agent-operations/apply-changes.d.ts +7 -1
- package/dist/agent-operations/apply-changes.d.ts.map +1 -1
- package/dist/agent-operations/apply-changes.js +54 -22
- package/dist/agent-operations/apply-outcome.d.ts +6 -0
- package/dist/agent-operations/apply-outcome.d.ts.map +1 -1
- package/dist/agent-operations/apply-outcome.js +23 -8
- package/dist/agent-operations/asset-views.d.ts +75 -0
- package/dist/agent-operations/asset-views.d.ts.map +1 -0
- package/dist/agent-operations/asset-views.js +234 -0
- package/dist/agent-operations/author-scene.d.ts +157 -0
- package/dist/agent-operations/author-scene.d.ts.map +1 -0
- package/dist/agent-operations/author-scene.js +1076 -0
- package/dist/agent-operations/authored-scene-merge.d.ts +4 -0
- package/dist/agent-operations/authored-scene-merge.d.ts.map +1 -0
- package/dist/agent-operations/authored-scene-merge.js +96 -0
- package/dist/agent-operations/batch.d.ts +22 -0
- package/dist/agent-operations/batch.d.ts.map +1 -0
- package/dist/agent-operations/batch.js +104 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts +31 -0
- package/dist/agent-operations/ceiling-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/ceiling-object-observations.js +111 -0
- package/dist/agent-operations/corner-window.d.ts +19 -0
- package/dist/agent-operations/corner-window.d.ts.map +1 -0
- package/dist/agent-operations/corner-window.js +84 -0
- package/dist/agent-operations/create-roof.d.ts +32 -0
- package/dist/agent-operations/create-roof.d.ts.map +1 -0
- package/dist/agent-operations/create-roof.js +304 -0
- package/dist/agent-operations/create-room.d.ts +2 -0
- package/dist/agent-operations/create-room.d.ts.map +1 -1
- package/dist/agent-operations/create-room.js +73 -5
- package/dist/agent-operations/create-stair.d.ts +6 -28
- package/dist/agent-operations/create-stair.d.ts.map +1 -1
- package/dist/agent-operations/create-stair.js +187 -104
- package/dist/agent-operations/design-brief.d.ts +38 -0
- package/dist/agent-operations/design-brief.d.ts.map +1 -0
- package/dist/agent-operations/design-brief.js +300 -0
- package/dist/agent-operations/designs.d.ts +24 -0
- package/dist/agent-operations/designs.d.ts.map +1 -0
- package/dist/agent-operations/designs.js +48 -0
- package/dist/agent-operations/door-clearance.d.ts +16 -1
- package/dist/agent-operations/door-clearance.d.ts.map +1 -1
- package/dist/agent-operations/door-clearance.js +61 -4
- package/dist/agent-operations/duplicate-level.d.ts.map +1 -1
- package/dist/agent-operations/duplicate-level.js +2 -1
- package/dist/agent-operations/find-by-type.d.ts +14 -7
- package/dist/agent-operations/find-by-type.d.ts.map +1 -1
- package/dist/agent-operations/find-by-type.js +266 -43
- package/dist/agent-operations/furnish-room.d.ts +22 -1
- package/dist/agent-operations/furnish-room.d.ts.map +1 -1
- package/dist/agent-operations/furnish-room.js +66 -19
- package/dist/agent-operations/furniture-kind.d.ts +22 -0
- package/dist/agent-operations/furniture-kind.d.ts.map +1 -0
- package/dist/agent-operations/furniture-kind.js +69 -0
- package/dist/agent-operations/get-node.d.ts +5 -2
- package/dist/agent-operations/get-node.d.ts.map +1 -1
- package/dist/agent-operations/get-node.js +82 -10
- package/dist/agent-operations/hosted-services.d.ts +2 -1
- package/dist/agent-operations/hosted-services.d.ts.map +1 -1
- package/dist/agent-operations/index.d.ts +281 -69
- package/dist/agent-operations/index.d.ts.map +1 -1
- package/dist/agent-operations/index.js +66 -5
- package/dist/agent-operations/item-space.d.ts +22 -0
- package/dist/agent-operations/item-space.d.ts.map +1 -0
- package/dist/agent-operations/item-space.js +69 -0
- package/dist/agent-operations/layout-clearance.d.ts +52 -3
- package/dist/agent-operations/layout-clearance.d.ts.map +1 -1
- package/dist/agent-operations/layout-clearance.js +340 -30
- package/dist/agent-operations/level-height-fill.d.ts +12 -0
- package/dist/agent-operations/level-height-fill.d.ts.map +1 -0
- package/dist/agent-operations/level-height-fill.js +59 -0
- package/dist/agent-operations/level-reads.d.ts +5 -1
- package/dist/agent-operations/level-reads.d.ts.map +1 -1
- package/dist/agent-operations/level-reads.js +10 -3
- package/dist/agent-operations/list-levels.d.ts.map +1 -1
- package/dist/agent-operations/list-levels.js +23 -0
- package/dist/agent-operations/material-preset.d.ts.map +1 -1
- package/dist/agent-operations/material-preset.js +3 -9
- package/dist/agent-operations/material-refs.d.ts +7 -1
- package/dist/agent-operations/material-refs.d.ts.map +1 -1
- package/dist/agent-operations/material-refs.js +10 -5
- package/dist/agent-operations/merge-windows.d.ts +6 -0
- package/dist/agent-operations/merge-windows.d.ts.map +1 -0
- package/dist/agent-operations/merge-windows.js +27 -0
- package/dist/agent-operations/move-roofs.d.ts +9 -0
- package/dist/agent-operations/move-roofs.d.ts.map +1 -0
- package/dist/agent-operations/move-roofs.js +29 -0
- package/dist/agent-operations/paint.d.ts +2 -1
- package/dist/agent-operations/paint.d.ts.map +1 -1
- package/dist/agent-operations/paint.js +163 -53
- package/dist/agent-operations/photo-elevation.d.ts +155 -0
- package/dist/agent-operations/photo-elevation.d.ts.map +1 -0
- package/dist/agent-operations/photo-elevation.js +761 -0
- package/dist/agent-operations/place-in-room.d.ts +29 -0
- package/dist/agent-operations/place-in-room.d.ts.map +1 -0
- package/dist/agent-operations/place-in-room.js +403 -0
- package/dist/agent-operations/place-items.d.ts.map +1 -1
- package/dist/agent-operations/place-items.js +15 -2
- package/dist/agent-operations/plan-geometry.d.ts.map +1 -1
- package/dist/agent-operations/plan-geometry.js +3 -0
- package/dist/agent-operations/point-context.d.ts +139 -0
- package/dist/agent-operations/point-context.d.ts.map +1 -0
- package/dist/agent-operations/point-context.js +1 -0
- package/dist/agent-operations/project-files.d.ts +9 -0
- package/dist/agent-operations/project-files.d.ts.map +1 -0
- package/dist/agent-operations/project-files.js +25 -0
- package/dist/agent-operations/record-made.d.ts +18 -0
- package/dist/agent-operations/record-made.d.ts.map +1 -0
- package/dist/agent-operations/record-made.js +28 -0
- package/dist/agent-operations/roof-footprint.d.ts +24 -0
- package/dist/agent-operations/roof-footprint.d.ts.map +1 -0
- package/dist/agent-operations/roof-footprint.js +242 -0
- package/dist/agent-operations/roof-writes.d.ts +20 -0
- package/dist/agent-operations/roof-writes.d.ts.map +1 -0
- package/dist/agent-operations/roof-writes.js +165 -0
- package/dist/agent-operations/room-findings.d.ts +54 -0
- package/dist/agent-operations/room-findings.d.ts.map +1 -0
- package/dist/agent-operations/room-findings.js +143 -0
- package/dist/agent-operations/room-floor-script.d.ts +23 -0
- package/dist/agent-operations/room-floor-script.d.ts.map +1 -0
- package/dist/agent-operations/room-floor-script.js +54 -0
- package/dist/agent-operations/room-structure.d.ts +2 -2
- package/dist/agent-operations/room-structure.d.ts.map +1 -1
- package/dist/agent-operations/scene-checkpoint.d.ts +94 -0
- package/dist/agent-operations/scene-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/scene-checkpoint.js +176 -0
- package/dist/agent-operations/scene-queries.d.ts +3750 -3319
- package/dist/agent-operations/scene-queries.d.ts.map +1 -1
- package/dist/agent-operations/scene-queries.js +13 -23
- package/dist/agent-operations/scene-review.d.ts +52 -0
- package/dist/agent-operations/scene-review.d.ts.map +1 -0
- package/dist/agent-operations/scene-review.js +106 -0
- package/dist/agent-operations/scene-view.d.ts +82 -15
- package/dist/agent-operations/scene-view.d.ts.map +1 -1
- package/dist/agent-operations/scene-view.js +408 -51
- package/dist/agent-operations/search-assets.d.ts +2 -2
- package/dist/agent-operations/search-assets.d.ts.map +1 -1
- package/dist/agent-operations/search-assets.js +4 -3
- package/dist/agent-operations/search-materials.d.ts +9 -3
- package/dist/agent-operations/search-materials.d.ts.map +1 -1
- package/dist/agent-operations/search-materials.js +83 -29
- package/dist/agent-operations/set-checkpoint.d.ts +9 -0
- package/dist/agent-operations/set-checkpoint.d.ts.map +1 -0
- package/dist/agent-operations/set-checkpoint.js +31 -0
- package/dist/agent-operations/set-ground-level.d.ts +12 -0
- package/dist/agent-operations/set-ground-level.d.ts.map +1 -0
- package/dist/agent-operations/set-ground-level.js +61 -0
- package/dist/agent-operations/site.d.ts +21 -0
- package/dist/agent-operations/site.d.ts.map +1 -0
- package/dist/agent-operations/site.js +123 -0
- package/dist/agent-operations/types.d.ts +66 -7
- package/dist/agent-operations/types.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.d.ts +39 -5
- package/dist/agent-operations/verify-scene.d.ts.map +1 -1
- package/dist/agent-operations/verify-scene.js +223 -44
- package/dist/agent-operations/wall-face-script.d.ts +28 -0
- package/dist/agent-operations/wall-face-script.d.ts.map +1 -0
- package/dist/agent-operations/wall-face-script.js +62 -0
- package/dist/agent-operations/wall-object-observations.d.ts +41 -0
- package/dist/agent-operations/wall-object-observations.d.ts.map +1 -0
- package/dist/agent-operations/wall-object-observations.js +249 -0
- package/dist/agent-operations/wall-opening.d.ts +23 -23
- package/dist/agent-operations/wall-opening.d.ts.map +1 -1
- package/dist/agent-operations/wall-skirting.d.ts +24 -0
- package/dist/agent-operations/wall-skirting.d.ts.map +1 -0
- package/dist/agent-operations/wall-skirting.js +85 -0
- package/dist/agent-tools/add-object.d.ts +11 -7
- package/dist/agent-tools/add-object.d.ts.map +1 -1
- package/dist/agent-tools/add-object.js +17 -11
- package/dist/agent-tools/assets.d.ts +8 -0
- package/dist/agent-tools/assets.d.ts.map +1 -1
- package/dist/agent-tools/assets.js +13 -1
- package/dist/agent-tools/author-scene.d.ts +651 -0
- package/dist/agent-tools/author-scene.d.ts.map +1 -0
- package/dist/agent-tools/author-scene.js +252 -0
- package/dist/agent-tools/batch.d.ts +25 -0
- package/dist/agent-tools/batch.d.ts.map +1 -0
- package/dist/agent-tools/batch.js +61 -0
- package/dist/agent-tools/checkpoints.d.ts +13 -0
- package/dist/agent-tools/checkpoints.d.ts.map +1 -0
- package/dist/agent-tools/checkpoints.js +16 -0
- package/dist/agent-tools/clear-scene.d.ts.map +1 -1
- package/dist/agent-tools/collections.d.ts +6 -6
- package/dist/agent-tools/collections.d.ts.map +1 -1
- package/dist/agent-tools/columns.d.ts +18 -18
- package/dist/agent-tools/columns.js +2 -2
- package/dist/agent-tools/corner-window.d.ts +46 -0
- package/dist/agent-tools/corner-window.d.ts.map +1 -0
- package/dist/agent-tools/corner-window.js +47 -0
- package/dist/agent-tools/create-room.d.ts +26 -25
- package/dist/agent-tools/create-room.d.ts.map +1 -1
- package/dist/agent-tools/create-room.js +11 -4
- package/dist/agent-tools/design-brief.d.ts +408 -0
- package/dist/agent-tools/design-brief.d.ts.map +1 -0
- package/dist/agent-tools/design-brief.js +149 -0
- package/dist/agent-tools/designs.d.ts +34 -0
- package/dist/agent-tools/designs.d.ts.map +1 -0
- package/dist/agent-tools/designs.js +50 -0
- package/dist/agent-tools/fences.d.ts +28 -0
- package/dist/agent-tools/fences.d.ts.map +1 -0
- package/dist/agent-tools/fences.js +31 -0
- package/dist/agent-tools/find-by-type.d.ts +8 -1
- package/dist/agent-tools/find-by-type.d.ts.map +1 -1
- package/dist/agent-tools/find-by-type.js +23 -2
- package/dist/agent-tools/furnish-room.d.ts +10 -8
- package/dist/agent-tools/furnish-room.d.ts.map +1 -1
- package/dist/agent-tools/furnish-room.js +3 -1
- package/dist/agent-tools/hosted-services.d.ts +177 -141
- package/dist/agent-tools/hosted-services.d.ts.map +1 -1
- package/dist/agent-tools/hosted-services.js +47 -14
- package/dist/agent-tools/index.d.ts +894 -215
- package/dist/agent-tools/index.d.ts.map +1 -1
- package/dist/agent-tools/index.js +47 -3
- package/dist/agent-tools/levels.d.ts +11 -3
- package/dist/agent-tools/levels.d.ts.map +1 -1
- package/dist/agent-tools/levels.js +16 -5
- package/dist/agent-tools/measurement.d.ts +38 -20
- package/dist/agent-tools/measurement.d.ts.map +1 -1
- package/dist/agent-tools/measurement.js +117 -67
- package/dist/agent-tools/merge-windows.d.ts +10 -0
- package/dist/agent-tools/merge-windows.d.ts.map +1 -0
- package/dist/agent-tools/merge-windows.js +12 -0
- package/dist/agent-tools/nodes.d.ts.map +1 -1
- package/dist/agent-tools/nodes.js +1 -1
- package/dist/agent-tools/notation-inventory.d.ts +16 -0
- package/dist/agent-tools/notation-inventory.d.ts.map +1 -0
- package/dist/agent-tools/notation-inventory.js +105 -0
- package/dist/agent-tools/paint.d.ts +5 -5
- package/dist/agent-tools/paint.d.ts.map +1 -1
- package/dist/agent-tools/paint.js +1 -1
- package/dist/agent-tools/photo-elevation.d.ts +32 -0
- package/dist/agent-tools/photo-elevation.d.ts.map +1 -0
- package/dist/agent-tools/photo-elevation.js +73 -0
- package/dist/agent-tools/place-in-room.d.ts +35 -0
- package/dist/agent-tools/place-in-room.d.ts.map +1 -0
- package/dist/agent-tools/place-in-room.js +61 -0
- package/dist/agent-tools/place-items.d.ts +1 -1
- package/dist/agent-tools/place-items.js +2 -2
- package/dist/agent-tools/project-files.d.ts +189 -0
- package/dist/agent-tools/project-files.d.ts.map +1 -0
- package/dist/agent-tools/project-files.js +99 -0
- package/dist/agent-tools/refusal.d.ts.map +1 -1
- package/dist/agent-tools/retired.d.ts +21 -0
- package/dist/agent-tools/retired.d.ts.map +1 -0
- package/dist/agent-tools/retired.js +29 -0
- package/dist/agent-tools/roofs.d.ts +100 -0
- package/dist/agent-tools/roofs.d.ts.map +1 -0
- package/dist/agent-tools/roofs.js +96 -0
- package/dist/agent-tools/room-structure.d.ts +46 -38
- package/dist/agent-tools/room-structure.d.ts.map +1 -1
- package/dist/agent-tools/room-structure.js +30 -27
- package/dist/agent-tools/search-materials.d.ts +22 -3
- package/dist/agent-tools/search-materials.d.ts.map +1 -1
- package/dist/agent-tools/search-materials.js +13 -14
- package/dist/agent-tools/site.d.ts +27 -0
- package/dist/agent-tools/site.d.ts.map +1 -0
- package/dist/agent-tools/site.js +40 -0
- package/dist/agent-tools/sources.d.ts +12 -0
- package/dist/agent-tools/sources.d.ts.map +1 -0
- package/dist/agent-tools/sources.js +11 -0
- package/dist/agent-tools/stairs.d.ts +48 -28
- package/dist/agent-tools/stairs.d.ts.map +1 -1
- package/dist/agent-tools/stairs.js +65 -22
- package/dist/agent-tools/verify-scene.d.ts.map +1 -1
- package/dist/agent-tools/verify-scene.js +1 -1
- package/dist/agent-tools/view-scene.d.ts +50 -12
- package/dist/agent-tools/view-scene.d.ts.map +1 -1
- package/dist/agent-tools/view-scene.js +74 -31
- package/dist/agent-tools/wall-openings.d.ts +77 -73
- package/dist/agent-tools/wall-openings.d.ts.map +1 -1
- package/dist/agent-tools/wall-openings.js +9 -5
- package/dist/agent-tools/walls.d.ts +4 -4
- package/dist/agent-tools/walls.d.ts.map +1 -1
- package/dist/agent-tools/walls.js +7 -2
- package/dist/building/__fixtures__/wall-opening-cases.d.ts +454 -250
- package/dist/building/__fixtures__/wall-opening-cases.d.ts.map +1 -1
- package/dist/building/__fixtures__/wall-opening-cases.js +62 -2
- package/dist/building/corner-window.d.ts +56 -0
- package/dist/building/corner-window.d.ts.map +1 -0
- package/dist/building/corner-window.js +179 -0
- package/dist/building/ground-level.d.ts +26 -0
- package/dist/building/ground-level.d.ts.map +1 -0
- package/dist/building/ground-level.js +58 -0
- package/dist/building/index.d.ts +5 -0
- package/dist/building/index.d.ts.map +1 -1
- package/dist/building/index.js +5 -0
- package/dist/building/level-duplication.d.ts +7472 -6613
- package/dist/building/level-duplication.d.ts.map +1 -1
- package/dist/building/level-duplication.js +18 -4
- package/dist/building/level-insertion.d.ts +55 -0
- package/dist/building/level-insertion.d.ts.map +1 -0
- package/dist/building/level-insertion.js +35 -0
- package/dist/building/merge-windows.d.ts +58 -0
- package/dist/building/merge-windows.d.ts.map +1 -0
- package/dist/building/merge-windows.js +189 -0
- package/dist/building/opening-style-presets.d.ts +2 -2
- package/dist/building/opening-style-presets.d.ts.map +1 -1
- package/dist/building/photo-elevation.d.ts +125 -0
- package/dist/building/photo-elevation.d.ts.map +1 -0
- package/dist/building/photo-elevation.js +404 -0
- package/dist/building/wall-gaps.d.ts +13 -0
- package/dist/building/wall-gaps.d.ts.map +1 -0
- package/dist/building/wall-gaps.js +158 -0
- package/dist/building/wall-openings.d.ts +154 -119
- package/dist/building/wall-openings.d.ts.map +1 -1
- package/dist/building/wall-openings.js +37 -9
- package/dist/capture/schema.d.ts +22 -22
- package/dist/capture/source.d.ts.map +1 -1
- package/dist/capture/source.js +1 -1
- package/dist/commands/structure/create-zone.d.ts +12 -1
- package/dist/commands/structure/create-zone.d.ts.map +1 -1
- package/dist/commands/structure/create-zone.js +49 -0
- package/dist/commands/structure/divide-zone.d.ts +3 -3
- package/dist/commands/structure/index.d.ts +1 -1
- package/dist/commands/structure/index.d.ts.map +1 -1
- package/dist/commands/structure/index.js +1 -1
- package/dist/commands/structure/set-floor-foundation.d.ts +6 -6
- package/dist/commands/structure/set-zone-intent.d.ts +4 -0
- package/dist/commands/structure/set-zone-intent.d.ts.map +1 -1
- package/dist/commands/structure/set-zone-intent.js +19 -0
- package/dist/commands/structure/shared.d.ts +3642 -3213
- package/dist/commands/structure/shared.d.ts.map +1 -1
- package/dist/commands/structure/zone-wall-merge.d.ts +4149 -3334
- package/dist/commands/structure/zone-wall-merge.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.d.ts.map +1 -1
- package/dist/contracts/reference-inventory.js +106 -26
- package/dist/events/bus.d.ts +22 -3
- package/dist/events/bus.d.ts.map +1 -1
- package/dist/events/capture-sessions.d.ts +5 -0
- package/dist/events/capture-sessions.d.ts.map +1 -0
- package/dist/events/capture-sessions.js +31 -0
- package/dist/hooks/scene-registry/scene-registry.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts +1 -2
- package/dist/hooks/spatial-grid/spatial-grid-manager.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid-manager.js +4 -6
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts +3608 -3179
- package/dist/hooks/spatial-grid/spatial-grid-sync.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/spatial-grid.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.d.ts.map +1 -1
- package/dist/hooks/spatial-grid/support-host-patch.js +11 -2
- package/dist/hooks/spatial-grid/use-spatial-query.d.ts +3 -3
- package/dist/hooks/spatial-grid/wall-spatial-grid.d.ts.map +1 -1
- package/dist/index.d.ts +37 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -9
- package/dist/lib/__fixtures__/mezzanine.d.ts +11800 -10132
- package/dist/lib/__fixtures__/mezzanine.d.ts.map +1 -1
- package/dist/lib/absorb-wall-separators.d.ts +3642 -3213
- package/dist/lib/absorb-wall-separators.d.ts.map +1 -1
- package/dist/lib/angle-accumulator.d.ts.map +1 -1
- package/dist/lib/artifact-store.d.ts.map +1 -1
- package/dist/lib/below-grade-footprints.d.ts +65 -0
- package/dist/lib/below-grade-footprints.d.ts.map +1 -0
- package/dist/lib/below-grade-footprints.js +181 -0
- package/dist/lib/building-footprint.d.ts +33 -0
- package/dist/lib/building-footprint.d.ts.map +1 -0
- package/dist/lib/building-footprint.js +89 -0
- package/dist/lib/corner-pair.d.ts +1129 -0
- package/dist/lib/corner-pair.d.ts.map +1 -0
- package/dist/lib/corner-pair.js +130 -0
- package/dist/lib/corner-snap.d.ts +54 -0
- package/dist/lib/corner-snap.d.ts.map +1 -0
- package/dist/lib/corner-snap.js +125 -0
- package/dist/lib/critically-damped.d.ts +11 -0
- package/dist/lib/critically-damped.d.ts.map +1 -0
- package/dist/lib/critically-damped.js +14 -0
- package/dist/lib/deepest-drawn.d.ts +18 -0
- package/dist/lib/deepest-drawn.d.ts.map +1 -0
- package/dist/lib/deepest-drawn.js +65 -0
- package/dist/lib/door-operation.d.ts +1 -1
- package/dist/lib/exterior-wall-loops.d.ts +17 -0
- package/dist/lib/exterior-wall-loops.d.ts.map +1 -0
- package/dist/lib/exterior-wall-loops.js +334 -0
- package/dist/lib/finish-script.d.ts +61 -0
- package/dist/lib/finish-script.d.ts.map +1 -0
- package/dist/lib/finish-script.js +86 -0
- package/dist/lib/floor-intent-changes.d.ts.map +1 -1
- package/dist/lib/floor-intent-changes.js +4 -4
- package/dist/lib/floor-plate-paint.d.ts +3 -1
- package/dist/lib/floor-plate-paint.d.ts.map +1 -1
- package/dist/lib/floor-plate-paint.js +24 -4
- package/dist/lib/floor-plates.d.ts +50 -50
- package/dist/lib/floor-script.d.ts +24 -0
- package/dist/lib/floor-script.d.ts.map +1 -0
- package/dist/lib/floor-script.js +51 -0
- package/dist/lib/foundation-construction.d.ts +73 -0
- package/dist/lib/foundation-construction.d.ts.map +1 -0
- package/dist/lib/foundation-construction.js +242 -0
- package/dist/lib/foundation-standard.d.ts +30 -0
- package/dist/lib/foundation-standard.d.ts.map +1 -0
- package/dist/lib/foundation-standard.js +30 -0
- package/dist/lib/foundation-wall.d.ts +36 -0
- package/dist/lib/foundation-wall.d.ts.map +1 -0
- package/dist/lib/foundation-wall.js +66 -0
- package/dist/lib/generic-foundation.d.ts +40 -0
- package/dist/lib/generic-foundation.d.ts.map +1 -0
- package/dist/lib/generic-foundation.js +200 -0
- package/dist/lib/geometry-script-node.d.ts +32 -3
- package/dist/lib/geometry-script-node.d.ts.map +1 -1
- package/dist/lib/geometry-script-node.js +26 -0
- package/dist/lib/grade-standing.d.ts +38 -0
- package/dist/lib/grade-standing.d.ts.map +1 -0
- package/dist/lib/grade-standing.js +137 -0
- package/dist/lib/ground-level.d.ts +20 -0
- package/dist/lib/ground-level.d.ts.map +1 -0
- package/dist/lib/ground-level.js +49 -0
- package/dist/lib/ground-over-part.d.ts +13 -0
- package/dist/lib/ground-over-part.d.ts.map +1 -0
- package/dist/lib/ground-over-part.js +94 -0
- package/dist/lib/ground-seat.d.ts +47 -0
- package/dist/lib/ground-seat.d.ts.map +1 -0
- package/dist/lib/ground-seat.js +61 -0
- package/dist/lib/ground-window.d.ts +39 -0
- package/dist/lib/ground-window.d.ts.map +1 -0
- package/dist/lib/ground-window.js +147 -0
- package/dist/lib/opening-floor-datum.d.ts.map +1 -1
- package/dist/lib/opening-floor-datum.js +2 -3
- package/dist/lib/own-floor-intent.d.ts.map +1 -1
- package/dist/lib/own-floor-intent.js +4 -4
- package/dist/lib/plate-surface.d.ts.map +1 -1
- package/dist/lib/plate-surface.js +3 -1
- package/dist/lib/point-ask.d.ts +9 -0
- package/dist/lib/point-ask.d.ts.map +1 -0
- package/dist/lib/point-ask.js +36 -0
- package/dist/lib/room-drawn-floor.d.ts +1 -1
- package/dist/lib/room-drawn-floor.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.d.ts.map +1 -1
- package/dist/lib/room-floor-feasibility.js +3 -3
- package/dist/lib/room-graph.d.ts.map +1 -1
- package/dist/lib/room-graph.js +2 -0
- package/dist/lib/room-name.d.ts +2 -0
- package/dist/lib/room-name.d.ts.map +1 -1
- package/dist/lib/room-name.js +2 -0
- package/dist/lib/room-topology-index.d.ts.map +1 -1
- package/dist/lib/room-topology-index.js +1 -1
- package/dist/lib/room-zone-adoption.d.ts.map +1 -1
- package/dist/lib/script-inputs-key.d.ts +3 -0
- package/dist/lib/script-inputs-key.d.ts.map +1 -0
- package/dist/lib/script-inputs-key.js +13 -0
- package/dist/lib/setback-envelope.d.ts +95 -5
- package/dist/lib/setback-envelope.d.ts.map +1 -1
- package/dist/lib/setback-envelope.js +351 -35
- package/dist/lib/site-flatwork.d.ts +11 -0
- package/dist/lib/site-flatwork.d.ts.map +1 -0
- package/dist/lib/site-flatwork.js +11 -0
- package/dist/lib/site-ground-height.d.ts +13 -0
- package/dist/lib/site-ground-height.d.ts.map +1 -0
- package/dist/lib/site-ground-height.js +16 -0
- package/dist/lib/site-placement.d.ts +362 -0
- package/dist/lib/site-placement.d.ts.map +1 -0
- package/dist/lib/site-placement.js +942 -0
- package/dist/lib/snap-ease.d.ts +20 -0
- package/dist/lib/snap-ease.d.ts.map +1 -0
- package/dist/lib/snap-ease.js +50 -0
- package/dist/lib/structure-kernel.d.ts +1 -1
- package/dist/lib/structure-kernel.d.ts.map +1 -1
- package/dist/lib/structure-kernel.js +2 -0
- package/dist/lib/surface-support-references.d.ts +4 -0
- package/dist/lib/surface-support-references.d.ts.map +1 -0
- package/dist/lib/surface-support-references.js +19 -0
- package/dist/lib/terrain-support-query.d.ts +10 -0
- package/dist/lib/terrain-support-query.d.ts.map +1 -1
- package/dist/lib/terrain-support-query.js +1 -1
- package/dist/lib/wall-face-script.d.ts +66 -0
- package/dist/lib/wall-face-script.d.ts.map +1 -0
- package/dist/lib/wall-face-script.js +235 -0
- package/dist/lib/zone-colors.d.ts +1 -1
- package/dist/lib/zone-colors.d.ts.map +1 -1
- package/dist/lib/zone-quantities.d.ts.map +1 -1
- package/dist/lib/zone-quantities.js +4 -5
- package/dist/material-kinds.d.ts +9 -0
- package/dist/material-kinds.d.ts.map +1 -0
- package/dist/material-kinds.js +30 -0
- package/dist/material-library.d.ts +4 -4
- package/dist/material-library.d.ts.map +1 -1
- package/dist/material-library.js +72 -26
- package/dist/node-slots/index.d.ts +1 -0
- package/dist/node-slots/index.d.ts.map +1 -1
- package/dist/node-slots/index.js +7 -1
- package/dist/node-slots/roof.d.ts +5 -0
- package/dist/node-slots/roof.d.ts.map +1 -0
- package/dist/node-slots/roof.js +12 -0
- package/dist/node-slots/stair.d.ts +2 -0
- package/dist/node-slots/stair.d.ts.map +1 -1
- package/dist/node-slots/stair.js +6 -2
- package/dist/procedural-items/design-placement.d.ts.map +1 -1
- package/dist/procedural-items/design.d.ts +19 -19
- package/dist/procedural-items/fixtures.d.ts +297 -297
- package/dist/procedural-items/fixtures.d.ts.map +1 -1
- package/dist/procedural-items/integration.d.ts +106 -106
- package/dist/procedural-items/joints.d.ts +4 -4
- package/dist/procedural-items/library-colors.d.ts +22 -22
- package/dist/procedural-items/library-colors.d.ts.map +1 -1
- package/dist/procedural-items/motion-controller.d.ts.map +1 -1
- package/dist/procedural-items/node.d.ts +291 -291
- package/dist/procedural-items/query.d.ts +1 -1
- package/dist/procedural-items/query.d.ts.map +1 -1
- package/dist/procedural-items/recipe.d.ts +11 -11
- package/dist/procedural-items/recipe.d.ts.map +1 -1
- package/dist/procedural-items/section.d.ts.map +1 -1
- package/dist/registry/index.d.ts +1 -1
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/scene-api.d.ts +1 -0
- package/dist/registry/scene-api.d.ts.map +1 -1
- package/dist/registry/scene-api.js +3 -0
- package/dist/registry/subtree.d.ts.map +1 -1
- package/dist/registry/subtree.js +2 -0
- package/dist/registry/types.d.ts +120 -1
- package/dist/registry/types.d.ts.map +1 -1
- package/dist/schema/assembly.d.ts +41 -41
- package/dist/schema/asset-url.d.ts +1 -1
- package/dist/schema/asset-url.d.ts.map +1 -1
- package/dist/schema/base.d.ts +9 -9
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/camera.d.ts +1 -1
- package/dist/schema/collection-templates.d.ts +20 -20
- package/dist/schema/collection-templates.d.ts.map +1 -1
- package/dist/schema/geometry-metadata.d.ts +7 -7
- package/dist/schema/geometry-metadata.d.ts.map +1 -1
- package/dist/schema/geometry-source.d.ts +26 -16
- package/dist/schema/geometry-source.d.ts.map +1 -1
- package/dist/schema/geometry-source.js +14 -0
- package/dist/schema/index.d.ts +10 -7
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +10 -7
- package/dist/schema/material.d.ts +33 -33
- package/dist/schema/nodes/barrel-roof.d.ts +3 -0
- package/dist/schema/nodes/barrel-roof.d.ts.map +1 -0
- package/dist/schema/nodes/barrel-roof.js +11 -0
- package/dist/schema/nodes/block.d.ts +8 -8
- package/dist/schema/nodes/box-vent.d.ts +13 -13
- package/dist/schema/nodes/building.d.ts +9 -8
- package/dist/schema/nodes/building.d.ts.map +1 -1
- package/dist/schema/nodes/building.js +2 -0
- package/dist/schema/nodes/cabinet.d.ts +130 -129
- package/dist/schema/nodes/cabinet.d.ts.map +1 -1
- package/dist/schema/nodes/cabinet.js +1 -1
- package/dist/schema/nodes/ceiling.d.ts +15 -15
- package/dist/schema/nodes/chimney.d.ts +23 -23
- package/dist/schema/nodes/column.d.ts +207 -199
- package/dist/schema/nodes/column.d.ts.map +1 -1
- package/dist/schema/nodes/column.js +2 -0
- package/dist/schema/nodes/construction-dimension.d.ts +34 -34
- package/dist/schema/nodes/cupola.d.ts +15 -15
- package/dist/schema/nodes/curtain-wall.d.ts +21 -20
- package/dist/schema/nodes/curtain-wall.d.ts.map +1 -1
- package/dist/schema/nodes/curtain-wall.js +23 -0
- package/dist/schema/nodes/door.d.ts +50 -43
- package/dist/schema/nodes/door.d.ts.map +1 -1
- package/dist/schema/nodes/door.js +19 -0
- package/dist/schema/nodes/dormer.d.ts +37 -36
- package/dist/schema/nodes/dormer.d.ts.map +1 -1
- package/dist/schema/nodes/downspout.d.ts +17 -17
- package/dist/schema/nodes/duct-fitting.d.ts +24 -24
- package/dist/schema/nodes/duct-segment.d.ts +14 -14
- package/dist/schema/nodes/duct-terminal.d.ts +12 -12
- package/dist/schema/nodes/elevator.d.ts +15 -15
- package/dist/schema/nodes/eyebrow-vent.d.ts +13 -13
- package/dist/schema/nodes/fence-feature.d.ts +37 -37
- package/dist/schema/nodes/fence-types.d.ts +32 -0
- package/dist/schema/nodes/fence-types.d.ts.map +1 -0
- package/dist/schema/nodes/fence-types.js +22 -0
- package/dist/schema/nodes/fence.d.ts +43 -72
- package/dist/schema/nodes/fence.d.ts.map +1 -1
- package/dist/schema/nodes/fence.js +4 -20
- package/dist/schema/nodes/floor-opening.d.ts +8 -8
- package/dist/schema/nodes/guide.d.ts +8 -8
- package/dist/schema/nodes/gutter.d.ts +14 -14
- package/dist/schema/nodes/gutter.d.ts.map +1 -1
- package/dist/schema/nodes/gutter.js +6 -5
- package/dist/schema/nodes/hvac-equipment.d.ts +13 -13
- package/dist/schema/nodes/imported-mesh.d.ts +8 -8
- package/dist/schema/nodes/item.d.ts +30 -25
- package/dist/schema/nodes/item.d.ts.map +1 -1
- package/dist/schema/nodes/lean-to-extension.d.ts +36 -36
- package/dist/schema/nodes/level.d.ts +9 -9
- package/dist/schema/nodes/lineset.d.ts +8 -8
- package/dist/schema/nodes/liquid-line.d.ts +8 -8
- package/dist/schema/nodes/measurement.d.ts +8 -8
- package/dist/schema/nodes/opening-types.d.ts +13 -13
- package/dist/schema/nodes/opening-types.d.ts.map +1 -1
- package/dist/schema/nodes/pipe-fitting.d.ts +15 -15
- package/dist/schema/nodes/pipe-segment.d.ts +11 -11
- package/dist/schema/nodes/pipe-trap.d.ts +9 -9
- package/dist/schema/nodes/ridge-vent.d.ts +14 -14
- package/dist/schema/nodes/ridge-vent.d.ts.map +1 -1
- package/dist/schema/nodes/ridge-vent.js +3 -1
- package/dist/schema/nodes/roof-glazing-config.d.ts +90 -0
- package/dist/schema/nodes/roof-glazing-config.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing-config.js +34 -0
- package/dist/schema/nodes/roof-glazing.d.ts +57 -0
- package/dist/schema/nodes/roof-glazing.d.ts.map +1 -0
- package/dist/schema/nodes/roof-glazing.js +514 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts +4 -0
- package/dist/schema/nodes/roof-segment-resize.d.ts.map +1 -0
- package/dist/schema/nodes/roof-segment-resize.js +21 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts +5 -0
- package/dist/schema/nodes/roof-segment-shape.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-shape.js +44 -0
- package/dist/schema/nodes/roof-segment-walls.d.ts +1 -1
- package/dist/schema/nodes/roof-segment-walls.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment-walls.js +24 -0
- package/dist/schema/nodes/roof-segment.d.ts +153 -46
- package/dist/schema/nodes/roof-segment.d.ts.map +1 -1
- package/dist/schema/nodes/roof-segment.js +91 -20
- package/dist/schema/nodes/roof-types.d.ts +14 -0
- package/dist/schema/nodes/roof-types.d.ts.map +1 -0
- package/dist/schema/nodes/roof-types.js +14 -0
- package/dist/schema/nodes/roof.d.ts +49 -49
- package/dist/schema/nodes/scan.d.ts +8 -8
- package/dist/schema/nodes/separator.d.ts +8 -8
- package/dist/schema/nodes/shelf.d.ts +16 -16
- package/dist/schema/nodes/site-facts.d.ts +64 -0
- package/dist/schema/nodes/site-facts.d.ts.map +1 -0
- package/dist/schema/nodes/site-facts.js +73 -0
- package/dist/schema/nodes/site.d.ts +105 -63
- package/dist/schema/nodes/site.d.ts.map +1 -1
- package/dist/schema/nodes/site.js +7 -70
- package/dist/schema/nodes/skylight.d.ts +41 -41
- package/dist/schema/nodes/skylight.d.ts.map +1 -1
- package/dist/schema/nodes/slab.d.ts +21 -21
- package/dist/schema/nodes/solar-panel.d.ts +21 -21
- package/dist/schema/nodes/spawn.d.ts +8 -8
- package/dist/schema/nodes/stair-construction.d.ts +3 -3
- package/dist/schema/nodes/stair-defaults.d.ts +16 -0
- package/dist/schema/nodes/stair-defaults.d.ts.map +1 -0
- package/dist/schema/nodes/stair-defaults.js +15 -0
- package/dist/schema/nodes/stair-segment.d.ts +22 -22
- package/dist/schema/nodes/stair-types.d.ts +29 -0
- package/dist/schema/nodes/stair-types.d.ts.map +1 -0
- package/dist/schema/nodes/stair-types.js +23 -0
- package/dist/schema/nodes/stair.d.ts +51 -75
- package/dist/schema/nodes/stair.d.ts.map +1 -1
- package/dist/schema/nodes/stair.js +6 -20
- package/dist/schema/nodes/structural-grid.d.ts +8 -8
- package/dist/schema/nodes/surface-hole-metadata.d.ts +2 -2
- package/dist/schema/nodes/turbine-vent.d.ts +13 -13
- package/dist/schema/nodes/unit.d.ts +10 -10
- package/dist/schema/nodes/unit.d.ts.map +1 -1
- package/dist/schema/nodes/wall.d.ts +479 -146
- package/dist/schema/nodes/wall.d.ts.map +1 -1
- package/dist/schema/nodes/wall.js +19 -0
- package/dist/schema/nodes/window.d.ts +55 -39
- package/dist/schema/nodes/window.d.ts.map +1 -1
- package/dist/schema/nodes/window.js +10 -0
- package/dist/schema/nodes/zone.d.ts +231 -12
- package/dist/schema/nodes/zone.d.ts.map +1 -1
- package/dist/schema/nodes/zone.js +10 -0
- package/dist/schema/provenance.d.ts +21 -21
- package/dist/schema/scene-material.d.ts +5 -5
- package/dist/schema/site-presentation.d.ts +100 -0
- package/dist/schema/site-presentation.d.ts.map +1 -0
- package/dist/schema/site-presentation.js +83 -0
- package/dist/schema/types.d.ts +1954 -1414
- package/dist/schema/types.d.ts.map +1 -1
- package/dist/services/__fixtures__/wall-plane-top-boundary-repro.d.ts.map +1 -1
- package/dist/services/index.d.ts +5 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +5 -1
- package/dist/services/level-height.d.ts.map +1 -1
- package/dist/services/level-height.js +7 -3
- package/dist/services/port-connectivity.d.ts +4 -0
- package/dist/services/port-connectivity.d.ts.map +1 -1
- package/dist/services/port-connectivity.js +35 -0
- package/dist/services/project-file-sink.d.ts +9 -0
- package/dist/services/project-file-sink.d.ts.map +1 -0
- package/dist/services/project-file-sink.js +13 -0
- package/dist/services/roof-bearing.d.ts +62 -0
- package/dist/services/roof-bearing.d.ts.map +1 -0
- package/dist/services/roof-bearing.js +234 -0
- package/dist/services/roof-level.d.ts +121 -0
- package/dist/services/roof-level.d.ts.map +1 -0
- package/dist/services/roof-level.js +280 -0
- package/dist/services/roof-move.d.ts +83 -0
- package/dist/services/roof-move.d.ts.map +1 -0
- package/dist/services/roof-move.js +316 -0
- package/dist/services/stair-surface-snap.d.ts +14 -0
- package/dist/services/stair-surface-snap.d.ts.map +1 -0
- package/dist/services/stair-surface-snap.js +116 -0
- package/dist/services/storey-datum.d.ts +12 -0
- package/dist/services/storey-datum.d.ts.map +1 -0
- package/dist/services/storey-datum.js +18 -0
- package/dist/services/storey.d.ts +51 -5
- package/dist/services/storey.d.ts.map +1 -1
- package/dist/services/storey.js +125 -8
- package/dist/solar-panel-presets.d.ts +2 -2
- package/dist/store/actions/node-actions.d.ts +3613 -3182
- package/dist/store/actions/node-actions.d.ts.map +1 -1
- package/dist/store/actions/node-actions.js +46 -1
- package/dist/store/derived-node-guard.d.ts.map +1 -1
- package/dist/store/history-control.d.ts +39 -0
- package/dist/store/history-control.d.ts.map +1 -1
- package/dist/store/history-control.js +84 -4
- package/dist/store/scene-annotations.d.ts +7267 -6409
- package/dist/store/scene-annotations.d.ts.map +1 -1
- package/dist/store/scene-preview.d.ts +16 -0
- package/dist/store/scene-preview.d.ts.map +1 -0
- package/dist/store/scene-preview.js +144 -0
- package/dist/store/use-live-node-overrides.d.ts.map +1 -1
- package/dist/store/use-live-terrain.d.ts.map +1 -1
- package/dist/store/use-live-transforms.d.ts.map +1 -1
- package/dist/store/use-scene.d.ts.map +1 -1
- package/dist/store/use-scene.js +37 -4
- package/dist/systems/elevator/elevator-dispatch.js +1 -1
- package/dist/systems/fence/fence-features.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.d.ts.map +1 -1
- package/dist/systems/owned-floor-openings.js +24 -3
- package/dist/systems/roof/roof-elevation-system.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation-system.js +9 -3
- package/dist/systems/roof/roof-elevation.d.ts +5 -0
- package/dist/systems/roof/roof-elevation.d.ts.map +1 -1
- package/dist/systems/roof/roof-elevation.js +91 -62
- package/dist/systems/slab/__fixtures__/floor-step.d.ts +4623 -3516
- package/dist/systems/slab/__fixtures__/floor-step.d.ts.map +1 -1
- package/dist/systems/slab/__fixtures__/raised-room.d.ts +5149 -4076
- package/dist/systems/slab/__fixtures__/raised-room.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.d.ts +6 -3
- package/dist/systems/slab/slab-support.d.ts.map +1 -1
- package/dist/systems/slab/slab-support.js +78 -10
- package/dist/systems/stair/stair-detail-budget.d.ts +2 -2
- package/dist/systems/stair/stair-detail-budget.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.d.ts +6 -0
- package/dist/systems/stair/stair-footprint.d.ts.map +1 -1
- package/dist/systems/stair/stair-footprint.js +27 -14
- package/dist/systems/stair/stair-layout.d.ts +2 -2
- package/dist/systems/stair/stair-opening-preview.d.ts +3643 -3214
- package/dist/systems/stair/stair-opening-preview.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.d.ts +73 -65
- package/dist/systems/stair/stair-presets.d.ts.map +1 -1
- package/dist/systems/stair/stair-presets.js +16 -9
- package/dist/systems/stair/stair-rail-path.d.ts +1 -1
- package/dist/systems/stair/stair-rise-query.d.ts +16 -0
- package/dist/systems/stair/stair-rise-query.d.ts.map +1 -1
- package/dist/systems/stair/stair-rise-query.js +57 -7
- package/dist/systems/stair/stair-sizing.d.ts +101 -99
- package/dist/systems/stair/stair-sizing.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.d.ts +11 -0
- package/dist/systems/wall/wall-assembly.d.ts.map +1 -1
- package/dist/systems/wall/wall-assembly.js +21 -0
- package/dist/systems/wall/wall-curve.d.ts +5 -0
- package/dist/systems/wall/wall-curve.d.ts.map +1 -1
- package/dist/systems/wall/wall-curve.js +13 -0
- package/dist/systems/wall/wall-frame.d.ts.map +1 -1
- package/dist/systems/wall/wall-frame.js +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts +8 -0
- package/dist/systems/wall/wall-room-sides.d.ts.map +1 -1
- package/dist/systems/wall/wall-room-sides.js +60 -7
- package/dist/systems/wall/wall-top.d.ts +7 -4
- package/dist/systems/wall/wall-top.d.ts.map +1 -1
- package/dist/systems/wall/wall-top.js +14 -6
- package/dist/systems/wall/wall-topology.d.ts +4 -0
- package/dist/systems/wall/wall-topology.d.ts.map +1 -1
- package/dist/systems/wall/wall-topology.js +4 -2
- package/dist/systems/wall/wall-trim.d.ts +7 -0
- package/dist/systems/wall/wall-trim.d.ts.map +1 -0
- package/dist/systems/wall/wall-trim.js +10 -0
- package/dist/utils/clone-scene-graph.d.ts.map +1 -1
- package/dist/utils/clone-scene-graph.js +8 -0
- package/dist/utils/ensure-scene-openings.d.ts +7420 -6562
- package/dist/utils/ensure-scene-openings.d.ts.map +1 -1
- package/dist/utils/floor-piece-adoption.d.ts +2 -2
- package/dist/utils/floor-plate-migration.d.ts +3746 -3317
- package/dist/utils/floor-plate-migration.d.ts.map +1 -1
- package/dist/utils/floor-plate-migration.js +2 -2
- package/dist/utils/heal-scene-graph.d.ts +12 -0
- package/dist/utils/heal-scene-graph.d.ts.map +1 -1
- package/dist/utils/heal-scene-graph.js +40 -23
- package/dist/utils/legacy-wall-datums.d.ts.map +1 -1
- package/dist/utils/legacy-wall-datums.js +2 -2
- package/dist/utils/owned-floor-opening-migration.d.ts +3642 -3213
- package/dist/utils/owned-floor-opening-migration.d.ts.map +1 -1
- package/dist/utils/reconcile-structure-on-load.d.ts +3730 -7777
- package/dist/utils/reconcile-structure-on-load.d.ts.map +1 -1
- package/dist/utils/scene-migrations.d.ts +1 -1
- package/dist/utils/scene-migrations.d.ts.map +1 -1
- package/dist/utils/scene-migrations.js +1 -1
- package/dist/utils/semantic-equal.d.ts +3 -0
- package/dist/utils/semantic-equal.d.ts.map +1 -0
- package/dist/utils/semantic-equal.js +26 -0
- package/dist/utils/structure-id.d.ts.map +1 -1
- package/dist/utils/types.d.ts.map +1 -1
- package/dist/utils/wall-face-migration.d.ts +1 -1
- package/dist/utils/wall-face-migration.d.ts.map +1 -1
- package/package.json +36 -10
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const INCH = 0.0254;
|
|
2
|
+
/**
|
|
3
|
+
* The standard numbers of a residential foundation, in metres, stated once: the generic foundation
|
|
4
|
+
* the viewer draws under every building (`genericFoundation`), Bones' pour and the sections
|
|
5
|
+
* plugin's drawings all read them. They are the common US residential values (IRC chapters 4 and
|
|
6
|
+
* 5), not a jurisdiction's: core holds no frost data, so what depends on one (the frost line, the
|
|
7
|
+
* wall convention) stays with the jurisdiction profile in Bones.
|
|
8
|
+
*/
|
|
9
|
+
export const FOUNDATION_STANDARD = {
|
|
10
|
+
/** Continuous footing under an exterior wall: 16 in wide, the usual pour for light framing (IRC R403.1). */
|
|
11
|
+
footingWidth: 16 * INCH,
|
|
12
|
+
/** 6 in is the minimum (IRC Table R403.1(1)); 8 in is the near-universal pour. */
|
|
13
|
+
footingThickness: 8 * INCH,
|
|
14
|
+
/**
|
|
15
|
+
* How far the footing's bottom sits under the lowest grade where nothing says better: 12 in, the
|
|
16
|
+
* shallowest Bones allows (IRC R403.1.4.1 asks for the frost line, which core does not know). A
|
|
17
|
+
* generic depth, drawn as one.
|
|
18
|
+
*/
|
|
19
|
+
footingBelowGrade: 12 * INCH,
|
|
20
|
+
/** The foundation wall (the stem) from the footing up to the floor: 8 in (IRC R404.1). */
|
|
21
|
+
stemThickness: 8 * INCH,
|
|
22
|
+
/** A crawl space vent, 8 × 16 in screened for 50 sq in net (IRC R408.1), within 3 ft of each corner, set 2 ft in (R408.2). */
|
|
23
|
+
ventWidth: 16 * INCH,
|
|
24
|
+
ventHeight: 8 * INCH,
|
|
25
|
+
ventNetAreaSqIn: 50,
|
|
26
|
+
ventCornerInset: 24 * INCH,
|
|
27
|
+
/** The crawl space access through the stem: 16 × 24 in (IRC R408.4). */
|
|
28
|
+
crawlAccessWidth: 24 * INCH,
|
|
29
|
+
crawlAccessHeight: 16 * INCH,
|
|
30
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type AnyNode, type AnyNodeId, WallNode } from '../schema/index.js';
|
|
2
|
+
import type { Assembly } from '../schema/assembly.js';
|
|
3
|
+
import { type FoundationConstruction, type FoundationReading } from './foundation-construction.js';
|
|
4
|
+
/**
|
|
5
|
+
* Whether a wall against the ground on `levelId` is a foundation wall: the level is below grade everywhere, or the
|
|
6
|
+
* building's ground line puts it under the ground floor (a basement the terrain leaves part of out
|
|
7
|
+
* of the ground). A floor a hillside only half buries, with nothing named under the line, is a floor.
|
|
8
|
+
*/
|
|
9
|
+
export declare function levelHoldsFoundationWalls(nodes: Record<AnyNodeId, AnyNode>, levelId: string): boolean;
|
|
10
|
+
/** What the agent is told of the rule: the foundation wall of this building's construction, and what is not one. */
|
|
11
|
+
export declare function foundationWallRule(reading: FoundationReading): string;
|
|
12
|
+
/** The construction a foundation wall is born with. */
|
|
13
|
+
export declare function foundationWallConstruction(construction: FoundationConstruction): {
|
|
14
|
+
assembly: Assembly;
|
|
15
|
+
thickness: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* The `candidates` (walls among `levelWalls`, the level's walls with them in) that hold the earth
|
|
19
|
+
* back: the level holds foundation walls and no closed circuit of walls encloses them. A partition
|
|
20
|
+
* inside the outline is not one, nor is a ring of walls inside it (a courtyard walled on every
|
|
21
|
+
* side: a room open to the sky, as the structure kernel reads it, facing air, not earth). A wall
|
|
22
|
+
* outside the outline (a well against it) is. A wall with no closed circuit around it yet (the
|
|
23
|
+
* first walls of a basement, an open run) counts as the outline in the making, so a basement drawn
|
|
24
|
+
* wall by wall is foundation all the way round. The outline is the one `genericFoundation` draws
|
|
25
|
+
* under.
|
|
26
|
+
*/
|
|
27
|
+
export declare function wallsAgainstGround(nodes: Record<AnyNodeId, AnyNode>, levelId: string, levelWalls: WallNode[], candidates: WallNode[]): WallNode[];
|
|
28
|
+
/**
|
|
29
|
+
* The walls just drawn on `levelId` (`inserted`, among `levelWalls` with them in) as the level's
|
|
30
|
+
* default builds them: the walls against the ground take the foundation construction of the
|
|
31
|
+
* building's region (CMU or cast concrete), a
|
|
32
|
+
* partition keeps the ordinary wall. A caller who gave a thickness or an assembly (`given`) keeps
|
|
33
|
+
* it; existing walls are never rewritten.
|
|
34
|
+
*/
|
|
35
|
+
export declare function withFoundationConstruction(nodes: Record<AnyNodeId, AnyNode>, levelId: string, levelWalls: WallNode[], inserted: WallNode[], given: Partial<WallNode>): WallNode[];
|
|
36
|
+
//# sourceMappingURL=foundation-wall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundation-wall.d.ts","sourceRoot":"","sources":["../../src/lib/foundation-wall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAkB,QAAQ,EAAE,MAAM,WAAW,CAAA;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EAEvB,MAAM,2BAA2B,CAAA;AAIlC;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,MAAM,GACd,OAAO,CAQT;AAED,oHAAoH;AACpH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAErE;AAED,uDAAuD;AACvD,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,sBAAsB,GAAG;IAChF,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CAClB,CAMA;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,QAAQ,EAAE,EACtB,UAAU,EAAE,QAAQ,EAAE,GACrB,QAAQ,EAAE,CAIZ;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,QAAQ,EAAE,EACtB,QAAQ,EAAE,QAAQ,EAAE,EACpB,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GACvB,QAAQ,EAAE,CAYZ"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { WallNode } from '../schema/index.js';
|
|
2
|
+
import { assemblyThickness } from '../systems/wall/wall-assembly.js';
|
|
3
|
+
import { enclosedWallIds } from './exterior-wall-loops.js';
|
|
4
|
+
import { foundationReadingOfLevel, } from './foundation-construction.js';
|
|
5
|
+
import { levelGradeStanding } from './grade-standing.js';
|
|
6
|
+
import { levelUnderNamedGround } from './ground-level.js';
|
|
7
|
+
/**
|
|
8
|
+
* Whether a wall against the ground on `levelId` is a foundation wall: the level is below grade everywhere, or the
|
|
9
|
+
* building's ground line puts it under the ground floor (a basement the terrain leaves part of out
|
|
10
|
+
* of the ground). A floor a hillside only half buries, with nothing named under the line, is a floor.
|
|
11
|
+
*/
|
|
12
|
+
export function levelHoldsFoundationWalls(nodes, levelId) {
|
|
13
|
+
const level = nodes[levelId];
|
|
14
|
+
if (level?.type !== 'level')
|
|
15
|
+
return false;
|
|
16
|
+
const standing = levelGradeStanding(nodes, levelId);
|
|
17
|
+
if (standing === 'below-grade')
|
|
18
|
+
return true;
|
|
19
|
+
return (standing === 'partly-below-grade' && levelUnderNamedGround(nodes, level) === true);
|
|
20
|
+
}
|
|
21
|
+
/** What the agent is told of the rule: the foundation wall of this building's construction, and what is not one. */
|
|
22
|
+
export function foundationWallRule(reading) {
|
|
23
|
+
return `a wall against the ground on a level below grade is a foundation wall (${reading.construction.description}); a partition is an ordinary wall; the construction follows the region and style (${reading.basis})`;
|
|
24
|
+
}
|
|
25
|
+
/** The construction a foundation wall is born with. */
|
|
26
|
+
export function foundationWallConstruction(construction) {
|
|
27
|
+
return {
|
|
28
|
+
assembly: structuredClone(construction.assembly),
|
|
29
|
+
// Micrometres: the stored thickness is a clean 0.241, not the float noise of 0.203 + 0.038.
|
|
30
|
+
thickness: Math.round(assemblyThickness(construction.assembly) * 1e6) / 1e6,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The `candidates` (walls among `levelWalls`, the level's walls with them in) that hold the earth
|
|
35
|
+
* back: the level holds foundation walls and no closed circuit of walls encloses them. A partition
|
|
36
|
+
* inside the outline is not one, nor is a ring of walls inside it (a courtyard walled on every
|
|
37
|
+
* side: a room open to the sky, as the structure kernel reads it, facing air, not earth). A wall
|
|
38
|
+
* outside the outline (a well against it) is. A wall with no closed circuit around it yet (the
|
|
39
|
+
* first walls of a basement, an open run) counts as the outline in the making, so a basement drawn
|
|
40
|
+
* wall by wall is foundation all the way round. The outline is the one `genericFoundation` draws
|
|
41
|
+
* under.
|
|
42
|
+
*/
|
|
43
|
+
export function wallsAgainstGround(nodes, levelId, levelWalls, candidates) {
|
|
44
|
+
if (!levelHoldsFoundationWalls(nodes, levelId))
|
|
45
|
+
return [];
|
|
46
|
+
const enclosed = enclosedWallIds(levelWalls.filter((wall) => wall.visible !== false));
|
|
47
|
+
return candidates.filter((wall) => !enclosed.has(wall.id));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The walls just drawn on `levelId` (`inserted`, among `levelWalls` with them in) as the level's
|
|
51
|
+
* default builds them: the walls against the ground take the foundation construction of the
|
|
52
|
+
* building's region (CMU or cast concrete), a
|
|
53
|
+
* partition keeps the ordinary wall. A caller who gave a thickness or an assembly (`given`) keeps
|
|
54
|
+
* it; existing walls are never rewritten.
|
|
55
|
+
*/
|
|
56
|
+
export function withFoundationConstruction(nodes, levelId, levelWalls, inserted, given) {
|
|
57
|
+
if (given.assembly !== undefined || given.thickness !== undefined)
|
|
58
|
+
return inserted;
|
|
59
|
+
const against = new Set(wallsAgainstGround(nodes, levelId, levelWalls, inserted).map((wall) => wall.id));
|
|
60
|
+
if (against.size === 0)
|
|
61
|
+
return inserted;
|
|
62
|
+
const { construction } = foundationReadingOfLevel(nodes, levelId);
|
|
63
|
+
return inserted.map((wall) => against.has(wall.id)
|
|
64
|
+
? WallNode.parse({ ...wall, ...foundationWallConstruction(construction) })
|
|
65
|
+
: wall);
|
|
66
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId } from '../schema/index.js';
|
|
2
|
+
type Nodes = Record<AnyNodeId, AnyNode>;
|
|
3
|
+
/**
|
|
4
|
+
* One run of the foundation under the exterior walls: a prism along `from` to `to` (world plan,
|
|
5
|
+
* already carried past the wall's ends so the corners close), `width` wide, from `bottomY` up to
|
|
6
|
+
* `topY`. A `footing` is the concrete pour under the wall, a `stem` the foundation wall on it,
|
|
7
|
+
* built of `material`: the footing is always concrete, the stem is what the building's
|
|
8
|
+
* foundation construction is (block or cast concrete, by region).
|
|
9
|
+
*/
|
|
10
|
+
export type FoundationMember = {
|
|
11
|
+
kind: 'footing' | 'stem';
|
|
12
|
+
material: 'concrete' | 'cmu';
|
|
13
|
+
levelId: string;
|
|
14
|
+
from: [number, number];
|
|
15
|
+
to: [number, number];
|
|
16
|
+
width: number;
|
|
17
|
+
bottomY: number;
|
|
18
|
+
topY: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The foundation a building stands on where the scene stores none: a continuous footing and a
|
|
22
|
+
* foundation wall under the exterior walls of each building's lowest level with a closed outline,
|
|
23
|
+
* derived from those walls, never stored, so nothing in a saved scene changes. The numbers are
|
|
24
|
+
* {@link FOUNDATION_STANDARD}: a 16 × 8 in footing whose bottom sits 12 in under the lowest grade
|
|
25
|
+
* (a generic depth: core has no frost data), and a wall from the footing up to the underside of the
|
|
26
|
+
* lowest floor, of the building's foundation construction (`foundationReadingOf`): 8 in block by
|
|
27
|
+
* default, cast concrete in Europe.
|
|
28
|
+
*
|
|
29
|
+
* - A level below grade (all of it) has no second wall: its exterior walls are the foundation
|
|
30
|
+
* walls, so only the footing is drawn, under the underside of its floor.
|
|
31
|
+
* - A wall that stores its own stem (`underpinning`) keeps it; the footing goes under that stem.
|
|
32
|
+
* - A slab that stores a solid foundation skirt (`foundation`) is the foundation under its level:
|
|
33
|
+
* walls without a stored stem get nothing.
|
|
34
|
+
* - A node that declares `drawsFoundation` on the level (a framing plugin) draws it itself: the
|
|
35
|
+
* generic one steps aside. The plugin may read `isCaptureSessionOn()` to give it back to a
|
|
36
|
+
* picture, which shows the finished house.
|
|
37
|
+
*/
|
|
38
|
+
export declare function genericFoundation(nodes: Nodes): FoundationMember[];
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=generic-foundation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-foundation.d.ts","sourceRoot":"","sources":["../../src/lib/generic-foundation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAA+C,MAAM,WAAW,CAAA;AAYhG,KAAK,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;IACxB,QAAQ,EAAE,UAAU,GAAG,KAAK,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtB,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAgBD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,gBAAgB,EAAE,CAWlE"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { isCaptureSessionOn } from '../events/capture-sessions.js';
|
|
2
|
+
import { nodeRegistry } from '../registry/index.js';
|
|
3
|
+
import { getLevelElevations, levelPlateUndersideWorldY } from '../services/storey.js';
|
|
4
|
+
import { getWallCenterlineSegments } from '../systems/wall/wall-curve.js';
|
|
5
|
+
import { getWallThickness } from '../systems/wall/wall-footprint.js';
|
|
6
|
+
import { getWallBodyCenterOffset } from '../systems/wall/wall-frame.js';
|
|
7
|
+
import { exteriorWallLoops } from './exterior-wall-loops.js';
|
|
8
|
+
import { foundationReadingOf } from './foundation-construction.js';
|
|
9
|
+
import { FOUNDATION_STANDARD } from './foundation-standard.js';
|
|
10
|
+
import { levelGradeStanding } from './grade-standing.js';
|
|
11
|
+
import { groundHeightAt } from './site-ground-height.js';
|
|
12
|
+
import { levelLocalToWorldXZ } from './terrain-support-query.js';
|
|
13
|
+
const STEM_MATERIAL = {
|
|
14
|
+
cmu: 'cmu',
|
|
15
|
+
'cast-concrete': 'concrete',
|
|
16
|
+
};
|
|
17
|
+
/** The lowest grade is sampled at this many points along each wall, the generator's own count. */
|
|
18
|
+
const GRADE_SAMPLES = 7;
|
|
19
|
+
/** A stem shorter than this is the floor sitting on the footing: nothing to draw. */
|
|
20
|
+
const MIN_STEM_HEIGHT = 1e-3;
|
|
21
|
+
// Per scene and per capture session: a plugin's `drawsFoundation` may step aside from a picture
|
|
22
|
+
// (the pictures show the finished house), a state no node holds.
|
|
23
|
+
const memo = new WeakMap();
|
|
24
|
+
/**
|
|
25
|
+
* The foundation a building stands on where the scene stores none: a continuous footing and a
|
|
26
|
+
* foundation wall under the exterior walls of each building's lowest level with a closed outline,
|
|
27
|
+
* derived from those walls, never stored, so nothing in a saved scene changes. The numbers are
|
|
28
|
+
* {@link FOUNDATION_STANDARD}: a 16 × 8 in footing whose bottom sits 12 in under the lowest grade
|
|
29
|
+
* (a generic depth: core has no frost data), and a wall from the footing up to the underside of the
|
|
30
|
+
* lowest floor, of the building's foundation construction (`foundationReadingOf`): 8 in block by
|
|
31
|
+
* default, cast concrete in Europe.
|
|
32
|
+
*
|
|
33
|
+
* - A level below grade (all of it) has no second wall: its exterior walls are the foundation
|
|
34
|
+
* walls, so only the footing is drawn, under the underside of its floor.
|
|
35
|
+
* - A wall that stores its own stem (`underpinning`) keeps it; the footing goes under that stem.
|
|
36
|
+
* - A slab that stores a solid foundation skirt (`foundation`) is the foundation under its level:
|
|
37
|
+
* walls without a stored stem get nothing.
|
|
38
|
+
* - A node that declares `drawsFoundation` on the level (a framing plugin) draws it itself: the
|
|
39
|
+
* generic one steps aside. The plugin may read `isCaptureSessionOn()` to give it back to a
|
|
40
|
+
* picture, which shows the finished house.
|
|
41
|
+
*/
|
|
42
|
+
export function genericFoundation(nodes) {
|
|
43
|
+
const capturing = isCaptureSessionOn();
|
|
44
|
+
const hit = memo.get(nodes);
|
|
45
|
+
if (hit && hit.capturing === capturing)
|
|
46
|
+
return hit.members;
|
|
47
|
+
const members = [];
|
|
48
|
+
for (const node of Object.values(nodes)) {
|
|
49
|
+
if (node.type === 'building' && node.visible !== false)
|
|
50
|
+
members.push(...buildingFoundation(nodes, node));
|
|
51
|
+
}
|
|
52
|
+
memo.set(nodes, { capturing, members });
|
|
53
|
+
return members;
|
|
54
|
+
}
|
|
55
|
+
function buildingFoundation(nodes, building) {
|
|
56
|
+
const enclosed = lowestEnclosedLevel(nodes, building);
|
|
57
|
+
if (!enclosed || levelDrawsFoundation(nodes, enclosed.level))
|
|
58
|
+
return [];
|
|
59
|
+
const { level, walls } = enclosed;
|
|
60
|
+
const site = siteOf(nodes, building);
|
|
61
|
+
const gradeAt = (x, z) => groundHeightAt(site, x, z);
|
|
62
|
+
const lowestGrade = Math.min(...walls.map((wall) => lowestGradeAlong(building, wall, gradeAt)));
|
|
63
|
+
const floors = floorsOf(nodes, level);
|
|
64
|
+
const wallBaseY = building.position[1] + (getLevelElevations(nodes).get(level.id)?.baseY ?? 0);
|
|
65
|
+
// The footing never pokes above the wall's base into the room, nor above the floor's underside.
|
|
66
|
+
const floorUnderside = levelPlateUndersideWorldY(nodes, level.id) ?? wallBaseY;
|
|
67
|
+
const { construction } = foundationReadingOf(nodes, building.id);
|
|
68
|
+
const stemMaterial = STEM_MATERIAL[construction.id];
|
|
69
|
+
const stemThickness = construction.stemThickness;
|
|
70
|
+
const buried = levelGradeStanding(nodes, level.id) === 'below-grade';
|
|
71
|
+
const solidSkirt = floors.some((floor) => floor.foundation?.type === 'solid');
|
|
72
|
+
const members = [];
|
|
73
|
+
for (const wall of walls) {
|
|
74
|
+
const stored = wall.underpinning;
|
|
75
|
+
if (!stored && solidSkirt)
|
|
76
|
+
continue;
|
|
77
|
+
const run = runOf(building, wall, stemThickness);
|
|
78
|
+
const wallWidth = Math.max(stemThickness, getWallThickness(wall));
|
|
79
|
+
const footingWidth = wallWidth + FOUNDATION_STANDARD.footingWidth - FOUNDATION_STANDARD.stemThickness;
|
|
80
|
+
const footingTop = stored
|
|
81
|
+
? Math.min(wallBaseY - stored.rim - stored.stem, lowestGradeAlong(building, wall, gradeAt))
|
|
82
|
+
: footingTopUnder(floorUnderside, lowestGrade);
|
|
83
|
+
const footingBottom = footingTop - FOUNDATION_STANDARD.footingThickness;
|
|
84
|
+
for (const segment of run) {
|
|
85
|
+
members.push({
|
|
86
|
+
kind: 'footing',
|
|
87
|
+
material: 'concrete',
|
|
88
|
+
levelId: level.id,
|
|
89
|
+
...segment,
|
|
90
|
+
width: footingWidth,
|
|
91
|
+
bottomY: footingBottom,
|
|
92
|
+
topY: footingTop,
|
|
93
|
+
});
|
|
94
|
+
if (stored || buried || floorUnderside - footingTop < MIN_STEM_HEIGHT)
|
|
95
|
+
continue;
|
|
96
|
+
members.push({
|
|
97
|
+
kind: 'stem',
|
|
98
|
+
material: stemMaterial,
|
|
99
|
+
levelId: level.id,
|
|
100
|
+
...segment,
|
|
101
|
+
width: wallWidth,
|
|
102
|
+
bottomY: footingTop,
|
|
103
|
+
topY: floorUnderside,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return members;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The footing's top: the generic depth under the lowest grade, or the floor's underside where that
|
|
111
|
+
* is deeper (a level below grade sits its footing right under its floor).
|
|
112
|
+
*/
|
|
113
|
+
function footingTopUnder(floorUnderside, lowestGrade) {
|
|
114
|
+
const { footingBelowGrade, footingThickness } = FOUNDATION_STANDARD;
|
|
115
|
+
return Math.min(lowestGrade - footingBelowGrade + footingThickness, floorUnderside);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* The building's lowest level whose walls close an outline, with those exterior walls. A level
|
|
119
|
+
* under the ground still being drawn (a basement's first wall, an open run) carries no foundation
|
|
120
|
+
* yet, and the one over it does; a level at grade whose walls close nothing stands on nothing
|
|
121
|
+
* drawn, whatever is over it.
|
|
122
|
+
*/
|
|
123
|
+
function lowestEnclosedLevel(nodes, building) {
|
|
124
|
+
const elevations = getLevelElevations(nodes);
|
|
125
|
+
const levels = Object.values(nodes)
|
|
126
|
+
.filter((node) => node.type === 'level' && elevations.get(node.id)?.buildingId === building.id)
|
|
127
|
+
.sort((a, b) => a.level - b.level);
|
|
128
|
+
for (const level of levels) {
|
|
129
|
+
if (!level.children.some((id) => nodes[id]?.type === 'wall'))
|
|
130
|
+
continue;
|
|
131
|
+
const walls = exteriorWalls(nodes, level);
|
|
132
|
+
if (walls.length > 0)
|
|
133
|
+
return { level, walls };
|
|
134
|
+
if (levelGradeStanding(nodes, level.id) === 'at-grade')
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
function levelDrawsFoundation(nodes, level) {
|
|
140
|
+
return level.children.some((id) => {
|
|
141
|
+
const child = nodes[id];
|
|
142
|
+
return child
|
|
143
|
+
? nodeRegistry.get(child.type)?.capabilities?.drawsFoundation?.(child) === true
|
|
144
|
+
: false;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
function exteriorWalls(nodes, level) {
|
|
148
|
+
const walls = level.children
|
|
149
|
+
.map((id) => nodes[id])
|
|
150
|
+
.filter((node) => node?.type === 'wall' && node.visible !== false);
|
|
151
|
+
const outside = new Set();
|
|
152
|
+
for (const loop of exteriorWallLoops(walls))
|
|
153
|
+
for (const face of loop)
|
|
154
|
+
outside.add(face.wallId);
|
|
155
|
+
return walls.filter((wall) => outside.has(wall.id));
|
|
156
|
+
}
|
|
157
|
+
function floorsOf(nodes, level) {
|
|
158
|
+
return level.children
|
|
159
|
+
.map((id) => nodes[id])
|
|
160
|
+
.filter((node) => node?.type === 'slab' && node.recessed !== true);
|
|
161
|
+
}
|
|
162
|
+
function siteOf(nodes, building) {
|
|
163
|
+
const parent = building.parentId ? nodes[building.parentId] : undefined;
|
|
164
|
+
return parent?.type === 'site'
|
|
165
|
+
? parent
|
|
166
|
+
: (Object.values(nodes).find((node) => node.type === 'site') ?? null);
|
|
167
|
+
}
|
|
168
|
+
function lowestGradeAlong(building, wall, gradeAt) {
|
|
169
|
+
let lowest = Number.POSITIVE_INFINITY;
|
|
170
|
+
for (let k = 0; k < GRADE_SAMPLES; k++) {
|
|
171
|
+
const t = k / (GRADE_SAMPLES - 1);
|
|
172
|
+
const [x, z] = levelLocalToWorldXZ(building, wall.start[0] + (wall.end[0] - wall.start[0]) * t, wall.start[1] + (wall.end[1] - wall.start[1]) * t);
|
|
173
|
+
lowest = Math.min(lowest, gradeAt(x, z));
|
|
174
|
+
}
|
|
175
|
+
return lowest;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* A wall's body centreline in the world as consecutive runs, each carried half its width past both
|
|
179
|
+
* ends so the runs of a corner (or a curve's pieces) overlap and close it.
|
|
180
|
+
*/
|
|
181
|
+
function runOf(building, wall, stemThickness) {
|
|
182
|
+
const offset = getWallBodyCenterOffset(wall);
|
|
183
|
+
const reach = Math.max(stemThickness, getWallThickness(wall)) / 2;
|
|
184
|
+
return getWallCenterlineSegments(wall).flatMap(([a, b]) => {
|
|
185
|
+
const dx = b.x - a.x;
|
|
186
|
+
const dz = b.y - a.y;
|
|
187
|
+
const length = Math.hypot(dx, dz);
|
|
188
|
+
if (length < 1e-9)
|
|
189
|
+
return [];
|
|
190
|
+
const [ux, uz] = [dx / length, dz / length];
|
|
191
|
+
// The wall's normal as the plan footprint takes it, so a justified wall sits where it is drawn.
|
|
192
|
+
const [nx, nz] = [-uz * offset, ux * offset];
|
|
193
|
+
return [
|
|
194
|
+
{
|
|
195
|
+
from: levelLocalToWorldXZ(building, a.x + nx - ux * reach, a.y + nz - uz * reach),
|
|
196
|
+
to: levelLocalToWorldXZ(building, b.x + nx + ux * reach, b.y + nz + uz * reach),
|
|
197
|
+
},
|
|
198
|
+
];
|
|
199
|
+
});
|
|
200
|
+
}
|
|
@@ -20,15 +20,15 @@ export declare function withSourceMeta<S extends {
|
|
|
20
20
|
meta?: GeometrySourceMeta;
|
|
21
21
|
}>(source: S, next: object, parent?: string): S;
|
|
22
22
|
/** The `source` a compile produces, the same on every kind. */
|
|
23
|
-
export declare const scriptSource: (compiled: CompiledGeometryScript, meta?: object, previous?: ScriptedNode[
|
|
24
|
-
kind:
|
|
23
|
+
export declare const scriptSource: (compiled: CompiledGeometryScript, meta?: object, previous?: ScriptedNode['source']) => {
|
|
24
|
+
kind: 'script';
|
|
25
25
|
meta: {
|
|
26
26
|
description?: string | undefined;
|
|
27
27
|
category?: string | undefined;
|
|
28
28
|
tags?: string[] | undefined;
|
|
29
29
|
parent?: string | undefined;
|
|
30
30
|
} | undefined;
|
|
31
|
-
language: "
|
|
31
|
+
language: "bpy" | "three";
|
|
32
32
|
script: string;
|
|
33
33
|
params: Record<string, string | number | boolean>;
|
|
34
34
|
artifact: string;
|
|
@@ -65,11 +65,40 @@ type Manifest = CompiledGeometryScript['manifest'];
|
|
|
65
65
|
export declare function matchScriptSlotsToLibrary(manifest: Manifest, overrides?: Record<string, string>, previous?: Manifest): Record<string, string>;
|
|
66
66
|
/** Width, height and depth of what the script built. */
|
|
67
67
|
export declare function scriptedSize(manifest: CompiledGeometryScript['manifest']): [number, number, number];
|
|
68
|
+
/**
|
|
69
|
+
* A compile whose bounds are not finite numbers cannot be sized or placed, and what is built from
|
|
70
|
+
* it would fail its schema with a raw validation array or carry a non-finite size: refused before
|
|
71
|
+
* anything is built, whichever scripted tool it came to. A mesh at a position that is not a number
|
|
72
|
+
* leaves NaN bounds (null once they crossed a JSON hop).
|
|
73
|
+
*/
|
|
74
|
+
export declare function requireMeasured(compiled: CompiledGeometryScript, subject: {
|
|
75
|
+
label?: string;
|
|
76
|
+
nodeId?: string;
|
|
77
|
+
tool: string;
|
|
78
|
+
}): void;
|
|
68
79
|
/**
|
|
69
80
|
* Where the script's origin (the bottom centre of what it built) sits in the
|
|
70
81
|
* node's own frame: a window or door is placed by its centre.
|
|
71
82
|
*/
|
|
72
83
|
export declare function scriptedOrigin(node: ScriptedNode): [number, number, number];
|
|
84
|
+
/**
|
|
85
|
+
* Where a ceiling item's origin sits in the ceiling's frame (y = 0 is the ceiling plane): a recessed
|
|
86
|
+
* fixture seats flush; a scripted object is origined at its top (the compiler's ceiling mount), so
|
|
87
|
+
* it hangs from its bounds' top; a catalog model is origined at its bottom and hangs its full height.
|
|
88
|
+
*/
|
|
89
|
+
export declare function ceilingSeatY(item: {
|
|
90
|
+
asset: {
|
|
91
|
+
recessed?: boolean;
|
|
92
|
+
};
|
|
93
|
+
source?: {
|
|
94
|
+
manifest: {
|
|
95
|
+
bounds: {
|
|
96
|
+
max: readonly number[];
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
scale?: readonly number[];
|
|
101
|
+
}, height: number): number;
|
|
73
102
|
/**
|
|
74
103
|
* The item's controls from what the module emitted: a light switch for its
|
|
75
104
|
* lights, an open/close toggle for an `open` clip (closing plays `close`, or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry-script-node.d.ts","sourceRoot":"","sources":["../../src/lib/geometry-script-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"geometry-script-node.d.ts","sourceRoot":"","sources":["../../src/lib/geometry-script-node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGxD,sGAAsG;AACtG,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG;IAC3E,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,cAAc,SACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,KACnD,IAAI,IAAI,YAKiB,CAAA;AAE5B;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAAE,EACpE,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GACd,CAAC,CAUH;AAED,+DAA+D;AAC/D,eAAO,MAAM,YAAY,aACb,sBAAsB,SAC1B,MAAM,aACD,YAAY,CAAC,QAAQ,CAAC;UAIvB,QAAQ;;;;;;;;;;;;CAYjB,CAAA;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY;;;;;;EASpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,GACnD;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAKjD;AAED,KAAK,QAAQ,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAA;AAKlD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,QAAQ,EAClB,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EACtC,QAAQ,CAAC,EAAE,QAAQ,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED,wDAAwD;AACxD,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAC3C,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG1B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,QAU3D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAG3E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE;IACJ,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAA;IAC7B,MAAM,CAAC,EAAE;QAAE,QAAQ,EAAE;YAAE,MAAM,EAAE;gBAAE,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;aAAE,CAAA;SAAE,CAAA;KAAE,CAAA;IAC7D,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B,EACD,MAAM,EAAE,MAAM,GACb,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,EAC5C,MAAM,GAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAa,GAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CA0ClC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { refuse } from '../agent-tools/refusal.js';
|
|
1
2
|
import { matchPascalMaterial } from '../procedural-items/library-colors.js';
|
|
2
3
|
import { GeometrySourceMeta } from '../schema/geometry-metadata.js';
|
|
3
4
|
import { artifactUrl } from './artifact-store.js';
|
|
@@ -84,6 +85,19 @@ export function scriptedSize(manifest) {
|
|
|
84
85
|
const { min, max } = manifest.bounds;
|
|
85
86
|
return [max[0] - min[0], max[1] - min[1], max[2] - min[2]];
|
|
86
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* A compile whose bounds are not finite numbers cannot be sized or placed, and what is built from
|
|
90
|
+
* it would fail its schema with a raw validation array or carry a non-finite size: refused before
|
|
91
|
+
* anything is built, whichever scripted tool it came to. A mesh at a position that is not a number
|
|
92
|
+
* leaves NaN bounds (null once they crossed a JSON hop).
|
|
93
|
+
*/
|
|
94
|
+
export function requireMeasured(compiled, subject) {
|
|
95
|
+
const { min, max } = compiled.manifest.bounds;
|
|
96
|
+
if ([...min, ...max].every(Number.isFinite))
|
|
97
|
+
return;
|
|
98
|
+
const label = subject.label ? `"${subject.label}"` : (subject.nodeId ?? 'The object');
|
|
99
|
+
refuse('unmeasurable_object', `${label} cannot be measured: its bounds are not finite numbers (min [${min.map(String).join(', ')}], max [${max.map(String).join(', ')}]) with params ${JSON.stringify(compiled.params)}. A mesh in the script has a position, rotation or scale that is not a number (a helper called one argument short passes the next value in its place). Fix the script and call ${subject.tool} again; nothing was ${subject.nodeId ? 'changed' : 'added'}.`, { label: subject.label ?? subject.nodeId });
|
|
100
|
+
}
|
|
87
101
|
/**
|
|
88
102
|
* Where the script's origin (the bottom centre of what it built) sits in the
|
|
89
103
|
* node's own frame: a window or door is placed by its centre.
|
|
@@ -93,6 +107,18 @@ export function scriptedOrigin(node) {
|
|
|
93
107
|
return [0, 0, 0];
|
|
94
108
|
return [0, -scriptedSize(node.source.manifest)[1] / 2, 0];
|
|
95
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Where a ceiling item's origin sits in the ceiling's frame (y = 0 is the ceiling plane): a recessed
|
|
112
|
+
* fixture seats flush; a scripted object is origined at its top (the compiler's ceiling mount), so
|
|
113
|
+
* it hangs from its bounds' top; a catalog model is origined at its bottom and hangs its full height.
|
|
114
|
+
*/
|
|
115
|
+
export function ceilingSeatY(item, height) {
|
|
116
|
+
if (item.asset.recessed)
|
|
117
|
+
return 0;
|
|
118
|
+
if (item.source)
|
|
119
|
+
return -(item.source.manifest.bounds.max[1] ?? 0) * (item.scale?.[1] ?? 1);
|
|
120
|
+
return -height;
|
|
121
|
+
}
|
|
96
122
|
/**
|
|
97
123
|
* The item's controls from what the module emitted: a light switch for its
|
|
98
124
|
* lights, an open/close toggle for an `open` clip (closing plays `close`, or
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AnyNode, AnyNodeId, LevelNode } from '../schema/index.js';
|
|
2
|
+
import { type TerrainField } from './terrain-field.js';
|
|
3
|
+
/**
|
|
4
|
+
* Where a level stands against the ground as it actually lies: at grade, below it everywhere,
|
|
5
|
+
* or below it on part of its footprint — a hillside can bury half a floor whose other half
|
|
6
|
+
* walks out. `isLevelBelowGrade` alone only knows the flat datum, so a street raised 6 m over
|
|
7
|
+
* a garden level left every floor "at grade" and the ground never veiled.
|
|
8
|
+
*/
|
|
9
|
+
export type LevelGradeStanding = 'at-grade' | 'partly-below-grade' | 'below-grade';
|
|
10
|
+
/**
|
|
11
|
+
* `levelId`'s standing against the ground. When its building names a ground level, the line is the
|
|
12
|
+
* word: a level under it is below grade, and one at or over it is not buried by the stack's own
|
|
13
|
+
* elevations (a basement added under a house, a floor the stack lifted). Where the sculpted terrain
|
|
14
|
+
* stands over a floor's slabs (sampled against the field, the ground over each slab's own floor
|
|
15
|
+
* where it stands more than {@link BELOW_GRADE_TOLERANCE} above it: a split level's sunken room is
|
|
16
|
+
* judged at its own height, not at the raised part's) it still decides how much of that floor is
|
|
17
|
+
* buried: a hillside buries half a floor whose other half walks out, and a floor under the line the
|
|
18
|
+
* terrain leaves out of the ground reads as partly below. Without a named ground level, or a field,
|
|
19
|
+
* the flat datum answers exactly as before. `'at-grade'` for an id that is no level.
|
|
20
|
+
*/
|
|
21
|
+
export declare function levelGradeStanding(nodes: Record<AnyNodeId, AnyNode>, levelId: string): LevelGradeStanding;
|
|
22
|
+
/** Whether a floor at world Y `floorY` lies under a flat site's datum by more than the tolerance. */
|
|
23
|
+
export declare function floorBuriedOnFlatSite(floorY: number): boolean;
|
|
24
|
+
/** The site's terrain field for the site this level stands on, or null on a flat site. */
|
|
25
|
+
export declare function terrainFieldOverLevel(nodes: Record<AnyNodeId, AnyNode>, level: LevelNode): TerrainField | null;
|
|
26
|
+
/**
|
|
27
|
+
* World XZ samples over the level's floor slabs: each slab's corners plus a grid across it no
|
|
28
|
+
* coarser than the terrain's own spacing, capped so a big plate stays cheap. Slabs are the
|
|
29
|
+
* footprint the grade ring already trusts (`belowGradeFootprints`).
|
|
30
|
+
*/
|
|
31
|
+
export declare function footprintSamples(nodes: Record<AnyNodeId, AnyNode>, level: LevelNode, field: TerrainField): Array<[number, number]>;
|
|
32
|
+
/**
|
|
33
|
+
* {@link footprintSamples} with the world Y of the top of the floor slab each sample lies on as a
|
|
34
|
+
* third coordinate: a level with floors at several heights (a split level) is buried by the ground
|
|
35
|
+
* over each of them, not over the highest alone.
|
|
36
|
+
*/
|
|
37
|
+
export declare function footprintFloorSamples(nodes: Record<AnyNodeId, AnyNode>, level: LevelNode, field: TerrainField): Array<[number, number, number]>;
|
|
38
|
+
//# sourceMappingURL=grade-standing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grade-standing.d.ts","sourceRoot":"","sources":["../../src/lib/grade-standing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAgB,SAAS,EAAY,MAAM,WAAW,CAAA;AAUtF,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAI7D;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,oBAAoB,GAAG,aAAa,CAAA;AAKlF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,MAAM,GACd,kBAAkB,CAuBpB;AAsBD,qGAAqG;AACrG,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D;AAcD,0FAA0F;AAC1F,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,SAAS,GACf,YAAY,GAAG,IAAI,CAOrB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,YAAY,GAClB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEzB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACjC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,YAAY,GAClB,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAcjC"}
|