WillTools 2026-09-09 -- clean snapshot of the development repo for review
ci / test (push) Successful in 6m18s
ci / test (push) Successful in 6m18s
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.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# 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/`)
|
||||
Reference in New Issue
Block a user