Files
willtools-demo/docs/panellift-ewf-alignment.md
T
will 52d94303bc
ci / test (push) Has been cancelled
WillTools: precast shop-ticket QC and panel handling tools
Public demo snapshot of an in-house pyRevit extension for precast concrete
shop-ticket QC (37 checks / 46 checklist rows) and a standalone panel
handling solver (PCI Chapter 8).

- No client, job, plant or product data: knowledge layers ship as
  structural templates only.
- Ticket QC's model-read escalation targets a LAN model server endpoint
  (configurable), not a cloud provider.
- Built from the private development repo via tools/make_dist.py.
2026-09-03 16:33:47 -05:00

3.0 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/Tools.panel/PanelLiftCheck.pushbutton/script.py