Board to Molecule
Public Made by Adomby adom
Turn any KiCad, Fusion/EAGLE, or Altium board into an Adom molecule: wings plus MP1-MP4 machine pins, written back in the board's own format.
c794385
4d ago
board-to-molecule
Turn any KiCad, Fusion/EAGLE, or Altium board into an Adom molecule: wings around the board and
four corner machine pins (MP1-MP4), written back in the board's own format. Replaces
kicad-to-molecule (the old command still works as a shim).
| Source | Reads | Writes | Pins |
|---|---|---|---|
| KiCad 7, 8, 9, 10 | .kicad_pcb |
.molecule.kicad_pcb |
generated in the board's dialect; STEP embedded on KiCad 9+ |
| Fusion / EAGLE 6+ | .brd (XML) |
.molecule.brd |
MACH_PIN_*_SHORT from Adom_Library_Master |
| Altium | .PcbDoc (OLE2) |
.molecule.PcbDoc |
pad record cloned from the board, streams patched in place |
The original board never moves. Every component, track, via, and pour stays byte-for-byte; only the outer outline is replaced and the pins are added.
Use
board-to-molecule convert board.kicad_pcb # or .brd / .PcbDoc
board-to-molecule plan board.brd # the EDA-neutral plan as JSON
board-to-molecule convert board.PcbDoc --vcut # V-cut score lines along the original outline
board-to-molecule inspect board.PcbDoc # reader summary + placement self-check
board-to-molecule showcase board.PcbDoc -o out/b # molecule, SVGs, before/after GLBs via step2glb
board-to-molecule serve out/ # before/after viewer (Adom 3D viewer), port 8857
board-to-molecule install # install the skill
How it works
Like adom-lbr for parts, there is one EDA-neutral hub in the middle, rs/src/plan.rs: readers
turn a board into a molecule plan (millimeters, Y up, MP1 front-left then counterclockwise), and
writers patch the plan back into each format by byte span.
Every molecule gets large machine pins (5.2 mm pad, 3.45 mm drill, MACH_PIN_LRG_SHORT) with
the pin-to-pin span on the 32 mm grid: each span rounds up to a whole number of 32 mm steps (at
least one), and the board edge sits 3 mm outside each pin center. A 10 x 10 mm board becomes
38 x 38 mm; a 35 x 85 mm board becomes 70 x 102 mm.
rs/src/plan.rs the hub: sizing rules, pins, plan JSON
rs/src/model.rs preview board model (outline, copper, parts, embedded models)
rs/src/kicad.rs KiCad reader + writer (dialects, embedded pin STEP)
rs/src/eagle.rs Fusion/EAGLE reader + writer
rs/src/altium/ Altium reader + writer (OLE2 streams, records, embedded models)
rs/src/embed.rs KiCad embedded files (zstd frame + checksum)
rs/src/tokicad.rs any board -> preview .kicad_pcb for STEP export
rs/src/svg.rs 2D previews and the step2glb artwork overlay
rs/src/pipeline.rs showcase: service-kicad STEP -> step2glb molecule mode
rs/src/serve.rs the gallery viewer server
viewer/ the viewer pages (Adom 3D viewer from wiki.adom.inc, one per frame)
assets/pins/ machine-pin footprints, STEP models, and adom-lbr translations
Build and test
cargo build --release
cargo test --release
B2M_SAMPLES=<dir with .PcbDoc samples> cargo test --release --test altium_samples
Limits
- Altium output is checked by two independent parsers and KiCad 10 accepts the pin pad record, but it has not yet been opened in Altium Designer itself. Open it and run DRC once.
- Fusion/EAGLE: pins are added to the board only; add MP1-MP4 to a linked schematic too.
- Only the four corner pins; intermediate edge contacts are not added.
Proprietary, Adom Inc.
# board-to-molecule
Turn any KiCad, Fusion/EAGLE, or Altium board into an Adom molecule: wings around the board and
four corner machine pins (MP1-MP4), written back in the board's own format. Replaces
`kicad-to-molecule` (the old command still works as a shim).
| Source | Reads | Writes | Pins |
|---|---|---|---|
| KiCad 7, 8, 9, 10 | `.kicad_pcb` | `.molecule.kicad_pcb` | generated in the board's dialect; STEP embedded on KiCad 9+ |
| Fusion / EAGLE 6+ | `.brd` (XML) | `.molecule.brd` | `MACH_PIN_*_SHORT` from Adom_Library_Master |
| Altium | `.PcbDoc` (OLE2) | `.molecule.PcbDoc` | pad record cloned from the board, streams patched in place |
The original board never moves. Every component, track, via, and pour stays byte-for-byte; only
the outer outline is replaced and the pins are added.
## Use
```bash
board-to-molecule convert board.kicad_pcb # or .brd / .PcbDoc
board-to-molecule plan board.brd # the EDA-neutral plan as JSON
board-to-molecule convert board.PcbDoc --vcut # V-cut score lines along the original outline
board-to-molecule inspect board.PcbDoc # reader summary + placement self-check
board-to-molecule showcase board.PcbDoc -o out/b # molecule, SVGs, before/after GLBs via step2glb
board-to-molecule serve out/ # before/after viewer (Adom 3D viewer), port 8857
board-to-molecule install # install the skill
```
## How it works
Like adom-lbr for parts, there is one EDA-neutral hub in the middle, `rs/src/plan.rs`: readers
turn a board into a molecule plan (millimeters, Y up, MP1 front-left then counterclockwise), and
writers patch the plan back into each format by byte span.
Every molecule gets **large machine pins** (5.2 mm pad, 3.45 mm drill, `MACH_PIN_LRG_SHORT`) with
the pin-to-pin span on the **32 mm grid**: each span rounds up to a whole number of 32 mm steps (at
least one), and the board edge sits 3 mm outside each pin center. A 10 x 10 mm board becomes
38 x 38 mm; a 35 x 85 mm board becomes 70 x 102 mm.
```
rs/src/plan.rs the hub: sizing rules, pins, plan JSON
rs/src/model.rs preview board model (outline, copper, parts, embedded models)
rs/src/kicad.rs KiCad reader + writer (dialects, embedded pin STEP)
rs/src/eagle.rs Fusion/EAGLE reader + writer
rs/src/altium/ Altium reader + writer (OLE2 streams, records, embedded models)
rs/src/embed.rs KiCad embedded files (zstd frame + checksum)
rs/src/tokicad.rs any board -> preview .kicad_pcb for STEP export
rs/src/svg.rs 2D previews and the step2glb artwork overlay
rs/src/pipeline.rs showcase: service-kicad STEP -> step2glb molecule mode
rs/src/serve.rs the gallery viewer server
viewer/ the viewer pages (Adom 3D viewer from wiki.adom.inc, one per frame)
assets/pins/ machine-pin footprints, STEP models, and adom-lbr translations
```
## Build and test
```bash
cargo build --release
cargo test --release
B2M_SAMPLES=<dir with .PcbDoc samples> cargo test --release --test altium_samples
```
## Limits
- Altium output is checked by two independent parsers and KiCad 10 accepts the pin pad record,
but it has not yet been opened in Altium Designer itself. Open it and run DRC once.
- Fusion/EAGLE: pins are added to the board only; add MP1-MP4 to a linked schematic too.
- Only the four corner pins; intermediate edge contacts are not added.
Proprietary, Adom Inc.