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.23.1: warn when a semantic part has no glyph
7 files changed
+29−6
Cargo.lock+1−1@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adom-lbr"-version = "2.23.0"+version = "2.23.1" dependencies = [ "altium-codec", "anyhow",
Cargo.toml+1−1@@ -1,6 +1,6 @@ [package] name = "adom-lbr"-version = "2.23.0"+version = "2.23.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."
VERSION+1−1@@ -1 +1 @@-2.23.0+2.23.1
bin/adom-lbr⋯ 1 unchanged line ⋯
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-lbr",- "version": "2.23.0",+ "version": "2.23.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": {},
page.json+2−2@@ -1,6 +1,6 @@ { "slug": "adom-lbr",- "version": "2.23.0",+ "version": "2.23.1", "type": "app", "description": "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.", "dependencies": {},@@ -88,4 +88,4 @@ "label": "Browse parts" } ]-}+}
src/main.rs+23@@ -2296,6 +2296,29 @@ fn main() { } parsed.package_description = Some(package_description(fp_content.as_deref(), parsed.package_name.as_deref().unwrap_or(&parsed.name)));++ // A SEMANTIC PART WITH NO ARTWORK IS AN UNFINISHED SYMBOL, and it is worth+ // saying so at generate time. A diode, LED, crystal or inductor that reaches a+ // schematic as two bare pin stubs reads as a placeholder to any engineer (wiki+ // issue #5). Almost always the source .kicad_sym does carry the glyph and it+ // was being dropped in translation, which is fixed; what is left is a source+ // that genuinely draws nothing, and that has to be fixed in the source rather+ // than invented here, because guessing a part's class from its designator and+ // drawing a triangle would be wrong the moment the guess is.+ if parsed.graphics.is_empty() && parsed.body.is_none() {+ let cls = match parsed.reference.trim_end_matches(|c: char| c.is_ascii_digit() || c == '?') {+ "D" => Some("a diode or LED"),+ "Y" | "X" => Some("a crystal or oscillator"),+ "L" => Some("an inductor"),+ "Q" => Some("a transistor"),+ _ => None,+ };+ if let Some(what) = cls {+ println!("HINT: this symbol has NO drawing of its own, and its reference \"{}\" says it is {}. \+It will render as bare pin stubs, which reads as an unfinished placeholder. Add the glyph to the source .kicad_sym \+(or pass --symbol-art), because the shape is what an engineer reads first.", parsed.reference, what);+ }+ } if part_attrs.is_empty() { println!("HINT: no part attributes (MPN/MANUFACTURER/MOUSER_PN/DIGIKEY_PN/LCSC_PN). \ The geometry is fine but a BOM cannot order this part - pass --part-metadata or put a page.json beside the symbol.");