app
Adom Symbol
Public Made by Adomby adom
KiCad symbol creator with interactive viewer and delivery to KiCad/Fusion 360
← Commit history
Sync current source (open-source, up to date)
3 files changed
+25−52
VERSIONadded+1@@ -0,0 +1 @@+0.1.6
package.json+7−49@@ -1,56 +1,14 @@ { "slug": "adom-symbol",- "version": "1.0.4",+ "version": "0.1.6", "type": "app",- "description": "A live, AI-drivable KiCad schematic-symbol studio \u2014 auto-grouped pins, the chip's real 3D model embossed on the symbol, sent to KiCad/Fusion/Altium/OrCAD.",- "dependencies": {},- "tags": [- "eda",- "kicad",- "schematic",- "symbol",- "pcb",- "cli"- ],- "files": [- "install.sh",- "uninstall.sh",- "package.json",- "page.json",- "README.md",- "SKILL.md",- "Cargo.toml",- "screenshots/hero-v5.png",- "src/main.rs",- "src/app.html",- "src/render.rs",- "src/discrete_gen.rs",- "src/embed.html",- "src/deliver.rs",- "src/server.rs",- "src/theme.rs",- "src/ds2sf.rs",- "src/parse.rs",- "src/sym_gen.rs",- "docs/var-name-onchip.png",- "docs/shot.png",- "docs/var-name-insymbol.png",- "docs/var-3d-outline.png",- "docs/var-3d-iso.png",- "docs/var-groups-grouped.png",- "docs/var-groups-flat.png",- "docs/var-layout-square.png",- "docs/symbol.png",- "docs/embed.png",- "docs/hero.png",- "docs/var-layout-leftright.png",- "docs/chip3d.png",- "docs/studio.png"- ],+ "description": "KiCad symbol creator with interactive viewer and delivery to KiCad/Fusion 360",+ "dependencies": {+ "adom-lbr": "^0.1.0"+ }, "scripts": { "install": "./install.sh", "uninstall": "./uninstall.sh" },- "needs_sudo": false,- "license": "MIT"-}+ "needs_sudo": false+}
src/main.rs+17−3@@ -2,6 +2,7 @@ //! No Node, no gallia. Generation is native Rust (`sym_gen`/`discrete_gen`); //! SVG rendering goes through service-kicad (`render`). +mod provenance; mod discrete_gen; mod deliver; mod ds2sf;@@ -61,6 +62,12 @@ enum Cmd { file: PathBuf, #[arg(long)] out: PathBuf,+ /// Optional iso 3D chip PNG to composite into the symbol body centre —+ /// this is the "default symbol with the 3D chip in it" the dashboard+ /// card shows. Usually `<dir>/<mpn>-3d-iso-icon.png` (transparent) or+ /// `<mpn>-3d-iso.png`.+ #[arg(long)]+ iso: Option<PathBuf>, }, /// Render a ds2sf `<mpn>-symbol.extracted.json` to a themed thumbnail SVG /// (auto-grouped via our generator). Used by chip-fetcher for the ds2sf@@ -189,12 +196,19 @@ fn main() { fn run() -> Result<()> { match Cli::parse().command { Cmd::Create { file, out } => cmd_create(file, out),- Cmd::Render { file, out } => {+ Cmd::Render { file, out, iso } => { let content = fs::read_to_string(&file).with_context(|| format!("reading {}", file.display()))?; let name = first_symbol_name(&content).unwrap_or_else(|| "symbol".to_string());- let svg = render::render_symbol_svg(&content, &name)?;+ let mut svg = render::render_symbol_svg(&content, &name)?;+ if let Some(iso_path) = iso.as_ref() {+ match render::composite_iso_into_symbol(&svg, &content, &name, iso_path) {+ Ok(s) => svg = s,+ Err(e) => eprintln!("WARN: iso composite skipped: {e}"),+ }+ } fs::write(&out, &svg).with_context(|| format!("writing {}", out.display()))?;- println!("OK: rendered {} → {}", file.display(), out.display());+ println!("OK: rendered {} → {}{}", file.display(), out.display(),+ if iso.is_some() { " (+iso 3D chip)" } else { "" }); Ok(()) } Cmd::RenderDs2sf { file, out, layout, sym } => cmd_render_ds2sf(file, out, layout, sym),