← Commit history

Show every thumbnail type: symbol(2) footprint(3) shaded-3D(4) orientations(6) outline-styles(5), each with a labeled contact sheet

John Lauer ·bd05f1b006 ·4mo ago ·parent 3b6df2a
6 files changed +33−15
README.md+33−15
@@ -1,30 +1,48 @@ # chip-thumbnailer -**The rendering engine behind chip-fetcher's library — three crisp thumbnails per chip (symbol, footprint, 3D), Adom-themed, with no local KiCad or EAGLE.**+**The rendering engine behind chip-fetcher's library — it renders every thumbnail kind a chip needs: themed symbol & footprint SVGs, OCCT-direct 3D renders from six angles, and crisp vector-outline icons in five styles. No local KiCad, no local EAGLE.** -chip-thumbnailer walks the chip-fetcher library and renders, for every part, the three views you see on each card: an Adom-themed KiCad **symbol** SVG, a dark-grid **footprint** SVG, and an OCCT-direct **3D isometric** PNG. It runs through the shared `service-kicad` and `service-step2glb` services — no local KiCad, no local EAGLE, no gallia. Standalone Rust.+chip-thumbnailer walks the chip-fetcher library and, for every part, renders the full set of thumbnails its cards, carats, and the adom-symbol/footprint studios consume — straight from the part's `.kicad_sym`, `.kicad_mod`, and STEP, through the shared `service-kicad` and `service-step2glb` services. Standalone Rust, no Node, no gallia. Below is **every thumbnail type it produces**, rendered for the same part (Nordic **nRF54L15**, 49-pin QFN). -## Three thumbnails per chip+# Every thumbnail it produces -![A symbol thumbnail, Adom-themed](docs/sym.png)+## 1. Symbol — 2 variants -The **symbol** is rendered from the part's `.kicad_sym` through `service-kicad`, then re-themed for the dark Adom canvas — pins grouped, labels legible, cropped tight. This is the same artwork the chip-fetcher card and the adom-symbol studio show, generated once and cached next to the source files.+![Symbol thumbnails: canonical and ds2sf](docs/cat-symbol.png) -![A footprint thumbnail on the dark grid](docs/fp.png)+The schematic symbol, Adom-themed onto the dark canvas. Two sources are rendered so the chip-fetcher carat can switch between them: **`-symbol.svg`** (the canonical symbol from the part's `.kicad_sym`) and **`-symbol.ds2sf.svg`** (a symbol generated from the **datasheet-extracted** pin list via ds2sf, for when you want the logical, datasheet-true grouping). -The **footprint** comes from the `.kicad_mod`, styled onto a dark PCB grid with copper, the courtyard, and the pin-1 marker — cropped to the part with no page frame or title block. chip-thumbnailer reads legacy KiCad-5 `(module …)` footprints as well as modern ones, so older vendor downloads render correctly too.+## 2. Footprint — 3 variants -## 3D render styles+![Footprint thumbnails: canonical, authoritative, ds2sf](docs/cat-footprint.png) -![The 3D render styles: shaded iso plus blueprint, teal and dark outlines](docs/styles.png)+The land pattern on a dark PCB grid, cropped tight to the part. Three sources are rendered: **`-footprint.svg`** (canonical), **`-footprint.authoritative.svg`** (the manufacturer/vendor-authoritative pattern, verbatim), and **`-footprint.ds2sf.svg`** (reconstructed from datasheet dimensions). Legacy KiCad-5 `(module …)` footprints render as cleanly as modern ones. -The **3D** view is rendered OCCT-direct from the STEP model via `service-step2glb` — not a screenshot of a viewer, but a true offscreen render at the correct orientation. Beyond the shaded isometric PNG, chip-thumbnailer emits crisp **vector outline** styles (thin / bold / blueprint / teal / dark) via OCCT hidden-line removal, each optionally with the part number laser-marked onto the chip's top face. These feed the chip-fetcher carat switcher and the adom-symbol "chip on the symbol" overlay.+## 3. 3D shaded render — 4 forms++![Shaded 3D: full, named, icon, named icon](docs/cat-shaded.png)++OCCT-direct shaded isometric renders of the real STEP model via `service-step2glb` — a true offscreen render, not a screenshot of a viewer. Four forms ship: **`-3d-iso.png`** (the full render), **`-3d-iso-named.png`** (with the part number **laser-marked onto the top face**), and **`-3d-iso-icon.png`** / **`-3d-iso-named-icon.png`** (tight square crops for small card/badge use).++## 4. 3D orientations — 6 angles++![Six 3D orientations of the package](docs/cat-orient.png)++The same package rendered from **every principal angle** so any tool can show the side it needs — the default **iso**, plus **x-up / x-down**, **y-up / y-down**, and **z-down**. `y-up` reveals the marked top face; `y-down` shows the pad/pin underside. These power the orientation switching in the chip-fetcher 3D view and the adom-symbol chip overlay.++## 5. 3D vector outline — 5 styles++![Five vector-outline styles: thin, bold, blueprint, teal, dark](docs/cat-outline.png)++Crisp black-&-white (or accent) **line art** produced by **OCCT hidden-line removal** — schematic-native icons that print cleanly and stay legible at any size. Five styles cover light and dark contexts: **thin** and **bold** (dark strokes, for light/print backgrounds), **blueprint** (blue), **teal** (brand accent), and **dark** (white strokes, for dark UI). Each style also renders a **`-named`** variant with the part number laser-marked on the chip — so the icon you drop into a symbol carries its own label.++> **In total ~24 files per part**: 2 symbol + 3 footprint + 4 shaded-3D + 6 orientation + (5 styles × plain/named) outline. They're written next to the source files and cached until the part changes.  ## How it runs -- **`once <MPN>`** — render all three thumbnails for one chip, written alongside the source files.+- **`once <MPN>`** — render the full set above for one chip, written alongside the source files. - **`scan`** — render every chip carrying a `.thumb-pending` marker (the batch path chip-fetcher triggers).-- **`rerender <MPN> <sym|fp|3d|all>`** — re-do just one kind.+- **`rerender <MPN> <sym|fp|3d|all>`** — re-do just one family. - **`status` / `health` / `config`** — show what exists, probe `kicad-cli` + `step2glb` + `service-step2glb`, print the resolved library root.  ## Open source — check it out, vibe-code it, send it back@@ -33,8 +51,8 @@ chip-thumbnailer is MIT and **fully open**. The complete Rust source is in this  1. **Build it.** `cargo build --release` drops a standalone binary (no Node, no gallia). 2. **Point your install at your checkout.** `adompkg link john/chip-thumbnailer ./chip-thumbnailer` so the `chip-thumbnailer` you run is your local copy.-3. **Vibe-code a change.** Open the folder in Claude Code and describe what you want — a new render style, a different crop, another thumbnail kind. The symbol / footprint / 3D renderers are each one small, readable module.-4. **Send it back.** Open a **pull request** on this page (the wiki reviews and merges per-repo PRs), or start a discussion thread. Good additions get folded into the shipped app.+3. **Vibe-code a change.** Open the folder in Claude Code and describe what you want — a new render style, a different crop, another orientation, another thumbnail kind. The symbol / footprint / 3D renderers are each one small, readable module (`render_sym.rs`, `render_fp.rs`, `render_3d.rs`).+4. **Send it back.** Open a **pull request** on this page (the wiki reviews and merges per-repo PRs), or start a discussion thread.  ## Part of the Adom EDA family @@ -43,7 +61,7 @@ The rendering engine for **chip-fetcher**; produces the artwork **adom-symbol**, ## Run it  ```bash-chip-thumbnailer once nRF54L15          # render symbol + footprint + 3D for one chip+chip-thumbnailer once nRF54L15          # render the full thumbnail set for one chip chip-thumbnailer scan                   # render every chip marked .thumb-pending chip-thumbnailer health                 # probe kicad-cli + step2glb + service-step2glb ```
docs/cat-footprint.pngadded
⋯ 1 unchanged line ⋯
docs/cat-orient.pngadded
⋯ 1 unchanged line ⋯
docs/cat-outline.pngadded
⋯ 1 unchanged line ⋯
docs/cat-shaded.pngadded
⋯ 1 unchanged line ⋯
docs/cat-symbol.pngadded
⋯ 1 unchanged line ⋯