Skip to content

boardui 1.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 07:11
· 17 commits to master since this release

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 profile

The 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. A Stackup without name (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 (Spec colours 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 kind FIDUCIAL with a fiducial type
    property; Hexagon and Moire primitives are drawn; HATCH and MESH fills are drawn as
    lines clipped to their area; LineDesc@lineProperty dots and dashes strokes, and ERASE lines
    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/-bottom when 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 Text is drawn as strokes, fitted into its BoundingBox: with the glyphs of
    a FontDefEmbedded font, 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 new text
    property, shown by the viewer's info() (profile 0.5; spec §6.1, §8.2).
  • Panels: StepRepeat is 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
    no StepRepeat references); 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