Skip to main content

Solder stencil generator, converts gerber files to a 3d-printable openSCAD solder stencil

Project description

gerber_to_scad

Simple python script for converting gerber files into a 3d printable solder stencil scad file

This repository has both a CLI tool, and a web app you can run locally or self-host. The tool used to run online at solder-stencil.me, but this is currently offline. If anyone misses it, let me know and I might bring it back!

Installation

  • To install just the library: pip install gerber-to-scad
  • To install the library and the web service: pip install "gerber-to-scad[service]"

gerber_to_scad requires python3.10 or higher.

Development setup

  • Clone the repo
  • Make sure you have poetry installed.
  • Run poetry install.
  • To activate the poetry virtualenv, run poetry shell.

Note: on M1 macs, scipy doesn't install correctly out of the box. If you're getting installation errors, try this:

brew install openblas
export OPENBLAS="$(brew --prefix openblas)"
poetry install

Usage

You'll get some information on available options if you run it with the -h argument:

(env) $ gerber_to_scad from-files --help

Usage: gerber_to_scad from-files [OPTIONS]

  Generate a stencil from an outline and paste gerber file.

Options:
  --outline FILE                  File containing the outline layer
                                  [required]
  --paste FILE                    File containing the solderpaste layer (top
                                  or bottom)  [required]
  --output FILE                   Output file  [required]
  -t, --thickness FLOAT           Stencil thickness in mm. Should be a
                                  multiple of your layer height.  [default:
                                  0.2]
  -a, --alignment-aid [ledge|frame|none]
                                  Alignment aid to include with the stencil.
                                  [default: ledge]
  -f, --full-ledge                [ledge] Extend the ledge all the way around
                                  the board (default is half ledge).
  -L, --ledge-thickness FLOAT     [ledge] Ledge thickness in mm. Should be
                                  less than the PCB thickness.  [default: 1.2]
  --frame-width FLOAT             [frame] Width of the frame in mm.  [default:
                                  155.0]
  --frame-height FLOAT            [frame] Height of the frame in mm.
                                  [default: 155.0]
  --frame-thickness FLOAT         [frame] Thickness of the frame in mm.
                                  [default: 1.2]
  -g, --gap FLOAT                 Gap in mm between board and ledge. Increase
                                  if fit is too tight.  [default: 0.0]
  -i, --increase-hole-size FLOAT  Increase all hole sizes by this amount in
                                  mm.  [default: 0.0]
  --flip                          Flip the stencil (use for bottom layer
                                  stencils).
  --openscad-binary PATH          Path to the OpenSCAD binary. Only used when
                                  output ends in .stl.  [default: openscad]
  --help                          Show this message and exit.

For basic usage, simply run the script with input files for the gerber outline and solderpaste files and specify an output:

gerber_to_scad from-files --outline=outline_file.gko --paste=toppaste_file.gtp --output=output.scad

Specifying a .stl file as the output file will directly call OpenSCAD to create the STL - if OpenSCAD is not on the path, you can use --openscad-binary=<path> to specify it

Contributing

Contributions are very welcome, I don't have a lot of time to spend on this project, but I try to review PRs as much as I can!

  • Please use ruff to format your code - if you use VS code, you can open the gerber_to_scad.code-workspace file to get all the right automatic formatting in your editor, or you can just run ruff format . in the project root.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gerber_to_scad-0.2.0.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gerber_to_scad-0.2.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file gerber_to_scad-0.2.0.tar.gz.

File metadata

  • Download URL: gerber_to_scad-0.2.0.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gerber_to_scad-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4b724707a8ab2ba32a744037d89abc3f256ba4414cb653f0159b3e8147b089f0
MD5 3d983e82dffb142030d407710efd4f38
BLAKE2b-256 8dddc5cd9ab091e61b66a6351f9b1b3094e5ac8fe9bb477d166a8696fccb82c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for gerber_to_scad-0.2.0.tar.gz:

Publisher: ci.yml on kirberich/gerber_to_scad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gerber_to_scad-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: gerber_to_scad-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gerber_to_scad-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 149c12b6f8a6aafcf4317f385da71595e49d84da038f508c43d5cbd062536499
MD5 4fc1fb7e168899c9f18663a8fcaf37ff
BLAKE2b-256 91c42a7e6f9d3ea5304f274fca55eb1ba396322f1fe868a28b0a692f5cfc85e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gerber_to_scad-0.2.0-py3-none-any.whl:

Publisher: ci.yml on kirberich/gerber_to_scad

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page