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 to MP4, written back in the board's own format.

KiCad .kicad_pcb (7, 8, 9, 10) Fusion / EAGLE .brd Altium .PcbDoc (native OLE2, no Altium needed) Rust single binary, most boards in under 100 ms

The original board never moves: every component, track, via, and pour stays byte-for-byte where it was. The tool replaces the outer outline with a grid-snapped rectangle and adds the four pins, so the workcell can pick, place, and contact the board. Every example below was converted by the CLI and then built into 3D through the real molecule pipeline (service-kicad STEP export, then step2glb molecule mode), and every molecule passed step2glb's anchoring gate.

How it works

Like adom-lbr does for parts, the tool puts one EDA-neutral description in the middle. Each reader turns its board into the same molecule plan (millimeters, Y up, MP1 front-left, counterclockwise from above), and each writer patches that plan back into its own format.

KiCad .kicad_pcb Fusion / EAGLE .brd Altium .PcbDoc Molecule plan outline, grid, pin size, MP1-MP4 mm, Y up, EDA-neutral .molecule.kicad_pcb .molecule.brd .molecule.PcbDoc read (outline, copper, parts) write in place, rest byte-identical
PinsGridBoard edge to pin centerPad / drillFusion packageKiCad / Altium footprint
large machine pins, always32 mm3 mm5.2 / 3.45 mmMACH_PIN_LRG_SHORTMachinePinLargeShort

Each pin-to-pin span rounds up to a whole number of 32 mm steps (at least one), so a 10 x 10 mm board becomes 38 x 38 mm and a 35 x 85 mm board becomes 70 x 102 mm. The new outline is centered on the original. Inner cutouts (slots, mounting-hole rings) are kept; the outer outline, including notches in it, becomes the rectangle.

Examples: before and after

Pick a board. The 3D panes are the wiki's own Adom 3D viewer, loading the GLBs from this page; the 2D panes are rendered by the tool. The plan view shows the original outline dashed, the wings hatched, and the pins in gold. The after view is read back from the written file, not drawn from the plan.

Results

BoardSourceOriginal (mm)Molecule (mm)Grid stepsPartsConvertAnchored
BMA400 breakoutKiCad10.4 x 10.438.0 x 38.01 x 11310 msyes
Vimdrones ESC dev boardKiCad35.0 x 85.070.0 x 102.02 x 39596 msyes
SparkFun Qwiic ButtonFusion / EAGLE25.4 x 25.438.0 x 38.01 x 14829 msyes
SparkFun RedBoardFusion / EAGLE68.6 x 53.3102.0 x 70.03 x 265315 msyes
miniFOC driverAltium40.0 x 40.070.0 x 70.02 x 241144 msyes
Elk Pi audio boardAltium136.2 x 93.7166.0 x 102.05 x 3440179 msyes

Convert time is read, plan, write, and read back, on one core of a shared container. Anchored is step2glb molecule mode on the GLB built from the written molecule: MP1-MP4 found, board Z-up with MP1 at the origin.

What each lane does

KiCad

Fusion / EAGLE

Altium

Use

adom-wiki pkg install adom/board-to-molecule     # Linux binary + skill; old kicad-to-molecule command kept as a shim

board-to-molecule convert board.kicad_pcb         # or board.brd, board.PcbDoc
board-to-molecule plan board.brd                  # the EDA-neutral plan as JSON, writes nothing
board-to-molecule convert board.PcbDoc --vcut     # add V-cut score lines along the original outline
board-to-molecule showcase board.PcbDoc -o out/   # molecule + SVGs + before/after GLBs (step2glb)
board-to-molecule serve out-dir/                  # the before/after viewer in a Hydrogen webview

Output lands next to the input as <board>.molecule.<ext>. Every convert reads its own output back and fails if the written outline does not match the plan. CLI answers follow the Adom contract: OK: or ERROR: plus a Hint:.

What changed from kicad-to-molecule

This replaces kicad-to-molecule 0.5.0 (Python, KiCad only). The outline and pin placement math carry over unchanged; what is different:

Limits

Sample boards: KiCad samples from adom-inc/kicad-to-molecule; SparkFun Qwiic Button and RedBoard (CC BY-SA 4.0); HangX-Ma/miniFOC (Apache-2.0); elk-audio/elk-pi-hardware (CC BY-SA 4.0). Each example lists its source.