@pascal-app/nodes 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/dist/agent-operations/index.d.ts +12 -0
- package/dist/agent-operations/index.d.ts.map +1 -0
- package/dist/agent-operations/index.js +6 -0
- package/dist/agent-tools/index.d.ts +50 -0
- package/dist/agent-tools/index.d.ts.map +1 -0
- package/dist/agent-tools/index.js +21 -0
- package/dist/block/commands.d.ts +2 -2
- package/dist/block/contextual-help.js +1 -1
- package/dist/block/definition.d.ts +1 -1
- package/dist/block/definition.d.ts.map +1 -1
- package/dist/block/definition.js +30 -15
- package/dist/block/edit-session.d.ts +2 -2
- package/dist/block/edit-session.d.ts.map +1 -1
- package/dist/block/edit-session.js +1 -1
- package/dist/block/face-host.js +1 -1
- package/dist/block/floorplan.d.ts +11 -1
- package/dist/block/floorplan.d.ts.map +1 -1
- package/dist/block/floorplan.js +81 -13
- package/dist/block/geometry-snap.d.ts +2 -2
- package/dist/block/geometry-snap.js +2 -2
- package/dist/block/geometry.d.ts +2 -2
- package/dist/block/geometry.d.ts.map +1 -1
- package/dist/block/geometry.js +39 -24
- package/dist/block/gesture-wheel.d.ts.map +1 -1
- package/dist/block/hosted-edit.d.ts +1 -1
- package/dist/block/hosted-edit.d.ts.map +1 -1
- package/dist/block/hosted-edit.js +28 -3
- package/dist/block/interaction-sfx.d.ts +1 -1
- package/dist/block/last-operation.d.ts +1 -1
- package/dist/block/last-operation.js +2 -2
- package/dist/block/material-slots.d.ts +1 -3
- package/dist/block/material-slots.d.ts.map +1 -1
- package/dist/block/material-slots.js +1 -11
- package/dist/block/modal-face-operation.d.ts +2 -2
- package/dist/block/modal-face-operation.js +1 -1
- package/dist/block/paint.d.ts.map +1 -1
- package/dist/block/paint.js +5 -11
- package/dist/block/panel.d.ts.map +1 -1
- package/dist/block/panel.js +15 -10
- package/dist/block/parametrics.d.ts +1 -1
- package/dist/block/parametrics.js +1 -1
- package/dist/block/preview.js +1 -1
- package/dist/block/selection-geometry.d.ts +1 -1
- package/dist/block/selection-geometry.js +1 -1
- package/dist/block/selection.d.ts.map +1 -1
- package/dist/block/selection.js +20 -20
- package/dist/block/tool.d.ts.map +1 -1
- package/dist/block/tool.js +3 -3
- package/dist/block/use-block-face-operation.d.ts +4 -4
- package/dist/block/use-block-face-operation.js +6 -6
- package/dist/box-vent/definition.d.ts +1 -1
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.js +11 -13
- package/dist/box-vent/geometry.d.ts.map +1 -1
- package/dist/box-vent/geometry.js +2 -2
- package/dist/box-vent/index.d.ts +3 -3
- package/dist/box-vent/index.js +3 -3
- package/dist/box-vent/move-tool.js +4 -4
- package/dist/box-vent/paint.js +2 -2
- package/dist/box-vent/panel.d.ts.map +1 -1
- package/dist/box-vent/panel.js +7 -30
- package/dist/box-vent/parametrics.d.ts +1 -1
- package/dist/box-vent/parametrics.js +1 -1
- package/dist/box-vent/preview.d.ts +1 -1
- package/dist/box-vent/preview.d.ts.map +1 -1
- package/dist/box-vent/preview.js +2 -2
- package/dist/box-vent/renderer.d.ts.map +1 -1
- package/dist/box-vent/renderer.js +3 -3
- package/dist/box-vent/tool.d.ts.map +1 -1
- package/dist/box-vent/tool.js +7 -7
- package/dist/building/definition.d.ts +1 -1
- package/dist/building/definition.d.ts.map +1 -1
- package/dist/building/definition.js +5 -4
- package/dist/building/index.d.ts +1 -1
- package/dist/building/index.js +1 -1
- package/dist/building/move-tool.d.ts.map +1 -1
- package/dist/building/move-tool.js +2 -3
- package/dist/building/renderer.d.ts.map +1 -1
- package/dist/cabinet/__bench__/geometry.d.ts +2 -0
- package/dist/cabinet/__bench__/geometry.d.ts.map +1 -0
- package/dist/cabinet/__bench__/geometry.js +21 -0
- package/dist/cabinet/appliance-layout.d.ts +1 -1
- package/dist/cabinet/appliance-layout.d.ts.map +1 -1
- package/dist/cabinet/compartment-card.d.ts +1 -1
- package/dist/cabinet/compartment-card.js +12 -12
- package/dist/cabinet/continuous-placement.d.ts +1 -1
- package/dist/cabinet/continuous-placement.js +2 -2
- package/dist/cabinet/countertop-layout.d.ts +64 -53
- package/dist/cabinet/countertop-layout.d.ts.map +1 -1
- package/dist/cabinet/countertop-layout.js +3 -3
- package/dist/cabinet/definition.d.ts +1 -1
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +34 -30
- package/dist/cabinet/essential-controls.d.ts +7 -0
- package/dist/cabinet/essential-controls.d.ts.map +1 -0
- package/dist/cabinet/essential-controls.js +47 -0
- package/dist/cabinet/finish-operation.d.ts +9 -0
- package/dist/cabinet/finish-operation.d.ts.map +1 -0
- package/dist/cabinet/finish-operation.js +86 -0
- package/dist/cabinet/floorplan-move.js +3 -3
- package/dist/cabinet/floorplan.d.ts.map +1 -1
- package/dist/cabinet/floorplan.js +130 -33
- package/dist/cabinet/geometry/cooktop.d.ts +2 -2
- package/dist/cabinet/geometry/cooktop.d.ts.map +1 -1
- package/dist/cabinet/geometry/cooktop.js +55 -18
- package/dist/cabinet/geometry/dishwasher.d.ts +1 -1
- package/dist/cabinet/geometry/dishwasher.d.ts.map +1 -1
- package/dist/cabinet/geometry/dishwasher.js +5 -6
- package/dist/cabinet/geometry/fridge.d.ts +2 -2
- package/dist/cabinet/geometry/fridge.d.ts.map +1 -1
- package/dist/cabinet/geometry/fridge.js +49 -8
- package/dist/cabinet/geometry/fronts.d.ts +1 -1
- package/dist/cabinet/geometry/fronts.d.ts.map +1 -1
- package/dist/cabinet/geometry/fronts.js +22 -8
- package/dist/cabinet/geometry/hood.d.ts +2 -2
- package/dist/cabinet/geometry/hood.d.ts.map +1 -1
- package/dist/cabinet/geometry/hood.js +15 -3
- package/dist/cabinet/geometry/oven-microwave.d.ts +1 -1
- package/dist/cabinet/geometry/oven-microwave.d.ts.map +1 -1
- package/dist/cabinet/geometry/oven-microwave.js +46 -21
- package/dist/cabinet/geometry/pantry.d.ts +2 -2
- package/dist/cabinet/geometry/pantry.d.ts.map +1 -1
- package/dist/cabinet/geometry/pantry.js +11 -9
- package/dist/cabinet/geometry/run.d.ts.map +1 -1
- package/dist/cabinet/geometry/run.js +18 -8
- package/dist/cabinet/geometry/shared.d.ts +5 -4
- package/dist/cabinet/geometry/shared.d.ts.map +1 -1
- package/dist/cabinet/geometry/shared.js +78 -19
- package/dist/cabinet/geometry/sink.d.ts +2 -2
- package/dist/cabinet/geometry/sink.d.ts.map +1 -1
- package/dist/cabinet/geometry/sink.js +30 -12
- package/dist/cabinet/geometry.d.ts +1 -1
- package/dist/cabinet/geometry.d.ts.map +1 -1
- package/dist/cabinet/geometry.js +15 -11
- package/dist/cabinet/hosted-resize.d.ts +2 -2
- package/dist/cabinet/hosted-resize.d.ts.map +1 -1
- package/dist/cabinet/hosted-resize.js +3 -1
- package/dist/cabinet/index.d.ts +9 -5
- package/dist/cabinet/index.d.ts.map +1 -1
- package/dist/cabinet/index.js +9 -5
- package/dist/cabinet/insertion.d.ts.map +1 -1
- package/dist/cabinet/insertion.js +3 -1
- package/dist/cabinet/interaction.js +1 -1
- package/dist/cabinet/kitchen-catalog.d.ts +14 -0
- package/dist/cabinet/kitchen-catalog.d.ts.map +1 -0
- package/dist/cabinet/kitchen-catalog.js +62 -0
- package/dist/cabinet/kitchen-collection.d.ts +11 -0
- package/dist/cabinet/kitchen-collection.d.ts.map +1 -0
- package/dist/cabinet/kitchen-collection.js +19 -0
- package/dist/cabinet/kitchen-module-actions.d.ts +8 -0
- package/dist/cabinet/kitchen-module-actions.d.ts.map +1 -0
- package/dist/cabinet/kitchen-module-actions.js +117 -0
- package/dist/cabinet/kitchen-placement.d.ts +3 -0
- package/dist/cabinet/kitchen-placement.d.ts.map +1 -0
- package/dist/cabinet/kitchen-placement.js +16 -0
- package/dist/cabinet/move-frame.js +4 -4
- package/dist/cabinet/neighbor-placement.d.ts +335 -0
- package/dist/cabinet/neighbor-placement.d.ts.map +1 -0
- package/dist/cabinet/neighbor-placement.js +48 -0
- package/dist/cabinet/opening-clearance.d.ts +22 -0
- package/dist/cabinet/opening-clearance.d.ts.map +1 -0
- package/dist/cabinet/opening-clearance.js +158 -0
- package/dist/cabinet/paint.js +1 -1
- package/dist/cabinet/panel-visibility.js +2 -2
- package/dist/cabinet/panel.d.ts.map +1 -1
- package/dist/cabinet/panel.js +86 -77
- package/dist/cabinet/parametrics.js +3 -3
- package/dist/cabinet/placement-dimensions.js +2 -2
- package/dist/cabinet/placement-notice.d.ts +6 -0
- package/dist/cabinet/placement-notice.d.ts.map +1 -0
- package/dist/cabinet/placement-notice.js +34 -0
- package/dist/cabinet/placement-status.d.ts +2 -0
- package/dist/cabinet/placement-status.d.ts.map +1 -1
- package/dist/cabinet/placement-status.js +3 -1
- package/dist/cabinet/placement-type.d.ts.map +1 -1
- package/dist/cabinet/preset-width-debt.js +2 -2
- package/dist/cabinet/presets.d.ts +3 -1
- package/dist/cabinet/presets.d.ts.map +1 -1
- package/dist/cabinet/presets.js +27 -8
- package/dist/cabinet/quick-action-icons.js +1 -1
- package/dist/cabinet/quick-actions.js +7 -7
- package/dist/cabinet/resize-limits.d.ts.map +1 -1
- package/dist/cabinet/reveals.d.ts +16 -16
- package/dist/cabinet/reveals.d.ts.map +1 -1
- package/dist/cabinet/run-finishing.d.ts +168 -0
- package/dist/cabinet/run-finishing.d.ts.map +1 -0
- package/dist/cabinet/run-finishing.js +100 -0
- package/dist/cabinet/run-layout.d.ts.map +1 -1
- package/dist/cabinet/run-layout.js +28 -8
- package/dist/cabinet/run-ops.d.ts +61 -50
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/run-ops.js +6 -6
- package/dist/cabinet/run-panel.d.ts +11 -0
- package/dist/cabinet/run-panel.d.ts.map +1 -1
- package/dist/cabinet/run-panel.js +43 -17
- package/dist/cabinet/scene-action.js +1 -1
- package/dist/cabinet/stack-transitions.d.ts +1 -1
- package/dist/cabinet/stack-transitions.js +2 -2
- package/dist/cabinet/stack.d.ts +60 -60
- package/dist/cabinet/stack.d.ts.map +1 -1
- package/dist/cabinet/stack.js +1 -1
- package/dist/cabinet/surfaces.js +3 -3
- package/dist/cabinet/system.d.ts.map +1 -1
- package/dist/cabinet/system.js +4 -4
- package/dist/cabinet/tool.d.ts +1 -2
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +228 -105
- package/dist/cabinet/validation.js +3 -3
- package/dist/cabinet/wall-snap.d.ts +1 -1
- package/dist/cabinet/wall-snap.d.ts.map +1 -1
- package/dist/cabinet/wall-snap.js +10 -10
- package/dist/ceiling/boundary-editor.d.ts.map +1 -1
- package/dist/ceiling/boundary-editor.js +5 -3
- package/dist/ceiling/definition.d.ts +5 -5
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +31 -29
- package/dist/ceiling/floorplan-affordances.d.ts +138 -58
- package/dist/ceiling/floorplan-affordances.d.ts.map +1 -1
- package/dist/ceiling/floorplan-affordances.js +1 -2
- package/dist/ceiling/floorplan-move.d.ts.map +1 -1
- package/dist/ceiling/floorplan-move.js +1 -2
- package/dist/ceiling/floorplan.d.ts +1 -1
- package/dist/ceiling/floorplan.d.ts.map +1 -1
- package/dist/ceiling/floorplan.js +2 -1
- package/dist/ceiling/height-bounds.d.ts +19 -0
- package/dist/ceiling/height-bounds.d.ts.map +1 -0
- package/dist/ceiling/height-bounds.js +24 -0
- package/dist/ceiling/hole-editor.d.ts.map +1 -1
- package/dist/ceiling/hole-editor.js +3 -4
- package/dist/ceiling/index.d.ts +2 -2
- package/dist/ceiling/index.js +2 -2
- package/dist/ceiling/materials.d.ts +8 -4
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +55 -21
- package/dist/ceiling/move-tool.d.ts.map +1 -1
- package/dist/ceiling/paint.d.ts +2 -8
- package/dist/ceiling/paint.d.ts.map +1 -1
- package/dist/ceiling/paint.js +112 -24
- package/dist/ceiling/panel.d.ts.map +1 -1
- package/dist/ceiling/panel.js +42 -25
- package/dist/ceiling/parametrics.d.ts +1 -1
- package/dist/ceiling/parametrics.js +1 -1
- package/dist/ceiling/renderer.d.ts.map +1 -1
- package/dist/ceiling/renderer.js +56 -21
- package/dist/ceiling/system.d.ts.map +1 -1
- package/dist/ceiling/tool.d.ts.map +1 -1
- package/dist/ceiling/tool.js +1 -1
- package/dist/chimney/definition.d.ts +1 -1
- package/dist/chimney/definition.d.ts.map +1 -1
- package/dist/chimney/definition.js +9 -8
- package/dist/chimney/floorplan.js +1 -1
- package/dist/chimney/holes.js +1 -1
- package/dist/chimney/index.d.ts +3 -3
- package/dist/chimney/index.js +3 -3
- package/dist/chimney/move-tool.d.ts.map +1 -1
- package/dist/chimney/move-tool.js +11 -5
- package/dist/chimney/paint.d.ts.map +1 -1
- package/dist/chimney/paint.js +3 -10
- package/dist/chimney/panel.js +4 -4
- package/dist/chimney/parametrics.d.ts +1 -1
- package/dist/chimney/parametrics.js +1 -1
- package/dist/chimney/presets.d.ts +1 -1
- package/dist/chimney/preview.d.ts.map +1 -1
- package/dist/chimney/preview.js +2 -2
- package/dist/chimney/renderer.d.ts.map +1 -1
- package/dist/chimney/renderer.js +4 -4
- package/dist/chimney/roof-trim.js +2 -2
- package/dist/chimney/tool.d.ts.map +1 -1
- package/dist/chimney/tool.js +6 -6
- package/dist/column/definition.d.ts +1 -1
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +39 -15
- package/dist/column/floorplan-affordances.d.ts.map +1 -1
- package/dist/column/floorplan-affordances.js +7 -2
- package/dist/column/floorplan-move.js +2 -2
- package/dist/column/floorplan.d.ts +1 -1
- package/dist/column/floorplan.d.ts.map +1 -1
- package/dist/column/floorplan.js +48 -3
- package/dist/column/hosted-resize.d.ts +134 -29
- package/dist/column/hosted-resize.d.ts.map +1 -1
- package/dist/column/hosted-resize.js +1 -1
- package/dist/column/index.d.ts +1 -1
- package/dist/column/index.js +1 -1
- package/dist/column/paint.js +1 -1
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +152 -149
- package/dist/column/parametrics.d.ts +1 -1
- package/dist/column/parametrics.js +2 -2
- package/dist/column/renderer.d.ts.map +1 -1
- package/dist/column/renderer.js +8 -6
- package/dist/column/surface.d.ts.map +1 -1
- package/dist/column/surface.js +8 -1
- package/dist/column/tool.d.ts.map +1 -1
- package/dist/column/tool.js +3 -3
- package/dist/construction-dimension/definition.d.ts +1 -1
- package/dist/construction-dimension/definition.js +6 -6
- package/dist/construction-dimension/floorplan-affordances.js +1 -1
- package/dist/construction-dimension/floorplan-tool.d.ts.map +1 -1
- package/dist/construction-dimension/floorplan-tool.js +1 -1
- package/dist/construction-dimension/floorplan.js +11 -7
- package/dist/construction-dimension/index.d.ts +3 -3
- package/dist/construction-dimension/index.js +3 -3
- package/dist/construction-dimension/panel.js +1 -1
- package/dist/construction-dimension/parametrics.js +1 -1
- package/dist/cupola/definition.d.ts +1 -1
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.js +11 -16
- package/dist/cupola/geometry.d.ts.map +1 -1
- package/dist/cupola/geometry.js +1 -1
- package/dist/cupola/index.d.ts +3 -3
- package/dist/cupola/index.js +3 -3
- package/dist/cupola/move-tool.js +4 -4
- package/dist/cupola/paint.js +2 -2
- package/dist/cupola/panel.d.ts.map +1 -1
- package/dist/cupola/panel.js +6 -24
- package/dist/cupola/parametrics.d.ts +1 -1
- package/dist/cupola/parametrics.js +1 -1
- package/dist/cupola/preview.d.ts +1 -1
- package/dist/cupola/preview.d.ts.map +1 -1
- package/dist/cupola/preview.js +2 -2
- package/dist/cupola/renderer.d.ts.map +1 -1
- package/dist/cupola/renderer.js +3 -3
- package/dist/cupola/tool.d.ts.map +1 -1
- package/dist/cupola/tool.js +7 -7
- package/dist/door/contextual-dimensions.js +1 -1
- package/dist/door/definition.d.ts +1 -1
- package/dist/door/definition.d.ts.map +1 -1
- package/dist/door/definition.js +38 -25
- package/dist/door/door-math.d.ts +6 -11
- package/dist/door/door-math.d.ts.map +1 -1
- package/dist/door/door-math.js +15 -16
- package/dist/door/floorplan-affordances.js +2 -2
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +7 -5
- package/dist/door/floorplan.d.ts.map +1 -1
- package/dist/door/floorplan.js +57 -23
- package/dist/door/index.d.ts +2 -2
- package/dist/door/index.js +2 -2
- package/dist/door/mechanism.d.ts +4 -0
- package/dist/door/mechanism.d.ts.map +1 -0
- package/dist/door/mechanism.js +24 -0
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +82 -58
- package/dist/door/paint.d.ts.map +1 -1
- package/dist/door/paint.js +4 -1
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +43 -268
- package/dist/door/parametrics.d.ts +1 -1
- package/dist/door/parametrics.js +1 -1
- package/dist/door/placement.d.ts +45 -0
- package/dist/door/placement.d.ts.map +1 -0
- package/dist/door/placement.js +51 -0
- package/dist/door/preview.d.ts +1 -1
- package/dist/door/preview.d.ts.map +1 -1
- package/dist/door/preview.js +3 -1
- package/dist/door/renderer.d.ts.map +1 -1
- package/dist/door/renderer.js +4 -3
- package/dist/door/system.d.ts.map +1 -1
- package/dist/door/system.js +1 -1
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +99 -28
- package/dist/dormer/csg-geometry.d.ts.map +1 -1
- package/dist/dormer/csg-geometry.js +3 -1
- package/dist/dormer/definition.d.ts +1 -1
- package/dist/dormer/definition.d.ts.map +1 -1
- package/dist/dormer/definition.js +10 -9
- package/dist/dormer/index.d.ts +4 -4
- package/dist/dormer/index.js +3 -3
- package/dist/dormer/move-tool.d.ts.map +1 -1
- package/dist/dormer/move-tool.js +3 -3
- package/dist/dormer/paint.d.ts.map +1 -1
- package/dist/dormer/paint.js +2 -5
- package/dist/dormer/panel-actions-section.js +1 -1
- package/dist/dormer/panel-windows-section.js +1 -1
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +12 -22
- package/dist/dormer/parametrics.d.ts +1 -1
- package/dist/dormer/parametrics.js +1 -1
- package/dist/dormer/placement-guides.js +3 -3
- package/dist/dormer/preview.d.ts +1 -1
- package/dist/dormer/preview.d.ts.map +1 -1
- package/dist/dormer/preview.js +2 -2
- package/dist/dormer/renderer.d.ts +1 -1
- package/dist/dormer/renderer.d.ts.map +1 -1
- package/dist/dormer/renderer.js +2 -2
- package/dist/dormer/tool.d.ts.map +1 -1
- package/dist/dormer/tool.js +6 -6
- package/dist/dormer/use-dormer-placement.js +3 -3
- package/dist/downspout/definition.d.ts +1 -1
- package/dist/downspout/definition.d.ts.map +1 -1
- package/dist/downspout/definition.js +11 -10
- package/dist/downspout/geometry.d.ts +1 -1
- package/dist/downspout/geometry.js +2 -2
- package/dist/downspout/index.d.ts +3 -3
- package/dist/downspout/index.js +3 -3
- package/dist/downspout/parametrics.d.ts +1 -1
- package/dist/downspout/parametrics.js +1 -1
- package/dist/downspout/preview.d.ts +2 -2
- package/dist/downspout/preview.d.ts.map +1 -1
- package/dist/downspout/preview.js +3 -3
- package/dist/downspout/renderer.d.ts.map +1 -1
- package/dist/downspout/renderer.js +5 -5
- package/dist/downspout/routing.d.ts +2 -2
- package/dist/downspout/routing.d.ts.map +1 -1
- package/dist/downspout/routing.js +5 -4
- package/dist/downspout/system.d.ts.map +1 -1
- package/dist/downspout/tool.d.ts.map +1 -1
- package/dist/downspout/tool.js +7 -7
- package/dist/duct-fitting/accessory-geometry.js +1 -1
- package/dist/duct-fitting/definition.d.ts +1 -1
- package/dist/duct-fitting/definition.d.ts.map +1 -1
- package/dist/duct-fitting/definition.js +12 -11
- package/dist/duct-fitting/floorplan.d.ts +1 -1
- package/dist/duct-fitting/floorplan.js +5 -5
- package/dist/duct-fitting/geometry.d.ts +1 -1
- package/dist/duct-fitting/geometry.d.ts.map +1 -1
- package/dist/duct-fitting/geometry.js +4 -4
- package/dist/duct-fitting/index.d.ts +4 -4
- package/dist/duct-fitting/index.js +4 -4
- package/dist/duct-fitting/inspector-editors.d.ts +1 -1
- package/dist/duct-fitting/move-tool.d.ts.map +1 -1
- package/dist/duct-fitting/move-tool.js +12 -6
- package/dist/duct-fitting/parametrics.d.ts +1 -1
- package/dist/duct-fitting/parametrics.js +3 -3
- package/dist/duct-fitting/ports.d.ts +1 -1
- package/dist/duct-fitting/selection.d.ts.map +1 -1
- package/dist/duct-fitting/selection.js +8 -9
- package/dist/duct-fitting/tool.d.ts +1 -1
- package/dist/duct-fitting/tool.d.ts.map +1 -1
- package/dist/duct-fitting/tool.js +14 -15
- package/dist/duct-segment/continuation.d.ts +3 -3
- package/dist/duct-segment/continuation.d.ts.map +1 -1
- package/dist/duct-segment/continuation.js +2 -2
- package/dist/duct-segment/definition.d.ts +1 -1
- package/dist/duct-segment/definition.d.ts.map +1 -1
- package/dist/duct-segment/definition.js +14 -14
- package/dist/duct-segment/floorplan.d.ts +1 -1
- package/dist/duct-segment/floorplan.js +3 -3
- package/dist/duct-segment/geometry.d.ts +1 -1
- package/dist/duct-segment/geometry.d.ts.map +1 -1
- package/dist/duct-segment/geometry.js +2 -2
- package/dist/duct-segment/index.d.ts +3 -3
- package/dist/duct-segment/index.js +3 -3
- package/dist/duct-segment/move-tool.d.ts.map +1 -1
- package/dist/duct-segment/move-tool.js +16 -9
- package/dist/duct-segment/parametrics.d.ts +1 -1
- package/dist/duct-segment/parametrics.js +5 -5
- package/dist/duct-segment/selection.d.ts.map +1 -1
- package/dist/duct-segment/selection.js +13 -12
- package/dist/duct-segment/tool.d.ts +1 -2
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +22 -18
- package/dist/duct-terminal/definition.d.ts +1 -1
- package/dist/duct-terminal/definition.js +6 -6
- package/dist/duct-terminal/floorplan.d.ts +1 -1
- package/dist/duct-terminal/floorplan.js +1 -1
- package/dist/duct-terminal/geometry.d.ts +1 -1
- package/dist/duct-terminal/geometry.js +2 -2
- package/dist/duct-terminal/index.d.ts +4 -4
- package/dist/duct-terminal/index.js +4 -4
- package/dist/duct-terminal/parametrics.d.ts +1 -1
- package/dist/duct-terminal/ports.d.ts +1 -1
- package/dist/duct-terminal/ports.js +1 -1
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +11 -12
- package/dist/elevator/definition.d.ts +1 -1
- package/dist/elevator/definition.d.ts.map +1 -1
- package/dist/elevator/definition.js +8 -9
- package/dist/elevator/floorplan-affordances.js +1 -1
- package/dist/elevator/index.d.ts +1 -1
- package/dist/elevator/index.js +1 -1
- package/dist/elevator/paint.js +1 -1
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +14 -36
- package/dist/elevator/parametrics.js +2 -2
- package/dist/elevator/renderer.d.ts.map +1 -1
- package/dist/elevator/renderer.js +4 -5
- package/dist/elevator/system.js +1 -1
- package/dist/eyebrow-vent/definition.d.ts +1 -1
- package/dist/eyebrow-vent/definition.d.ts.map +1 -1
- package/dist/eyebrow-vent/definition.js +11 -13
- package/dist/eyebrow-vent/geometry.d.ts.map +1 -1
- package/dist/eyebrow-vent/geometry.js +1 -1
- package/dist/eyebrow-vent/index.d.ts +3 -3
- package/dist/eyebrow-vent/index.js +3 -3
- package/dist/eyebrow-vent/move-tool.js +4 -4
- package/dist/eyebrow-vent/paint.d.ts.map +1 -1
- package/dist/eyebrow-vent/paint.js +5 -8
- package/dist/eyebrow-vent/panel.d.ts.map +1 -1
- package/dist/eyebrow-vent/panel.js +6 -24
- package/dist/eyebrow-vent/parametrics.d.ts +1 -1
- package/dist/eyebrow-vent/parametrics.js +1 -1
- package/dist/eyebrow-vent/preview.d.ts +1 -1
- package/dist/eyebrow-vent/preview.d.ts.map +1 -1
- package/dist/eyebrow-vent/preview.js +2 -2
- package/dist/eyebrow-vent/renderer.d.ts.map +1 -1
- package/dist/eyebrow-vent/renderer.js +3 -3
- package/dist/eyebrow-vent/tool.d.ts.map +1 -1
- package/dist/eyebrow-vent/tool.js +7 -7
- package/dist/fence/actions/move-endpoint.d.ts +1 -1
- package/dist/fence/actions/move-endpoint.d.ts.map +1 -1
- package/dist/fence/actions/move-endpoint.js +2 -1
- package/dist/fence/curve-tool.d.ts.map +1 -1
- package/dist/fence/definition.d.ts +3 -2
- package/dist/fence/definition.d.ts.map +1 -1
- package/dist/fence/definition.js +113 -43
- package/dist/fence/drafting.d.ts +42 -0
- package/dist/fence/drafting.d.ts.map +1 -0
- package/dist/fence/drafting.js +269 -0
- package/dist/fence/feature-tool.d.ts +4 -0
- package/dist/fence/feature-tool.d.ts.map +1 -0
- package/dist/fence/feature-tool.js +140 -0
- package/dist/fence/features.d.ts +2 -0
- package/dist/fence/features.d.ts.map +1 -0
- package/dist/fence/features.js +12 -0
- package/dist/fence/floorplan-affordances.d.ts.map +1 -1
- package/dist/fence/floorplan-affordances.js +2 -1
- package/dist/fence/floorplan.d.ts +2 -3
- package/dist/fence/floorplan.d.ts.map +1 -1
- package/dist/fence/floorplan.js +131 -71
- package/dist/fence/geometry-parts.d.ts +50 -0
- package/dist/fence/geometry-parts.d.ts.map +1 -0
- package/dist/fence/geometry-parts.js +1144 -0
- package/dist/fence/geometry.d.ts +2 -3
- package/dist/fence/geometry.d.ts.map +1 -1
- package/dist/fence/geometry.js +85 -8
- package/dist/fence/index.d.ts +3 -2
- package/dist/fence/index.d.ts.map +1 -1
- package/dist/fence/index.js +3 -2
- package/dist/fence/inspector-editors.d.ts +15 -0
- package/dist/fence/inspector-editors.d.ts.map +1 -1
- package/dist/fence/inspector-editors.js +128 -3
- package/dist/fence/lift.d.ts +3 -3
- package/dist/fence/lift.d.ts.map +1 -1
- package/dist/fence/lift.js +15 -3
- package/dist/fence/move-control-point-tool.d.ts.map +1 -1
- package/dist/fence/move-endpoint-tool.d.ts.map +1 -1
- package/dist/fence/move-endpoint-tool.js +4 -4
- package/dist/fence/move-tangent-tool.d.ts.map +1 -1
- package/dist/fence/move-tool.d.ts.map +1 -1
- package/dist/fence/move-tool.js +2 -1
- package/dist/fence/paint.js +1 -1
- package/dist/fence/panel-model.d.ts +4 -0
- package/dist/fence/panel-model.d.ts.map +1 -0
- package/dist/fence/panel-model.js +12 -0
- package/dist/fence/parametrics.d.ts +1 -13
- package/dist/fence/parametrics.d.ts.map +1 -1
- package/dist/fence/parametrics.js +185 -18
- package/dist/fence/system.d.ts.map +1 -1
- package/dist/fence/system.js +142 -32
- package/dist/fence/tool.d.ts.map +1 -1
- package/dist/fence/tool.js +339 -56
- package/dist/fence-feature/actions.d.ts +7 -0
- package/dist/fence-feature/actions.d.ts.map +1 -0
- package/dist/fence-feature/actions.js +26 -0
- package/dist/fence-feature/definition.d.ts +4 -0
- package/dist/fence-feature/definition.d.ts.map +1 -0
- package/dist/fence-feature/definition.js +116 -0
- package/dist/fence-feature/floorplan-affordances.d.ts +3 -0
- package/dist/fence-feature/floorplan-affordances.d.ts.map +1 -0
- package/dist/fence-feature/floorplan-affordances.js +37 -0
- package/dist/fence-feature/floorplan.d.ts +4 -0
- package/dist/fence-feature/floorplan.d.ts.map +1 -0
- package/dist/fence-feature/floorplan.js +120 -0
- package/dist/fence-feature/geometry.d.ts +5 -0
- package/dist/fence-feature/geometry.d.ts.map +1 -0
- package/dist/fence-feature/geometry.js +43 -0
- package/dist/fence-feature/handles.d.ts +5 -0
- package/dist/fence-feature/handles.d.ts.map +1 -0
- package/dist/fence-feature/handles.js +84 -0
- package/dist/fence-feature/inspector.d.ts +6 -0
- package/dist/fence-feature/inspector.d.ts.map +1 -0
- package/dist/fence-feature/inspector.js +214 -0
- package/dist/fence-feature/interaction.d.ts +3 -0
- package/dist/fence-feature/interaction.d.ts.map +1 -0
- package/dist/fence-feature/interaction.js +41 -0
- package/dist/fence-feature/move-session.d.ts +9 -0
- package/dist/fence-feature/move-session.d.ts.map +1 -0
- package/dist/fence-feature/move-session.js +48 -0
- package/dist/fence-feature/move-tool.d.ts +5 -0
- package/dist/fence-feature/move-tool.d.ts.map +1 -0
- package/dist/fence-feature/move-tool.js +58 -0
- package/dist/fence-feature/pick-target.d.ts +7 -0
- package/dist/fence-feature/pick-target.d.ts.map +1 -0
- package/dist/fence-feature/pick-target.js +52 -0
- package/dist/floor-opening/definition.d.ts +3 -0
- package/dist/floor-opening/definition.d.ts.map +1 -0
- package/dist/floor-opening/definition.js +41 -0
- package/dist/floor-opening/floorplan.d.ts +156 -0
- package/dist/floor-opening/floorplan.d.ts.map +1 -0
- package/dist/floor-opening/floorplan.js +63 -0
- package/dist/guide/definition.d.ts +1 -1
- package/dist/guide/definition.js +4 -4
- package/dist/guide/index.d.ts +1 -1
- package/dist/guide/index.js +1 -1
- package/dist/guide/renderer.d.ts.map +1 -1
- package/dist/guide/system.d.ts.map +1 -1
- package/dist/gutter/definition.d.ts +1 -1
- package/dist/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.js +12 -11
- package/dist/gutter/downspouts-panel.js +3 -3
- package/dist/gutter/eave-align.js +2 -2
- package/dist/gutter/eave-snap.d.ts.map +1 -1
- package/dist/gutter/eave-snap.js +2 -2
- package/dist/gutter/floorplan.d.ts.map +1 -1
- package/dist/gutter/floorplan.js +5 -4
- package/dist/gutter/geometry.d.ts +1 -1
- package/dist/gutter/geometry.js +3 -3
- package/dist/gutter/index.d.ts +3 -3
- package/dist/gutter/index.js +3 -3
- package/dist/gutter/move-tool.js +4 -4
- package/dist/gutter/outlet-lookup.d.ts +1 -1
- package/dist/gutter/outlet-lookup.js +1 -1
- package/dist/gutter/paint.js +1 -1
- package/dist/gutter/parametrics.d.ts +1 -1
- package/dist/gutter/parametrics.js +1 -1
- package/dist/gutter/preview.d.ts +1 -1
- package/dist/gutter/preview.d.ts.map +1 -1
- package/dist/gutter/preview.js +3 -3
- package/dist/gutter/renderer.d.ts.map +1 -1
- package/dist/gutter/renderer.js +6 -6
- package/dist/gutter/tool.d.ts.map +1 -1
- package/dist/gutter/tool.js +7 -7
- package/dist/hvac-equipment/definition.d.ts +1 -1
- package/dist/hvac-equipment/definition.js +6 -6
- package/dist/hvac-equipment/floorplan.d.ts +1 -1
- package/dist/hvac-equipment/floorplan.js +2 -2
- package/dist/hvac-equipment/geometry.d.ts +1 -1
- package/dist/hvac-equipment/geometry.js +2 -2
- package/dist/hvac-equipment/index.d.ts +4 -4
- package/dist/hvac-equipment/index.js +4 -4
- package/dist/hvac-equipment/parametrics.d.ts +1 -1
- package/dist/hvac-equipment/ports.d.ts +1 -1
- package/dist/hvac-equipment/ports.js +1 -1
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +7 -8
- package/dist/imported-mesh/definition.d.ts +1 -1
- package/dist/imported-mesh/definition.d.ts.map +1 -1
- package/dist/imported-mesh/definition.js +5 -3
- package/dist/imported-mesh/geometry.d.ts +1 -1
- package/dist/imported-mesh/geometry.d.ts.map +1 -1
- package/dist/imported-mesh/geometry.js +40 -12
- package/dist/imported-mesh/index.d.ts +3 -3
- package/dist/imported-mesh/index.js +3 -3
- package/dist/index.d.ts +65 -50
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +122 -100
- package/dist/item/authored-face-host.d.ts +10 -0
- package/dist/item/authored-face-host.d.ts.map +1 -0
- package/dist/item/authored-face-host.js +87 -0
- package/dist/item/authored-params.d.ts +15 -0
- package/dist/item/authored-params.d.ts.map +1 -0
- package/dist/item/authored-params.js +72 -0
- package/dist/item/definition.d.ts +3 -3
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.js +46 -15
- package/dist/item/floorplan-move.js +4 -4
- package/dist/item/floorplan.d.ts +1 -1
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +36 -6
- package/dist/item/index.d.ts +3 -2
- package/dist/item/index.d.ts.map +1 -1
- package/dist/item/index.js +3 -2
- package/dist/item/model-loader.d.ts +7 -0
- package/dist/item/model-loader.d.ts.map +1 -1
- package/dist/item/model-loader.js +104 -23
- package/dist/item/move-tool.d.ts.map +1 -1
- package/dist/item/move-tool.js +4 -4
- package/dist/item/paint.d.ts.map +1 -1
- package/dist/item/paint.js +5 -24
- package/dist/item/panel.d.ts +1 -3
- package/dist/item/panel.d.ts.map +1 -1
- package/dist/item/panel.js +23 -27
- package/dist/item/parametrics.d.ts +1 -1
- package/dist/item/parametrics.js +1 -1
- package/dist/item/placement-notice.d.ts +14 -0
- package/dist/item/placement-notice.d.ts.map +1 -0
- package/dist/item/placement-notice.js +38 -0
- package/dist/item/plan-symbols.d.ts +67 -0
- package/dist/item/plan-symbols.d.ts.map +1 -0
- package/dist/item/plan-symbols.js +407 -0
- package/dist/item/renderer.d.ts +10 -0
- package/dist/item/renderer.d.ts.map +1 -1
- package/dist/item/renderer.js +78 -48
- package/dist/item/script-param-defaults.d.ts +12 -0
- package/dist/item/script-param-defaults.d.ts.map +1 -0
- package/dist/item/script-param-defaults.js +34 -0
- package/dist/item/system.d.ts.map +1 -1
- package/dist/item/system.js +7 -2
- package/dist/item/tool.d.ts.map +1 -1
- package/dist/item/tool.js +3 -3
- package/dist/item/wall-object-observations.d.ts +6 -0
- package/dist/item/wall-object-observations.d.ts.map +1 -0
- package/dist/item/wall-object-observations.js +260 -0
- package/dist/lean-to-extension/assembly.d.ts +2 -2
- package/dist/lean-to-extension/assembly.js +8 -8
- package/dist/lean-to-extension/canopy-joint.d.ts +1 -1
- package/dist/lean-to-extension/canopy-joint.js +1 -1
- package/dist/lean-to-extension/corner-joint.js +4 -4
- package/dist/lean-to-extension/definition.d.ts +1 -1
- package/dist/lean-to-extension/definition.d.ts.map +1 -1
- package/dist/lean-to-extension/definition.js +18 -18
- package/dist/lean-to-extension/floorplan-affordances.js +4 -4
- package/dist/lean-to-extension/floorplan-move.js +4 -4
- package/dist/lean-to-extension/floorplan-tool.d.ts.map +1 -1
- package/dist/lean-to-extension/floorplan-tool.js +7 -7
- package/dist/lean-to-extension/floorplan.js +5 -5
- package/dist/lean-to-extension/geometry.d.ts.map +1 -1
- package/dist/lean-to-extension/geometry.js +5 -5
- package/dist/lean-to-extension/index.d.ts +7 -7
- package/dist/lean-to-extension/index.js +7 -7
- package/dist/lean-to-extension/layout.d.ts +1 -1
- package/dist/lean-to-extension/layout.d.ts.map +1 -1
- package/dist/lean-to-extension/layout.js +6 -7
- package/dist/lean-to-extension/managed-preview.js +4 -4
- package/dist/lean-to-extension/move-tool.d.ts.map +1 -1
- package/dist/lean-to-extension/move-tool.js +5 -5
- package/dist/lean-to-extension/paint.js +1 -1
- package/dist/lean-to-extension/parametrics.js +1 -1
- package/dist/lean-to-extension/placement-validation.d.ts.map +1 -1
- package/dist/lean-to-extension/placement-validation.js +9 -9
- package/dist/lean-to-extension/placement.d.ts +1 -1
- package/dist/lean-to-extension/placement.js +6 -6
- package/dist/lean-to-extension/plan-footprint.js +2 -2
- package/dist/lean-to-extension/preview-geometry.js +1 -1
- package/dist/lean-to-extension/preview.d.ts.map +1 -1
- package/dist/lean-to-extension/preview.js +1 -1
- package/dist/lean-to-extension/renderer.d.ts.map +1 -1
- package/dist/lean-to-extension/renderer.js +1 -1
- package/dist/lean-to-extension/roof-attachment.d.ts.map +1 -1
- package/dist/lean-to-extension/roof-attachment.js +4 -4
- package/dist/lean-to-extension/system.d.ts.map +1 -1
- package/dist/lean-to-extension/system.js +10 -10
- package/dist/lean-to-extension/tool.d.ts.map +1 -1
- package/dist/lean-to-extension/tool.js +16 -16
- package/dist/level/definition.d.ts +1 -1
- package/dist/level/definition.d.ts.map +1 -1
- package/dist/level/definition.js +5 -4
- package/dist/level/index.d.ts +1 -1
- package/dist/level/index.js +1 -1
- package/dist/level/renderer.d.ts.map +1 -1
- package/dist/level/system.d.ts.map +1 -1
- package/dist/lineset/definition.d.ts +1 -1
- package/dist/lineset/definition.js +8 -8
- package/dist/lineset/floorplan.d.ts +1 -1
- package/dist/lineset/floorplan.js +1 -1
- package/dist/lineset/geometry.d.ts +1 -1
- package/dist/lineset/geometry.js +1 -1
- package/dist/lineset/index.d.ts +3 -3
- package/dist/lineset/index.js +3 -3
- package/dist/lineset/move-tool.d.ts.map +1 -1
- package/dist/lineset/move-tool.js +10 -4
- package/dist/lineset/parametrics.d.ts +1 -1
- package/dist/lineset/selection.d.ts.map +1 -1
- package/dist/lineset/selection.js +1 -1
- package/dist/lineset/tool.d.ts.map +1 -1
- package/dist/lineset/tool.js +7 -8
- package/dist/liquid-line/definition.d.ts +1 -1
- package/dist/liquid-line/definition.js +8 -8
- package/dist/liquid-line/floorplan.d.ts +1 -1
- package/dist/liquid-line/floorplan.js +1 -1
- package/dist/liquid-line/geometry.d.ts +1 -1
- package/dist/liquid-line/geometry.js +1 -1
- package/dist/liquid-line/index.d.ts +4 -4
- package/dist/liquid-line/index.js +4 -4
- package/dist/liquid-line/move-tool.d.ts.map +1 -1
- package/dist/liquid-line/move-tool.js +9 -3
- package/dist/liquid-line/parametrics.d.ts +1 -1
- package/dist/liquid-line/selection.d.ts.map +1 -1
- package/dist/liquid-line/selection.js +1 -1
- package/dist/liquid-line/tool.d.ts.map +1 -1
- package/dist/liquid-line/tool.js +9 -10
- package/dist/measurement/definition.d.ts +1 -1
- package/dist/measurement/definition.js +7 -7
- package/dist/measurement/edit.d.ts +1 -1
- package/dist/measurement/floorplan-affordance.js +2 -2
- package/dist/measurement/floorplan.js +2 -2
- package/dist/measurement/index.d.ts +2 -2
- package/dist/measurement/index.js +2 -2
- package/dist/measurement/renderer.d.ts.map +1 -1
- package/dist/measurement/renderer.js +2 -2
- package/dist/measurement/selection.d.ts.map +1 -1
- package/dist/measurement/selection.js +4 -4
- package/dist/measurement/smart-surface.d.ts +1 -1
- package/dist/measurement/smart-tool.d.ts.map +1 -1
- package/dist/measurement/smart-tool.js +2 -2
- package/dist/measurement/surface-query.js +1 -1
- package/dist/measurement/tool-router.js +2 -2
- package/dist/measurement/tool.d.ts +1 -1
- package/dist/measurement/tool.d.ts.map +1 -1
- package/dist/measurement/tool.js +3 -3
- package/dist/pipe-fitting/definition.d.ts +1 -1
- package/dist/pipe-fitting/definition.js +11 -11
- package/dist/pipe-fitting/floorplan.d.ts +1 -1
- package/dist/pipe-fitting/floorplan.js +4 -4
- package/dist/pipe-fitting/geometry.d.ts +1 -1
- package/dist/pipe-fitting/geometry.js +4 -4
- package/dist/pipe-fitting/index.d.ts +4 -4
- package/dist/pipe-fitting/index.js +4 -4
- package/dist/pipe-fitting/inline-insertion.d.ts +1 -1
- package/dist/pipe-fitting/inline-insertion.d.ts.map +1 -1
- package/dist/pipe-fitting/inline-insertion.js +1 -1
- package/dist/pipe-fitting/move-tool.d.ts.map +1 -1
- package/dist/pipe-fitting/move-tool.js +11 -5
- package/dist/pipe-fitting/parametrics.d.ts +1 -1
- package/dist/pipe-fitting/parametrics.js +1 -1
- package/dist/pipe-fitting/ports.d.ts +1 -1
- package/dist/pipe-fitting/ports.js +1 -1
- package/dist/pipe-fitting/selection.d.ts.map +1 -1
- package/dist/pipe-fitting/selection.js +6 -7
- package/dist/pipe-fitting/tool.d.ts +2 -2
- package/dist/pipe-fitting/tool.d.ts.map +1 -1
- package/dist/pipe-fitting/tool.js +15 -16
- package/dist/pipe-segment/continuation.d.ts +4 -4
- package/dist/pipe-segment/continuation.d.ts.map +1 -1
- package/dist/pipe-segment/continuation.js +1 -1
- package/dist/pipe-segment/definition.d.ts +1 -1
- package/dist/pipe-segment/definition.js +11 -11
- package/dist/pipe-segment/floorplan.d.ts +1 -1
- package/dist/pipe-segment/floorplan.js +3 -3
- package/dist/pipe-segment/geometry.d.ts +1 -1
- package/dist/pipe-segment/geometry.js +2 -2
- package/dist/pipe-segment/index.d.ts +3 -3
- package/dist/pipe-segment/index.js +3 -3
- package/dist/pipe-segment/move-tool.d.ts.map +1 -1
- package/dist/pipe-segment/move-tool.js +11 -5
- package/dist/pipe-segment/parametrics.d.ts +1 -1
- package/dist/pipe-segment/parametrics.js +3 -3
- package/dist/pipe-segment/selection.d.ts.map +1 -1
- package/dist/pipe-segment/selection.js +10 -9
- package/dist/pipe-segment/tool.d.ts.map +1 -1
- package/dist/pipe-segment/tool.js +13 -14
- package/dist/pipe-trap/definition.d.ts +1 -1
- package/dist/pipe-trap/definition.js +6 -6
- package/dist/pipe-trap/floorplan.d.ts +1 -1
- package/dist/pipe-trap/floorplan.js +1 -1
- package/dist/pipe-trap/geometry.d.ts +1 -1
- package/dist/pipe-trap/geometry.js +2 -2
- package/dist/pipe-trap/index.d.ts +4 -4
- package/dist/pipe-trap/index.js +4 -4
- package/dist/pipe-trap/parametrics.d.ts +1 -1
- package/dist/pipe-trap/ports.d.ts +1 -1
- package/dist/pipe-trap/ports.js +1 -1
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +7 -8
- package/dist/procedural-item/animation.d.ts +8 -0
- package/dist/procedural-item/animation.d.ts.map +1 -0
- package/dist/procedural-item/animation.js +116 -0
- package/dist/procedural-item/definition.d.ts.map +1 -1
- package/dist/procedural-item/definition.js +81 -13
- package/dist/procedural-item/geometry.d.ts +5 -1
- package/dist/procedural-item/geometry.d.ts.map +1 -1
- package/dist/procedural-item/geometry.js +239 -15
- package/dist/procedural-item/index.d.ts +2 -2
- package/dist/procedural-item/index.js +2 -2
- package/dist/procedural-item/move-session.d.ts +1 -1
- package/dist/procedural-item/move-session.js +2 -2
- package/dist/procedural-item/move-tool.js +3 -3
- package/dist/procedural-item/renderer.d.ts.map +1 -1
- package/dist/procedural-item/renderer.js +273 -24
- package/dist/ridge-vent/definition.d.ts +1 -1
- package/dist/ridge-vent/definition.d.ts.map +1 -1
- package/dist/ridge-vent/definition.js +9 -8
- package/dist/ridge-vent/geometry.js +1 -1
- package/dist/ridge-vent/index.d.ts +3 -3
- package/dist/ridge-vent/index.js +3 -3
- package/dist/ridge-vent/move-tool.js +5 -5
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +6 -24
- package/dist/ridge-vent/parametrics.d.ts +1 -1
- package/dist/ridge-vent/parametrics.js +1 -1
- package/dist/ridge-vent/preview.d.ts +1 -1
- package/dist/ridge-vent/preview.d.ts.map +1 -1
- package/dist/ridge-vent/preview.js +2 -2
- package/dist/ridge-vent/renderer.d.ts.map +1 -1
- package/dist/ridge-vent/renderer.js +14 -12
- package/dist/ridge-vent/tool.d.ts.map +1 -1
- package/dist/ridge-vent/tool.js +8 -8
- package/dist/roof/barrel-panel.d.ts +5 -0
- package/dist/roof/barrel-panel.d.ts.map +1 -0
- package/dist/roof/barrel-panel.js +17 -0
- package/dist/roof/conical-roof.d.ts +5 -1
- package/dist/roof/conical-roof.d.ts.map +1 -1
- package/dist/roof/conical-roof.js +19 -15
- package/dist/roof/definition.d.ts +1 -1
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +22 -11
- package/dist/roof/floorplan.d.ts +8 -0
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +202 -19
- package/dist/roof/glazed-geometry.d.ts +5 -0
- package/dist/roof/glazed-geometry.d.ts.map +1 -0
- package/dist/roof/glazed-geometry.js +27 -0
- package/dist/roof/glazed-materials.d.ts +14 -0
- package/dist/roof/glazed-materials.d.ts.map +1 -0
- package/dist/roof/glazed-materials.js +42 -0
- package/dist/roof/glazing-controls.d.ts +33 -0
- package/dist/roof/glazing-controls.d.ts.map +1 -0
- package/dist/roof/glazing-controls.js +50 -0
- package/dist/roof/glazing-panel-editor.d.ts +6 -0
- package/dist/roof/glazing-panel-editor.d.ts.map +1 -0
- package/dist/roof/glazing-panel-editor.js +44 -0
- package/dist/roof/glazing-panel.d.ts +5 -0
- package/dist/roof/glazing-panel.d.ts.map +1 -0
- package/dist/roof/glazing-panel.js +41 -0
- package/dist/roof/glazing-preview.d.ts +10 -0
- package/dist/roof/glazing-preview.d.ts.map +1 -0
- package/dist/roof/glazing-preview.js +48 -0
- package/dist/roof/index.d.ts +3 -3
- package/dist/roof/index.js +3 -3
- package/dist/roof/panel-model.d.ts.map +1 -1
- package/dist/roof/panel-model.js +10 -6
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +43 -15
- package/dist/roof/parametrics.js +1 -1
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/renderer.js +40 -7
- package/dist/roof/roof-footprint-source.d.ts.map +1 -1
- package/dist/roof/roof-level-target.d.ts +75 -0
- package/dist/roof/roof-level-target.d.ts.map +1 -0
- package/dist/roof/roof-level-target.js +119 -0
- package/dist/roof/roof-placement-mode.d.ts +3 -2
- package/dist/roof/roof-placement-mode.d.ts.map +1 -1
- package/dist/roof/system.d.ts +1 -2
- package/dist/roof/system.d.ts.map +1 -1
- package/dist/roof/system.js +5 -1
- package/dist/roof/tool.d.ts +3 -3
- package/dist/roof/tool.d.ts.map +1 -1
- package/dist/roof/tool.js +80 -41
- package/dist/roof-segment/definition.d.ts +1 -1
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +31 -62
- package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
- package/dist/roof-segment/floorplan-affordances.js +13 -34
- package/dist/roof-segment/floorplan.d.ts.map +1 -1
- package/dist/roof-segment/floorplan.js +1 -0
- package/dist/roof-segment/index.d.ts +1 -1
- package/dist/roof-segment/index.js +1 -1
- package/dist/roof-segment/measurement.js +1 -1
- package/dist/roof-segment/paint.d.ts +4 -0
- package/dist/roof-segment/paint.d.ts.map +1 -0
- package/dist/roof-segment/paint.js +92 -0
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +20 -30
- package/dist/roof-segment/parametrics.d.ts +1 -1
- package/dist/roof-segment/parametrics.d.ts.map +1 -1
- package/dist/roof-segment/parametrics.js +12 -1
- package/dist/roof-segment/renderer.d.ts +1 -1
- package/dist/roof-segment/renderer.d.ts.map +1 -1
- package/dist/roof-segment/renderer.js +81 -19
- package/dist/scan/definition.d.ts +1 -1
- package/dist/scan/definition.js +4 -4
- package/dist/scan/index.d.ts +1 -1
- package/dist/scan/index.js +1 -1
- package/dist/scan/renderer.d.ts.map +1 -1
- package/dist/scan/system.d.ts.map +1 -1
- package/dist/separator/definition.d.ts +3 -0
- package/dist/separator/definition.d.ts.map +1 -0
- package/dist/separator/definition.js +39 -0
- package/dist/separator/renderer.d.ts +5 -0
- package/dist/separator/renderer.d.ts.map +1 -0
- package/dist/separator/renderer.js +36 -0
- package/dist/shared/accessory-placement.d.ts +1 -1
- package/dist/shared/accessory-placement.d.ts.map +1 -1
- package/dist/shared/accessory-placement.js +3 -3
- package/dist/shared/accessory-snapping.d.ts +1 -1
- package/dist/shared/accessory-snapping.d.ts.map +1 -1
- package/dist/shared/accessory-snapping.js +1 -1
- package/dist/shared/auto-fitting.d.ts +1 -1
- package/dist/shared/auto-fitting.d.ts.map +1 -1
- package/dist/shared/auto-fitting.js +3 -3
- package/dist/shared/automatic-run-end-cap.d.ts +1 -1
- package/dist/shared/automatic-run-end-cap.d.ts.map +1 -1
- package/dist/shared/automatic-run-end-cap.js +4 -4
- package/dist/shared/block-face-host.d.ts +1 -1
- package/dist/shared/connection-feedback.d.ts +1 -2
- package/dist/shared/connection-feedback.d.ts.map +1 -1
- package/dist/shared/connection-feedback.js +1 -2
- package/dist/shared/construction-dimension-standards.d.ts +1 -1
- package/dist/shared/curtain-opening-limits.js +1 -1
- package/dist/shared/draft-axis-guides.js +1 -1
- package/dist/shared/duct-adapter.d.ts +2 -2
- package/dist/shared/duct-adapter.d.ts.map +1 -1
- package/dist/shared/duct-adapter.js +3 -3
- package/dist/shared/duct-body-paint.d.ts +0 -4
- package/dist/shared/duct-body-paint.d.ts.map +1 -1
- package/dist/shared/duct-body-paint.js +2 -6
- package/dist/shared/elbow-branch-continuation.d.ts +1 -1
- package/dist/shared/elbow-branch-continuation.d.ts.map +1 -1
- package/dist/shared/elbow-branch-continuation.js +2 -2
- package/dist/shared/finish-script-model.d.ts +12 -0
- package/dist/shared/finish-script-model.d.ts.map +1 -0
- package/dist/shared/finish-script-model.js +32 -0
- package/dist/shared/fitting-deletion-cleanup.js +2 -2
- package/dist/shared/fitting-endpoint-reaim.js +3 -3
- package/dist/shared/fitting-surface-support.d.ts.map +1 -1
- package/dist/shared/fitting-surface-support.js +2 -2
- package/dist/shared/fitting-tool-options.js +1 -1
- package/dist/shared/floor-placement.d.ts.map +1 -1
- package/dist/shared/floorplan-cursor.d.ts.map +1 -1
- package/dist/shared/hosted-resize.d.ts +2 -1
- package/dist/shared/hosted-resize.d.ts.map +1 -1
- package/dist/shared/hosted-resize.js +11 -3
- package/dist/shared/item-interaction-actions.d.ts +6 -0
- package/dist/shared/item-interaction-actions.d.ts.map +1 -0
- package/dist/shared/item-interaction-actions.js +27 -0
- package/dist/shared/item-interactions.d.ts +9 -0
- package/dist/shared/item-interactions.d.ts.map +1 -0
- package/dist/shared/item-interactions.js +74 -0
- package/dist/shared/item-light-placement.d.ts +2 -0
- package/dist/shared/item-light-placement.d.ts.map +1 -0
- package/dist/shared/item-light-placement.js +3 -0
- package/dist/shared/lean-to-post-omissions.d.ts +1 -1
- package/dist/shared/lean-to-post-omissions.js +1 -1
- package/dist/shared/mep-ghost.js +5 -5
- package/dist/shared/move-roof-tool.d.ts.map +1 -1
- package/dist/shared/move-roof-tool.js +129 -35
- package/dist/shared/node-batch/batchable.d.ts +12 -0
- package/dist/shared/node-batch/batchable.d.ts.map +1 -0
- package/dist/shared/node-batch/batchable.js +43 -0
- package/dist/shared/node-batch/candidates.d.ts +8 -6
- package/dist/shared/node-batch/candidates.d.ts.map +1 -1
- package/dist/shared/node-batch/candidates.js +44 -60
- package/dist/shared/node-batch/release.d.ts +8 -0
- package/dist/shared/node-batch/release.d.ts.map +1 -0
- package/dist/shared/node-batch/release.js +16 -0
- package/dist/shared/node-batch/store.d.ts +1 -1
- package/dist/shared/node-batch/store.d.ts.map +1 -1
- package/dist/shared/node-batch/store.js +1 -1
- package/dist/shared/node-batch/system.d.ts.map +1 -1
- package/dist/shared/node-batch/system.js +36 -16
- package/dist/shared/node-batch/types.d.ts +4 -1
- package/dist/shared/node-batch/types.d.ts.map +1 -1
- package/dist/shared/opening-documentation.d.ts +14 -2
- package/dist/shared/opening-documentation.d.ts.map +1 -1
- package/dist/shared/opening-documentation.js +246 -60
- package/dist/shared/opening-guides-runtime.d.ts.map +1 -1
- package/dist/shared/opening-guides-runtime.js +18 -15
- package/dist/shared/opening-move-wall-gate.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.d.ts.map +1 -1
- package/dist/shared/opening-placement-dimensions.js +5 -5
- package/dist/shared/opening-plane-offset.d.ts +23 -0
- package/dist/shared/opening-plane-offset.d.ts.map +1 -0
- package/dist/shared/opening-plane-offset.js +24 -0
- package/dist/shared/opening-property-preview-host.d.ts +1 -1
- package/dist/shared/opening-property-preview.d.ts.map +1 -1
- package/dist/shared/opening-property-preview.js +1 -1
- package/dist/shared/panel-fields.js +2 -2
- package/dist/shared/path-point-affordance.js +2 -2
- package/dist/shared/pipe-run-translation-offset.d.ts +2 -2
- package/dist/shared/pipe-run-translation-offset.d.ts.map +1 -1
- package/dist/shared/pipe-run-translation-offset.js +2 -2
- package/dist/shared/pipe-vertical-offset.d.ts +2 -2
- package/dist/shared/pipe-vertical-offset.d.ts.map +1 -1
- package/dist/shared/pipe-vertical-offset.js +2 -2
- package/dist/shared/polygon-centroid-move.d.ts.map +1 -1
- package/dist/shared/polygon-centroid-move.js +5 -2
- package/dist/shared/polygon-vertex-affordance.d.ts.map +1 -1
- package/dist/shared/polygon-vertex-affordance.js +19 -15
- package/dist/shared/port-systems.d.ts +9 -0
- package/dist/shared/port-systems.d.ts.map +1 -0
- package/dist/shared/port-systems.js +10 -0
- package/dist/shared/refrigerant-line-selection.d.ts.map +1 -1
- package/dist/shared/refrigerant-line-selection.js +3 -2
- package/dist/shared/relative-roof-drag.d.ts +1 -1
- package/dist/shared/relative-roof-drag.js +2 -2
- package/dist/shared/roof-segment-hit.d.ts.map +1 -1
- package/dist/shared/roof-segment-hit.js +7 -5
- package/dist/shared/roof-surface-placement-guides.d.ts +1 -1
- package/dist/shared/roof-surface-placement-guides.js +11 -11
- package/dist/shared/roof-surface.d.ts.map +1 -1
- package/dist/shared/roof-surface.js +25 -5
- package/dist/shared/run-hanger-controls.d.ts +1 -1
- package/dist/shared/run-hanger-controls.js +1 -1
- package/dist/shared/run-hanger-inspector.d.ts +1 -1
- package/dist/shared/run-hanger-inspector.js +3 -3
- package/dist/shared/run-hangers.d.ts.map +1 -1
- package/dist/shared/run-hangers.js +7 -6
- package/dist/shared/run-move-connectivity.d.ts.map +1 -1
- package/dist/shared/run-translation-offset.d.ts +3 -3
- package/dist/shared/run-translation-offset.d.ts.map +1 -1
- package/dist/shared/run-translation-offset.js +2 -2
- package/dist/shared/scripted-opening-handles.d.ts +18 -0
- package/dist/shared/scripted-opening-handles.d.ts.map +1 -0
- package/dist/shared/scripted-opening-handles.js +53 -0
- package/dist/shared/scripted-opening.d.ts +25 -0
- package/dist/shared/scripted-opening.d.ts.map +1 -0
- package/dist/shared/scripted-opening.js +72 -0
- package/dist/shared/slot-paint.d.ts +14 -2
- package/dist/shared/slot-paint.d.ts.map +1 -1
- package/dist/shared/slot-paint.js +29 -29
- package/dist/shared/surface-paint.d.ts.map +1 -1
- package/dist/shared/surface-paint.js +3 -6
- package/dist/shared/swap-preview-material.d.ts +13 -0
- package/dist/shared/swap-preview-material.d.ts.map +1 -0
- package/dist/shared/swap-preview-material.js +27 -0
- package/dist/shared/system-check-panel.js +1 -1
- package/dist/shared/system-checks.d.ts.map +1 -1
- package/dist/shared/system-checks.js +7 -5
- package/dist/shared/vertical-offset.d.ts +3 -3
- package/dist/shared/vertical-offset.d.ts.map +1 -1
- package/dist/shared/vertical-offset.js +3 -3
- package/dist/shared/wall-attach-target.d.ts +3 -10
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +3 -63
- package/dist/shared/wall-opening-ceiling.d.ts +5 -15
- package/dist/shared/wall-opening-ceiling.d.ts.map +1 -1
- package/dist/shared/wall-opening-ceiling.js +10 -18
- package/dist/shared/wall-run-move.d.ts +1 -1
- package/dist/shared/wall-run-move.d.ts.map +1 -1
- package/dist/shelf/definition.d.ts +1 -1
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +14 -12
- package/dist/shelf/dimensions.d.ts +1 -1
- package/dist/shelf/floorplan-affordances.js +1 -1
- package/dist/shelf/floorplan-move.js +1 -1
- package/dist/shelf/floorplan.d.ts +1 -1
- package/dist/shelf/floorplan.js +2 -2
- package/dist/shelf/geometry.d.ts +1 -1
- package/dist/shelf/geometry.d.ts.map +1 -1
- package/dist/shelf/geometry.js +2 -3
- package/dist/shelf/index.d.ts +3 -3
- package/dist/shelf/index.js +3 -3
- package/dist/shelf/paint.d.ts.map +1 -1
- package/dist/shelf/paint.js +4 -10
- package/dist/shelf/parametrics.d.ts +1 -1
- package/dist/shelf/preview.d.ts +1 -1
- package/dist/shelf/preview.d.ts.map +1 -1
- package/dist/shelf/preview.js +1 -1
- package/dist/shelf/tool.d.ts.map +1 -1
- package/dist/shelf/tool.js +3 -3
- package/dist/site/definition.d.ts +1 -1
- package/dist/site/definition.d.ts.map +1 -1
- package/dist/site/definition.js +5 -4
- package/dist/site/generic-foundation-geometry.d.ts +16 -0
- package/dist/site/generic-foundation-geometry.d.ts.map +1 -0
- package/dist/site/generic-foundation-geometry.js +75 -0
- package/dist/site/generic-foundation.d.ts +4 -0
- package/dist/site/generic-foundation.d.ts.map +1 -0
- package/dist/site/generic-foundation.js +91 -0
- package/dist/site/ground-hole.d.ts +92 -0
- package/dist/site/ground-hole.d.ts.map +1 -0
- package/dist/site/ground-hole.js +306 -0
- package/dist/site/ground-pit-geometry.d.ts +39 -0
- package/dist/site/ground-pit-geometry.d.ts.map +1 -0
- package/dist/site/ground-pit-geometry.js +213 -0
- package/dist/site/ground-pit.d.ts +45 -0
- package/dist/site/ground-pit.d.ts.map +1 -0
- package/dist/site/ground-pit.js +175 -0
- package/dist/site/ground-veil.d.ts +39 -0
- package/dist/site/ground-veil.d.ts.map +1 -0
- package/dist/site/ground-veil.js +86 -0
- package/dist/site/ground-window-system.d.ts +9 -0
- package/dist/site/ground-window-system.d.ts.map +1 -0
- package/dist/site/ground-window-system.js +108 -0
- package/dist/site/hole-noise.d.ts +11 -0
- package/dist/site/hole-noise.d.ts.map +1 -0
- package/dist/site/hole-noise.js +79 -0
- package/dist/site/index.d.ts +1 -1
- package/dist/site/index.js +1 -1
- package/dist/site/line-ribbon.d.ts +31 -0
- package/dist/site/line-ribbon.d.ts.map +1 -0
- package/dist/site/line-ribbon.js +117 -0
- package/dist/site/lot-mask.d.ts +20 -0
- package/dist/site/lot-mask.d.ts.map +1 -0
- package/dist/site/lot-mask.js +39 -0
- package/dist/site/panel.d.ts +10 -0
- package/dist/site/panel.d.ts.map +1 -0
- package/dist/site/panel.js +179 -0
- package/dist/site/parametrics.d.ts +7 -0
- package/dist/site/parametrics.d.ts.map +1 -1
- package/dist/site/parametrics.js +8 -0
- package/dist/site/recessed-slab-ground-holes.d.ts.map +1 -1
- package/dist/site/recessed-slab-ground-holes.js +5 -2
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +275 -40
- package/dist/site/terrain-geometry.d.ts +28 -1
- package/dist/site/terrain-geometry.d.ts.map +1 -1
- package/dist/site/terrain-geometry.js +78 -4
- package/dist/site/terrain-holes.d.ts +15 -0
- package/dist/site/terrain-holes.d.ts.map +1 -0
- package/dist/site/terrain-holes.js +74 -0
- package/dist/site/terrain-mesh.d.ts +10 -3
- package/dist/site/terrain-mesh.d.ts.map +1 -1
- package/dist/site/terrain-mesh.js +36 -9
- package/dist/site/terrain-renderer.d.ts +11 -2
- package/dist/site/terrain-renderer.d.ts.map +1 -1
- package/dist/site/terrain-renderer.js +23 -6
- package/dist/site/underground-edge.d.ts +26 -0
- package/dist/site/underground-edge.d.ts.map +1 -0
- package/dist/site/underground-edge.js +46 -0
- package/dist/skylight/definition.d.ts +1 -1
- package/dist/skylight/definition.d.ts.map +1 -1
- package/dist/skylight/definition.js +11 -10
- package/dist/skylight/geometry.d.ts +1 -1
- package/dist/skylight/geometry.js +1 -1
- package/dist/skylight/index.d.ts +4 -4
- package/dist/skylight/index.js +4 -4
- package/dist/skylight/move-tool.js +4 -4
- package/dist/skylight/panel.js +3 -3
- package/dist/skylight/parametrics.d.ts +1 -1
- package/dist/skylight/parametrics.js +1 -1
- package/dist/skylight/preview.d.ts +1 -1
- package/dist/skylight/preview.d.ts.map +1 -1
- package/dist/skylight/preview.js +2 -2
- package/dist/skylight/renderer.d.ts.map +1 -1
- package/dist/skylight/renderer.js +5 -5
- package/dist/skylight/system.d.ts.map +1 -1
- package/dist/skylight/tool.d.ts.map +1 -1
- package/dist/skylight/tool.js +7 -7
- package/dist/slab/boundary-editor.d.ts +1 -1
- package/dist/slab/boundary-editor.d.ts.map +1 -1
- package/dist/slab/boundary-editor.js +13 -13
- package/dist/slab/definition.d.ts +1 -1
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +44 -19
- package/dist/slab/dependency-tracker.d.ts.map +1 -1
- package/dist/slab/dependency-tracker.js +67 -7
- package/dist/slab/elevation-limit.d.ts.map +1 -1
- package/dist/slab/elevation-limit.js +2 -2
- package/dist/slab/floorplan-affordances.d.ts +232 -60
- package/dist/slab/floorplan-affordances.d.ts.map +1 -1
- package/dist/slab/floorplan-affordances.js +1 -2
- package/dist/slab/floorplan-move.d.ts.map +1 -1
- package/dist/slab/floorplan-move.js +4 -5
- package/dist/slab/floorplan.d.ts +7 -0
- package/dist/slab/floorplan.d.ts.map +1 -1
- package/dist/slab/floorplan.js +22 -5
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +187 -77
- package/dist/slab/hole-editor.d.ts.map +1 -1
- package/dist/slab/index.d.ts +2 -2
- package/dist/slab/index.js +2 -2
- package/dist/slab/move-tool.d.ts.map +1 -1
- package/dist/slab/move-tool.js +7 -6
- package/dist/slab/paint.d.ts +18 -5
- package/dist/slab/paint.d.ts.map +1 -1
- package/dist/slab/paint.js +461 -9
- package/dist/slab/panel.d.ts.map +1 -1
- package/dist/slab/panel.js +32 -13
- package/dist/slab/parametrics.d.ts +1 -1
- package/dist/slab/parametrics.js +1 -1
- package/dist/slab/placement-ownership.d.ts +2 -1
- package/dist/slab/placement-ownership.d.ts.map +1 -1
- package/dist/slab/placement-ownership.js +2 -2
- package/dist/slab/quick-measurement.js +1 -1
- package/dist/slab/surface-split.d.ts +24 -0
- package/dist/slab/surface-split.d.ts.map +1 -0
- package/dist/slab/surface-split.js +389 -0
- package/dist/slab/system.d.ts.map +1 -1
- package/dist/slab/system.js +1 -1
- package/dist/slab/tool.d.ts.map +1 -1
- package/dist/slab/tool.js +7 -5
- package/dist/solar-panel/definition.d.ts +1 -1
- package/dist/solar-panel/definition.d.ts.map +1 -1
- package/dist/solar-panel/definition.js +8 -7
- package/dist/solar-panel/index.d.ts +4 -4
- package/dist/solar-panel/index.js +4 -4
- package/dist/solar-panel/move-tool.js +3 -3
- package/dist/solar-panel/panel.d.ts.map +1 -1
- package/dist/solar-panel/panel.js +4 -4
- package/dist/solar-panel/parametrics.d.ts +1 -1
- package/dist/solar-panel/parametrics.js +1 -1
- package/dist/solar-panel/preview.d.ts +1 -1
- package/dist/solar-panel/preview.d.ts.map +1 -1
- package/dist/solar-panel/preview.js +2 -2
- package/dist/solar-panel/renderer.d.ts.map +1 -1
- package/dist/solar-panel/renderer.js +3 -3
- package/dist/solar-panel/tool.d.ts.map +1 -1
- package/dist/solar-panel/tool.js +7 -7
- package/dist/spawn/definition.d.ts +1 -1
- package/dist/spawn/definition.js +7 -7
- package/dist/spawn/floorplan-affordances.js +1 -1
- package/dist/spawn/floorplan.d.ts +1 -1
- package/dist/spawn/index.d.ts +2 -2
- package/dist/spawn/index.js +2 -2
- package/dist/spawn/panel.js +1 -1
- package/dist/spawn/parametrics.d.ts +1 -1
- package/dist/spawn/parametrics.js +1 -1
- package/dist/spawn/renderer.d.ts.map +1 -1
- package/dist/spawn/renderer.js +1 -1
- package/dist/spawn/tool.d.ts.map +1 -1
- package/dist/spawn/tool.js +2 -2
- package/dist/stair/baluster-geometry.d.ts +21 -0
- package/dist/stair/baluster-geometry.d.ts.map +1 -0
- package/dist/stair/baluster-geometry.js +74 -0
- package/dist/stair/baluster-guard.d.ts +50 -0
- package/dist/stair/baluster-guard.d.ts.map +1 -0
- package/dist/stair/baluster-guard.js +71 -0
- package/dist/stair/boards-guard.d.ts +37 -0
- package/dist/stair/boards-guard.d.ts.map +1 -0
- package/dist/stair/boards-guard.js +61 -0
- package/dist/stair/cable-guard.d.ts +39 -0
- package/dist/stair/cable-guard.d.ts.map +1 -0
- package/dist/stair/cable-guard.js +105 -0
- package/dist/stair/construction-controls.d.ts +15 -0
- package/dist/stair/construction-controls.d.ts.map +1 -0
- package/dist/stair/construction-controls.js +29 -0
- package/dist/stair/continuous-railings.d.ts +10 -0
- package/dist/stair/continuous-railings.d.ts.map +1 -0
- package/dist/stair/continuous-railings.js +159 -0
- package/dist/stair/definition.d.ts +1 -1
- package/dist/stair/definition.d.ts.map +1 -1
- package/dist/stair/definition.js +39 -46
- package/dist/stair/documentation.d.ts +1 -1
- package/dist/stair/documentation.d.ts.map +1 -1
- package/dist/stair/documentation.js +11 -18
- package/dist/stair/floorplan-affordances.d.ts.map +1 -1
- package/dist/stair/floorplan-affordances.js +10 -26
- package/dist/stair/floorplan-move.d.ts.map +1 -1
- package/dist/stair/floorplan-move.js +90 -10
- package/dist/stair/floorplan.d.ts +2 -24
- package/dist/stair/floorplan.d.ts.map +1 -1
- package/dist/stair/floorplan.js +123 -88
- package/dist/stair/glass-guard.d.ts +72 -0
- package/dist/stair/glass-guard.d.ts.map +1 -0
- package/dist/stair/glass-guard.js +167 -0
- package/dist/stair/guard-path.d.ts +119 -0
- package/dist/stair/guard-path.d.ts.map +1 -0
- package/dist/stair/guard-path.js +208 -0
- package/dist/stair/index.d.ts +1 -1
- package/dist/stair/index.js +1 -1
- package/dist/stair/materials.d.ts +11 -0
- package/dist/stair/materials.d.ts.map +1 -0
- package/dist/stair/materials.js +51 -0
- package/dist/stair/metal-guard.d.ts +38 -0
- package/dist/stair/metal-guard.d.ts.map +1 -0
- package/dist/stair/metal-guard.js +79 -0
- package/dist/stair/paint.d.ts +32 -0
- package/dist/stair/paint.d.ts.map +1 -1
- package/dist/stair/paint.js +75 -36
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +170 -19
- package/dist/stair/parametrics.d.ts +1 -1
- package/dist/stair/parametrics.d.ts.map +1 -1
- package/dist/stair/parametrics.js +33 -16
- package/dist/stair/plan-entry.d.ts +31 -0
- package/dist/stair/plan-entry.d.ts.map +1 -0
- package/dist/stair/plan-entry.js +325 -0
- package/dist/stair/post-and-rail-guard.d.ts +31 -0
- package/dist/stair/post-and-rail-guard.d.ts.map +1 -0
- package/dist/stair/post-and-rail-guard.js +63 -0
- package/dist/stair/railing-controls.d.ts +9 -0
- package/dist/stair/railing-controls.d.ts.map +1 -0
- package/dist/stair/railing-controls.js +49 -0
- package/dist/stair/renderer.d.ts.map +1 -1
- package/dist/stair/renderer.js +355 -262
- package/dist/stair/stair-click-guard.d.ts +43 -0
- package/dist/stair/stair-click-guard.d.ts.map +1 -0
- package/dist/stair/stair-click-guard.js +44 -0
- package/dist/stair/stair-type.d.ts.map +1 -1
- package/dist/stair/stair-type.js +1 -2
- package/dist/stair/surface-move-preview.d.ts +4 -0
- package/dist/stair/surface-move-preview.d.ts.map +1 -0
- package/dist/stair/surface-move-preview.js +53 -0
- package/dist/stair/surface-transition.d.ts +9 -0
- package/dist/stair/surface-transition.d.ts.map +1 -0
- package/dist/stair/surface-transition.js +61 -0
- package/dist/stair/system.d.ts.map +1 -1
- package/dist/stair/tool.d.ts +2 -0
- package/dist/stair/tool.d.ts.map +1 -0
- package/dist/stair/tool.js +580 -0
- package/dist/stair/use-stair-render-data.d.ts +319 -0
- package/dist/stair/use-stair-render-data.d.ts.map +1 -0
- package/dist/stair/use-stair-render-data.js +73 -0
- package/dist/stair-segment/definition.d.ts +1 -1
- package/dist/stair-segment/definition.d.ts.map +1 -1
- package/dist/stair-segment/definition.js +52 -14
- package/dist/stair-segment/index.d.ts +1 -1
- package/dist/stair-segment/index.js +1 -1
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +38 -44
- package/dist/stair-segment/parametrics.d.ts +1 -1
- package/dist/stair-segment/parametrics.d.ts.map +1 -1
- package/dist/stair-segment/parametrics.js +22 -9
- package/dist/stair-segment/renderer.d.ts.map +1 -1
- package/dist/stair-segment/renderer.js +17 -29
- package/dist/structural-grid/definition.d.ts +1 -1
- package/dist/structural-grid/definition.js +3 -3
- package/dist/structural-grid/floorplan-tool.d.ts.map +1 -1
- package/dist/structural-grid/index.d.ts +1 -1
- package/dist/structural-grid/index.js +1 -1
- package/dist/turbine-vent/definition.d.ts +1 -1
- package/dist/turbine-vent/definition.d.ts.map +1 -1
- package/dist/turbine-vent/definition.js +11 -13
- package/dist/turbine-vent/geometry.js +1 -1
- package/dist/turbine-vent/index.d.ts +3 -3
- package/dist/turbine-vent/index.js +3 -3
- package/dist/turbine-vent/move-tool.js +4 -4
- package/dist/turbine-vent/paint.d.ts.map +1 -1
- package/dist/turbine-vent/paint.js +3 -6
- package/dist/turbine-vent/panel.d.ts.map +1 -1
- package/dist/turbine-vent/panel.js +6 -24
- package/dist/turbine-vent/parametrics.d.ts +1 -1
- package/dist/turbine-vent/parametrics.js +1 -1
- package/dist/turbine-vent/preview.d.ts +1 -1
- package/dist/turbine-vent/preview.d.ts.map +1 -1
- package/dist/turbine-vent/preview.js +2 -2
- package/dist/turbine-vent/renderer.d.ts.map +1 -1
- package/dist/turbine-vent/renderer.js +3 -3
- package/dist/turbine-vent/tool.d.ts.map +1 -1
- package/dist/turbine-vent/tool.js +7 -7
- package/dist/unit/definition.d.ts +1 -1
- package/dist/unit/definition.js +2 -2
- package/dist/unit/index.d.ts +1 -1
- package/dist/unit/index.js +1 -1
- package/dist/unit/parametrics.js +1 -1
- package/dist/unit/unit-panel.d.ts.map +1 -1
- package/dist/unit/unit-panel.js +7 -2
- package/dist/wall/actions.d.ts.map +1 -1
- package/dist/wall/actions.js +9 -4
- package/dist/wall/construction-dimensions.d.ts +3 -3
- package/dist/wall/construction-dimensions.js +14 -11
- package/dist/wall/contextual-dimensions.js +4 -4
- package/dist/wall/curtain-opening-frame.d.ts.map +1 -1
- package/dist/wall/curtain-wall-adapter.js +2 -2
- package/dist/wall/curtain-wall-floorplan.js +2 -2
- package/dist/wall/curtain-wall-geometry.d.ts.map +1 -1
- package/dist/wall/curtain-wall-geometry.js +4 -4
- package/dist/wall/curtain-wall-layout.d.ts +1 -2
- package/dist/wall/curtain-wall-layout.d.ts.map +1 -1
- package/dist/wall/curtain-wall-layout.js +1 -23
- package/dist/wall/curtain-wall-materials.d.ts +1 -1
- package/dist/wall/curtain-wall-materials.d.ts.map +1 -1
- package/dist/wall/curtain-wall-materials.js +4 -3
- package/dist/wall/curtain-wall-panel.d.ts.map +1 -1
- package/dist/wall/curtain-wall-panel.js +4 -4
- package/dist/wall/curtain-wall-piece-geometry.d.ts +1 -1
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +4 -0
- package/dist/wall/definition.d.ts +1 -1
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +71 -42
- package/dist/wall/exterior.d.ts +6 -0
- package/dist/wall/exterior.d.ts.map +1 -0
- package/dist/wall/exterior.js +13 -0
- package/dist/wall/floorplan-move.d.ts +1 -1
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +21 -84
- package/dist/wall/floorplan-tool.d.ts.map +1 -1
- package/dist/wall/floorplan-tool.js +11 -12
- package/dist/wall/floorplan.d.ts +5 -3
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +188 -25
- package/dist/wall/index.d.ts +2 -2
- package/dist/wall/index.js +2 -2
- package/dist/wall/measurement.d.ts.map +1 -1
- package/dist/wall/measurement.js +6 -6
- package/dist/wall/move-endpoint-tool.d.ts.map +1 -1
- package/dist/wall/move-endpoint-tool.js +25 -13
- package/dist/wall/move-shared.d.ts.map +1 -1
- package/dist/wall/move-shared.js +12 -8
- package/dist/wall/move-tool.d.ts.map +1 -1
- package/dist/wall/move-tool.js +120 -151
- package/dist/wall/paint.d.ts +26 -15
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +303 -119
- package/dist/wall/panel-model.d.ts +18 -0
- package/dist/wall/panel-model.d.ts.map +1 -1
- package/dist/wall/panel-model.js +82 -24
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +262 -53
- package/dist/wall/parametrics.d.ts +1 -1
- package/dist/wall/parametrics.d.ts.map +1 -1
- package/dist/wall/parametrics.js +4 -1
- package/dist/wall/pointer-transparency.d.ts +1 -1
- package/dist/wall/pointer-transparency.d.ts.map +1 -1
- package/dist/wall/preview.d.ts.map +1 -1
- package/dist/wall/property-preview.d.ts.map +1 -1
- package/dist/wall/quick-measurement.js +1 -1
- package/dist/wall/rectangle-command.d.ts +329 -37
- package/dist/wall/rectangle-command.d.ts.map +1 -1
- package/dist/wall/rectangle-tool.d.ts.map +1 -1
- package/dist/wall/rectangle-tool.js +27 -9
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +31 -10
- package/dist/wall/selection-hit-owner.d.ts.map +1 -1
- package/dist/wall/split-floorplan-layer.d.ts.map +1 -1
- package/dist/wall/split-floorplan-layer.js +10 -10
- package/dist/wall/split-pointer.js +2 -2
- package/dist/wall/split-preview.d.ts +1 -1
- package/dist/wall/split-session.d.ts.map +1 -1
- package/dist/wall/split-session.js +9 -3
- package/dist/wall/split-store.d.ts +1 -1
- package/dist/wall/split-tool.js +3 -3
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +42 -10
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +114 -53
- package/dist/wall/treatment-level-data.d.ts +3 -2
- package/dist/wall/treatment-level-data.d.ts.map +1 -1
- package/dist/wall/treatment-level-data.js +17 -13
- package/dist/wall/treatments.d.ts +11 -11
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +77 -57
- package/dist/wall/wall-batch-system.d.ts +7 -0
- package/dist/wall/wall-batch-system.d.ts.map +1 -1
- package/dist/wall/wall-batch-system.js +81 -7
- package/dist/wall/wall-batch.d.ts +6 -0
- package/dist/wall/wall-batch.d.ts.map +1 -1
- package/dist/wall/wall-batch.js +7 -1
- package/dist/window/contextual-dimensions.js +1 -1
- package/dist/window/corner-cue.d.ts +9 -0
- package/dist/window/corner-cue.d.ts.map +1 -0
- package/dist/window/corner-cue.js +31 -0
- package/dist/window/corner-fuse.d.ts +14 -0
- package/dist/window/corner-fuse.d.ts.map +1 -0
- package/dist/window/corner-fuse.js +42 -0
- package/dist/window/definition.d.ts +1 -1
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +39 -26
- package/dist/window/floor-projection.js +1 -1
- package/dist/window/floorplan-affordances.js +2 -2
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +49 -13
- package/dist/window/floorplan.d.ts.map +1 -1
- package/dist/window/floorplan.js +214 -87
- package/dist/window/index.d.ts +2 -2
- package/dist/window/index.js +2 -2
- package/dist/window/mechanism.d.ts +4 -0
- package/dist/window/mechanism.d.ts.map +1 -0
- package/dist/window/mechanism.js +20 -0
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +165 -69
- package/dist/window/paint.d.ts.map +1 -1
- package/dist/window/paint.js +4 -1
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +134 -100
- package/dist/window/parametrics.d.ts +1 -1
- package/dist/window/parametrics.d.ts.map +1 -1
- package/dist/window/parametrics.js +7 -1
- package/dist/window/placement.d.ts +29 -0
- package/dist/window/placement.d.ts.map +1 -0
- package/dist/window/placement.js +92 -0
- package/dist/window/preview.d.ts +1 -1
- package/dist/window/preview.d.ts.map +1 -1
- package/dist/window/preview.js +3 -1
- package/dist/window/renderer.d.ts.map +1 -1
- package/dist/window/renderer.js +4 -3
- package/dist/window/system.d.ts.map +1 -1
- package/dist/window/system.js +1 -1
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +207 -50
- package/dist/window/window-math.d.ts +7 -15
- package/dist/window/window-math.d.ts.map +1 -1
- package/dist/window/window-math.js +15 -21
- package/dist/zone/contextual-dimensions.d.ts.map +1 -1
- package/dist/zone/contextual-dimensions.js +6 -28
- package/dist/zone/definition.d.ts +1 -1
- package/dist/zone/definition.d.ts.map +1 -1
- package/dist/zone/definition.js +17 -15
- package/dist/zone/floorplan-affordances.d.ts +613 -37
- package/dist/zone/floorplan-affordances.d.ts.map +1 -1
- package/dist/zone/floorplan-affordances.js +1 -1
- package/dist/zone/floorplan-move.js +1 -1
- package/dist/zone/floorplan.d.ts +1 -1
- package/dist/zone/floorplan.d.ts.map +1 -1
- package/dist/zone/floorplan.js +96 -56
- package/dist/zone/index.d.ts +1 -1
- package/dist/zone/index.js +1 -1
- package/dist/zone/parametrics.js +1 -1
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +6 -17
- package/dist/zone/quick-measurement.d.ts +2 -2
- package/dist/zone/quick-measurement.d.ts.map +1 -1
- package/dist/zone/quick-measurement.js +7 -6
- package/dist/zone/renderer.d.ts +1 -1
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +67 -147
- package/dist/zone/room-clear-dimensions.js +4 -4
- package/dist/zone/room-documentation.d.ts +1 -1
- package/dist/zone/room-documentation.d.ts.map +1 -1
- package/dist/zone/room-documentation.js +3 -7
- package/dist/zone/system.d.ts.map +1 -1
- package/package.json +28 -15
- package/dist/block/slots.d.ts +0 -4
- package/dist/block/slots.d.ts.map +0 -1
- package/dist/block/slots.js +0 -17
- package/dist/cabinet/slots.d.ts +0 -4
- package/dist/cabinet/slots.d.ts.map +0 -1
- package/dist/cabinet/slots.js +0 -24
- package/dist/ceiling/slots.d.ts +0 -6
- package/dist/ceiling/slots.d.ts.map +0 -1
- package/dist/ceiling/slots.js +0 -7
- package/dist/column/slots.d.ts +0 -9
- package/dist/column/slots.d.ts.map +0 -1
- package/dist/column/slots.js +0 -19
- package/dist/door/slots.d.ts +0 -9
- package/dist/door/slots.d.ts.map +0 -1
- package/dist/door/slots.js +0 -20
- package/dist/elevator/slots.d.ts +0 -8
- package/dist/elevator/slots.d.ts.map +0 -1
- package/dist/elevator/slots.js +0 -17
- package/dist/fence/slots.d.ts +0 -10
- package/dist/fence/slots.d.ts.map +0 -1
- package/dist/fence/slots.js +0 -23
- package/dist/item/__fixtures__/main-floorplan.d.ts +0 -26
- package/dist/item/__fixtures__/main-floorplan.d.ts.map +0 -1
- package/dist/item/__fixtures__/main-floorplan.js +0 -297
- package/dist/lean-to-extension/slots.d.ts +0 -5
- package/dist/lean-to-extension/slots.d.ts.map +0 -1
- package/dist/lean-to-extension/slots.js +0 -15
- package/dist/shared/connection-compatibility.d.ts +0 -8
- package/dist/shared/connection-compatibility.d.ts.map +0 -1
- package/dist/shared/connection-compatibility.js +0 -28
- package/dist/shared/distribution-run-contract.d.ts +0 -49
- package/dist/shared/distribution-run-contract.d.ts.map +0 -1
- package/dist/shared/distribution-run-contract.js +0 -30
- package/dist/shared/distribution-run-tool.d.ts +0 -117
- package/dist/shared/distribution-run-tool.d.ts.map +0 -1
- package/dist/shared/distribution-run-tool.js +0 -986
- package/dist/shared/draw-alignment.d.ts +0 -25
- package/dist/shared/draw-alignment.d.ts.map +0 -1
- package/dist/shared/draw-alignment.js +0 -30
- package/dist/shared/ports.d.ts +0 -92
- package/dist/shared/ports.d.ts.map +0 -1
- package/dist/shared/ports.js +0 -305
- package/dist/shared/run-cursor.d.ts +0 -22
- package/dist/shared/run-cursor.d.ts.map +0 -1
- package/dist/shared/run-cursor.js +0 -19
- package/dist/shared/run-direction-feedback.d.ts +0 -20
- package/dist/shared/run-direction-feedback.d.ts.map +0 -1
- package/dist/shared/run-direction-feedback.js +0 -139
- package/dist/shared/run-port-snap.d.ts +0 -11
- package/dist/shared/run-port-snap.d.ts.map +0 -1
- package/dist/shared/run-port-snap.js +0 -19
- package/dist/shared/run-screen-direction.d.ts +0 -5
- package/dist/shared/run-screen-direction.d.ts.map +0 -1
- package/dist/shared/run-screen-direction.js +0 -24
- package/dist/shelf/slots.d.ts +0 -9
- package/dist/shelf/slots.d.ts.map +0 -1
- package/dist/shelf/slots.js +0 -30
- package/dist/slab/slots.d.ts +0 -10
- package/dist/slab/slots.d.ts.map +0 -1
- package/dist/slab/slots.js +0 -20
- package/dist/stair/floor-stack.d.ts +0 -10
- package/dist/stair/floor-stack.d.ts.map +0 -1
- package/dist/stair/floor-stack.js +0 -115
- package/dist/stair/slots.d.ts +0 -7
- package/dist/stair/slots.d.ts.map +0 -1
- package/dist/stair/slots.js +0 -13
- package/dist/wall/drawing-mode.d.ts +0 -12
- package/dist/wall/drawing-mode.d.ts.map +0 -1
- package/dist/wall/drawing-mode.js +0 -38
- package/dist/wall/slots.d.ts +0 -10
- package/dist/wall/slots.d.ts.map +0 -1
- package/dist/wall/slots.js +0 -92
- package/dist/window/slots.d.ts +0 -5
- package/dist/window/slots.d.ts.map +0 -1
- package/dist/window/slots.js +0 -11
package/dist/stair/renderer.js
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
-
import { getStairBodyMaterials, getStairRailingMaterial, NodeRenderer,
|
|
2
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { computeSegmentTransforms, measureStairDetail, resolveArcStairConstruction, resolveStairArcLayout, resolveStairRailPaths, resolveStairWalkingPaths, rotateXZ, STAIR_RAILING_SLOT_DEFAULT, stairArcSliceCount, useLiveNodeOverrides, useRegistry, useScene, } from '@pascal-app/core';
|
|
4
|
+
import { getStairBodyMaterials, getStairRailingMaterial, NodeRenderer, OVERLAY_LAYER, useNodeEvents, useViewer, } from '@pascal-app/viewer';
|
|
5
5
|
import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
|
|
6
6
|
import * as THREE from 'three';
|
|
7
|
-
import { createPlaceholderGeometry } from '../shared/placeholder-geometry';
|
|
8
|
-
import {
|
|
7
|
+
import { createPlaceholderGeometry } from '../shared/placeholder-geometry.js';
|
|
8
|
+
import { mergeGuardBoxes } from './baluster-geometry.js';
|
|
9
|
+
import { balusterGuardRails, buildBalusterGuard } from './baluster-guard.js';
|
|
10
|
+
import { boardsGuardRails, buildBoardsGuard } from './boards-guard.js';
|
|
11
|
+
import { buildCableGuard, cableGuardRails } from './cable-guard.js';
|
|
12
|
+
import { ContinuousStairRailings } from './continuous-railings.js';
|
|
13
|
+
import { barBox, GUARD_PICKET_PITCH, GUARD_POST_SPACING, } from './guard-path.js';
|
|
14
|
+
import { resolveStairBodySlotMaterials, resolveStairSegmentMaterials, resolveStairSlotMaterial, } from './materials.js';
|
|
15
|
+
import { buildPostAndRailGuard, postAndRailGuardRails } from './post-and-rail-guard.js';
|
|
16
|
+
import { surfaceTransitionProfile } from './surface-transition.js';
|
|
17
|
+
import { useStairRenderData } from './use-stair-render-data.js';
|
|
9
18
|
export const StairRenderer = ({ node: rawNode }) => {
|
|
10
19
|
const ref = useRef(null);
|
|
11
20
|
// Merge any live drag override into the node so curved/spiral geometry
|
|
@@ -26,227 +35,347 @@ export const StairRenderer = ({ node: rawNode }) => {
|
|
|
26
35
|
const colorPreset = useViewer((s) => s.colorPreset);
|
|
27
36
|
const sceneMaterials = useScene((s) => s.materials);
|
|
28
37
|
const baseBodyMaterials = useMemo(() => getStairBodyMaterials(node, shading, textures, colorPreset), [node, shading, textures, colorPreset]);
|
|
29
|
-
const bodyMaterials = useMemo(() => [
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
const bodyMaterials = useMemo(() => resolveStairBodySlotMaterials(node, baseBodyMaterials, sceneMaterials, shading, textures), [baseBodyMaterials, node, sceneMaterials, shading, textures]);
|
|
39
|
+
const renderData = useStairRenderData(node);
|
|
40
|
+
const { segments, totalRise } = renderData;
|
|
41
|
+
useLayoutEffect(() => {
|
|
42
|
+
for (const id of node.children)
|
|
43
|
+
useScene.getState().markDirty(id);
|
|
44
|
+
}, [node.children, node.construction]);
|
|
45
|
+
const detail = useMemo(() => measureStairDetail(node, segments), [node, segments]);
|
|
46
|
+
const mergedMaterials = useMemo(() => segments.length
|
|
47
|
+
? segments.flatMap((segment) => resolveStairSegmentMaterials(segment, node, bodyMaterials, sceneMaterials, shading, textures, colorPreset))
|
|
48
|
+
: bodyMaterials, [segments, node, bodyMaterials, sceneMaterials, shading, textures, colorPreset]);
|
|
49
|
+
const mergedSlotData = useMemo(() => ({
|
|
50
|
+
surfaceNodeIds: segments.flatMap((segment) => [segment.id, segment.id]),
|
|
51
|
+
segmentIds: segments.flatMap((segment) => [segment.id, segment.id]),
|
|
52
|
+
slotIds: Array.from({ length: Math.max(1, segments.length) }, () => [
|
|
53
|
+
'treads',
|
|
54
|
+
'body',
|
|
55
|
+
]).flat(),
|
|
56
|
+
}), [segments]);
|
|
33
57
|
const baseRailingMaterial = useMemo(() => getStairRailingMaterial(node, shading, textures, colorPreset), [node, shading, textures, colorPreset]);
|
|
34
58
|
const railingMaterial = useMemo(() => resolveStairSlotMaterial(node, 'railing', STAIR_RAILING_SLOT_DEFAULT, baseRailingMaterial, sceneMaterials, shading, textures), [baseRailingMaterial, node, sceneMaterials, shading, textures]);
|
|
35
|
-
|
|
59
|
+
const onLevel = useScene((state) => node.parentId ? state.nodes[node.parentId]?.type === 'level' : true);
|
|
60
|
+
// Each flight contributes tread and body material groups to the merged mesh.
|
|
36
61
|
const straightPlaceholderGeometry = useMemo(() => createPlaceholderGeometry(2), []);
|
|
37
62
|
useEffect(() => {
|
|
38
63
|
return () => {
|
|
39
64
|
straightPlaceholderGeometry.dispose();
|
|
40
65
|
};
|
|
41
66
|
}, [straightPlaceholderGeometry]);
|
|
42
|
-
return (_jsxs("group", { "position-x": node.position[0], "position-z": node.position[2], ref: ref, "rotation-y": node.rotation, visible: node.visible, ...handlers, children: [isSegmentBasedStair ? (_jsx("mesh", { castShadow: true, geometry: straightPlaceholderGeometry, material:
|
|
67
|
+
return (_jsxs("group", { "position-x": node.position[0], ...(onLevel ? {} : { 'position-y': node.position[1] }), "position-z": node.position[2], ref: ref, "rotation-y": node.rotation, visible: node.visible, userData: { pascalExportRefusal: detail.error }, ...handlers, children: [isSegmentBasedStair ? (_jsx("mesh", { castShadow: true, geometry: straightPlaceholderGeometry, material: mergedMaterials, name: "merged-stair", receiveShadow: true, userData: mergedSlotData })) : null, isSegmentBasedStair || detail.error ? null : (_jsx(CurvedStairBody, { bodyMaterials: bodyMaterials, stair: node, rise: totalRise })), detail.error ? null : segments.some((segment) => segment.winder) ||
|
|
68
|
+
node.railingPath === 'continuous' ||
|
|
69
|
+
node.railingStyle === 'glass' ||
|
|
70
|
+
node.railingStyle === 'metal' ? (_jsx(ContinuousStairRailings, { material: railingMaterial, stair: node, renderData: renderData })) : (_jsxs(_Fragment, { children: [_jsx(StairRailings, { material: railingMaterial, stair: node, renderData: renderData }), node.handrail ? (_jsx(ContinuousStairRailings, { material: railingMaterial, stair: node, renderData: renderData, guard: false })) : null] })), isSegmentBasedStair && node.destinationSurfaceId && !detail.error ? (_jsx(StairSurfaceTransition, { stair: node, materials: bodyMaterials })) : null, _jsx(StairWalkingLine, { stair: node, segments: segments, totalRise: totalRise }), isSegmentBasedStair && !detail.error ? (_jsx("group", { name: "segments-wrapper", visible: false, children: (node.children ?? []).map((childId) => (_jsx(NodeRenderer, { nodeId: childId }, childId))) })) : null] }));
|
|
43
71
|
};
|
|
44
|
-
function
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
function StairSurfaceTransition({ stair, materials, }) {
|
|
73
|
+
const rawSurface = useScene((state) => state.nodes[stair.destinationSurfaceId]);
|
|
74
|
+
const surfaceOverride = useLiveNodeOverrides((state) => state.overrides.get(stair.destinationSurfaceId));
|
|
75
|
+
const surface = useMemo(() => (rawSurface && surfaceOverride ? { ...rawSurface, ...surfaceOverride } : rawSurface), [rawSurface, surfaceOverride]);
|
|
76
|
+
const flightId = stair.children[0];
|
|
77
|
+
const flight = useScene((state) => (flightId ? state.nodes[flightId] : undefined));
|
|
78
|
+
const flightOverride = useLiveNodeOverrides((state) => flightId ? state.overrides.get(flightId) : undefined);
|
|
79
|
+
const length = flightOverride?.length ??
|
|
80
|
+
flight?.length ??
|
|
81
|
+
0;
|
|
82
|
+
const segment = flight;
|
|
83
|
+
const fillToFloor = flightOverride?.fillToFloor ??
|
|
84
|
+
segment?.fillToFloor ??
|
|
85
|
+
stair.fillToFloor ??
|
|
86
|
+
true;
|
|
87
|
+
const thickness = flightOverride?.thickness ??
|
|
88
|
+
segment?.thickness ??
|
|
89
|
+
stair.thickness ??
|
|
90
|
+
0.25;
|
|
91
|
+
const segmentHeight = flightOverride?.height ?? segment?.height ?? 0;
|
|
92
|
+
const profile = useMemo(() => surface
|
|
93
|
+
? surfaceTransitionProfile(stair, surface, length)
|
|
94
|
+
: null, [stair, surface, length]);
|
|
95
|
+
const geometry = useMemo(() => {
|
|
96
|
+
if (!profile)
|
|
97
|
+
return null;
|
|
98
|
+
const vertices = [];
|
|
99
|
+
const indices = [];
|
|
100
|
+
const top = stair.totalRise ?? 0;
|
|
101
|
+
const undersideOffset = segment?.segmentType === 'landing'
|
|
102
|
+
? thickness
|
|
103
|
+
: thickness / Math.cos(Math.atan2(segmentHeight, length || 1));
|
|
104
|
+
const bottom = fillToFloor ? 0 : top - undersideOffset;
|
|
105
|
+
for (const [x, boundary] of profile.samples) {
|
|
106
|
+
vertices.push(x, top, length + profile.frontZ, x, top, length + boundary, x, bottom, length + profile.frontZ, x, bottom, length + boundary);
|
|
107
|
+
}
|
|
108
|
+
for (let i = 0; i < profile.samples.length - 1; i++) {
|
|
109
|
+
const a = i * 4, b = (i + 1) * 4;
|
|
110
|
+
indices.push(a, a + 1, b, b, a + 1, b + 1, a + 2, b + 2, a + 3, b + 2, b + 3, a + 3, a, b, a + 2, b, b + 2, a + 2, a + 1, a + 3, b + 1, b + 1, a + 3, b + 3);
|
|
111
|
+
}
|
|
112
|
+
const last = (profile.samples.length - 1) * 4;
|
|
113
|
+
indices.push(0, 2, 1, 1, 2, 3, last, last + 1, last + 2, last + 1, last + 3, last + 2);
|
|
114
|
+
const indexed = new THREE.BufferGeometry();
|
|
115
|
+
indexed.setAttribute('position', new THREE.Float32BufferAttribute(vertices, 3));
|
|
116
|
+
indexed.setIndex(indices);
|
|
117
|
+
const result = indexed.toNonIndexed();
|
|
118
|
+
indexed.dispose();
|
|
119
|
+
result.computeVertexNormals();
|
|
120
|
+
const position = result.getAttribute('position');
|
|
121
|
+
const normals = result.getAttribute('normal');
|
|
122
|
+
const uvs = [];
|
|
123
|
+
let currentMaterial = -1;
|
|
124
|
+
let groupStart = 0;
|
|
125
|
+
for (let i = 0; i < position.count; i += 3) {
|
|
126
|
+
const nx = Math.abs(normals.getX(i));
|
|
127
|
+
const ny = Math.abs(normals.getY(i));
|
|
128
|
+
const nz = Math.abs(normals.getZ(i));
|
|
129
|
+
const materialIndex = normals.getY(i) > 0.75 ? STAIR_TREAD_MATERIAL_INDEX : STAIR_SIDE_MATERIAL_INDEX;
|
|
130
|
+
if (materialIndex !== currentMaterial) {
|
|
131
|
+
if (i > groupStart)
|
|
132
|
+
result.addGroup(groupStart, i - groupStart, currentMaterial);
|
|
133
|
+
groupStart = i;
|
|
134
|
+
currentMaterial = materialIndex;
|
|
135
|
+
}
|
|
136
|
+
for (let vertex = i; vertex < i + 3; vertex++) {
|
|
137
|
+
const x = position.getX(vertex), y = position.getY(vertex), z = position.getZ(vertex);
|
|
138
|
+
if (ny >= nx && ny >= nz)
|
|
139
|
+
uvs.push(x, z);
|
|
140
|
+
else if (nx >= nz)
|
|
141
|
+
uvs.push(z, y);
|
|
142
|
+
else
|
|
143
|
+
uvs.push(x, y);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (position.count > groupStart)
|
|
147
|
+
result.addGroup(groupStart, position.count - groupStart, currentMaterial);
|
|
148
|
+
result.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2));
|
|
149
|
+
result.setAttribute('uv2', new THREE.Float32BufferAttribute(uvs.slice(), 2));
|
|
150
|
+
return result;
|
|
151
|
+
}, [
|
|
152
|
+
profile,
|
|
153
|
+
length,
|
|
154
|
+
stair.totalRise,
|
|
155
|
+
fillToFloor,
|
|
156
|
+
thickness,
|
|
157
|
+
segmentHeight,
|
|
158
|
+
segment?.segmentType,
|
|
159
|
+
]);
|
|
160
|
+
useEffect(() => () => geometry?.dispose(), [geometry]);
|
|
161
|
+
return geometry ? (_jsx("mesh", { castShadow: true, geometry: geometry, material: materials, name: "stair-surface-transition", receiveShadow: true, userData: STAIR_BODY_SLOT_USER_DATA })) : null;
|
|
162
|
+
}
|
|
163
|
+
function StairWalkingLine({ stair, segments, totalRise, }) {
|
|
164
|
+
const selected = useViewer((state) => state.selection.selectedIds.includes(stair.id));
|
|
165
|
+
const lines = useMemo(() => {
|
|
166
|
+
if (!selected)
|
|
167
|
+
return [];
|
|
168
|
+
return resolveStairWalkingPaths(stair, segments, totalRise).map((points) => {
|
|
169
|
+
const geometry = new THREE.BufferGeometry().setFromPoints(points.map(([x, y, z]) => new THREE.Vector3(x, y + 0.02, z)));
|
|
170
|
+
const line = new THREE.Line(geometry, new THREE.LineBasicMaterial({ color: '#2563eb', depthTest: false }));
|
|
171
|
+
line.name = 'stair-walking-line';
|
|
172
|
+
line.layers.set(OVERLAY_LAYER);
|
|
173
|
+
line.userData.pascalExport = 'strip';
|
|
174
|
+
line.raycast = () => { };
|
|
175
|
+
return line;
|
|
176
|
+
});
|
|
177
|
+
}, [selected, stair, segments, totalRise]);
|
|
178
|
+
useEffect(() => () => {
|
|
179
|
+
for (const line of lines) {
|
|
180
|
+
line.geometry.dispose();
|
|
181
|
+
line.material.dispose();
|
|
182
|
+
}
|
|
183
|
+
}, [lines]);
|
|
184
|
+
return (_jsx("group", { name: "stair-walking-lines", children: lines.map((line) => (_jsx("primitive", { object: line, dispose: null }, line.uuid))) }));
|
|
185
|
+
}
|
|
186
|
+
function StairRailings({ stair, material, renderData, }) {
|
|
187
|
+
const { stair: resolvedStair, segments, nodes } = renderData;
|
|
188
|
+
const railPaths = useMemo(() => buildStairRailPaths(segments, stair.railingMode ?? 'none')
|
|
189
|
+
.map((path, index) => ({
|
|
190
|
+
...path,
|
|
191
|
+
connectFromPrevious: path.connectFromPrevious && segments[index - 1]?.visible !== false,
|
|
192
|
+
}))
|
|
193
|
+
.filter((path) => path.layout.segment.visible !== false), [segments, stair.railingMode]);
|
|
61
194
|
const railHeight = stair.railingHeight ?? 0.92;
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
195
|
+
const style = stair.railingStyle ?? 'balusters';
|
|
196
|
+
// Every style — balusters, post-and-rail, cable and the board-infill deck
|
|
197
|
+
// guard — is a merged `GuardMesh` built on the shared path chassis, so each
|
|
198
|
+
// reads as one coherent guard across straight, chained, winder, curved and
|
|
199
|
+
// spiral layouts.
|
|
200
|
+
if (stair.destinationSurfaceId || (stair.railingMode ?? 'none') === 'none') {
|
|
66
201
|
return null;
|
|
67
202
|
}
|
|
68
203
|
if (stair.stairType === 'curved' || stair.stairType === 'spiral') {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
? [leftRadius]
|
|
81
|
-
: stair.railingMode === 'right'
|
|
82
|
-
? [rightRadius]
|
|
83
|
-
: [];
|
|
84
|
-
return (_jsx("group", { name: "stair-railing", children: radii.map((radius, sideIndex) => {
|
|
85
|
-
const sidePoints = Array.from({ length: stepCount }).map((_, index) => {
|
|
86
|
-
const angle = -sweepAngle / 2 + stepSweep * index + stepSweep / 2;
|
|
87
|
-
return [
|
|
88
|
-
Math.cos(angle) * radius,
|
|
89
|
-
stair.stairType === 'spiral'
|
|
90
|
-
? stepHeight * index + Math.max(stair.thickness ?? 0.25, 0.02)
|
|
91
|
-
: stepHeight * (index + 1),
|
|
92
|
-
Math.sin(angle) * radius,
|
|
93
|
-
];
|
|
94
|
-
});
|
|
95
|
-
return (_jsxs("group", { children: [sidePoints.map((point, pointIndex) => (_jsx("mesh", { castShadow: true, geometry: BALUSTER_GEOMETRY, material: material, name: "stair-railing-baluster", position: [point[0], point[1] + railHeight / 2, point[2]], receiveShadow: true, scale: [balusterRadius, railHeight, balusterRadius], userData: STAIR_RAILING_SLOT_USER_DATA }, `${stair.id}-curved-baluster-${sideIndex}-${pointIndex}`))), sidePoints.slice(0, -1).map((point, pointIndex) => {
|
|
96
|
-
const nextPoint = sidePoints[pointIndex + 1];
|
|
97
|
-
if (!nextPoint)
|
|
98
|
-
return null;
|
|
99
|
-
return (_jsxs("group", { children: [_jsx(RailSegment, { end: [nextPoint[0], nextPoint[1] + railHeight, nextPoint[2]], material: material, radius: railRadius, start: [point[0], point[1] + railHeight, point[2]] }), _jsx(RailSegment, { end: [nextPoint[0], nextPoint[1] + midRailHeight, nextPoint[2]], material: material, radius: railRadius * 0.8, start: [point[0], point[1] + midRailHeight, point[2]] })] }, `${stair.id}-curved-rail-${sideIndex}-${pointIndex}`));
|
|
100
|
-
})] }, `${stair.id}-curved-railing-${sideIndex}`));
|
|
101
|
-
}) }));
|
|
204
|
+
// The arc rail follows the same analytic ≤5° path the continuous guard and
|
|
205
|
+
// the exporters read (`resolveStairRailPaths`): one shared source for the
|
|
206
|
+
// signed, possibly multi-turn sweep, the inner/outer radius per side and the
|
|
207
|
+
// integrated landing arrival — not a per-step polyline that facets the curve
|
|
208
|
+
// and drops the landing. `GuardMesh` then spaces pickets by run, so the
|
|
209
|
+
// density tracks the arc length instead of the step count — for the deck
|
|
210
|
+
// post-and-rail guard as well as the balusters.
|
|
211
|
+
const arcPaths = resolveStairRailPaths(resolvedStair, nodes, stair.railingMode ?? 'none');
|
|
212
|
+
if (arcPaths.length === 0)
|
|
213
|
+
return null;
|
|
214
|
+
return (_jsx("group", { name: "stair-railing", userData: { pascalIfcRole: 'railing' }, children: arcPaths.map((path, index) => (_jsx(GuardMesh, { material: material, points: path.points, postThrough: stair.railingPostThrough === true, railHeight: railHeight, reach: stair.railingTopReach ?? 0, style: style, topPost: stair.railingTopPost !== false }, `${stair.id}-arc-railing-${path.side}-${index}`))) }));
|
|
102
215
|
}
|
|
103
216
|
if (railPaths.length === 0) {
|
|
104
217
|
return null;
|
|
105
218
|
}
|
|
106
|
-
|
|
219
|
+
// `topPost`/`reach` describe the top of the whole stair, so they apply only
|
|
220
|
+
// to the flight whose guard reaches the highest point; the rest keep their
|
|
221
|
+
// newel at the junction with the next flight.
|
|
222
|
+
const topY = Math.max(...railPaths.flatMap((segmentPath) => segmentPath.sidePaths.map((sidePath) => segmentPath.layout.elevation + Math.max(...sidePath.points.map((point) => point[1])))));
|
|
223
|
+
// The rails bridging consecutive flights, as metre-UV boxes in the stair's
|
|
224
|
+
// local frame, merged into one mesh (E-009) like the per-flight guards. The
|
|
225
|
+
// bridge carries the same rails as the guard style it joins.
|
|
226
|
+
const connectorRails = style === 'post-and-rail'
|
|
227
|
+
? postAndRailGuardRails(railHeight)
|
|
228
|
+
: style === 'cable'
|
|
229
|
+
? cableGuardRails(railHeight)
|
|
230
|
+
: style === 'boards'
|
|
231
|
+
? boardsGuardRails(railHeight)
|
|
232
|
+
: balusterGuardRails(railHeight);
|
|
233
|
+
const connectorBoxes = railPaths.slice(1).flatMap((segmentPath, index) => {
|
|
234
|
+
const previousPath = railPaths[index];
|
|
235
|
+
if (!(previousPath && segmentPath.connectFromPrevious))
|
|
236
|
+
return [];
|
|
237
|
+
if (previousPath.layout.segment.segmentType === 'landing')
|
|
238
|
+
return [];
|
|
239
|
+
if (segmentPath.layout.segment.segmentType === 'landing')
|
|
240
|
+
return [];
|
|
241
|
+
return segmentPath.sidePaths.flatMap((sidePath) => {
|
|
242
|
+
const currentPoint = sidePath.points[0];
|
|
243
|
+
if (!currentPoint)
|
|
244
|
+
return [];
|
|
245
|
+
const currentWorldPoint = toWorldRailPoint(segmentPath.layout, currentPoint);
|
|
246
|
+
const previousSidePath = [...previousPath.sidePaths]
|
|
247
|
+
.map((entry) => {
|
|
248
|
+
const lastPoint = entry.points[entry.points.length - 1];
|
|
249
|
+
return {
|
|
250
|
+
entry,
|
|
251
|
+
distance: lastPoint
|
|
252
|
+
? distance3(toWorldRailPoint(previousPath.layout, lastPoint), currentWorldPoint)
|
|
253
|
+
: Number.POSITIVE_INFINITY,
|
|
254
|
+
};
|
|
255
|
+
})
|
|
256
|
+
.sort((left, right) => left.distance - right.distance)[0]?.entry;
|
|
257
|
+
const previousPoint = previousSidePath?.points.length
|
|
258
|
+
? previousSidePath.points[previousSidePath.points.length - 1]
|
|
259
|
+
: null;
|
|
260
|
+
if (!previousPoint)
|
|
261
|
+
return [];
|
|
262
|
+
const previousWorldPoint = toWorldRailPoint(previousPath.layout, previousPoint);
|
|
263
|
+
return connectorRails
|
|
264
|
+
.map((rail) => barBox([previousWorldPoint[0], previousWorldPoint[1] + rail.y, previousWorldPoint[2]], [currentWorldPoint[0], currentWorldPoint[1] + rail.y, currentWorldPoint[2]], rail.across, rail.vertical))
|
|
265
|
+
.filter((box) => box !== null);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
return (_jsxs("group", { name: "stair-railing", userData: { pascalIfcRole: 'railing' }, children: [railPaths.map((segmentPath) => (_jsx("group", { position: [
|
|
107
269
|
segmentPath.layout.center[0],
|
|
108
270
|
segmentPath.layout.elevation,
|
|
109
271
|
segmentPath.layout.center[1],
|
|
110
|
-
], "rotation-y": segmentPath.layout.rotation, children: segmentPath.sidePaths.map((sidePath, sideIndex) =>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
if (segmentPath.layout.segment.segmentType === 'landing')
|
|
122
|
-
return null;
|
|
123
|
-
return segmentPath.sidePaths.map((sidePath, sideIndex) => {
|
|
124
|
-
const currentPoint = sidePath.points[0];
|
|
125
|
-
if (!currentPoint)
|
|
126
|
-
return null;
|
|
127
|
-
const currentWorldPoint = toWorldRailPoint(segmentPath.layout, currentPoint);
|
|
128
|
-
const previousSidePath = [...previousPath.sidePaths]
|
|
129
|
-
.map((entry) => {
|
|
130
|
-
const lastPoint = entry.points[entry.points.length - 1];
|
|
131
|
-
return {
|
|
132
|
-
entry,
|
|
133
|
-
distance: lastPoint
|
|
134
|
-
? distance3(toWorldRailPoint(previousPath.layout, lastPoint), currentWorldPoint)
|
|
135
|
-
: Number.POSITIVE_INFINITY,
|
|
136
|
-
};
|
|
137
|
-
})
|
|
138
|
-
.sort((left, right) => left.distance - right.distance)[0]?.entry;
|
|
139
|
-
const previousPoint = previousSidePath?.points.length
|
|
140
|
-
? previousSidePath.points[previousSidePath.points.length - 1]
|
|
141
|
-
: null;
|
|
142
|
-
if (!(previousPoint && currentPoint)) {
|
|
143
|
-
return null;
|
|
144
|
-
}
|
|
145
|
-
const previousWorldPoint = toWorldRailPoint(previousPath.layout, previousPoint);
|
|
146
|
-
return (_jsxs("group", { children: [_jsx(RailSegment, { end: [
|
|
147
|
-
currentWorldPoint[0],
|
|
148
|
-
currentWorldPoint[1] + railHeight,
|
|
149
|
-
currentWorldPoint[2],
|
|
150
|
-
], material: material, radius: railRadius, start: [
|
|
151
|
-
previousWorldPoint[0],
|
|
152
|
-
previousWorldPoint[1] + railHeight,
|
|
153
|
-
previousWorldPoint[2],
|
|
154
|
-
] }), _jsx(RailSegment, { end: [
|
|
155
|
-
currentWorldPoint[0],
|
|
156
|
-
currentWorldPoint[1] + midRailHeight,
|
|
157
|
-
currentWorldPoint[2],
|
|
158
|
-
], material: material, radius: railRadius * 0.8, start: [
|
|
159
|
-
previousWorldPoint[0],
|
|
160
|
-
previousWorldPoint[1] + midRailHeight,
|
|
161
|
-
previousWorldPoint[2],
|
|
162
|
-
] })] }, `${previousPath.layout.segment.id}-${segmentPath.layout.segment.id}-${sideIndex}`));
|
|
163
|
-
});
|
|
164
|
-
})] }));
|
|
272
|
+
], "rotation-y": segmentPath.layout.rotation, children: segmentPath.sidePaths.map((sidePath, sideIndex) => {
|
|
273
|
+
const points = sidePath.points.map((p) => [p[2], p[1], p[0]]);
|
|
274
|
+
const guardTopY = segmentPath.layout.elevation + Math.max(...points.map((p) => p[1]));
|
|
275
|
+
const terminal = guardTopY >= topY - 1e-4;
|
|
276
|
+
// The builder treats the last point as the run's top, so a terminal
|
|
277
|
+
// flight whose points descend is reversed before `reach`/`topPost`.
|
|
278
|
+
const oriented = terminal && (points[0]?.[1] ?? 0) > (points.at(-1)?.[1] ?? 0)
|
|
279
|
+
? [...points].reverse()
|
|
280
|
+
: points;
|
|
281
|
+
return (_jsx(GuardMesh, { material: material, points: oriented, postThrough: stair.railingPostThrough === true, railHeight: railHeight, reach: terminal ? (stair.railingTopReach ?? 0) : 0, style: style, topPost: terminal ? stair.railingTopPost !== false : true }, `${segmentPath.layout.segment.id}-${sidePath.side}-${sideIndex}`));
|
|
282
|
+
}) }, `${segmentPath.layout.segment.id}-railing`))), _jsx(ConnectorRails, { boxes: connectorBoxes, material: material })] }));
|
|
165
283
|
}
|
|
166
|
-
|
|
167
|
-
|
|
284
|
+
// Shared, module-level geometries: every mesh that uses one carries
|
|
285
|
+
// `dispose={null}` — R3F disposes a mesh's geometry on unmount, and a
|
|
286
|
+
// regenerated house unmounts its stairs, after which the next stair drew a
|
|
287
|
+
// disposed buffer (WebGPU: "Vertex buffer slot 0 … was not set").
|
|
168
288
|
const STAIR_TREAD_MATERIAL_INDEX = 0;
|
|
169
289
|
const STAIR_SIDE_MATERIAL_INDEX = 1;
|
|
170
290
|
const STAIR_BODY_SLOT_IDS = ['treads', 'body'];
|
|
171
291
|
const STAIR_BODY_SLOT_USER_DATA = { slotIds: STAIR_BODY_SLOT_IDS };
|
|
172
292
|
const STAIR_BODY_SINGLE_SLOT_USER_DATA = { slotId: 'body' };
|
|
173
293
|
const STAIR_RAILING_SLOT_USER_DATA = { slotId: 'railing' };
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
294
|
+
/**
|
|
295
|
+
* A guard for one rail path — a run of posts, rails and infill spaced by run
|
|
296
|
+
* length (not one per path vertex), merged into a single metre-UV mesh (E-009)
|
|
297
|
+
* so a finish tiles the same as the continuous guard and the whole guard is one
|
|
298
|
+
* draw call. `style` picks the members: 'post-and-rail' and 'boards' build the
|
|
299
|
+
* DCA 6 deck guard (4x4 posts, a flat cap) with square pickets or a stack of
|
|
300
|
+
* flat board courses respectively, 'cable' spans chords between the posts, and
|
|
301
|
+
* every other style builds the balusters. Spacing by run keeps the infill
|
|
302
|
+
* density coherent whether the path is a straight flight's nosing line or a
|
|
303
|
+
* densely sampled arc. `topPost`/`reach` describe the run's terminal end
|
|
304
|
+
* and so are passed only on the flight that reaches the top of the stair; every
|
|
305
|
+
* other flight keeps its post where it meets the next.
|
|
306
|
+
*/
|
|
307
|
+
function GuardMesh({ points, railHeight, postThrough, topPost = true, reach = 0, style, material, }) {
|
|
308
|
+
const geometry = useMemo(() => mergeGuardBoxes(style === 'post-and-rail'
|
|
309
|
+
? buildPostAndRailGuard(points, {
|
|
310
|
+
railHeight,
|
|
311
|
+
postSpacing: GUARD_POST_SPACING,
|
|
312
|
+
postThrough,
|
|
313
|
+
topPost,
|
|
314
|
+
reach,
|
|
315
|
+
})
|
|
316
|
+
: style === 'cable'
|
|
317
|
+
? buildCableGuard(points, {
|
|
318
|
+
railHeight,
|
|
319
|
+
postSpacing: GUARD_POST_SPACING,
|
|
320
|
+
postThrough,
|
|
321
|
+
topPost,
|
|
322
|
+
reach,
|
|
323
|
+
})
|
|
324
|
+
: style === 'boards'
|
|
325
|
+
? buildBoardsGuard(points, {
|
|
326
|
+
railHeight,
|
|
327
|
+
postSpacing: GUARD_POST_SPACING,
|
|
328
|
+
postThrough,
|
|
329
|
+
topPost,
|
|
330
|
+
reach,
|
|
331
|
+
})
|
|
332
|
+
: buildBalusterGuard(points, {
|
|
333
|
+
railHeight,
|
|
334
|
+
pickets: GUARD_PICKET_PITCH,
|
|
335
|
+
postSpacing: GUARD_POST_SPACING,
|
|
336
|
+
postThrough,
|
|
337
|
+
topPost,
|
|
338
|
+
reach,
|
|
339
|
+
})), [points, railHeight, postThrough, topPost, reach, style]);
|
|
340
|
+
useEffect(() => () => geometry?.dispose(), [geometry]);
|
|
341
|
+
if (!geometry)
|
|
342
|
+
return null;
|
|
343
|
+
return (_jsx("mesh", { castShadow: true, dispose: null, geometry: geometry, material: material, name: style === 'post-and-rail'
|
|
344
|
+
? 'stair-railing-post-and-rail'
|
|
345
|
+
: style === 'cable'
|
|
346
|
+
? 'stair-railing-cable'
|
|
347
|
+
: style === 'boards'
|
|
348
|
+
? 'stair-railing-boards'
|
|
349
|
+
: 'stair-railing-baluster', receiveShadow: true, userData: STAIR_RAILING_SLOT_USER_DATA }));
|
|
197
350
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
return (_jsx("mesh", { castShadow: true, geometry: RAIL_GEOMETRY, material: material, name: "stair-railing-rail", position: [midpoint.x, midpoint.y, midpoint.z], quaternion: quaternion, receiveShadow: true, scale: [Math.max(radius, 0.01), length, Math.max(radius, 0.01)], userData: STAIR_RAILING_SLOT_USER_DATA }));
|
|
351
|
+
/** The rails bridging consecutive flights, merged into one metre-UV mesh. */
|
|
352
|
+
function ConnectorRails({ boxes, material }) {
|
|
353
|
+
const geometry = useMemo(() => mergeGuardBoxes(boxes), [boxes]);
|
|
354
|
+
useEffect(() => () => geometry?.dispose(), [geometry]);
|
|
355
|
+
if (!geometry)
|
|
356
|
+
return null;
|
|
357
|
+
return (_jsx("mesh", { castShadow: true, dispose: null, geometry: geometry, material: material, name: "stair-railing-baluster", receiveShadow: true, userData: STAIR_RAILING_SLOT_USER_DATA }));
|
|
206
358
|
}
|
|
207
|
-
function CurvedStairBody({ stair, bodyMaterials, }) {
|
|
208
|
-
const nodes = useScene((state) => state.nodes);
|
|
359
|
+
function CurvedStairBody({ stair, bodyMaterials, rise, }) {
|
|
209
360
|
const sideMaterial = bodyMaterials[1];
|
|
210
|
-
const
|
|
211
|
-
const totalRise = Math.max(resolveStairTotalRise(stair, nodes), 0.1);
|
|
212
|
-
const stepHeight = totalRise / stepCount;
|
|
361
|
+
const totalRise = Math.max(rise, 0.001);
|
|
213
362
|
const isSpiral = stair.stairType === 'spiral';
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
const
|
|
217
|
-
const stepSweep = sweepAngle / stepCount;
|
|
218
|
-
const thickness = Math.max(stair.thickness ?? 0.25, 0.02);
|
|
219
|
-
const fillToFloor = stair.fillToFloor ?? true;
|
|
220
|
-
const spiralColumnRadius = Math.max(0.05, Math.min(innerRadius * 0.72, innerRadius - 0.03));
|
|
363
|
+
const layout = resolveStairArcLayout(stair, totalRise);
|
|
364
|
+
const { innerRadius, outerRadius, thickness } = layout;
|
|
365
|
+
const spiralColumnRadius = Math.min(innerRadius * 0.72, Math.max(innerRadius - 0.03, innerRadius * 0.5));
|
|
221
366
|
const spiralColumnHeight = totalRise + thickness;
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
const currentHeight = stepHeight * (index + 1);
|
|
232
|
-
const actualStepHeight = isSpiral
|
|
233
|
-
? thickness
|
|
234
|
-
: fillToFloor
|
|
235
|
-
? Math.max(currentHeight, thickness)
|
|
236
|
-
: thickness;
|
|
237
|
-
const startAngle = -sweepAngle / 2 + stepSweep * index;
|
|
238
|
-
const endAngle = startAngle + stepSweep;
|
|
239
|
-
const stepY = isSpiral
|
|
240
|
-
? stepHeight * index
|
|
241
|
-
: fillToFloor
|
|
242
|
-
? 0
|
|
243
|
-
: Math.max(currentHeight - thickness, 0);
|
|
244
|
-
const midAngle = startAngle + stepSweep / 2;
|
|
245
|
-
return (_jsxs("group", { "position-y": stepY, children: [isSpiral && (stair.showStepSupports ?? true) ? (_jsx(SpiralStepSupportMesh, { innerRadius: innerRadius, material: sideMaterial, midAngle: midAngle, spiralColumnRadius: spiralColumnRadius, thickness: thickness })) : null, _jsx(CurvedStepMesh, { endAngle: endAngle, innerRadius: innerRadius, material: bodyMaterials, outerRadius: outerRadius, positionY: 0, startAngle: startAngle, stepHeight: actualStepHeight, thickness: thickness })] }, `${stair.id}-${isSpiral ? 'spiral' : 'curved'}-step-${index}`));
|
|
246
|
-
}), isSpiral && (stair.topLandingMode ?? 'none') === 'integrated' ? (_jsx(CurvedStepMesh, { endAngle: sweepAngle / 2 + spiralLandingSweep, innerRadius: innerRadius, material: bodyMaterials, outerRadius: outerRadius, positionY: spiralLastStepTop, startAngle: sweepAngle / 2, stepHeight: spiralLandingThickness, thickness: spiralLandingThickness })) : null] }));
|
|
367
|
+
const explicitPieces = resolveArcStairConstruction(stair, totalRise);
|
|
368
|
+
return (_jsxs("group", { name: isSpiral ? 'spiral-stair' : 'curved-stair', children: [isSpiral && (stair.showCenterColumn ?? true) ? (_jsx(SpiralColumnMesh, { height: spiralColumnHeight, material: sideMaterial, radius: spiralColumnRadius })) : null, explicitPieces ? (_jsxs(_Fragment, { children: [explicitPieces.map((piece, index) => (_jsx(CurvedStepMesh, { innerRadius: piece.innerRadius, outerRadius: piece.outerRadius, startAngle: piece.startAngle, endAngle: piece.endAngle, positionY: piece.bottomStart, stepHeight: piece.top - piece.bottomStart, bottomDelta: piece.bottomEnd - piece.bottomStart, ifcRole: piece.index === layout.stepCount ? 'landing' : undefined, surfaceRole: piece.role, material: bodyMaterials }, `${stair.id}-construction-${index}`))), isSpiral && (stair.showStepSupports ?? true)
|
|
369
|
+
? layout.steps.map((step, index) => (_jsx("group", { "position-y": step.top -
|
|
370
|
+
(stair.construction.finishThickness + stair.construction.treadThickness), children: _jsx(SpiralStepSupportMesh, { innerRadius: innerRadius, spiralColumnRadius: spiralColumnRadius, midAngle: (step.startAngle + step.endAngle) / 2, thickness: stair.construction.treadThickness, material: sideMaterial }) }, `${stair.id}-support-${index}`)))
|
|
371
|
+
: null] })) : (layout.steps.map((step, index) => {
|
|
372
|
+
const { startAngle, endAngle } = step;
|
|
373
|
+
const midAngle = (startAngle + endAngle) / 2;
|
|
374
|
+
return (_jsxs("group", { "position-y": step.bottom, children: [isSpiral && (stair.showStepSupports ?? true) ? (_jsx(SpiralStepSupportMesh, { innerRadius: innerRadius, material: sideMaterial, midAngle: midAngle, spiralColumnRadius: spiralColumnRadius, thickness: thickness })) : null, _jsx(CurvedStepMesh, { endAngle: endAngle, innerRadius: innerRadius, material: bodyMaterials, outerRadius: outerRadius, positionY: 0, startAngle: startAngle, stepHeight: step.top - step.bottom })] }, `${stair.id}-${isSpiral ? 'spiral' : 'curved'}-step-${index}`));
|
|
375
|
+
})), layout.landing && !explicitPieces ? (_jsx(CurvedStepMesh, { ifcRole: "landing", endAngle: layout.landing.endAngle, innerRadius: innerRadius, material: bodyMaterials, outerRadius: outerRadius, positionY: layout.landing.bottom, startAngle: layout.landing.startAngle, stepHeight: thickness })) : null] }));
|
|
247
376
|
}
|
|
248
|
-
function CurvedStepMesh({ innerRadius, outerRadius, startAngle, endAngle, stepHeight,
|
|
249
|
-
const geometry = useMemo(() => buildCurvedStepGeometry(innerRadius, outerRadius, startAngle, endAngle,
|
|
377
|
+
function CurvedStepMesh({ innerRadius, outerRadius, startAngle, endAngle, stepHeight, positionY, material, bottomDelta = 0, surfaceRole = 'mixed', ifcRole, }) {
|
|
378
|
+
const geometry = useMemo(() => buildCurvedStepGeometry(innerRadius, outerRadius, startAngle, endAngle, stepHeight, bottomDelta, surfaceRole), [endAngle, innerRadius, outerRadius, startAngle, stepHeight, bottomDelta, surfaceRole]);
|
|
250
379
|
// Dispose the prior BufferGeometry as soon as a new one supersedes it.
|
|
251
380
|
// Resize drags (in 2D or 3D) rebuild this geometry every pointer move;
|
|
252
381
|
// without explicit disposal, WebGPU keeps a stale pipeline reference to
|
|
@@ -256,7 +385,7 @@ function CurvedStepMesh({ innerRadius, outerRadius, startAngle, endAngle, stepHe
|
|
|
256
385
|
useEffect(() => () => {
|
|
257
386
|
geometry.dispose();
|
|
258
387
|
}, [geometry]);
|
|
259
|
-
return (_jsx("mesh", { castShadow: true, geometry: geometry, material: material, "position-y": positionY, receiveShadow: true, userData: STAIR_BODY_SLOT_USER_DATA }));
|
|
388
|
+
return (_jsx("mesh", { castShadow: true, geometry: geometry, material: material, "position-y": positionY, receiveShadow: true, userData: { ...STAIR_BODY_SLOT_USER_DATA, ...(ifcRole ? { pascalIfcRole: ifcRole } : {}) } }));
|
|
260
389
|
}
|
|
261
390
|
/**
|
|
262
391
|
* Spiral center column. The cylinder is rebuilt whenever
|
|
@@ -291,36 +420,34 @@ function SpiralStepSupportMesh({ innerRadius, spiralColumnRadius, midAngle, thic
|
|
|
291
420
|
const radial = spiralColumnRadius + sizeX / 2 - 0.02;
|
|
292
421
|
return (_jsx("mesh", { castShadow: true, geometry: geometry, material: material, name: "stair-side", position: [Math.cos(midAngle) * radial, sizeY / 2, Math.sin(midAngle) * radial], receiveShadow: true, "rotation-y": -midAngle, userData: STAIR_BODY_SINGLE_SLOT_USER_DATA }));
|
|
293
422
|
}
|
|
294
|
-
function buildCurvedStepGeometry(innerRadius, outerRadius, startAngle,
|
|
295
|
-
const clampedHeight = Math.max(height,
|
|
423
|
+
function buildCurvedStepGeometry(innerRadius, outerRadius, startAngle, authoredEndAngle, height, bottomDelta = 0, surfaceRole = 'mixed') {
|
|
424
|
+
const clampedHeight = Math.max(height, Number.EPSILON);
|
|
296
425
|
const y0 = 0;
|
|
297
426
|
const y1 = clampedHeight;
|
|
427
|
+
const endAngle = startAngle +
|
|
428
|
+
Math.sign(authoredEndAngle - startAngle || 1) *
|
|
429
|
+
Math.min(Math.abs(authoredEndAngle - startAngle), Math.PI * 2);
|
|
298
430
|
const sweepAngle = endAngle - startAngle;
|
|
299
431
|
const sweepDirection = Math.sign(sweepAngle) || 1;
|
|
300
|
-
const segmentCount =
|
|
432
|
+
const segmentCount = stairArcSliceCount(innerRadius, outerRadius, sweepAngle);
|
|
301
433
|
const positions = [];
|
|
302
434
|
const normals = [];
|
|
303
435
|
const uvs = [];
|
|
304
436
|
const triangleMaterialIndices = [];
|
|
305
437
|
const pointOnArc = (radius, angle, y) => new THREE.Vector3(Math.cos(angle) * radius, y, Math.sin(angle) * radius);
|
|
306
|
-
const pushUv = (point, normal
|
|
307
|
-
if (
|
|
308
|
-
const angle = Math.atan2(point.z, point.x);
|
|
309
|
-
const arcOffset = (angle - startAngle) * Math.max((innerRadius + outerRadius) * 0.5, 0.01);
|
|
310
|
-
uvs.push(arcOffset, Math.sqrt(point.x * point.x + point.z * point.z) - innerRadius);
|
|
311
|
-
return;
|
|
312
|
-
}
|
|
313
|
-
const absX = Math.abs(normal.x);
|
|
314
|
-
const absY = Math.abs(normal.y);
|
|
315
|
-
const absZ = Math.abs(normal.z);
|
|
316
|
-
if (absY >= absX && absY >= absZ) {
|
|
438
|
+
const pushUv = (point, normal) => {
|
|
439
|
+
if (normal.y > 0.999999) {
|
|
317
440
|
uvs.push(point.x, point.z);
|
|
318
441
|
}
|
|
319
|
-
else if (
|
|
320
|
-
|
|
442
|
+
else if (normal.y < -0.000001) {
|
|
443
|
+
// Each faceted underside triangle has its own physical plane.
|
|
444
|
+
const u = new THREE.Vector3(1, 0, 0).addScaledVector(normal, -normal.x).normalize();
|
|
445
|
+
const v = new THREE.Vector3().crossVectors(normal, u).normalize();
|
|
446
|
+
uvs.push(point.dot(u), point.dot(v));
|
|
321
447
|
}
|
|
322
448
|
else {
|
|
323
|
-
|
|
449
|
+
const u = new THREE.Vector3(normal.z, 0, -normal.x).normalize();
|
|
450
|
+
uvs.push(point.dot(u), point.y);
|
|
324
451
|
}
|
|
325
452
|
};
|
|
326
453
|
const pushTriangle = (a, b, c, normal, materialIndex) => {
|
|
@@ -330,10 +457,17 @@ function buildCurvedStepGeometry(innerRadius, outerRadius, startAngle, endAngle,
|
|
|
330
457
|
const ordered = faceNormal.dot(normal) >= 0 ? [a, b, c] : [a, c, b];
|
|
331
458
|
for (const point of ordered) {
|
|
332
459
|
positions.push(point.x, point.y, point.z);
|
|
333
|
-
|
|
334
|
-
|
|
460
|
+
const shadingNormal = normal.y < 0
|
|
461
|
+
? faceNormal.normalize().multiplyScalar(faceNormal.dot(normal) < 0 ? -1 : 1)
|
|
462
|
+
: normal;
|
|
463
|
+
normals.push(shadingNormal.x, shadingNormal.y, shadingNormal.z);
|
|
464
|
+
pushUv(point, shadingNormal);
|
|
335
465
|
}
|
|
336
|
-
triangleMaterialIndices.push(
|
|
466
|
+
triangleMaterialIndices.push(surfaceRole === 'mixed'
|
|
467
|
+
? materialIndex
|
|
468
|
+
: surfaceRole === 'tread'
|
|
469
|
+
? STAIR_TREAD_MATERIAL_INDEX
|
|
470
|
+
: STAIR_SIDE_MATERIAL_INDEX);
|
|
337
471
|
};
|
|
338
472
|
const pushQuad = (a, b, c, d, normal, materialIndex) => {
|
|
339
473
|
pushTriangle(a, b, c, normal, materialIndex);
|
|
@@ -347,10 +481,10 @@ function buildCurvedStepGeometry(innerRadius, outerRadius, startAngle, endAngle,
|
|
|
347
481
|
const segStart = startAngle + sweepAngle * t0;
|
|
348
482
|
const segEnd = startAngle + sweepAngle * t1;
|
|
349
483
|
const midAngle = (segStart + segEnd) / 2;
|
|
350
|
-
const innerStartBottom = pointOnArc(innerRadius, segStart, y0);
|
|
351
|
-
const innerEndBottom = pointOnArc(innerRadius, segEnd, y0);
|
|
352
|
-
const outerStartBottom = pointOnArc(outerRadius, segStart, y0);
|
|
353
|
-
const outerEndBottom = pointOnArc(outerRadius, segEnd, y0);
|
|
484
|
+
const innerStartBottom = pointOnArc(innerRadius, segStart, y0 + bottomDelta * t0);
|
|
485
|
+
const innerEndBottom = pointOnArc(innerRadius, segEnd, y0 + bottomDelta * t1);
|
|
486
|
+
const outerStartBottom = pointOnArc(outerRadius, segStart, y0 + bottomDelta * t0);
|
|
487
|
+
const outerEndBottom = pointOnArc(outerRadius, segEnd, y0 + bottomDelta * t1);
|
|
354
488
|
const innerStartTop = pointOnArc(innerRadius, segStart, y1);
|
|
355
489
|
const innerEndTop = pointOnArc(innerRadius, segEnd, y1);
|
|
356
490
|
const outerStartTop = pointOnArc(outerRadius, segStart, y1);
|
|
@@ -366,8 +500,8 @@ function buildCurvedStepGeometry(innerRadius, outerRadius, startAngle, endAngle,
|
|
|
366
500
|
const startOuterBottom = pointOnArc(outerRadius, startAngle, y0);
|
|
367
501
|
const startInnerTop = pointOnArc(innerRadius, startAngle, y1);
|
|
368
502
|
const startOuterTop = pointOnArc(outerRadius, startAngle, y1);
|
|
369
|
-
const endInnerBottom = pointOnArc(innerRadius, endAngle, y0);
|
|
370
|
-
const endOuterBottom = pointOnArc(outerRadius, endAngle, y0);
|
|
503
|
+
const endInnerBottom = pointOnArc(innerRadius, endAngle, y0 + bottomDelta);
|
|
504
|
+
const endOuterBottom = pointOnArc(outerRadius, endAngle, y0 + bottomDelta);
|
|
371
505
|
const endInnerTop = pointOnArc(innerRadius, endAngle, y1);
|
|
372
506
|
const endOuterTop = pointOnArc(outerRadius, endAngle, y1);
|
|
373
507
|
const startNormal = new THREE.Vector3(sweepDirection * Math.sin(startAngle), 0, -sweepDirection * Math.cos(startAngle)).normalize();
|
|
@@ -604,7 +738,7 @@ function buildSegmentRailPath(layouts, layoutIndex, side, landingInset) {
|
|
|
604
738
|
points: [
|
|
605
739
|
...(previousLayout?.segment.segmentType === 'landing'
|
|
606
740
|
? []
|
|
607
|
-
: [[flightStartX, stepHeight
|
|
741
|
+
: [[flightStartX, Math.max(stepHeight, 0), flightSideOffset]]),
|
|
608
742
|
...Array.from({ length: steps }).map((_, index) => [
|
|
609
743
|
-segment.length / 2 + stepDepth * index + stepDepth / 2,
|
|
610
744
|
stepHeight * (index + 1),
|
|
@@ -621,47 +755,6 @@ function toWorldRailPoint(layout, point) {
|
|
|
621
755
|
const [offsetX, offsetZ] = rotateXZ(localZ, localX, layout.rotation);
|
|
622
756
|
return [layout.center[0] + offsetX, layout.elevation + localY, layout.center[1] + offsetZ];
|
|
623
757
|
}
|
|
624
|
-
function computeSegmentTransforms(segments) {
|
|
625
|
-
const transforms = [];
|
|
626
|
-
let currentPos = new THREE.Vector3(0, 0, 0);
|
|
627
|
-
let currentRot = 0;
|
|
628
|
-
for (let i = 0; i < segments.length; i++) {
|
|
629
|
-
const segment = segments[i];
|
|
630
|
-
if (i === 0) {
|
|
631
|
-
transforms.push({
|
|
632
|
-
position: [currentPos.x, currentPos.y, currentPos.z],
|
|
633
|
-
rotation: currentRot,
|
|
634
|
-
});
|
|
635
|
-
continue;
|
|
636
|
-
}
|
|
637
|
-
const prev = segments[i - 1];
|
|
638
|
-
const localAttachPos = new THREE.Vector3();
|
|
639
|
-
let rotChange = 0;
|
|
640
|
-
switch (segment.attachmentSide) {
|
|
641
|
-
case 'front':
|
|
642
|
-
localAttachPos.set(0, prev.height, prev.length);
|
|
643
|
-
break;
|
|
644
|
-
case 'left':
|
|
645
|
-
localAttachPos.set(prev.width / 2, prev.height, prev.length / 2);
|
|
646
|
-
rotChange = Math.PI / 2;
|
|
647
|
-
break;
|
|
648
|
-
case 'right':
|
|
649
|
-
localAttachPos.set(-prev.width / 2, prev.height, prev.length / 2);
|
|
650
|
-
rotChange = -Math.PI / 2;
|
|
651
|
-
break;
|
|
652
|
-
}
|
|
653
|
-
localAttachPos.applyAxisAngle(new THREE.Vector3(0, 1, 0), currentRot);
|
|
654
|
-
currentPos = currentPos.clone().add(localAttachPos);
|
|
655
|
-
currentRot += rotChange;
|
|
656
|
-
transforms.push({ position: [currentPos.x, currentPos.y, currentPos.z], rotation: currentRot });
|
|
657
|
-
}
|
|
658
|
-
return transforms;
|
|
659
|
-
}
|
|
660
|
-
function rotateXZ(x, z, angle) {
|
|
661
|
-
const cos = Math.cos(angle);
|
|
662
|
-
const sin = Math.sin(angle);
|
|
663
|
-
return [x * cos + z * sin, -x * sin + z * cos];
|
|
664
|
-
}
|
|
665
758
|
function distance3(a, b) {
|
|
666
759
|
return Math.hypot(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
|
|
667
760
|
}
|