Files
willtools-demo/docs/panellift-ewf-alignment.md
T
will 8e6ee31596
ci / test (push) Successful in 6m18s
WillTools 2026-09-09 -- clean snapshot of the development repo for review
History-free snapshot of the private development repository at cbe45c5
(2026-09-09). Code, docs and public catalogue only; no plant or job
knowledge layers, no client or job names (tools/scrub.py clean). The
intro deck is left out of this snapshot because its slide images could
not be checked for job drawings.
2026-09-09 08:32:15 -05:00

3.1 KiB

Panel Lift input control — align job.json to Eriksson's HandlingData

Will 2026-08-28: "照着写一下 panel lift 的输入控制" — the sample .ewf files in sample data/design/ are the reference (12 EWF + 4 PDF). This document maps OUR job.json to Eriksson's HandlingData so the input control speaks the same shape. Code changes wait for Claude's review (Monday); this is the mapping to review.

Current job.json (liftexport.export)

panel:   mark / design / length/width/thickness / weight / lifters[flat]
         / blockouts / fc/fci / prestress(strands)
rigging: mode / sling_angle_deg / group_tolerance_ft   <- GLOBAL
stages:  [name, ...]                                    <- thin per-stage

Eriksson EWF HandlingData

FaceLifters / SideEdgeLifters / TopEdgeLifters:   <- per-kind capacity
    CapacityMethod, Tension/Shear/Initial/Final capacities, Name, ID
Stripping / Transportation / PrimaryErection / SecondaryErection:
    Options:
      LoadMultiplier           (stripping 1.4)
      TiltAngle / Min / Max
      SlingAngleComputationMethod / SlingAngle
      FaceLiftersOnOneCraneLine
      AddGroundReaction
      EdgeLiftersCarryTotalWeight
      TopCraneLineCarriesWeight
      ConcreteStrength (initial/final)
      LiftType / StressLimit
    Lifters[]        <- per-stage selection
    DunnageBlocks[]  <- per-stage
    Rigging[]        <- per-stage

Mapping (our field -> EWF)

ours EWF note
panel.lifters[].family FaceLifters/Side/Top kind split by family role
panel.lifters[].capacity_lb FaceLifters.TensionCapacity per kind now
panel.lifters[].shear_capacity_lb FaceLifters.ShearCapacity
panel.lifters[].basis_fc CapacityMethod initial/final
rigging.sling_angle_deg stage.Options.SlingAngle PER-STAGE now
rigging.mode stage.Options.LiftType / SlingAngleMethod
(none) stage.Options.LoadMultiplier stripping 1.4 default
(none) stage.Options.TiltAngle min/max new input
(none) stage.Options.AddGroundReaction new input
stages[].lifters stage.Lifters per-stage selection
dunnage (global?) stage.DunnageBlocks per-stage
(none) stage.Rigging per-stage rigging

What this buys

  • The engineer's input control speaks Eriksson's vocabulary (sling angle per stage, tilt limits, ground reaction) instead of our global rigging.
  • The PDF results (per-stage reactions / stress tables) come from the same per-stage structure, so output alignment follows input alignment.

Open questions for Will

  1. Which stages do we keep? EWF has 4 (Stripping/Transportation/ Primary/Secondary Erection); we have stripping/erection (+dunnage).
  2. LiftType / StressLimit enums: match EWF numeric codes?
  3. Do we adopt EWF's per-stage Rigging (sling config per stage) or keep one global rigging for now?

Files touched when approved

  • WillTools.extension/lib/vibe/liftexport.py (job structure)
  • panellift/src/panellift/* (analyse_job consumes the new shape)
  • WillTools.extension/WillTools.tab/Design.panel/DesignHub.pulldown/PanelLiftCheck.pushbutton/script.py (moved here 2026-09-05 from Tools.panel/PanelLiftCheck.pushbutton/)