Former/README.md

122 lines
3.7 KiB
Markdown

# Former
A desktop application for generating 3D-printable solder paste stencils and snap-fit enclosures from KiCad/Gerber files.
![Former](static/showcase.png)
## 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
#### macOS
1. Install [Homebrew](https://brew.sh/) (if not already installed)
2. Install dependencies:
```bash
brew install go node
xcode-select --install # Xcode Command Line Tools
go install github.com/wailsapp/wails/v2/cmd/wails@latest
```
#### Windows
1. Install dependencies (using [winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), built into Windows 10/11):
```powershell
winget install GoLang.Go
winget install OpenJS.NodeJS.LTS
go install github.com/wailsapp/wails/v2/cmd/wails@latest
```
Or download manually: [Go](https://go.dev/dl/) 1.21+, [Node.js](https://nodejs.org/) 18+
2. **WebView2 Runtime** — required by Wails. Pre-installed on most Windows 10/11 machines with Edge. If missing, download from [Microsoft](https://developer.microsoft.com/en-us/microsoft-edge/webview2/).
#### Version Summary
| Tool | Minimum | Install docs |
|------|---------|--------------|
| Go | 1.21+ | https://go.dev/dl/ |
| Node.js | 18+ | https://nodejs.org/ |
| Wails CLI | v2 | https://wails.io/docs/gettingstarted/installation |
### Build
The build scripts check for missing dependencies and print install instructions if anything is missing.
**macOS:**
```bash
./build.sh
```
**Windows (native):**
```bat
build-windows.bat
```
**Cross-compile for Windows (from macOS/Linux):**
```bash
./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:
```bash
./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
```bash
./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](https://github.com/kennycoder/pcb-to-stencil) by [Nikolai Danylchyk](https://github.com/kennycoder), 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](LICENSE) for details.