@pascal-app/nodes 1.0.0-beta.5 → 1.0.1
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/LICENSE +21 -0
- package/dist/block/commands.d.ts +68 -0
- package/dist/block/commands.d.ts.map +1 -0
- package/dist/block/commands.js +1144 -0
- package/dist/block/contextual-help.d.ts +3 -0
- package/dist/block/contextual-help.d.ts.map +1 -0
- package/dist/block/contextual-help.js +38 -0
- package/dist/block/definition.d.ts +8 -0
- package/dist/block/definition.d.ts.map +1 -0
- package/dist/block/definition.js +126 -0
- package/dist/block/edit-session.d.ts +16 -0
- package/dist/block/edit-session.d.ts.map +1 -0
- package/dist/block/edit-session.js +32 -0
- package/dist/block/face-host.d.ts +3 -0
- package/dist/block/face-host.d.ts.map +1 -0
- package/dist/block/face-host.js +178 -0
- package/dist/block/floorplan.d.ts +3 -0
- package/dist/block/floorplan.d.ts.map +1 -0
- package/dist/block/floorplan.js +43 -0
- package/dist/block/geometry-snap.d.ts +18 -0
- package/dist/block/geometry-snap.d.ts.map +1 -0
- package/dist/block/geometry-snap.js +137 -0
- package/dist/block/geometry.d.ts +11 -0
- package/dist/block/geometry.d.ts.map +1 -0
- package/dist/block/geometry.js +146 -0
- package/dist/block/gesture-wheel.d.ts +8 -0
- package/dist/block/gesture-wheel.d.ts.map +1 -0
- package/dist/block/gesture-wheel.js +7 -0
- package/dist/block/interaction-sfx.d.ts +3 -0
- package/dist/block/interaction-sfx.d.ts.map +1 -0
- package/dist/block/interaction-sfx.js +16 -0
- package/dist/block/last-operation.d.ts +48 -0
- package/dist/block/last-operation.d.ts.map +1 -0
- package/dist/block/last-operation.js +120 -0
- package/dist/block/loop-cut-interaction.d.ts +5 -0
- package/dist/block/loop-cut-interaction.d.ts.map +1 -0
- package/dist/block/loop-cut-interaction.js +13 -0
- package/dist/block/material-slots.d.ts +61 -0
- package/dist/block/material-slots.d.ts.map +1 -0
- package/dist/block/material-slots.js +131 -0
- package/dist/block/modal-face-operation.d.ts +13 -0
- package/dist/block/modal-face-operation.d.ts.map +1 -0
- package/dist/block/modal-face-operation.js +40 -0
- package/dist/block/modal-session.d.ts +15 -0
- package/dist/block/modal-session.d.ts.map +1 -0
- package/dist/block/modal-session.js +40 -0
- package/dist/block/modal-transform.d.ts +30 -0
- package/dist/block/modal-transform.d.ts.map +1 -0
- package/dist/block/modal-transform.js +144 -0
- package/dist/block/paint.d.ts +3 -0
- package/dist/block/paint.d.ts.map +1 -0
- package/dist/block/paint.js +136 -0
- package/dist/block/panel.d.ts +2 -0
- package/dist/block/panel.d.ts.map +1 -0
- package/dist/block/panel.js +234 -0
- package/dist/block/parametrics.d.ts +4 -0
- package/dist/block/parametrics.d.ts.map +1 -0
- package/dist/block/parametrics.js +9 -0
- package/dist/block/preview.d.ts +6 -0
- package/dist/block/preview.d.ts.map +1 -0
- package/dist/block/preview.js +46 -0
- package/dist/block/rotation-drag.d.ts +5 -0
- package/dist/block/rotation-drag.d.ts.map +1 -0
- package/dist/block/rotation-drag.js +18 -0
- package/dist/block/schema.d.ts +2 -0
- package/dist/block/schema.d.ts.map +1 -0
- package/dist/block/schema.js +1 -0
- package/dist/block/selection-geometry.d.ts +9 -0
- package/dist/block/selection-geometry.d.ts.map +1 -0
- package/dist/block/selection-geometry.js +31 -0
- package/dist/block/selection-model.d.ts +17 -0
- package/dist/block/selection-model.d.ts.map +1 -0
- package/dist/block/selection-model.js +84 -0
- package/dist/block/selection.d.ts +4 -0
- package/dist/block/selection.d.ts.map +1 -0
- package/dist/block/selection.js +2570 -0
- package/dist/block/slots.d.ts +4 -0
- package/dist/block/slots.d.ts.map +1 -0
- package/dist/block/slots.js +17 -0
- package/dist/block/tool.d.ts +3 -0
- package/dist/block/tool.d.ts.map +1 -0
- package/dist/block/tool.js +174 -0
- package/dist/block/toolbar-state.d.ts +46 -0
- package/dist/block/toolbar-state.d.ts.map +1 -0
- package/dist/block/toolbar-state.js +67 -0
- package/dist/block/use-block-face-operation.d.ts +39 -0
- package/dist/block/use-block-face-operation.d.ts.map +1 -0
- package/dist/block/use-block-face-operation.js +218 -0
- package/dist/box-vent/definition.d.ts.map +1 -1
- package/dist/box-vent/definition.js +8 -5
- package/dist/box-vent/geometry.d.ts +4 -0
- package/dist/box-vent/geometry.d.ts.map +1 -1
- package/dist/box-vent/geometry.js +76 -44
- package/dist/box-vent/paint.d.ts +4 -0
- package/dist/box-vent/paint.d.ts.map +1 -0
- package/dist/box-vent/paint.js +40 -0
- package/dist/box-vent/panel.js +4 -4
- package/dist/box-vent/parametrics.js +3 -3
- package/dist/box-vent/renderer.d.ts.map +1 -1
- package/dist/box-vent/renderer.js +29 -10
- package/dist/cabinet/appliance-layout.d.ts +26 -0
- package/dist/cabinet/appliance-layout.d.ts.map +1 -0
- package/dist/cabinet/appliance-layout.js +52 -0
- package/dist/cabinet/compartment-card.d.ts.map +1 -1
- package/dist/cabinet/compartment-card.js +11 -3
- package/dist/cabinet/continuous-placement.d.ts +3 -0
- package/dist/cabinet/continuous-placement.d.ts.map +1 -1
- package/dist/cabinet/continuous-placement.js +6 -0
- package/dist/cabinet/countertop-layout.d.ts +173 -0
- package/dist/cabinet/countertop-layout.d.ts.map +1 -0
- package/dist/cabinet/countertop-layout.js +80 -0
- package/dist/cabinet/definition.d.ts.map +1 -1
- package/dist/cabinet/definition.js +414 -61
- package/dist/cabinet/floorplan-move.d.ts.map +1 -1
- package/dist/cabinet/floorplan-move.js +91 -22
- package/dist/cabinet/geometry/cooktop.d.ts.map +1 -1
- package/dist/cabinet/geometry/cooktop.js +2 -2
- package/dist/cabinet/geometry/fridge.d.ts.map +1 -1
- package/dist/cabinet/geometry/fridge.js +25 -1
- package/dist/cabinet/geometry/fronts.d.ts +4 -0
- package/dist/cabinet/geometry/fronts.d.ts.map +1 -1
- package/dist/cabinet/geometry/fronts.js +1 -1
- package/dist/cabinet/geometry/run.d.ts.map +1 -1
- package/dist/cabinet/geometry/run.js +28 -71
- package/dist/cabinet/geometry/sink.d.ts +2 -12
- package/dist/cabinet/geometry/sink.d.ts.map +1 -1
- package/dist/cabinet/geometry/sink.js +8 -39
- package/dist/cabinet/geometry.d.ts.map +1 -1
- package/dist/cabinet/geometry.js +63 -1
- package/dist/cabinet/hosted-resize.d.ts +8 -0
- package/dist/cabinet/hosted-resize.d.ts.map +1 -0
- package/dist/cabinet/hosted-resize.js +158 -0
- package/dist/cabinet/index.d.ts +1 -0
- package/dist/cabinet/index.d.ts.map +1 -1
- package/dist/cabinet/index.js +1 -0
- package/dist/cabinet/insertion.d.ts +19 -0
- package/dist/cabinet/insertion.d.ts.map +1 -0
- package/dist/cabinet/insertion.js +49 -0
- package/dist/cabinet/move-frame.d.ts.map +1 -1
- package/dist/cabinet/move-frame.js +68 -2
- package/dist/cabinet/panel-context.d.ts +7 -0
- package/dist/cabinet/panel-context.d.ts.map +1 -0
- package/dist/cabinet/panel-context.js +16 -0
- package/dist/cabinet/panel-visibility.d.ts +9 -0
- package/dist/cabinet/panel-visibility.d.ts.map +1 -0
- package/dist/cabinet/panel-visibility.js +26 -0
- package/dist/cabinet/panel.d.ts.map +1 -1
- package/dist/cabinet/panel.js +221 -37
- package/dist/cabinet/placement-dimensions.d.ts +42 -0
- package/dist/cabinet/placement-dimensions.d.ts.map +1 -0
- package/dist/cabinet/placement-dimensions.js +227 -0
- package/dist/cabinet/placement-snap.d.ts +21 -1
- package/dist/cabinet/placement-snap.d.ts.map +1 -1
- package/dist/cabinet/placement-snap.js +48 -6
- package/dist/cabinet/preset-width-debt.d.ts +7 -0
- package/dist/cabinet/preset-width-debt.d.ts.map +1 -0
- package/dist/cabinet/preset-width-debt.js +45 -0
- package/dist/cabinet/presets.d.ts.map +1 -1
- package/dist/cabinet/presets.js +14 -13
- package/dist/cabinet/profiles.d.ts +14 -0
- package/dist/cabinet/profiles.d.ts.map +1 -0
- package/dist/cabinet/profiles.js +30 -0
- package/dist/cabinet/quick-actions.d.ts.map +1 -1
- package/dist/cabinet/quick-actions.js +8 -24
- package/dist/cabinet/reveals.d.ts +37 -0
- package/dist/cabinet/reveals.d.ts.map +1 -0
- package/dist/cabinet/reveals.js +13 -0
- package/dist/cabinet/run-layout.d.ts +98 -5
- package/dist/cabinet/run-layout.d.ts.map +1 -1
- package/dist/cabinet/run-layout.js +430 -37
- package/dist/cabinet/run-ops.d.ts +204 -12
- package/dist/cabinet/run-ops.d.ts.map +1 -1
- package/dist/cabinet/run-ops.js +523 -36
- package/dist/cabinet/run-panel.d.ts +6 -2
- package/dist/cabinet/run-panel.d.ts.map +1 -1
- package/dist/cabinet/run-panel.js +294 -108
- package/dist/cabinet/stack-transitions.d.ts.map +1 -1
- package/dist/cabinet/stack-transitions.js +35 -24
- package/dist/cabinet/stack.d.ts +169 -1
- package/dist/cabinet/stack.d.ts.map +1 -1
- package/dist/cabinet/stack.js +57 -18
- package/dist/cabinet/surfaces.d.ts +4 -0
- package/dist/cabinet/surfaces.d.ts.map +1 -0
- package/dist/cabinet/surfaces.js +101 -0
- package/dist/cabinet/tool.d.ts.map +1 -1
- package/dist/cabinet/tool.js +615 -91
- package/dist/cabinet/tree-structure.d.ts.map +1 -1
- package/dist/cabinet/tree-structure.js +10 -9
- package/dist/cabinet/validation.d.ts +27 -0
- package/dist/cabinet/validation.d.ts.map +1 -0
- package/dist/cabinet/validation.js +56 -0
- package/dist/cabinet/wall-height-presets.d.ts +12 -0
- package/dist/cabinet/wall-height-presets.d.ts.map +1 -0
- package/dist/cabinet/wall-height-presets.js +15 -0
- package/dist/cabinet/wall-snap.d.ts +27 -3
- package/dist/cabinet/wall-snap.d.ts.map +1 -1
- package/dist/cabinet/wall-snap.js +278 -62
- package/dist/cabinet/widths.d.ts +10 -0
- package/dist/cabinet/widths.d.ts.map +1 -0
- package/dist/cabinet/widths.js +13 -0
- package/dist/ceiling/definition.d.ts.map +1 -1
- package/dist/ceiling/definition.js +8 -2
- package/dist/ceiling/floorplan-affordances.d.ts +12 -12
- package/dist/ceiling/materials.d.ts.map +1 -1
- package/dist/ceiling/materials.js +0 -1
- package/dist/ceiling/panel.js +1 -1
- package/dist/ceiling/parametrics.js +1 -1
- package/dist/chimney/definition.js +1 -1
- package/dist/chimney/panel.js +9 -9
- package/dist/chimney/parametrics.js +3 -3
- package/dist/column/definition.d.ts.map +1 -1
- package/dist/column/definition.js +22 -4
- package/dist/column/panel.d.ts.map +1 -1
- package/dist/column/panel.js +37 -7
- package/dist/column/parametrics.d.ts.map +1 -1
- package/dist/column/parametrics.js +5 -3
- package/dist/column/tool.d.ts.map +1 -1
- package/dist/column/tool.js +50 -14
- package/dist/cupola/definition.d.ts.map +1 -1
- package/dist/cupola/definition.js +15 -6
- package/dist/cupola/geometry.d.ts +6 -0
- package/dist/cupola/geometry.d.ts.map +1 -1
- package/dist/cupola/geometry.js +60 -13
- package/dist/cupola/paint.d.ts +4 -0
- package/dist/cupola/paint.d.ts.map +1 -0
- package/dist/cupola/paint.js +39 -0
- package/dist/cupola/panel.js +1 -1
- package/dist/cupola/parametrics.js +3 -3
- package/dist/cupola/renderer.d.ts.map +1 -1
- package/dist/cupola/renderer.js +27 -8
- package/dist/door/floorplan-move.d.ts.map +1 -1
- package/dist/door/floorplan-move.js +1 -1
- package/dist/door/move-tool.d.ts.map +1 -1
- package/dist/door/move-tool.js +86 -32
- package/dist/door/panel.d.ts.map +1 -1
- package/dist/door/panel.js +12 -12
- package/dist/door/parametrics.js +2 -2
- package/dist/door/tool.d.ts.map +1 -1
- package/dist/door/tool.js +16 -4
- package/dist/dormer/csg-geometry.d.ts +6 -42
- package/dist/dormer/csg-geometry.d.ts.map +1 -1
- package/dist/dormer/csg-geometry.js +38 -209
- package/dist/dormer/definition.d.ts +4 -12
- package/dist/dormer/definition.d.ts.map +1 -1
- package/dist/dormer/definition.js +18 -193
- package/dist/dormer/floorplan.d.ts +3 -3
- package/dist/dormer/floorplan.d.ts.map +1 -1
- package/dist/dormer/floorplan.js +6 -17
- package/dist/dormer/geometry.d.ts +5 -24
- package/dist/dormer/geometry.d.ts.map +1 -1
- package/dist/dormer/geometry.js +64 -41
- package/dist/dormer/index.d.ts +1 -1
- package/dist/dormer/index.d.ts.map +1 -1
- package/dist/dormer/index.js +1 -1
- package/dist/dormer/move-tool.d.ts.map +1 -1
- package/dist/dormer/move-tool.js +31 -3
- package/dist/dormer/panel-position-section.js +2 -2
- package/dist/dormer/panel-windows-section.d.ts +9 -0
- package/dist/dormer/panel-windows-section.d.ts.map +1 -0
- package/dist/dormer/panel-windows-section.js +7 -0
- package/dist/dormer/panel.d.ts.map +1 -1
- package/dist/dormer/panel.js +100 -18
- package/dist/dormer/parametrics.d.ts.map +1 -1
- package/dist/dormer/parametrics.js +8 -77
- package/dist/dormer/preview.d.ts.map +1 -1
- package/dist/dormer/preview.js +9 -1
- package/dist/dormer/renderer.d.ts.map +1 -1
- package/dist/dormer/renderer.js +24 -26
- package/dist/dormer/tool.d.ts.map +1 -1
- package/dist/dormer/tool.js +3 -1
- package/dist/dormer/window-layout.d.ts +15 -0
- package/dist/dormer/window-layout.d.ts.map +1 -0
- package/dist/dormer/window-layout.js +59 -0
- package/dist/downspout/definition.d.ts.map +1 -1
- package/dist/downspout/definition.js +17 -4
- package/dist/downspout/geometry.d.ts.map +1 -1
- package/dist/downspout/geometry.js +10 -0
- package/dist/downspout/inspector-editors.d.ts.map +1 -1
- package/dist/downspout/inspector-editors.js +9 -1
- package/dist/downspout/parametrics.d.ts.map +1 -1
- package/dist/downspout/parametrics.js +2 -1
- package/dist/downspout/renderer.d.ts.map +1 -1
- package/dist/downspout/renderer.js +19 -3
- package/dist/downspout/system.d.ts +7 -0
- package/dist/downspout/system.d.ts.map +1 -0
- package/dist/downspout/system.js +114 -0
- package/dist/duct-fitting/accessory-geometry.d.ts +4 -0
- package/dist/duct-fitting/accessory-geometry.d.ts.map +1 -0
- package/dist/duct-fitting/accessory-geometry.js +47 -0
- package/dist/duct-fitting/definition.d.ts.map +1 -1
- package/dist/duct-fitting/definition.js +11 -1
- package/dist/duct-fitting/floorplan.d.ts.map +1 -1
- package/dist/duct-fitting/floorplan.js +8 -0
- package/dist/duct-fitting/geometry.d.ts.map +1 -1
- package/dist/duct-fitting/geometry.js +52 -38
- package/dist/duct-fitting/parametrics.d.ts.map +1 -1
- package/dist/duct-fitting/parametrics.js +78 -15
- package/dist/duct-fitting/ports.d.ts +1 -0
- package/dist/duct-fitting/ports.d.ts.map +1 -1
- package/dist/duct-fitting/ports.js +46 -0
- package/dist/duct-fitting/tool.d.ts +19 -0
- package/dist/duct-fitting/tool.d.ts.map +1 -1
- package/dist/duct-fitting/tool.js +126 -34
- package/dist/duct-segment/continuation.d.ts +21 -0
- package/dist/duct-segment/continuation.d.ts.map +1 -0
- package/dist/duct-segment/continuation.js +167 -0
- package/dist/duct-segment/definition.d.ts.map +1 -1
- package/dist/duct-segment/definition.js +19 -18
- package/dist/duct-segment/floorplan.d.ts.map +1 -1
- package/dist/duct-segment/floorplan.js +43 -0
- package/dist/duct-segment/geometry.d.ts.map +1 -1
- package/dist/duct-segment/geometry.js +3 -0
- package/dist/duct-segment/move-tool.d.ts.map +1 -1
- package/dist/duct-segment/move-tool.js +33 -6
- package/dist/duct-segment/parametrics.d.ts.map +1 -1
- package/dist/duct-segment/parametrics.js +49 -1
- package/dist/duct-segment/selection.d.ts +3 -4
- package/dist/duct-segment/selection.d.ts.map +1 -1
- package/dist/duct-segment/selection.js +186 -158
- package/dist/duct-segment/tool.d.ts +38 -0
- package/dist/duct-segment/tool.d.ts.map +1 -1
- package/dist/duct-segment/tool.js +306 -677
- package/dist/duct-terminal/parametrics.js +2 -2
- package/dist/duct-terminal/tool.d.ts.map +1 -1
- package/dist/duct-terminal/tool.js +37 -7
- package/dist/elevator/panel.d.ts.map +1 -1
- package/dist/elevator/panel.js +7 -7
- package/dist/elevator/system.d.ts.map +1 -1
- package/dist/elevator/system.js +10 -1
- package/dist/eyebrow-vent/definition.d.ts.map +1 -1
- package/dist/eyebrow-vent/definition.js +8 -5
- package/dist/eyebrow-vent/geometry.d.ts +4 -0
- package/dist/eyebrow-vent/geometry.d.ts.map +1 -1
- package/dist/eyebrow-vent/geometry.js +60 -15
- package/dist/eyebrow-vent/paint.d.ts +4 -0
- package/dist/eyebrow-vent/paint.d.ts.map +1 -0
- package/dist/eyebrow-vent/paint.js +33 -0
- package/dist/eyebrow-vent/panel.js +1 -1
- package/dist/eyebrow-vent/parametrics.js +3 -3
- package/dist/eyebrow-vent/renderer.d.ts.map +1 -1
- package/dist/eyebrow-vent/renderer.js +27 -8
- package/dist/fence/definition.d.ts.map +1 -1
- package/dist/fence/definition.js +2 -1
- package/dist/fence/floorplan-affordances.d.ts +1 -0
- package/dist/fence/floorplan-affordances.d.ts.map +1 -1
- package/dist/fence/floorplan-affordances.js +30 -1
- package/dist/fence/floorplan.d.ts.map +1 -1
- package/dist/fence/floorplan.js +14 -0
- package/dist/fence/inspector-editors.js +1 -1
- package/dist/fence/parametrics.js +3 -3
- package/dist/fence/tool.d.ts.map +1 -1
- package/dist/fence/tool.js +47 -20
- package/dist/gutter/corner-mitre.d.ts.map +1 -1
- package/dist/gutter/corner-mitre.js +47 -7
- package/dist/gutter/definition.d.ts.map +1 -1
- package/dist/gutter/definition.js +23 -13
- package/dist/gutter/eave-align.d.ts.map +1 -1
- package/dist/gutter/eave-align.js +10 -0
- package/dist/gutter/eave-snap.d.ts +1 -1
- package/dist/gutter/eave-snap.d.ts.map +1 -1
- package/dist/gutter/eave-snap.js +10 -23
- package/dist/gutter/geometry.d.ts.map +1 -1
- package/dist/gutter/geometry.js +126 -8
- package/dist/gutter/outlet-lookup.d.ts.map +1 -1
- package/dist/gutter/outlet-lookup.js +22 -1
- package/dist/gutter/paint.d.ts +3 -0
- package/dist/gutter/paint.d.ts.map +1 -0
- package/dist/gutter/paint.js +6 -0
- package/dist/gutter/parametrics.d.ts.map +1 -1
- package/dist/gutter/parametrics.js +4 -1
- package/dist/gutter/renderer.d.ts.map +1 -1
- package/dist/gutter/renderer.js +63 -7
- package/dist/gutter/trim-clip.d.ts +3 -0
- package/dist/gutter/trim-clip.d.ts.map +1 -0
- package/dist/gutter/trim-clip.js +5 -0
- package/dist/hvac-equipment/parametrics.js +3 -3
- package/dist/hvac-equipment/tool.d.ts.map +1 -1
- package/dist/hvac-equipment/tool.js +12 -2
- package/dist/imported-mesh/definition.d.ts +5 -0
- package/dist/imported-mesh/definition.d.ts.map +1 -0
- package/dist/imported-mesh/definition.js +38 -0
- package/dist/imported-mesh/floorplan.d.ts +4 -0
- package/dist/imported-mesh/floorplan.d.ts.map +1 -0
- package/dist/imported-mesh/floorplan.js +34 -0
- package/dist/imported-mesh/geometry.d.ts +5 -0
- package/dist/imported-mesh/geometry.d.ts.map +1 -0
- package/dist/imported-mesh/geometry.js +34 -0
- package/dist/imported-mesh/index.d.ts +4 -0
- package/dist/imported-mesh/index.d.ts.map +1 -0
- package/dist/imported-mesh/index.js +3 -0
- package/dist/imported-mesh/schema.d.ts +2 -0
- package/dist/imported-mesh/schema.d.ts.map +1 -0
- package/dist/imported-mesh/schema.js +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/item/definition.d.ts.map +1 -1
- package/dist/item/definition.js +10 -2
- package/dist/item/floorplan-move.d.ts +9 -1
- package/dist/item/floorplan-move.d.ts.map +1 -1
- package/dist/item/floorplan-move.js +74 -2
- package/dist/item/floorplan.d.ts.map +1 -1
- package/dist/item/floorplan.js +33 -1
- package/dist/item/move-tool.d.ts +28 -1
- package/dist/item/move-tool.d.ts.map +1 -1
- package/dist/item/move-tool.js +15 -3
- package/dist/item/panel.js +1 -1
- package/dist/item/renderer.d.ts.map +1 -1
- package/dist/item/renderer.js +16 -6
- package/dist/item/system.d.ts +5 -0
- package/dist/item/system.d.ts.map +1 -1
- package/dist/item/system.js +7 -1
- package/dist/lean-to-extension/arc.d.ts +14 -0
- package/dist/lean-to-extension/arc.d.ts.map +1 -0
- package/dist/lean-to-extension/arc.js +56 -0
- package/dist/lean-to-extension/assembly.d.ts +61 -0
- package/dist/lean-to-extension/assembly.d.ts.map +1 -0
- package/dist/lean-to-extension/assembly.js +761 -0
- package/dist/lean-to-extension/canopy-joint.d.ts +35 -0
- package/dist/lean-to-extension/canopy-joint.d.ts.map +1 -0
- package/dist/lean-to-extension/canopy-joint.js +234 -0
- package/dist/lean-to-extension/conical-host.d.ts +15 -0
- package/dist/lean-to-extension/conical-host.d.ts.map +1 -0
- package/dist/lean-to-extension/conical-host.js +113 -0
- package/dist/lean-to-extension/corner-joint.d.ts +29 -0
- package/dist/lean-to-extension/corner-joint.d.ts.map +1 -0
- package/dist/lean-to-extension/corner-joint.js +1202 -0
- package/dist/lean-to-extension/definition.d.ts +4 -0
- package/dist/lean-to-extension/definition.d.ts.map +1 -0
- package/dist/lean-to-extension/definition.js +433 -0
- package/dist/lean-to-extension/floorplan-affordances.d.ts +4 -0
- package/dist/lean-to-extension/floorplan-affordances.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan-affordances.js +144 -0
- package/dist/lean-to-extension/floorplan-move.d.ts +3 -0
- package/dist/lean-to-extension/floorplan-move.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan-move.js +157 -0
- package/dist/lean-to-extension/floorplan-tool.d.ts +4 -0
- package/dist/lean-to-extension/floorplan-tool.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan-tool.js +385 -0
- package/dist/lean-to-extension/floorplan.d.ts +3 -0
- package/dist/lean-to-extension/floorplan.d.ts.map +1 -0
- package/dist/lean-to-extension/floorplan.js +373 -0
- package/dist/lean-to-extension/geometry.d.ts +7 -0
- package/dist/lean-to-extension/geometry.d.ts.map +1 -0
- package/dist/lean-to-extension/geometry.js +662 -0
- package/dist/lean-to-extension/index.d.ts +8 -0
- package/dist/lean-to-extension/index.d.ts.map +1 -0
- package/dist/lean-to-extension/index.js +7 -0
- package/dist/lean-to-extension/layout.d.ts +108 -0
- package/dist/lean-to-extension/layout.d.ts.map +1 -0
- package/dist/lean-to-extension/layout.js +477 -0
- package/dist/lean-to-extension/managed-preview.d.ts +3 -0
- package/dist/lean-to-extension/managed-preview.d.ts.map +1 -0
- package/dist/lean-to-extension/managed-preview.js +93 -0
- package/dist/lean-to-extension/move-tool.d.ts +8 -0
- package/dist/lean-to-extension/move-tool.d.ts.map +1 -0
- package/dist/lean-to-extension/move-tool.js +202 -0
- package/dist/lean-to-extension/paint.d.ts +2 -0
- package/dist/lean-to-extension/paint.d.ts.map +1 -0
- package/dist/lean-to-extension/paint.js +16 -0
- package/dist/lean-to-extension/parametrics.d.ts +4 -0
- package/dist/lean-to-extension/parametrics.d.ts.map +1 -0
- package/dist/lean-to-extension/parametrics.js +570 -0
- package/dist/lean-to-extension/placement-scope.d.ts +3 -0
- package/dist/lean-to-extension/placement-scope.d.ts.map +1 -0
- package/dist/lean-to-extension/placement-scope.js +4 -0
- package/dist/lean-to-extension/placement-validation.d.ts +4 -0
- package/dist/lean-to-extension/placement-validation.d.ts.map +1 -0
- package/dist/lean-to-extension/placement-validation.js +324 -0
- package/dist/lean-to-extension/placement.d.ts +59 -0
- package/dist/lean-to-extension/placement.d.ts.map +1 -0
- package/dist/lean-to-extension/placement.js +331 -0
- package/dist/lean-to-extension/plan-footprint.d.ts +10 -0
- package/dist/lean-to-extension/plan-footprint.d.ts.map +1 -0
- package/dist/lean-to-extension/plan-footprint.js +27 -0
- package/dist/lean-to-extension/preview-geometry.d.ts +7 -0
- package/dist/lean-to-extension/preview-geometry.d.ts.map +1 -0
- package/dist/lean-to-extension/preview-geometry.js +40 -0
- package/dist/lean-to-extension/preview.d.ts +7 -0
- package/dist/lean-to-extension/preview.d.ts.map +1 -0
- package/dist/lean-to-extension/preview.js +20 -0
- package/dist/lean-to-extension/renderer.d.ts +6 -0
- package/dist/lean-to-extension/renderer.d.ts.map +1 -0
- package/dist/lean-to-extension/renderer.js +34 -0
- package/dist/lean-to-extension/roof-attachment.d.ts +28 -0
- package/dist/lean-to-extension/roof-attachment.d.ts.map +1 -0
- package/dist/lean-to-extension/roof-attachment.js +376 -0
- package/dist/lean-to-extension/schema.d.ts +2 -0
- package/dist/lean-to-extension/schema.d.ts.map +1 -0
- package/dist/lean-to-extension/schema.js +1 -0
- package/dist/lean-to-extension/slots.d.ts +5 -0
- package/dist/lean-to-extension/slots.d.ts.map +1 -0
- package/dist/lean-to-extension/slots.js +15 -0
- package/dist/lean-to-extension/system.d.ts +7 -0
- package/dist/lean-to-extension/system.d.ts.map +1 -0
- package/dist/lean-to-extension/system.js +726 -0
- package/dist/lean-to-extension/tool.d.ts +3 -0
- package/dist/lean-to-extension/tool.d.ts.map +1 -0
- package/dist/lean-to-extension/tool.js +580 -0
- package/dist/lean-to-extension/wall-target.d.ts +10 -0
- package/dist/lean-to-extension/wall-target.d.ts.map +1 -0
- package/dist/lean-to-extension/wall-target.js +29 -0
- package/dist/lineset/definition.d.ts.map +1 -1
- package/dist/lineset/definition.js +1 -0
- package/dist/liquid-line/definition.d.ts.map +1 -1
- package/dist/liquid-line/definition.js +1 -0
- package/dist/pipe-fitting/definition.d.ts.map +1 -1
- package/dist/pipe-fitting/definition.js +16 -2
- package/dist/pipe-fitting/floorplan.d.ts.map +1 -1
- package/dist/pipe-fitting/floorplan.js +4 -0
- package/dist/pipe-fitting/geometry.d.ts +3 -5
- package/dist/pipe-fitting/geometry.d.ts.map +1 -1
- package/dist/pipe-fitting/geometry.js +154 -21
- package/dist/pipe-fitting/inline-insertion.d.ts +13 -0
- package/dist/pipe-fitting/inline-insertion.d.ts.map +1 -0
- package/dist/pipe-fitting/inline-insertion.js +96 -0
- package/dist/pipe-fitting/parametrics.d.ts.map +1 -1
- package/dist/pipe-fitting/parametrics.js +17 -3
- package/dist/pipe-fitting/ports.d.ts.map +1 -1
- package/dist/pipe-fitting/ports.js +8 -1
- package/dist/pipe-fitting/tool.d.ts +26 -0
- package/dist/pipe-fitting/tool.d.ts.map +1 -1
- package/dist/pipe-fitting/tool.js +182 -37
- package/dist/pipe-segment/continuation.d.ts +22 -0
- package/dist/pipe-segment/continuation.d.ts.map +1 -0
- package/dist/pipe-segment/continuation.js +146 -0
- package/dist/pipe-segment/definition.d.ts.map +1 -1
- package/dist/pipe-segment/definition.js +23 -7
- package/dist/pipe-segment/floorplan.d.ts.map +1 -1
- package/dist/pipe-segment/floorplan.js +42 -0
- package/dist/pipe-segment/geometry.d.ts +2 -1
- package/dist/pipe-segment/geometry.d.ts.map +1 -1
- package/dist/pipe-segment/geometry.js +4 -1
- package/dist/pipe-segment/move-tool.d.ts.map +1 -1
- package/dist/pipe-segment/move-tool.js +25 -5
- package/dist/pipe-segment/parametrics.d.ts.map +1 -1
- package/dist/pipe-segment/parametrics.js +49 -0
- package/dist/pipe-segment/selection.d.ts +3 -4
- package/dist/pipe-segment/selection.d.ts.map +1 -1
- package/dist/pipe-segment/selection.js +169 -105
- package/dist/pipe-segment/slope.d.ts +5 -0
- package/dist/pipe-segment/slope.d.ts.map +1 -0
- package/dist/pipe-segment/slope.js +10 -0
- package/dist/pipe-segment/tool.d.ts.map +1 -1
- package/dist/pipe-segment/tool.js +325 -545
- package/dist/pipe-trap/tool.d.ts.map +1 -1
- package/dist/pipe-trap/tool.js +15 -2
- package/dist/procedural-item/definition.d.ts +4 -0
- package/dist/procedural-item/definition.d.ts.map +1 -0
- package/dist/procedural-item/definition.js +254 -0
- package/dist/procedural-item/geometry.d.ts +31 -0
- package/dist/procedural-item/geometry.d.ts.map +1 -0
- package/dist/procedural-item/geometry.js +88 -0
- package/dist/procedural-item/index.d.ts +3 -0
- package/dist/procedural-item/index.d.ts.map +1 -0
- package/dist/procedural-item/index.js +2 -0
- package/dist/procedural-item/move-session.d.ts +15 -0
- package/dist/procedural-item/move-session.d.ts.map +1 -0
- package/dist/procedural-item/move-session.js +197 -0
- package/dist/procedural-item/move-tool.d.ts +5 -0
- package/dist/procedural-item/move-tool.d.ts.map +1 -0
- package/dist/procedural-item/move-tool.js +193 -0
- package/dist/procedural-item/renderer.d.ts +5 -0
- package/dist/procedural-item/renderer.d.ts.map +1 -0
- package/dist/procedural-item/renderer.js +66 -0
- package/dist/ridge-vent/definition.js +1 -1
- package/dist/ridge-vent/panel.d.ts.map +1 -1
- package/dist/ridge-vent/panel.js +4 -4
- package/dist/ridge-vent/parametrics.js +1 -1
- package/dist/roof/conical-roof-placement.d.ts +36 -0
- package/dist/roof/conical-roof-placement.d.ts.map +1 -0
- package/dist/roof/conical-roof-placement.js +134 -0
- package/dist/roof/conical-roof.d.ts +3 -0
- package/dist/roof/conical-roof.d.ts.map +1 -0
- package/dist/roof/conical-roof.js +53 -0
- package/dist/roof/definition.d.ts +3 -10
- package/dist/roof/definition.d.ts.map +1 -1
- package/dist/roof/definition.js +83 -13
- package/dist/roof/floorplan.d.ts +3 -10
- package/dist/roof/floorplan.d.ts.map +1 -1
- package/dist/roof/floorplan.js +139 -165
- package/dist/roof/index.d.ts +1 -0
- package/dist/roof/index.d.ts.map +1 -1
- package/dist/roof/index.js +1 -0
- package/dist/roof/panel.d.ts.map +1 -1
- package/dist/roof/panel.js +26 -25
- package/dist/roof/renderer.d.ts.map +1 -1
- package/dist/roof/roof-footprint-source.d.ts +16 -0
- package/dist/roof/roof-footprint-source.d.ts.map +1 -0
- package/dist/roof/roof-footprint-source.js +14 -0
- package/dist/roof/roof-footprint.d.ts +25 -0
- package/dist/roof/roof-footprint.d.ts.map +1 -0
- package/dist/roof/roof-footprint.js +94 -0
- package/dist/roof/roof-placement-mode.d.ts +18 -0
- package/dist/roof/roof-placement-mode.d.ts.map +1 -0
- package/dist/roof/roof-placement-mode.js +24 -0
- package/dist/roof/tool.d.ts +10 -0
- package/dist/roof/tool.d.ts.map +1 -0
- package/dist/roof/tool.js +922 -0
- package/dist/roof-segment/definition.d.ts.map +1 -1
- package/dist/roof-segment/definition.js +52 -8
- package/dist/roof-segment/floorplan-affordances.d.ts +5 -6
- package/dist/roof-segment/floorplan-affordances.d.ts.map +1 -1
- package/dist/roof-segment/floorplan-affordances.js +64 -18
- package/dist/roof-segment/floorplan.d.ts +3 -2
- package/dist/roof-segment/floorplan.d.ts.map +1 -1
- package/dist/roof-segment/floorplan.js +95 -46
- package/dist/roof-segment/panel.d.ts.map +1 -1
- package/dist/roof-segment/panel.js +122 -27
- package/dist/scan/definition.d.ts +2 -3
- package/dist/scan/definition.d.ts.map +1 -1
- package/dist/scan/definition.js +9 -7
- package/dist/scan/parametrics.d.ts.map +1 -1
- package/dist/scan/parametrics.js +13 -1
- package/dist/scan/renderer.d.ts.map +1 -1
- package/dist/scan/renderer.js +8 -2
- package/dist/shared/accessory-cursor.d.ts +7 -0
- package/dist/shared/accessory-cursor.d.ts.map +1 -0
- package/dist/shared/accessory-cursor.js +83 -0
- package/dist/shared/accessory-floorplan.d.ts +4 -0
- package/dist/shared/accessory-floorplan.d.ts.map +1 -0
- package/dist/shared/accessory-floorplan.js +51 -0
- package/dist/shared/accessory-geometry.d.ts +7 -0
- package/dist/shared/accessory-geometry.d.ts.map +1 -0
- package/dist/shared/accessory-geometry.js +79 -0
- package/dist/shared/accessory-placement.d.ts +10 -0
- package/dist/shared/accessory-placement.d.ts.map +1 -0
- package/dist/shared/accessory-placement.js +126 -0
- package/dist/shared/accessory-snapping.d.ts +5 -0
- package/dist/shared/accessory-snapping.d.ts.map +1 -0
- package/dist/shared/accessory-snapping.js +40 -0
- package/dist/shared/automatic-run-end-cap.d.ts +12 -0
- package/dist/shared/automatic-run-end-cap.d.ts.map +1 -0
- package/dist/shared/automatic-run-end-cap.js +169 -0
- package/dist/shared/block-face-host.d.ts +15 -0
- package/dist/shared/block-face-host.d.ts.map +1 -0
- package/dist/shared/block-face-host.js +36 -0
- package/dist/shared/connection-compatibility.d.ts +8 -0
- package/dist/shared/connection-compatibility.d.ts.map +1 -0
- package/dist/shared/connection-compatibility.js +28 -0
- package/dist/shared/connection-feedback.d.ts +10 -0
- package/dist/shared/connection-feedback.d.ts.map +1 -0
- package/dist/shared/connection-feedback.js +17 -0
- package/dist/shared/distribution-run-contract.d.ts +49 -0
- package/dist/shared/distribution-run-contract.d.ts.map +1 -0
- package/dist/shared/distribution-run-contract.js +30 -0
- package/dist/shared/distribution-run-tool.d.ts +117 -0
- package/dist/shared/distribution-run-tool.d.ts.map +1 -0
- package/dist/shared/distribution-run-tool.js +986 -0
- package/dist/shared/dormer-wall-opening-placement.d.ts +21 -0
- package/dist/shared/dormer-wall-opening-placement.d.ts.map +1 -0
- package/dist/shared/dormer-wall-opening-placement.js +101 -0
- package/dist/shared/duct-adapter.d.ts +10 -0
- package/dist/shared/duct-adapter.d.ts.map +1 -0
- package/dist/shared/duct-adapter.js +43 -0
- package/dist/shared/elbow-branch-continuation.d.ts +20 -0
- package/dist/shared/elbow-branch-continuation.d.ts.map +1 -0
- package/dist/shared/elbow-branch-continuation.js +200 -0
- package/dist/shared/fitting-clearance.d.ts +5 -0
- package/dist/shared/fitting-clearance.d.ts.map +1 -0
- package/dist/shared/fitting-clearance.js +11 -0
- package/dist/shared/fitting-deletion-cleanup.d.ts +14 -0
- package/dist/shared/fitting-deletion-cleanup.d.ts.map +1 -0
- package/dist/shared/fitting-deletion-cleanup.js +297 -0
- package/dist/shared/fitting-surface-support.d.ts +5 -0
- package/dist/shared/fitting-surface-support.d.ts.map +1 -0
- package/dist/shared/fitting-surface-support.js +42 -0
- package/dist/shared/fitting-tool-options.d.ts +4 -0
- package/dist/shared/fitting-tool-options.d.ts.map +1 -0
- package/dist/shared/fitting-tool-options.js +175 -0
- package/dist/shared/floor-placement.d.ts +1 -1
- package/dist/shared/floor-placement.d.ts.map +1 -1
- package/dist/shared/floor-placement.js +13 -33
- package/dist/shared/ghost-materials.d.ts.map +1 -1
- package/dist/shared/ghost-materials.js +2 -1
- package/dist/shared/lean-to-post-omissions.d.ts +8 -0
- package/dist/shared/lean-to-post-omissions.d.ts.map +1 -0
- package/dist/shared/lean-to-post-omissions.js +51 -0
- package/dist/shared/mep-fitting-actions.d.ts +5 -0
- package/dist/shared/mep-fitting-actions.d.ts.map +1 -0
- package/dist/shared/mep-fitting-actions.js +16 -0
- package/dist/shared/mep-presets.d.ts +11 -0
- package/dist/shared/mep-presets.d.ts.map +1 -0
- package/dist/shared/mep-presets.js +34 -0
- package/dist/shared/node-batch/candidates.d.ts +29 -0
- package/dist/shared/node-batch/candidates.d.ts.map +1 -0
- package/dist/shared/node-batch/candidates.js +260 -0
- package/dist/shared/node-batch/store.d.ts +26 -0
- package/dist/shared/node-batch/store.d.ts.map +1 -0
- package/dist/shared/node-batch/store.js +319 -0
- package/dist/shared/node-batch/system.d.ts +8 -0
- package/dist/shared/node-batch/system.d.ts.map +1 -0
- package/dist/shared/node-batch/system.js +569 -0
- package/dist/shared/node-batch/types.d.ts +99 -0
- package/dist/shared/node-batch/types.d.ts.map +1 -0
- package/dist/shared/node-batch/types.js +4 -0
- package/dist/shared/opening-move-history.d.ts +47 -0
- package/dist/shared/opening-move-history.d.ts.map +1 -0
- package/dist/shared/opening-move-history.js +18 -0
- package/dist/shared/opening-move-wall-gate.d.ts +55 -0
- package/dist/shared/opening-move-wall-gate.d.ts.map +1 -0
- package/dist/shared/opening-move-wall-gate.js +44 -0
- package/dist/shared/panel-fields.d.ts +15 -0
- package/dist/shared/panel-fields.d.ts.map +1 -0
- package/dist/shared/panel-fields.js +31 -0
- package/dist/shared/path-point-affordance.d.ts +2 -2
- package/dist/shared/path-point-affordance.d.ts.map +1 -1
- package/dist/shared/path-point-affordance.js +30 -6
- package/dist/shared/placeholder-geometry.d.ts.map +1 -1
- package/dist/shared/placeholder-geometry.js +4 -0
- package/dist/shared/ports.d.ts +20 -3
- package/dist/shared/ports.d.ts.map +1 -1
- package/dist/shared/ports.js +148 -7
- package/dist/shared/primitive-uv.d.ts +17 -0
- package/dist/shared/primitive-uv.d.ts.map +1 -0
- package/dist/shared/primitive-uv.js +107 -0
- package/dist/shared/reducer-size.d.ts +2 -0
- package/dist/shared/reducer-size.d.ts.map +1 -0
- package/dist/shared/reducer-size.js +12 -0
- package/dist/shared/resting-surface-plan.d.ts +3 -0
- package/dist/shared/resting-surface-plan.d.ts.map +1 -0
- package/dist/shared/resting-surface-plan.js +28 -0
- package/dist/shared/ridge-snap.js +1 -1
- package/dist/shared/roof-surface.d.ts.map +1 -1
- package/dist/shared/roof-surface.js +17 -2
- package/dist/shared/run-cursor.d.ts +22 -0
- package/dist/shared/run-cursor.d.ts.map +1 -0
- package/dist/shared/run-cursor.js +19 -0
- package/dist/shared/run-direction-feedback.d.ts +20 -0
- package/dist/shared/run-direction-feedback.d.ts.map +1 -0
- package/dist/shared/run-direction-feedback.js +139 -0
- package/dist/shared/run-hanger-controls.d.ts +7 -0
- package/dist/shared/run-hanger-controls.d.ts.map +1 -0
- package/dist/shared/run-hanger-controls.js +44 -0
- package/dist/shared/run-hanger-inspector.d.ts +5 -0
- package/dist/shared/run-hanger-inspector.d.ts.map +1 -0
- package/dist/shared/run-hanger-inspector.js +43 -0
- package/dist/shared/run-hanger-mode.d.ts +11 -0
- package/dist/shared/run-hanger-mode.d.ts.map +1 -0
- package/dist/shared/run-hanger-mode.js +32 -0
- package/dist/shared/run-hanger-system.d.ts +3 -0
- package/dist/shared/run-hanger-system.d.ts.map +1 -0
- package/dist/shared/run-hanger-system.js +39 -0
- package/dist/shared/run-hangers.d.ts +25 -0
- package/dist/shared/run-hangers.d.ts.map +1 -0
- package/dist/shared/run-hangers.js +261 -0
- package/dist/shared/run-port-snap.d.ts +11 -0
- package/dist/shared/run-port-snap.d.ts.map +1 -0
- package/dist/shared/run-port-snap.js +19 -0
- package/dist/shared/run-screen-direction.d.ts +5 -0
- package/dist/shared/run-screen-direction.d.ts.map +1 -0
- package/dist/shared/run-screen-direction.js +24 -0
- package/dist/shared/selection-handles.d.ts +4 -0
- package/dist/shared/selection-handles.d.ts.map +1 -1
- package/dist/shared/selection-handles.js +10 -0
- package/dist/shared/slot-paint.d.ts +8 -1
- package/dist/shared/slot-paint.d.ts.map +1 -1
- package/dist/shared/slot-paint.js +120 -27
- package/dist/shared/surface-paint.d.ts +1 -2
- package/dist/shared/surface-paint.d.ts.map +1 -1
- package/dist/shared/surface-paint.js +9 -20
- package/dist/shared/system-check-panel.d.ts +6 -0
- package/dist/shared/system-check-panel.d.ts.map +1 -0
- package/dist/shared/system-check-panel.js +62 -0
- package/dist/shared/system-checks.d.ts +9 -0
- package/dist/shared/system-checks.d.ts.map +1 -0
- package/dist/shared/system-checks.js +131 -0
- package/dist/shared/wall-attach-target.d.ts +14 -2
- package/dist/shared/wall-attach-target.d.ts.map +1 -1
- package/dist/shared/wall-attach-target.js +108 -4
- package/dist/shared/wall-opening-clearance.d.ts +19 -0
- package/dist/shared/wall-opening-clearance.d.ts.map +1 -0
- package/dist/shared/wall-opening-clearance.js +28 -0
- package/dist/shared/wall-run-move.d.ts +17 -0
- package/dist/shared/wall-run-move.d.ts.map +1 -0
- package/dist/shared/wall-run-move.js +56 -0
- package/dist/shelf/definition.d.ts.map +1 -1
- package/dist/shelf/definition.js +2 -1
- package/dist/shelf/floorplan-affordances.d.ts.map +1 -1
- package/dist/shelf/floorplan-affordances.js +5 -3
- package/dist/shelf/floorplan-move.d.ts.map +1 -1
- package/dist/shelf/floorplan-move.js +3 -2
- package/dist/shelf/geometry.d.ts.map +1 -1
- package/dist/shelf/geometry.js +2 -10
- package/dist/shelf/parametrics.js +4 -4
- package/dist/site/renderer.d.ts.map +1 -1
- package/dist/site/renderer.js +40 -28
- package/dist/site/terrain-geometry.d.ts +1 -1
- package/dist/site/terrain-geometry.d.ts.map +1 -1
- package/dist/site/terrain-geometry.js +35 -9
- package/dist/site/terrain-mesh.d.ts +5 -0
- package/dist/site/terrain-mesh.d.ts.map +1 -1
- package/dist/site/terrain-mesh.js +63 -34
- package/dist/skylight/definition.js +1 -1
- package/dist/skylight/panel.js +6 -6
- package/dist/skylight/parametrics.js +2 -2
- package/dist/slab/definition.d.ts.map +1 -1
- package/dist/slab/definition.js +6 -1
- package/dist/slab/dependency-tracker.d.ts +3 -0
- package/dist/slab/dependency-tracker.d.ts.map +1 -0
- package/dist/slab/dependency-tracker.js +104 -0
- package/dist/slab/floorplan-affordances.d.ts +8 -8
- package/dist/slab/geometry.d.ts.map +1 -1
- package/dist/slab/geometry.js +16 -2
- package/dist/slab/panel.js +1 -1
- package/dist/slab/parametrics.js +1 -1
- package/dist/slab/system.d.ts.map +1 -1
- package/dist/slab/system.js +8 -64
- package/dist/solar-panel/definition.js +1 -1
- package/dist/solar-panel/panel.js +2 -2
- package/dist/solar-panel/parametrics.js +2 -2
- package/dist/spawn/panel.js +1 -1
- package/dist/stair/panel.d.ts.map +1 -1
- package/dist/stair/panel.js +23 -16
- package/dist/stair/stair-type.d.ts +18 -0
- package/dist/stair/stair-type.d.ts.map +1 -0
- package/dist/stair/stair-type.js +25 -0
- package/dist/stair-segment/panel.d.ts.map +1 -1
- package/dist/stair-segment/panel.js +45 -6
- package/dist/turbine-vent/definition.d.ts.map +1 -1
- package/dist/turbine-vent/definition.js +8 -5
- package/dist/turbine-vent/geometry.d.ts.map +1 -1
- package/dist/turbine-vent/geometry.js +48 -18
- package/dist/turbine-vent/paint.d.ts +4 -0
- package/dist/turbine-vent/paint.d.ts.map +1 -0
- package/dist/turbine-vent/paint.js +35 -0
- package/dist/turbine-vent/panel.js +1 -1
- package/dist/turbine-vent/parametrics.js +2 -2
- package/dist/turbine-vent/renderer.d.ts.map +1 -1
- package/dist/turbine-vent/renderer.js +31 -9
- package/dist/unit/definition.d.ts +10 -0
- package/dist/unit/definition.d.ts.map +1 -0
- package/dist/unit/definition.js +38 -0
- package/dist/unit/index.d.ts +2 -0
- package/dist/unit/index.d.ts.map +1 -0
- package/dist/unit/index.js +1 -0
- package/dist/unit/parametrics.d.ts +3 -0
- package/dist/unit/parametrics.d.ts.map +1 -0
- package/dist/unit/parametrics.js +4 -0
- package/dist/unit/schema.d.ts +2 -0
- package/dist/unit/schema.d.ts.map +1 -0
- package/dist/unit/schema.js +1 -0
- package/dist/unit/unit-panel.d.ts +5 -0
- package/dist/unit/unit-panel.d.ts.map +1 -0
- package/dist/unit/unit-panel.js +61 -0
- package/dist/wall/curve-eligibility.d.ts +3 -0
- package/dist/wall/curve-eligibility.d.ts.map +1 -0
- package/dist/wall/curve-eligibility.js +10 -0
- package/dist/wall/curve-tool.d.ts.map +1 -1
- package/dist/wall/curve-tool.js +8 -11
- package/dist/wall/definition.d.ts +1 -1
- package/dist/wall/definition.d.ts.map +1 -1
- package/dist/wall/definition.js +36 -13
- package/dist/wall/floorplan-affordances.d.ts +1 -0
- package/dist/wall/floorplan-affordances.d.ts.map +1 -1
- package/dist/wall/floorplan-affordances.js +46 -7
- package/dist/wall/floorplan-move.d.ts +3 -4
- package/dist/wall/floorplan-move.d.ts.map +1 -1
- package/dist/wall/floorplan-move.js +122 -9
- package/dist/wall/floorplan.d.ts.map +1 -1
- package/dist/wall/floorplan.js +19 -23
- package/dist/wall/move-shared.d.ts.map +1 -1
- package/dist/wall/move-shared.js +10 -7
- package/dist/wall/paint.d.ts.map +1 -1
- package/dist/wall/paint.js +2 -0
- package/dist/wall/panel.d.ts.map +1 -1
- package/dist/wall/panel.js +10 -17
- package/dist/wall/parametrics.js +2 -2
- package/dist/wall/pointer-transparency.d.ts +128 -0
- package/dist/wall/pointer-transparency.d.ts.map +1 -0
- package/dist/wall/pointer-transparency.js +147 -0
- package/dist/wall/renderer.d.ts.map +1 -1
- package/dist/wall/renderer.js +65 -8
- package/dist/wall/selection-hit-owner.d.ts +53 -0
- package/dist/wall/selection-hit-owner.d.ts.map +1 -0
- package/dist/wall/selection-hit-owner.js +79 -0
- package/dist/wall/system.d.ts +2 -0
- package/dist/wall/system.d.ts.map +1 -1
- package/dist/wall/system.js +66 -25
- package/dist/wall/tool.d.ts.map +1 -1
- package/dist/wall/tool.js +5 -0
- package/dist/wall/treatment-level-data.d.ts +6 -1
- package/dist/wall/treatment-level-data.d.ts.map +1 -1
- package/dist/wall/treatment-level-data.js +82 -5
- package/dist/wall/treatments.d.ts +1 -0
- package/dist/wall/treatments.d.ts.map +1 -1
- package/dist/wall/treatments.js +5 -0
- package/dist/wall/wall-batch-system.d.ts +38 -6
- package/dist/wall/wall-batch-system.d.ts.map +1 -1
- package/dist/wall/wall-batch-system.js +122 -25
- package/dist/wall/wall-batch.js +2 -2
- package/dist/window/definition.d.ts +2 -1
- package/dist/window/definition.d.ts.map +1 -1
- package/dist/window/definition.js +51 -24
- package/dist/window/floorplan-move.d.ts.map +1 -1
- package/dist/window/floorplan-move.js +1 -1
- package/dist/window/move-tool.d.ts +7 -5
- package/dist/window/move-tool.d.ts.map +1 -1
- package/dist/window/move-tool.js +344 -58
- package/dist/window/panel.d.ts.map +1 -1
- package/dist/window/panel.js +8 -6
- package/dist/window/parametrics.js +2 -2
- package/dist/window/renderer.d.ts.map +1 -1
- package/dist/window/renderer.js +5 -7
- package/dist/window/tool.d.ts.map +1 -1
- package/dist/window/tool.js +227 -13
- package/dist/zone/definition.d.ts.map +1 -1
- package/dist/zone/definition.js +7 -1
- package/dist/zone/floorplan-affordances.d.ts +12 -12
- package/dist/zone/floorplan.d.ts +1 -3
- package/dist/zone/floorplan.d.ts.map +1 -1
- package/dist/zone/floorplan.js +43 -28
- package/dist/zone/quantities-panel.d.ts.map +1 -1
- package/dist/zone/quantities-panel.js +33 -29
- package/dist/zone/renderer.d.ts.map +1 -1
- package/dist/zone/renderer.js +20 -6
- package/dist/zone/unit-membership.d.ts +12 -0
- package/dist/zone/unit-membership.d.ts.map +1 -0
- package/dist/zone/unit-membership.js +22 -0
- package/package.json +16 -8
- package/dist/dormer/panel-window-section.d.ts +0 -14
- package/dist/dormer/panel-window-section.d.ts.map +0 -1
- package/dist/dormer/panel-window-section.js +0 -59
- package/dist/dormer/window-assembly.d.ts +0 -22
- package/dist/dormer/window-assembly.d.ts.map +0 -1
- package/dist/dormer/window-assembly.js +0 -111
- package/dist/dormer/window-frame.d.ts +0 -24
- package/dist/dormer/window-frame.d.ts.map +0 -1
- package/dist/dormer/window-frame.js +0 -100
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { useScene } from '@pascal-app/core';
|
|
2
2
|
import { getRotationAxis, rotateEulerWorld } from '../shared/fitting-rotation';
|
|
3
|
+
import { pipeFittingToolOptions } from '../shared/fitting-tool-options';
|
|
4
|
+
import { pipeFittingQuickActions } from '../shared/mep-fitting-actions';
|
|
3
5
|
import { buildPipeFittingFloorplan } from './floorplan';
|
|
4
6
|
import { buildPipeFittingGeometry } from './geometry';
|
|
5
7
|
import { pipeFittingParametrics } from './parametrics';
|
|
@@ -13,7 +15,7 @@ import { PipeFittingNode } from './schema';
|
|
|
13
15
|
*/
|
|
14
16
|
export const pipeFittingDefinition = {
|
|
15
17
|
kind: 'pipe-fitting',
|
|
16
|
-
schemaVersion:
|
|
18
|
+
schemaVersion: 2,
|
|
17
19
|
schema: PipeFittingNode,
|
|
18
20
|
category: 'utility',
|
|
19
21
|
distributionRole: 'fitting',
|
|
@@ -25,6 +27,7 @@ export const pipeFittingDefinition = {
|
|
|
25
27
|
metadata: {},
|
|
26
28
|
position: [0, 0, 0],
|
|
27
29
|
rotation: [0, 0, 0],
|
|
30
|
+
cleanoutStyle: 'end',
|
|
28
31
|
fittingType: 'elbow',
|
|
29
32
|
angle: 90,
|
|
30
33
|
diameter: 2,
|
|
@@ -40,9 +43,19 @@ export const pipeFittingDefinition = {
|
|
|
40
43
|
},
|
|
41
44
|
parametrics: pipeFittingParametrics,
|
|
42
45
|
geometry: buildPipeFittingGeometry,
|
|
43
|
-
geometryKey: (n) => JSON.stringify([
|
|
46
|
+
geometryKey: (n) => JSON.stringify([
|
|
47
|
+
n.fittingType,
|
|
48
|
+
n.cleanoutStyle,
|
|
49
|
+
n.angle,
|
|
50
|
+
n.diameter,
|
|
51
|
+
n.diameter2,
|
|
52
|
+
n.pipeMaterial,
|
|
53
|
+
n.system,
|
|
54
|
+
]),
|
|
44
55
|
ports: getPipeFittingPorts,
|
|
45
56
|
floorplan: buildPipeFittingFloorplan,
|
|
57
|
+
quickActions: pipeFittingQuickActions,
|
|
58
|
+
quickActionNodeScope: 'level',
|
|
46
59
|
// R/T rotate a selected fitting ±45° around the shared active axis —
|
|
47
60
|
// same scheme as duct fittings (the default editor rotate only knows
|
|
48
61
|
// Y; DWV stacks need X/Z). Alt-cycling lives in `./selection.tsx`.
|
|
@@ -68,6 +81,7 @@ export const pipeFittingDefinition = {
|
|
|
68
81
|
selection: () => import('./selection'),
|
|
69
82
|
move: () => import('./move-tool'),
|
|
70
83
|
},
|
|
84
|
+
toolOptions: pipeFittingToolOptions,
|
|
71
85
|
tool: () => import('./tool'),
|
|
72
86
|
toolHints: [
|
|
73
87
|
{ key: 'Click', label: 'Place fitting' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"floorplan.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/floorplan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAK1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAK/C;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,eAAe,GACnB,iBAAiB,GAAG,IAAI,CA0C1B"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { INCHES_TO_METERS } from '../duct-segment/geometry';
|
|
2
|
+
import { accessoryFloorplan } from '../shared/accessory-floorplan';
|
|
3
|
+
import { buildPipeFittingGeometry } from './geometry';
|
|
2
4
|
import { getPipeFittingPorts } from './ports';
|
|
3
5
|
const WASTE_COLOR = '#57534e';
|
|
4
6
|
const VENT_COLOR = '#78716c';
|
|
@@ -9,6 +11,8 @@ const VENT_COLOR = '#78716c';
|
|
|
9
11
|
* hub, which is how they should read from above.
|
|
10
12
|
*/
|
|
11
13
|
export function buildPipeFittingFloorplan(node, ctx) {
|
|
14
|
+
if (['end-cap', 'cleanout', 'reducer', 'coupling'].includes(node.fittingType))
|
|
15
|
+
return accessoryFloorplan(buildPipeFittingGeometry(node), node, ctx);
|
|
12
16
|
const [cx, , cz] = node.position;
|
|
13
17
|
const view = ctx.viewState;
|
|
14
18
|
const palette = view?.palette;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { Group } from 'three';
|
|
2
2
|
import type { PipeFittingNode } from './schema';
|
|
3
3
|
/**
|
|
4
|
-
* Pure
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* (solvent-weld couplings). Wyes read correctly because their branch
|
|
8
|
-
* stub leaves at 45° — the port layout does the work.
|
|
4
|
+
* Pure local-frame DWV fitting geometry. Ports remain the network contract;
|
|
5
|
+
* the model grows inward from each collar so replacing the old primitives does
|
|
6
|
+
* not move any connected pipe endpoint.
|
|
9
7
|
*/
|
|
10
8
|
export declare function buildPipeFittingGeometry(node: PipeFittingNode): Group;
|
|
11
9
|
//# sourceMappingURL=geometry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/geometry.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EASN,MAAM,OAAO,CAAA;AAKd,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAwN/C;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,KAAK,CAoFrE"}
|
|
@@ -1,31 +1,164 @@
|
|
|
1
|
-
import { Group, Mesh, SphereGeometry, Vector3 } from 'three';
|
|
2
|
-
import {
|
|
1
|
+
import { CubicBezierCurve3, CylinderGeometry, Group, LineCurve3, Mesh, Quaternion, RingGeometry, SphereGeometry, TubeGeometry, Vector3, } from 'three';
|
|
2
|
+
import { INCHES_TO_METERS } from '../duct-segment/geometry';
|
|
3
3
|
import { createPipeMaterial } from '../pipe-segment/geometry';
|
|
4
|
+
import { addPlug, addProfile } from '../shared/accessory-geometry';
|
|
4
5
|
import { localPipeFittingPorts } from './ports';
|
|
5
|
-
const RADIAL_SEGMENTS =
|
|
6
|
+
const RADIAL_SEGMENTS = 28;
|
|
7
|
+
const SWEEP_SEGMENTS = 32;
|
|
8
|
+
const Y_AXIS = new Vector3(0, 1, 0);
|
|
9
|
+
const Z_AXIS = new Vector3(0, 0, 1);
|
|
10
|
+
function pipeRadius(diameterInches) {
|
|
11
|
+
return (diameterInches * INCHES_TO_METERS) / 2;
|
|
12
|
+
}
|
|
13
|
+
function addSocket(group, port, material, pipeMaterial) {
|
|
14
|
+
const radius = pipeRadius(port.diameter);
|
|
15
|
+
const bodyRadius = radius * 1.08;
|
|
16
|
+
const socketRadius = radius * (pipeMaterial === 'cast-iron' ? 1.18 : 1.3);
|
|
17
|
+
const portLength = port.position.length();
|
|
18
|
+
const socketDepth = Math.min(portLength * 0.42, Math.max(0.022, radius * 1.05));
|
|
19
|
+
const shoulderDepth = Math.min(portLength * 0.16, Math.max(0.006, radius * 0.32));
|
|
20
|
+
const direction = port.direction.clone().normalize();
|
|
21
|
+
const axisRotation = new Quaternion().setFromUnitVectors(Y_AXIS, direction);
|
|
22
|
+
const socket = new Mesh(new CylinderGeometry(socketRadius, socketRadius, socketDepth, RADIAL_SEGMENTS, 1, true), material);
|
|
23
|
+
socket.name = `pipe-fitting-socket-${port.id}`;
|
|
24
|
+
socket.position.copy(port.position).addScaledVector(direction, -socketDepth / 2);
|
|
25
|
+
socket.quaternion.copy(axisRotation);
|
|
26
|
+
group.add(socket);
|
|
27
|
+
const shoulder = new Mesh(new CylinderGeometry(socketRadius, bodyRadius, shoulderDepth, RADIAL_SEGMENTS, 1, true), material);
|
|
28
|
+
shoulder.name = `pipe-fitting-shoulder-${port.id}`;
|
|
29
|
+
shoulder.position
|
|
30
|
+
.copy(port.position)
|
|
31
|
+
.addScaledVector(direction, -(socketDepth + shoulderDepth / 2));
|
|
32
|
+
shoulder.quaternion.copy(axisRotation);
|
|
33
|
+
group.add(shoulder);
|
|
34
|
+
const rim = new Mesh(new RingGeometry(radius * 0.82, socketRadius, RADIAL_SEGMENTS), material);
|
|
35
|
+
rim.name = `pipe-fitting-rim-${port.id}`;
|
|
36
|
+
rim.position.copy(port.position).addScaledVector(direction, 0.0005);
|
|
37
|
+
rim.quaternion.setFromUnitVectors(Z_AXIS, direction);
|
|
38
|
+
group.add(rim);
|
|
39
|
+
if (pipeMaterial === 'cast-iron') {
|
|
40
|
+
for (const offset of [0.22, 0.72]) {
|
|
41
|
+
const band = new Mesh(new CylinderGeometry(socketRadius * 1.035, socketRadius * 1.035, 0.006, RADIAL_SEGMENTS), material);
|
|
42
|
+
band.name = `pipe-fitting-band-${port.id}-${offset}`;
|
|
43
|
+
band.position.copy(port.position).addScaledVector(direction, -socketDepth * offset);
|
|
44
|
+
band.quaternion.copy(axisRotation);
|
|
45
|
+
group.add(band);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const stopRing = new Mesh(new CylinderGeometry(socketRadius * 1.035, socketRadius * 1.035, 0.006, RADIAL_SEGMENTS), material);
|
|
50
|
+
stopRing.name = `pipe-fitting-stop-${port.id}`;
|
|
51
|
+
stopRing.position.copy(port.position).addScaledVector(direction, -socketDepth * 0.88);
|
|
52
|
+
stopRing.quaternion.copy(axisRotation);
|
|
53
|
+
group.add(stopRing);
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
bodyPoint: port.position.clone().addScaledVector(direction, -(socketDepth + shoulderDepth)),
|
|
57
|
+
bodyRadius,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function addStraight(group, start, end, radius, material, name) {
|
|
61
|
+
if (start.distanceToSquared(end) < 1e-8)
|
|
62
|
+
return;
|
|
63
|
+
const body = new Mesh(new TubeGeometry(new LineCurve3(start, end), 1, radius, RADIAL_SEGMENTS, false), material);
|
|
64
|
+
body.name = name;
|
|
65
|
+
group.add(body);
|
|
66
|
+
}
|
|
67
|
+
function addSweep(group, start, startTangent, end, endTangent, radius, material, name) {
|
|
68
|
+
const distance = start.distanceTo(end);
|
|
69
|
+
if (distance < 1e-5)
|
|
70
|
+
return;
|
|
71
|
+
const handle = Math.max(distance * 0.48, radius * 1.6);
|
|
72
|
+
const curve = new CubicBezierCurve3(start, start.clone().addScaledVector(startTangent.clone().normalize(), handle), end.clone().addScaledVector(endTangent.clone().normalize(), -handle), end);
|
|
73
|
+
const body = new Mesh(new TubeGeometry(curve, SWEEP_SEGMENTS, radius, RADIAL_SEGMENTS, false), material);
|
|
74
|
+
body.name = name;
|
|
75
|
+
group.add(body);
|
|
76
|
+
}
|
|
77
|
+
function addJunctionBlend(group, position, radius, material, name) {
|
|
78
|
+
const blend = new Mesh(new SphereGeometry(radius * 1.03, RADIAL_SEGMENTS, 18), material);
|
|
79
|
+
blend.name = name;
|
|
80
|
+
blend.position.copy(position);
|
|
81
|
+
group.add(blend);
|
|
82
|
+
}
|
|
83
|
+
function buildElbow(group, ports, sockets, material) {
|
|
84
|
+
const inlet = ports.find((port) => port.id === 'inlet');
|
|
85
|
+
const outlet = ports.find((port) => port.id === 'outlet');
|
|
86
|
+
if (!(inlet && outlet))
|
|
87
|
+
return;
|
|
88
|
+
const inletSocket = sockets.get(inlet.id);
|
|
89
|
+
const outletSocket = sockets.get(outlet.id);
|
|
90
|
+
if (!(inletSocket && outletSocket))
|
|
91
|
+
return;
|
|
92
|
+
addSweep(group, inletSocket.bodyPoint, inlet.direction.clone().negate(), outletSocket.bodyPoint, outlet.direction, inletSocket.bodyRadius, material, 'pipe-fitting-elbow-sweep');
|
|
93
|
+
}
|
|
94
|
+
function buildBranchFitting(group, node, ports, sockets, material) {
|
|
95
|
+
const inlet = ports.find((port) => port.id === 'inlet');
|
|
96
|
+
const outlet = ports.find((port) => port.id === 'outlet');
|
|
97
|
+
const inletSocket = inlet ? sockets.get(inlet.id) : null;
|
|
98
|
+
const outletSocket = outlet ? sockets.get(outlet.id) : null;
|
|
99
|
+
if (!(inlet && outlet && inletSocket && outletSocket))
|
|
100
|
+
return;
|
|
101
|
+
addStraight(group, inletSocket.bodyPoint, outletSocket.bodyPoint, inletSocket.bodyRadius, material, `pipe-fitting-${node.fittingType}-run`);
|
|
102
|
+
const runSpan = inletSocket.bodyPoint.distanceTo(outletSocket.bodyPoint);
|
|
103
|
+
const merge = new Vector3(runSpan * 0.1, 0, 0);
|
|
104
|
+
for (const branchId of node.fittingType === 'cross' ? ['branch', 'branch2'] : ['branch']) {
|
|
105
|
+
const branch = ports.find((port) => port.id === branchId);
|
|
106
|
+
const branchSocket = branch ? sockets.get(branch.id) : null;
|
|
107
|
+
if (!(branch && branchSocket))
|
|
108
|
+
continue;
|
|
109
|
+
addSweep(group, branchSocket.bodyPoint, branch.direction.clone().negate(), merge, new Vector3(1, 0, 0), branchSocket.bodyRadius, material, `pipe-fitting-${node.fittingType}-${branchId}-sweep`);
|
|
110
|
+
}
|
|
111
|
+
addJunctionBlend(group, merge, Math.max(inletSocket.bodyRadius, pipeRadius(node.diameter2) * 1.08), material, `pipe-fitting-${node.fittingType}-blend`);
|
|
112
|
+
}
|
|
6
113
|
/**
|
|
7
|
-
* Pure
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* (solvent-weld couplings). Wyes read correctly because their branch
|
|
11
|
-
* stub leaves at 45° — the port layout does the work.
|
|
114
|
+
* Pure local-frame DWV fitting geometry. Ports remain the network contract;
|
|
115
|
+
* the model grows inward from each collar so replacing the old primitives does
|
|
116
|
+
* not move any connected pipe endpoint.
|
|
12
117
|
*/
|
|
13
118
|
export function buildPipeFittingGeometry(node) {
|
|
14
119
|
const group = new Group();
|
|
15
120
|
const material = createPipeMaterial(node);
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
121
|
+
const ports = localPipeFittingPorts(node);
|
|
122
|
+
const sockets = new Map();
|
|
123
|
+
for (const port of ports) {
|
|
124
|
+
sockets.set(port.id, addSocket(group, port, material, node.pipeMaterial));
|
|
125
|
+
}
|
|
126
|
+
if (node.fittingType === 'end-cap' ||
|
|
127
|
+
node.fittingType === 'cleanout' ||
|
|
128
|
+
node.fittingType === 'coupling' ||
|
|
129
|
+
node.fittingType === 'reducer') {
|
|
130
|
+
const inlet = sockets.get('inlet');
|
|
131
|
+
const outlet = sockets.get('outlet');
|
|
132
|
+
const radius = inlet.bodyRadius;
|
|
133
|
+
if (node.fittingType === 'reducer' && outlet) {
|
|
134
|
+
const taper = new Mesh(new CylinderGeometry(outlet.bodyRadius, radius, outlet.bodyPoint.x - inlet.bodyPoint.x, RADIAL_SEGMENTS, 1, true), material);
|
|
135
|
+
taper.name = 'pipe-reducer-taper';
|
|
136
|
+
taper.quaternion.setFromUnitVectors(Y_AXIS, new Vector3(1, 0, 0));
|
|
137
|
+
taper.position.x = (outlet.bodyPoint.x + inlet.bodyPoint.x) / 2;
|
|
138
|
+
group.add(taper);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const end = outlet?.bodyPoint.x ?? 0.025;
|
|
142
|
+
addProfile(group, 'pipe-accessory-body', 'round', radius * 2, radius * 2, inlet.bodyPoint.x, end, material, radius * 0.16);
|
|
143
|
+
if (node.fittingType === 'end-cap')
|
|
144
|
+
addProfile(group, 'pipe-end-cap-closure', 'round', radius * 2, radius * 2, end - 0.004, end, material);
|
|
145
|
+
if (node.fittingType === 'cleanout') {
|
|
146
|
+
if (outlet) {
|
|
147
|
+
const service = new Group();
|
|
148
|
+
service.name = 'cleanout-service-branch';
|
|
149
|
+
addProfile(service, 'cleanout-neck', 'round', radius * 2, radius * 2, 0, radius * 2, material, radius * 0.16);
|
|
150
|
+
addPlug(service, radius, radius * 2, material);
|
|
151
|
+
service.rotation.z = Math.PI / 2;
|
|
152
|
+
group.add(service);
|
|
153
|
+
}
|
|
154
|
+
else
|
|
155
|
+
addPlug(group, radius, end, material);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
26
158
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
159
|
+
else if (node.fittingType === 'elbow')
|
|
160
|
+
buildElbow(group, ports, sockets, material);
|
|
161
|
+
else
|
|
162
|
+
buildBranchFitting(group, node, ports, sockets, material);
|
|
30
163
|
return group;
|
|
31
164
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PipeFittingNode, PipeSegmentNode } from '@pascal-app/core';
|
|
2
|
+
import type { RunBodyHit } from '../shared/ports';
|
|
3
|
+
export type PipeInlineInsertionPlan = {
|
|
4
|
+
fitting: PipeFittingNode;
|
|
5
|
+
runUpdate: {
|
|
6
|
+
id: PipeSegmentNode['id'];
|
|
7
|
+
data: Partial<PipeSegmentNode>;
|
|
8
|
+
};
|
|
9
|
+
runTail: PipeSegmentNode;
|
|
10
|
+
};
|
|
11
|
+
export declare function isInlinePipeFitting(node: PipeFittingNode): boolean;
|
|
12
|
+
export declare function planPipeInlineInsertion(run: PipeSegmentNode, hit: RunBodyHit, template: PipeFittingNode): PipeInlineInsertionPlan | null;
|
|
13
|
+
//# sourceMappingURL=inline-insertion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-insertion.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/inline-insertion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAOjD,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,eAAe,CAAA;IACxB,SAAS,EAAE;QAAE,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;KAAE,CAAA;IACxE,OAAO,EAAE,eAAe,CAAA;CACzB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAMlE;AAmCD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,eAAe,GACxB,uBAAuB,GAAG,IAAI,CAqEhC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { PipeFittingNode, PipeSegmentNode } from '@pascal-app/core';
|
|
2
|
+
import { Euler, Quaternion, Vector3 } from 'three';
|
|
3
|
+
import { pipeFittingLegLength } from './ports';
|
|
4
|
+
const MIN_PIPE_STUB_M = 0.05;
|
|
5
|
+
export function isInlinePipeFitting(node) {
|
|
6
|
+
return (node.fittingType === 'coupling' ||
|
|
7
|
+
node.fittingType === 'reducer' ||
|
|
8
|
+
(node.fittingType === 'cleanout' && node.cleanoutStyle === 'inline'));
|
|
9
|
+
}
|
|
10
|
+
function splitWallAttachment(run, hit) {
|
|
11
|
+
const attachment = run.wallAttachment;
|
|
12
|
+
if (!attachment)
|
|
13
|
+
return {};
|
|
14
|
+
let distanceBefore = 0;
|
|
15
|
+
let totalDistance = 0;
|
|
16
|
+
for (let index = 0; index < run.path.length - 1; index++) {
|
|
17
|
+
const length = new Vector3(...run.path[index + 1]).distanceTo(new Vector3(...run.path[index]));
|
|
18
|
+
if (index < hit.segmentIndex)
|
|
19
|
+
distanceBefore += length;
|
|
20
|
+
totalDistance += length;
|
|
21
|
+
}
|
|
22
|
+
if (totalDistance < 1e-8)
|
|
23
|
+
return {};
|
|
24
|
+
const segmentStart = new Vector3(...run.path[hit.segmentIndex]);
|
|
25
|
+
const hitDistance = segmentStart.distanceTo(new Vector3(...hit.point));
|
|
26
|
+
const ratio = Math.min(1, Math.max(0, (distanceBefore + hitDistance) / totalDistance));
|
|
27
|
+
const splitUV = [
|
|
28
|
+
attachment.startUV[0] + (attachment.endUV[0] - attachment.startUV[0]) * ratio,
|
|
29
|
+
attachment.startUV[1] + (attachment.endUV[1] - attachment.startUV[1]) * ratio,
|
|
30
|
+
];
|
|
31
|
+
return {
|
|
32
|
+
head: { ...attachment, endUV: splitUV },
|
|
33
|
+
tail: { ...attachment, startUV: splitUV },
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function planPipeInlineInsertion(run, hit, template) {
|
|
37
|
+
if (!isInlinePipeFitting(template))
|
|
38
|
+
return null;
|
|
39
|
+
const a = run.path[hit.segmentIndex];
|
|
40
|
+
const b = run.path[hit.segmentIndex + 1];
|
|
41
|
+
if (!a || !b)
|
|
42
|
+
return null;
|
|
43
|
+
const axis = new Vector3(...b).sub(new Vector3(...a));
|
|
44
|
+
if (axis.lengthSq() < 1e-10)
|
|
45
|
+
return null;
|
|
46
|
+
axis.normalize();
|
|
47
|
+
const fitting = PipeFittingNode.parse({
|
|
48
|
+
...template,
|
|
49
|
+
diameter: run.diameter,
|
|
50
|
+
pipeMaterial: run.pipeMaterial,
|
|
51
|
+
system: run.system,
|
|
52
|
+
position: hit.point,
|
|
53
|
+
rotation: (() => {
|
|
54
|
+
const euler = new Euler().setFromQuaternion(new Quaternion().setFromUnitVectors(new Vector3(1, 0, 0), axis));
|
|
55
|
+
return [euler.x, euler.y, euler.z];
|
|
56
|
+
})(),
|
|
57
|
+
});
|
|
58
|
+
const legLength = pipeFittingLegLength(fitting.fittingType === 'reducer'
|
|
59
|
+
? Math.max(fitting.diameter, fitting.diameter2)
|
|
60
|
+
: fitting.diameter);
|
|
61
|
+
const center = new Vector3(...hit.point);
|
|
62
|
+
if (center.distanceTo(new Vector3(...a)) < legLength + MIN_PIPE_STUB_M ||
|
|
63
|
+
center.distanceTo(new Vector3(...b)) < legLength + MIN_PIPE_STUB_M) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
const inlet = center.clone().addScaledVector(axis, -legLength);
|
|
67
|
+
const outlet = center.clone().addScaledVector(axis, legLength);
|
|
68
|
+
const upstreamPath = [
|
|
69
|
+
...run.path.slice(0, hit.segmentIndex + 1).map((point) => [...point]),
|
|
70
|
+
inlet.toArray(),
|
|
71
|
+
];
|
|
72
|
+
const tailPath = [
|
|
73
|
+
outlet.toArray(),
|
|
74
|
+
...run.path.slice(hit.segmentIndex + 1).map((point) => [...point]),
|
|
75
|
+
];
|
|
76
|
+
const wallAttachment = splitWallAttachment(run, hit);
|
|
77
|
+
const tailDiameter = fitting.fittingType === 'reducer' ? fitting.diameter2 : run.diameter;
|
|
78
|
+
const runTail = PipeSegmentNode.parse({
|
|
79
|
+
...run,
|
|
80
|
+
id: undefined,
|
|
81
|
+
path: tailPath,
|
|
82
|
+
diameter: tailDiameter,
|
|
83
|
+
...(wallAttachment.tail ? { wallAttachment: wallAttachment.tail } : {}),
|
|
84
|
+
});
|
|
85
|
+
return {
|
|
86
|
+
fitting,
|
|
87
|
+
runUpdate: {
|
|
88
|
+
id: run.id,
|
|
89
|
+
data: {
|
|
90
|
+
path: upstreamPath,
|
|
91
|
+
...(wallAttachment.head ? { wallAttachment: wallAttachment.head } : {}),
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
runTail,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parametrics.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/parametrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,oBAAoB,EAAmB,MAAM,kBAAkB,CAAA;AAEjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAkC/C,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"parametrics.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/parametrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,oBAAoB,EAAmB,MAAM,kBAAkB,CAAA;AAEjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAkC/C,eAAO,MAAM,sBAAsB,EAAE,oBAAoB,CAAC,eAAe,CAwFxE,CAAA"}
|
|
@@ -58,8 +58,22 @@ export const pipeFittingParametrics = {
|
|
|
58
58
|
{
|
|
59
59
|
key: 'fittingType',
|
|
60
60
|
kind: 'enum',
|
|
61
|
-
options: [
|
|
62
|
-
|
|
61
|
+
options: [
|
|
62
|
+
'elbow',
|
|
63
|
+
'wye',
|
|
64
|
+
'sanitary-tee',
|
|
65
|
+
'cross',
|
|
66
|
+
'end-cap',
|
|
67
|
+
'cleanout',
|
|
68
|
+
'reducer',
|
|
69
|
+
'coupling',
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
key: 'cleanoutStyle',
|
|
74
|
+
kind: 'enum',
|
|
75
|
+
options: ['end', 'inline'],
|
|
76
|
+
visibleIf: (n) => n.fittingType === 'cleanout',
|
|
63
77
|
},
|
|
64
78
|
{
|
|
65
79
|
key: 'angle',
|
|
@@ -89,7 +103,7 @@ export const pipeFittingParametrics = {
|
|
|
89
103
|
min: 1.25,
|
|
90
104
|
max: 6,
|
|
91
105
|
step: 0.25,
|
|
92
|
-
visibleIf: (n) =>
|
|
106
|
+
visibleIf: (n) => ['wye', 'sanitary-tee', 'cross', 'reducer'].includes(n.fittingType),
|
|
93
107
|
},
|
|
94
108
|
{ key: 'pipeMaterial', kind: 'enum', options: ['pvc', 'abs', 'cast-iron'] },
|
|
95
109
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAS,OAAO,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;sDACsD;AACtD,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,gDAAgD;AAChD,eAAO,MAAM,cAAc,QAAc,CAAA;AAEzC,KAAK,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAExF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/ports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAS,OAAO,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAE/C;sDACsD;AACtD,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAGnE;AAED,gDAAgD;AAChD,eAAO,MAAM,cAAc,QAAc,CAAA;AAEzC,KAAK,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAExF;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,EAAE,CAqExE;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,EAAE,CAcrE"}
|
|
@@ -16,13 +16,16 @@ export const WYE_BRANCH_RAD = Math.PI / 4;
|
|
|
16
16
|
* run along X, two opposed branches on ±Z.
|
|
17
17
|
*/
|
|
18
18
|
export function localPipeFittingPorts(node) {
|
|
19
|
-
const run = pipeFittingLegLength(node.diameter);
|
|
19
|
+
const run = pipeFittingLegLength(node.fittingType === 'reducer' ? Math.max(node.diameter, node.diameter2) : node.diameter);
|
|
20
20
|
const inlet = {
|
|
21
21
|
id: 'inlet',
|
|
22
22
|
position: new Vector3(-run, 0, 0),
|
|
23
23
|
direction: new Vector3(-1, 0, 0),
|
|
24
24
|
diameter: node.diameter,
|
|
25
25
|
};
|
|
26
|
+
if (node.fittingType === 'end-cap' ||
|
|
27
|
+
(node.fittingType === 'cleanout' && node.cleanoutStyle === 'end'))
|
|
28
|
+
return [inlet];
|
|
26
29
|
if (node.fittingType === 'elbow') {
|
|
27
30
|
const theta = (node.angle * Math.PI) / 180;
|
|
28
31
|
const outDir = new Vector3(Math.cos(theta), 0, Math.sin(theta));
|
|
@@ -42,6 +45,10 @@ export function localPipeFittingPorts(node) {
|
|
|
42
45
|
direction: new Vector3(1, 0, 0),
|
|
43
46
|
diameter: node.diameter,
|
|
44
47
|
};
|
|
48
|
+
if (node.fittingType === 'reducer')
|
|
49
|
+
return [inlet, { ...outlet, diameter: node.diameter2 }];
|
|
50
|
+
if (node.fittingType === 'coupling' || node.fittingType === 'cleanout')
|
|
51
|
+
return [inlet, outlet];
|
|
45
52
|
const branchLeg = pipeFittingLegLength(node.diameter2);
|
|
46
53
|
if (node.fittingType === 'cross') {
|
|
47
54
|
return [
|
|
@@ -1,3 +1,29 @@
|
|
|
1
|
+
import { type AnyNode, type AnyNodeId, PipeFittingNode } from '@pascal-app/core';
|
|
2
|
+
import { Quaternion } from 'three';
|
|
3
|
+
import { type ScenePort } from '../shared/ports';
|
|
4
|
+
import { type PipeInlineInsertionPlan } from './inline-insertion';
|
|
5
|
+
type Placement = {
|
|
6
|
+
position: [number, number, number];
|
|
7
|
+
rotation: [number, number, number];
|
|
8
|
+
snapPort: ScenePort | null;
|
|
9
|
+
insertion: PipeInlineInsertionPlan | null;
|
|
10
|
+
node: PipeFittingNode;
|
|
11
|
+
valid: boolean;
|
|
12
|
+
};
|
|
13
|
+
type PlacementContext = {
|
|
14
|
+
levelId: AnyNodeId | null;
|
|
15
|
+
nodes: Readonly<Record<AnyNodeId, AnyNode>>;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Resolve where the fitting would land for a cursor at `raw`:
|
|
19
|
+
* - Near an existing DWV port → mate: orientation aligns the inlet
|
|
20
|
+
* onto the port (plus the user's manual R/T rotation, pivoting
|
|
21
|
+
* around the inlet collar so it stays on the port while the body
|
|
22
|
+
* sweeps).
|
|
23
|
+
* - Otherwise → grid-snapped free placement on the floor, manual
|
|
24
|
+
* rotation only.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolvePlacement(raw: [number, number, number], previewNode: PipeFittingNode, gridStep: number, manualQuat: Quaternion, surfaceHit: boolean, surfaceNormal?: [number, number, number], support?: (node: import("@pascal-app/core").DuctFittingNode | PipeFittingNode, rotation: [number, number, number], position: [number, number, number], surfacePoint: [number, number, number], surfaceNormal?: [number, number, number]) => [number, number, number], context?: PlacementContext): Placement;
|
|
1
27
|
/**
|
|
2
28
|
* Click-place tool for DWV pipe fittings (elbow / wye / sanitary tee) —
|
|
3
29
|
* the plumbing sibling of the duct-fitting tool.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/tool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/pipe-fitting/tool.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,SAAS,EAGd,eAAe,EAEhB,MAAM,kBAAkB,CAAA;AAazB,OAAO,EAAoD,UAAU,EAAW,MAAM,OAAO,CAAA;AAkB7F,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,oBAAoB,CAAA;AAK3B,KAAK,SAAS,GAAG;IACf,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAA;IAC1B,SAAS,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACzC,IAAI,EAAE,eAAe,CAAA;IACrB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,SAAS,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;CAC5C,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAC7B,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,OAAO,EACnB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxC,OAAO,6PAAgC,EACvC,OAAO,GAAE,gBAA+C,GACvD,SAAS,CAkGX;AAED;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,eAAe,0CAoPpB,CAAA;AAED,eAAe,eAAe,CAAA"}
|