app
Adom Library
Public Made by Adomby adom
adom-lbr — the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical adom-lbr JSON — symbol + footprint + 3D + pin↔pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.
← Commit history
2.46.1: drilled PcbLib pads are plated Multi-Layer pads in Altium (bytes 114/116 as Altium writes them; the ToF heatsink vias loaded on the Top Layer before)
5 files changed
+22−4
Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "adom-lbr"-version = "2.46.0"+version = "2.46.1" edition = "2021" description = "adom-lbr generator / EDA translator: the canonical adom-lbr JSON is the hub, with native converters to Altium (.SchLib/.PcbLib/.IntLib), EAGLE/Fusion (.lbr), and KiCad. Altium output is written natively — no Altium needed at conversion time."
SKILL.md+6@@ -67,6 +67,12 @@ read from `distributor_links.<dist>` as a string or an object with `pn` / `part_ are built from these fields, and the wiki link is how the next EE finds the reviewed data. One lookup fills the numbers: `adom-parts-search search <MPN>`. +**Altium plated pads (2.46.1).** A drilled pad in the native PcbLib is now a real plated+Multi-Layer pad: the record carries layer 74 plus the two bytes Altium sets when it plates+a pad (114 = 15, 116 = 3, diffed against a library Altium saved after altium_plate_vias).+Before 2.46.1 the ToF heatsink vias loaded on the Top Layer with a hole; `altium_plate_vias+{libraryPath}` (altium-bridge 0.2.20) repairs an older library in place.+ **Heatsink vias ride inside the footprint (2.46.0).** A component page that defines heatsink vias (`artwork/<MPN>-heatsink-via.json`: 0.3 mm drill, 0.8 mm pitch, 0.15 mm ring, tented) carries them in the KiCad footprint as plated `thru_hole` pads numbered like the exposed pad
VERSION+1−1@@ -1 +1 @@-2.46.0+2.46.1
crates/altium-codec/src/pcblib.rs+13−1@@ -497,7 +497,11 @@ fn encode_pad_record(pad: &Pad, fp: &Footprint, pad_tpl: &[u8]) -> Vec<u8> { let ys = (pad.h_mm * MM_TO_UNIT).round() as u32; let hole = (pad.drill_mm * MM_TO_UNIT).round() as u32; let shape = shape_byte(&pad.shape);- pd[0] = if hole > 0 { 0x21 } else { 1 }; // multilayer (thru) vs top+ // Altium layer ids: 1 = Top, 32 = Bottom, 33 = Top Overlay, 74 = Multi-Layer. A drilled+ // pad must sit on Multi-Layer (74) to be a plated through-hole; 0x21 (33) put the ToF+ // heatsink vias on the Top Overlay/Top layer with a hole (John, 2026-09-20: "did Altium+ // support bringing in those heatsink vias?" - the holes came, the layer did not).+ pd[0] = if hole > 0 { 74 } else { 1 }; pd[13..17].copy_from_slice(&x_units.to_le_bytes()); pd[17..21].copy_from_slice(&y_units.to_le_bytes()); pd[21..25].copy_from_slice(&xs.to_le_bytes());@@ -507,6 +511,14 @@ fn encode_pad_record(pad: &Pad, fp: &Footprint, pad_tpl: &[u8]) -> Vec<u8> { pd[37..41].copy_from_slice(&xs.to_le_bytes()); pd[41..45].copy_from_slice(&ys.to_le_bytes()); pd[45..49].copy_from_slice(&hole.to_le_bytes());+ // A hole alone does not make Altium treat the pad as a plated through-hole: the+ // pad Altium saved after `altium_plate_vias` (Layer := eMultiLayer, Plated := True)+ // differs from ours only at bytes 114 (1 -> 15) and 116 (0 -> 3) (diffed on the+ // Adom_ToF heatsink vias, 2026-09-20); without them the vias load on the Top Layer.+ if hole > 0 && pd.len() > 116 {+ pd[114] = 15;+ pd[116] = 3;+ } pd[49] = shape; pd[50] = shape; pd[51] = shape;
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-lbr",- "version": "2.46.0",+ "version": "2.46.1", "type": "app", "description": "adom-lbr \u2014 the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad \u21c4 Altium \u21c4 EAGLE/Fusion) through one canonical adom-lbr JSON \u2014 symbol + footprint + 3D + pin\u2194pad map. Altium is written natively (no Altium needed). Includes the adom-lbr Manager: browse wiki components and view symbol/footprint/3D + the per-EDA layer stackup.", "dependencies": {},