Go to file
pszsh 5d09f56e00 Initial commit: Former — PCB Stencil & Enclosure Generator
Desktop application (Wails v2) for generating 3D-printable solder paste
stencils and snap-fit enclosures from KiCad/Gerber files. Features include
native OpenSCAD export, interactive 3D layer viewer, visual cutout placement,
automatic USB port detection, and CLI mode for batch workflows.

Based on pcb-to-stencil by Nikolai Danylchyk (https://github.com/kennycoder/pcb-to-stencil).
2026-02-26 15:27:05 -08:00
cmd/genicon Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
frontend Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
static Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
.gitignore Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
.gitmodules Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
LICENSE Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
README.md Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
app.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
build-windows.bat Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
build-windows.sh Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
build.sh Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
drill.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
enclosure.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
former.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
gbrjob.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
gerber.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
go.mod Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
go.sum Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
instance.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
main.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
scad.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
session.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
stencil_process.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
stl.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
storage.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
svg.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
svg_render_darwin.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
svg_render_other.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
util.go Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00
wails.json Initial commit: Former — PCB Stencil & Enclosure Generator 2026-02-26 15:27:05 -08:00

README.md

Former

A desktop application for generating 3D-printable solder paste stencils and snap-fit enclosures from KiCad/Gerber files.

Former

Features

Stencil Generation

  • Parses RS-274X Gerber solder paste layers
  • Supports standard apertures (Circle, Rectangle, Obround) and Aperture Macros with rotation
  • Generates optimized STL meshes for 3D printing
  • Automatic cropping to PCB bounds

Enclosure Generation

  • Generates snap-fit enclosures with lids and trays from KiCad .gbrjob projects
  • Native OpenSCAD .scad export for parametric editing
  • Interactive 3D layer viewer with per-layer colorization (KiCad color scheme)
  • Visual cutout placement on any surface (top, bottom, sides) with live 3D preview
  • Automatic USB port detection and cutout alignment from F.Fab/B.Fab layers
  • Tray clip system with vertical relief slots
  • Dado/engrave mode for surface text and logos

Desktop App

  • Native macOS and Windows application (Wails v2)
  • Project saving and loading with persistent cutout state
  • CLI mode for scripted/batch workflows

Install

Requirements

  • Go 1.21+
  • Wails CLI: go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • Node.js 18+ (for frontend build)
  • macOS: Xcode Command Line Tools (xcode-select --install)

Build

macOS:

./build.sh

Windows (native):

build-windows.bat

Cross-compile for Windows (from macOS/Linux):

./build-windows.sh

The built application will be at build/bin/Former.app (macOS) or build/bin/Former.exe (Windows).

CLI Usage

Former can also run headless from the command line:

./Former [options] <paste_layer.gbr> [outline.gbr]

Options

Flag Default Description
--height 0.16 Stencil height in mm
--wall-height 2.0 Wall height in mm
--wall-thickness 1.0 Wall thickness in mm
--dpi 1016 Rendering DPI
--keep-png false Save intermediate PNG

Example

./Former --height=0.16 --keep-png my_board-F_Paste.gbr my_board-Edge_Cuts.gbr

3D Printing Tips

For fine-pitch SMD stencils (TSSOP, 0402, etc.):

  • Nozzle: 0.2mm recommended
  • Layer height: 0.16mm total (0.10mm first layer + 0.06mm second)
  • Build surface: Smooth PEI sheet for flat stencil bottom

Acknowledgments

Former began as a fork of pcb-to-stencil by Nikolai Danylchyk, a Go tool for converting Gerber paste layers to STL stencils. The original Gerber parser and STL mesh generation formed the foundation that Former builds upon.

License

MIT License — see LICENSE for details.