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

77 lines
3.0 KiB
Markdown

# 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`