app
Adom Step2GLB - The Adom STEP Engine
Public Made by Adomby adom
The Adom STEP engine: fully manage STEP files. Convert to color-preserving GLB, render thumbnails and vector outlines, laser-etch MPNs, create and edit STEP geometry, extract features, and run molecule mode. One name for the thin Rust CLI and the shared OCCT service. Formerly 'step2glb' + 'service-step2glb'.
← Commit history
compose-vias: solder-ball mode + per-variant library binding
2 files changed
+6−3
README.md+3−1@@ -100,6 +100,8 @@ curl -X POST "$SVC/compose-vias" -F [email protected] -F [email protected] # chip `/compose-vias` composes a chip STEP with a via layer into one STEP whose root assembly holds two named components: `Adom.Chip` (the input geometry, untouched) and `Adom.HeatsinkVias` (copper barrels at each via centre, 0.3 mm hole and 0.6 mm OD by default, from z=0 down through a 1.6 mm board). Fusion 360 imports them as separately toggleable bodies. This is a **review artefact** (wiki widgets, chipsmith, "what this part needs" views), not the STEP that ships in an EDA library: vias are board features the EDA tool creates from the footprint's through pads, so a via body inside the package STEP would duplicate board geometry and assume a stack-up (the response reports `purpose: review-artifact` and the assumed thickness). The one editing layer that legitimately stays in a library STEP is the laser etch, because it is part of the physical package. +The same endpoint composes **solder balls**: pass adom-footprint's solder-balls JSON as the `vias` part (it carries a `balls` array, `ball.diameter`, and a KiCad Y-down origin, all handled) and the layer becomes `Adom.SolderBalls`, one solid hemisphere per ball with its flat face on the pad plane at z=0 and the dome pointing up into the package (`ball_dome: "down"` flips it). **Library binding** (decided 2026-08-30): each composed layer STEP is bound to its own device in the library deviceset, so a package ships as up to three variant STEPs, chip-only, chip + `Adom.HeatsinkVias`, chip + `Adom.SolderBalls`, never merged into one file; the group names are a stable contract that the fusion-bridge relies on to hide layers by name.+ **Layer contract** (proven in Fusion 360, 2026-08-30): each named solid group imports as its own occurrence with its own eye toggle (`Adom.Chip:1`, `Adom.HeatsinkVias:1` with 16 bodies), but a hidden state inside one STEP is *not* honoured when Fusion places the package on a 3D board, everything re-shows. So the toolchain uses two files, never one: the library STEP stays chip-only plus laser etch, and composed layers are review artefacts. `Adom.HeatsinkVias` contains via barrels only. Board stock and pads, if ever emitted, get their own groups (`Adom.Board`, `Adom.Pads`) that default off, never folded into the vias or chip groups: Fusion's own dashed pad outlines already prove the footprint lines up with the chip, which is more useful than rendered pads. The vias JSON is `{"vias":[{"x":-1.8,"y":-1.8}, ...]}` in footprint mm (Y-up, origin = exposed-pad centre) with optional `drill_mm`, `barrel_od_mm`, `board_thickness_mm`, `chip_name`, `vias_name`, `root_name`; adom-footprint emits this file for every heatsink footprint. The service does not just read STEP files, it writes and edits them: generating chip bodies and footprint geometry from JSON specs, baking transforms, and embossing text. Output of every one of these is a downloadable STEP.@@ -162,7 +164,7 @@ The service lives at `https://step2glb-gmdoncpxdwx0.adom.cloud` (override with ` | `POST /create-chip` | chip_3d JSON | STEP | | `POST /create-footprint` | pads JSON | STEP | | `POST /bake` | multipart step + bake JSON | STEP |-| `POST /compose-vias` | multipart step + vias JSON | STEP with named solids Adom.Chip + Adom.HeatsinkVias |+| `POST /compose-vias` | multipart step + vias JSON (or solder-balls JSON) | STEP with named solids Adom.Chip + Adom.HeatsinkVias (or Adom.SolderBalls) | | `GET /jobs/{id}` | | job status + stats (silkscreen, molecule, warnings, stage timings) | | `GET /jobs/{id}/result` | | the binary result | | `GET /jobs/{id}/footprint` `/symbol` | | molecule side artifacts |
SKILL.md+3−2@@ -83,8 +83,9 @@ The service also exposes HTTP-only verbs the CLI does not wrap yet: MPN into the die: embossed STEP + rendered iso), `/create-chip` + `/create-footprint` (JSON spec → STEP), `/bake` (bake transforms into geometry), `/compose-vias` (chip STEP + via JSON → STEP with named solids-Adom.Chip + Adom.HeatsinkVias; a REVIEW artefact for widgets/chipsmith, never-the library STEP: vias are board features the EDA tool makes from the footprint,+Adom.Chip + Adom.HeatsinkVias, or Adom.SolderBalls when given adom-footprint's+solder-balls JSON; each composed layer STEP is its own library device VARIANT,+never merged into the chip-only STEP: vias are board features the EDA tool makes from the footprint, and Fusion re-shows hidden bodies when placing a package on a board. Layer contract: HeatsinkVias = barrels only; board stock/pads, if ever emitted, go in their own default-off groups Adom.Board / Adom.Pads),