Repository navigation
boardui 1.1.0
boardui shows printed circuit boards in 3D. It converts IPC-2581 files into glTF boards that carry components, pins and nets as metadata, and <board-viewer>, a three.js web component, displays them with hover, selection, net highlighting and HTML widgets.
Demo: https://midub.github.io/boardui/. Drop an IPC-2581 file: it is converted in your browser (WebAssembly), nothing is uploaded.
Install the command-line tool
Download the archive for your platform, check it against SHA256SUMS, and put boardui on your PATH:
| Platform | Archive |
|---|---|
| Linux x86_64 (static) | boardui-1.1.0-x86_64-unknown-linux-musl.tar.gz |
| Linux ARM64 (static) | boardui-1.1.0-aarch64-unknown-linux-musl.tar.gz |
| macOS Apple silicon | boardui-1.1.0-aarch64-apple-darwin.tar.gz |
| macOS Intel | boardui-1.1.0-x86_64-apple-darwin.tar.gz |
| Windows x86_64 | boardui-1.1.0-x86_64-pc-windows-msvc.zip |
curl -LO https://github.com/midub/boardui/releases/download/v1.1.0/boardui-1.1.0-x86_64-unknown-linux-musl.tar.gz
curl -LO https://github.com/midub/boardui/releases/download/v1.1.0/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
tar -xzf boardui-1.1.0-x86_64-unknown-linux-musl.tar.gz
sudo install boardui-1.1.0-x86_64-unknown-linux-musl/boardui /usr/local/bin/
boardui convert board.xml -o board.glb # IPC-2581 in, boardui GLB out
boardui validate board.glb # check a GLB against the profileThe macOS binaries are not signed: if macOS blocks a binary downloaded with a browser, run xattr -d com.apple.quarantine boardui. See the README for usage, embedding the viewer and building from source.
Changes in 1.1.0
Board colours, the missing shapes, text, optional layers and panels. The glTF profile goes from
0.1 to 0.6 and is still a draft (spec §11); minor versions
only add optional data, so 1.0.0 files still load.
- Eight more conformance samples from other exporters: Allegro rigid-flex, Polar Speedstack,
Altium (revision A,.cvg), KiCad 9 (blind, buried and micro vias, castellations, inches,
revision B, a KiKit panel) and KiCad 10. AStackupwithoutname(Polar, Altium) is now a
warning instead of an error, and the CLI no longer panics on a parse error far into a file
written on one line. - Soldermask and silkscreen take their colours from the IPC-2581 file (
Speccolours and KiCad's
Color : <name>), with one material per colour; the demo's layer swatches follow them
(spec §6.10). - Profile 0.2: a material with a colour from the source is named
boardui/<kind>/<rrggbb>
(spec §7). - Missing shapes: fiducials (
GlobalFiducial,LocalFiducial,BadBoardMark,
GoodPanelMark) become copper features of the new kindFIDUCIALwith afiducialtype
property;HexagonandMoireprimitives are drawn;HATCHandMESHfills are drawn as
lines clipped to their area;LineDesc@linePropertydots and dashes strokes, andERASElines
erase (profile 0.3; spec §6.1, §6.2, §8.2). - Optional layers: paste, courtyard, assembly (fab) and documentation layers are converted,
hidden by default: paste as a prism on the pads, drawings as thin sheets stacked outside the
board. Package assembly drawings fill a synthesized@assembly-top/-bottomwhen the file has
no assembly layer, and package silkscreens are drawn where the silkscreen layer has nothing for
a part. The viewer and demo list the new layers, switched off (profile 0.4; spec §6.11–§6.13). - Text: IPC-2581
Textis drawn as strokes, fitted into itsBoundingBox: with the glyphs of
aFontDefEmbeddedfont, else with a bundled single-stroke font (KiCad's Newstroke, ASCII and
Latin-1, CC0); characters no font has are boxes. Features carry their strings in a newtext
property, shown by the viewer'sinfo()(profile 0.5; spec §6.1, §8.2). - Panels:
StepRepeatis read and a panel converts with every board it places, nested,
rotated and flipped (mirror, layers swapped). The default step is the panel (the step that
noStepRepeatreferences); single-step files convert as before. Each placed copy is an
instance (inst/board-2), and its components, pins, nets and features get the instance as an
extra ID segment (cmp/board-2/R1,feat/board-2/TOP/12); nets are per board. The viewer
resolves the new IDs (profile 0.6; spec §5, §6.14, ADR 0013).
What's Changed
- v1.1: more sample files from other exporters by @midub in #15
- v1.1: board colours from the IPC-2581 file by @midub in #14
- v1.1: missing shapes (fiducials, Hexagon, Moire, hatched fills, dashed lines) by @midub in #13
- v1.1: optional layers (paste, courtyard, assembly, documentation) by @midub in #16
- v1.1: Text (embedded fonts and a bundled stroke font) by @midub in #17
- v1.1: panels (StepRepeat) by @midub in #18
- Release v1.1.0 by @midub in #19
Full Changelog: v1.0.0...v1.1.0