Metadata-Version: 2.4
Name: gerber_to_scad
Version: 0.1.7
Summary: Solder stencil generator, converts gerber files to a 3d-printable openSCAD solder stencil
License-File: LICENSE
Author: Rob Kirberich
Author-email: rob@kirberich.uk
Requires-Python: >=3.10,<4
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: service
Requires-Dist: Django (>=4.2,<5.0) ; extra == "service"
Requires-Dist: django-bootstrap3 (>=23.1,<24.0) ; extra == "service"
Requires-Dist: django-environ (>=0.10.0,<0.11.0) ; extra == "service"
Requires-Dist: gunicorn (>=25.1.0,<26.0.0) ; extra == "service"
Requires-Dist: pcb-tools (>=0.1.6,<0.2.0)
Requires-Dist: pygerber[svg] (>=2.4.3,<3.0.0)
Requires-Dist: scipy (>=1.10.1,<2.0.0)
Requires-Dist: setuptools (>=67.0.0,<81)
Requires-Dist: solidpython (>=1.1.3,<2.0.0)
Requires-Dist: typing-extensions (>=4.15.0,<5.0.0)
Description-Content-Type: text/markdown

# 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](https://python-poetry.org/docs/) 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:

```bash
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:

```bash
(env) $ gerber_to_scad -h
# Or:
(env) $ python -m gerber_to_scad -h
usage: main.py [-h] [-t THICKNESS] [-n] [-L LEDGE_THICKNESS] [-g GAP]
                         [-i INCREASE_HOLE_SIZE]
                         outline_file solderpaste_file output_file

Convert gerber files to an scad 3d printable solder stencil.

positional arguments:
  outline_file          Outline file
  solderpaste_file      Solderpaste file
  output_file           Output file

optional arguments:
  -h, --help            show this help message and exit
  -t THICKNESS, --thickness THICKNESS
                        Thickness (in mm) of the stencil. Make sure this is a
                        multiple of the layer height you use for printing
                        (default: 0.2)
  -n, --no-ledge        By default, a ledge around half the outline of the
                        board is included, to allow aligning the stencil
                        easily. Pass this to exclude this ledge.
  -f, --full-ledge      By default, a ledge around half the outline of the
                        board is included. Pass this to make the ledge around
                        the full perimeter instead of half.
  -L LEDGE_THICKNESS, --ledge-thickness LEDGE_THICKNESS
                        Thickness of the stencil ledge. This should be less than
                        the thickness of the PCB (default: 1.2)
  -g GAP, --gap GAP     Gap (in mm) between board and stencil ledge. Increase
                        this if the fit of the stencil is too tight (default:
                        0.0)
  -i INCREASE_HOLE_SIZE, --increase-hole-size INCREASE_HOLE_SIZE
                        Increase the size of all holes in the stencil by this
                        amount (in mm). Use this if you find holes get printed
                        smaller than they should (default: 0.0)
```

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

```bash
gerber_to_scad outline_file.gko toppaste_file.gtp 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.

