83 lines
3.4 KiB
Markdown
83 lines
3.4 KiB
Markdown
# Gerber Solder Paste Layer to Solder Stencil Converter
|
|
|
|
A Go tool to convert Gerber files (specifically solder paste layers) into 3D printable STL stencils.
|
|
|
|
## Features
|
|
|
|
- Parses standard RS-274X Gerber files.
|
|
- Supports standard apertures (Circle, Rectangle, Obround).
|
|
- Supports Aperture Macros (AM) with rotation (e.g., rounded rectangles).
|
|
- Automatically crops the output to the PCB bounds.
|
|
- Generates a 3D STL mesh optimized for 3D printing.
|
|
- **Enclosure Generation**: Automatically generates a snap-fit enclosure and tray based on the PCB outline.
|
|
- **Native OpenSCAD Support**: Exports native `.scad` scripts for parametric editing and customization.
|
|
- **Smart Cutouts**: Interactive side-cutout placement with automatic USB port alignment.
|
|
- **Tray Snap System**: Robust tray clips with vertical relief slots for secure enclosure latching.
|
|
|
|
## Usage
|
|
|
|
Run the tool using `go run`:
|
|
|
|
```bash
|
|
go run main.go gerber.go [options] <path_to_gerber_file> [optional_board_outline_file]
|
|
```
|
|
|
|
### Options
|
|
|
|
- `--height`: Stencil height in mm (default: 0.16mm).
|
|
- `--wall-height`: Wall height mm (default: 2.0mm).
|
|
- `--wall-thickness`: Wall thickness in mm (default: 1mm).
|
|
- `--keep-png`: Save the intermediate PNG image used for mesh generation (useful for debugging).
|
|
- `-server`: Start the web interface server.
|
|
- `-port`: Port to run the server on (default: 8080).
|
|
|
|
### Example
|
|
|
|
```bash
|
|
go run main.go gerber.go -height=0.16 -keep-png my_board_paste_top.gbr my_board_outline.gbr
|
|
```
|
|
|
|
This will generate `my_board_paste_top.stl` in the same directory.
|
|
|
|
### Enclosure Generation
|
|
|
|
To generate an enclosure, use the web interface. Upload a `.gbrjob` file and the associated Gerber layers. The tool will auto-discover the board thickness and outline.
|
|
|
|
1. **Upload**: Provide the Gerber job and layout files.
|
|
2. **Configure**: Adjust wall thickness, clearance, and mounting hole parameters in the UI.
|
|
3. **Preview**: Use the interactive preview to place and align side cutouts for connectors.
|
|
4. **Export**: Generate STLs or OpenSCAD scripts for both the enclosure top and the tray.
|
|
|
|
### Web Interface
|
|
|
|
To start the web interface:
|
|
|
|
```bash
|
|
go run main.go gerber.go -server
|
|
```
|
|
|
|
Then open `http://localhost:8080` in your browser. You can upload files and configure settings via the UI.
|
|
|
|
## 3D Printing Recommendations
|
|
|
|
For optimal results with small SMD packages (like TSSOP, 0402, etc.), use the following 3D print settings:
|
|
|
|
- **Nozzle Size**: 0.2mm (Highly recommended for sharp corners and fine apertures).
|
|
- **Layer Height**: 0.16mm total height.
|
|
- **First Layer**: 0.10mm
|
|
- **Second Layer**: 0.06mm
|
|
- **Build Surface**: Smooth PEI sheet (Ensures the bottom of the stencil is perfectly flat for good PCB adhesion).
|
|
|
|
These settings assume you run the tool with `-height=0.16` (the default).
|
|
|
|
## How it Works
|
|
|
|
1. **Parsing**: The tool reads the Gerber file and interprets the drawing commands (flashes and draws). For enclosures, it parses the `.gbrjob` to identify board layers.
|
|
2. **Rendering**: It renders the PCB outline and layers into a high-resolution internal image.
|
|
3. **Path Extraction**: Board edges are traced and simplified to generate 2.5D geometry.
|
|
4. **Meshing**: It converts the image into a 3D mesh (STL) or generates CSG primitives (SCAD) using the board topology.
|
|
5. **Export**: The resulting files are saved for 3D printing or further CAD refinement.
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |