Skip to content

feat(enclosure): paint-quote drawing pack (parts table + masking plan) - #397

Open
tomassasovsky wants to merge 2 commits into
masterfrom
claude/pedal-paint-quote-3733be
Open

feat(enclosure): paint-quote drawing pack (parts table + masking plan)#397
tomassasovsky wants to merge 2 commits into
masterfrom
claude/pedal-paint-quote-3733be

Conversation

@tomassasovsky

Copy link
Copy Markdown
Owner

Closes #396

Three powder coaters (Vieytes, Mora-Epox, Espocolor) were asked to quote the VAMP shell. Vieytes came back confirming the part fits their oven and that they quote by m² — which is the number the repo could not produce. Nobody can eyeball painted area off a flat pattern riddled with ten pedal slots and two screen apertures.

What this adds

out/vamp_paint_quote.pdf — a supplier-facing sheet (Spanish, that is who reads it):

  • Parts table: qty per unit, folded size, net painted area per face and total (both faces), per-material subtotals, grand total. 1.4672 m² per unit.
  • Masking pages: the base and the screen bracket rendered with the bare-metal zones ringed in red, plus the faceplate with a coating-thickness callout on the screen apertures.
  • Notes: pretreatment, handling (1050 is soft — hang, do not rest on show faces), and the film-thickness warning.

Notable details

  • A new annotation-only MASK layer carries the rings. It is excluded from extents and from the area maths the same way NOTE/ENGRAVE are, and _fold_from_dxf.py already filters by layer so the 3D path ignores it.
  • The earth stud gets a 20 mm bare land on both faces. Powder coat is an insulator; a coated land under the ring terminal is a dead chassis ground, and that is the kind of thing nobody catches until the unit is assembled.
  • vamp_post is its own material line — 1.6 mm cold-rolled steel, not the aluminium shell, so it needs a different pretreatment and cannot be lumped into the same m².
  • Areas come from the CUT/VENT geometry of the generated DXFs, sizes from the STEPs. A hand-typed parts table goes stale on the first geometry change; this one cannot.
  • New vamp_pintura.zip: quote sheet + part PDFs, deliberately no DXFs — the coater cuts nothing.

Verification

  • vamp_enclosure.py full run: geometry assertions ALL PASS, every DXF/PDF/STEP regenerates.
  • Masking pages inspected as rendered output: 3 PEM rings + 1 earth-stud ring on the base, 2 PEM rings on the screen bracket.
  • No Dart or native code touched. dart analyze reports 4 pre-existing errors that are a worktree artifact (the same ControlState resolved through both the worktree and the main checkout path), unrelated to this change.

Known gap

The faceplate row shows its flat size (850 × 407 × 2) because build_step() exports the lid unfolded; note 7 on the sheet says so explicitly. The assembled envelope (850 × 423 × 100) is what governs oven fit and is in the header block.

Powder coaters quote by m2, and nobody can eyeball the painted area off a flat
pattern riddled with pedal slots and screen apertures. Adds vamp_paint_quote.pdf:
a supplier-facing sheet with the parts table (qty, folded size, painted area both
faces, per-material subtotals) plus masking pages.

- MASK layer: annotation-only rings over the features that must stay bare -- the
  3 transition PEM M4 threads, the 2 PEM threads per screen bracket, and a 20 mm
  bonding land around the M6 earth stud. Paint is an insulator, so a coated land
  under the ring terminal is a dead chassis ground.
- Areas are derived from the CUT/VENT geometry of the generated DXFs and sizes
  from the STEPs, so the table cannot drift from the model the way a hand-typed
  one does.
- vamp_post is broken out as a separate material line: it is 1.6 mm cold-rolled
  steel, not the aluminium shell, and takes a different pretreatment.
- New vamp_pintura.zip pack: quote sheet + part PDFs, no DXFs (the coater cuts
  nothing, and a flat pattern only invites confusion).

No geometry change; _check() still passes.

Closes #396
@tomassasovsky tomassasovsky added stage:in-review Pipeline: PR open, CI + code-review iterating autonomy:merge-gate I build + go green; you click merge review:pending code-review skill not yet run / has findings labels Jul 30, 2026
The screens get bonded to the shell, not clamped, so the brackets are never
manufactured -- quoting paint on 8 of them inflates the m2 by 3.4%. The part
stays in DXF_PARTS as the fallback if bonding is abandoned.

Also narrows vamp_pintura.zip to the paint BOM instead of every DXF_PART: the
adhesive overlay and the unused rear-panel variant were being sent to a coater
who has no business painting either.

Total: 1.4672 -> 1.4168 m2 per unit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autonomy:merge-gate I build + go green; you click merge review:pending code-review skill not yet run / has findings stage:in-review Pipeline: PR open, CI + code-review iterating

Projects

None yet

Development

Successfully merging this pull request may close these issues.

hardware(enclosure): paint-quote drawing pack (parts table + masking plan PDF)

1 participant