No description
Find a file
jaseg a7a5981e0e Make primitives with unset level polarity inherit from region
This fixes region rendering with programatically generated primitives
such that clear level polarity works in an intuitive way. This is useful
for e.g. cutouts in regions. Before, the renderer would set level
polarity twice, both when starting the region and then again once for
each region primitive (line or arc). The problem was that the primitives
in a region with "clear" polarity would when constructed with unset
polarity default to "dark". Thus the renderer would emit something like
LPC (clear polarity) -> G36 (start region) -> LPD (dark polarity) ->
{lines...} instead of LPC -> G36 -> {lines...}.

After this commit, Line and Arc will retain None as level polarity when
created with unset level polarity, and region rendering will override
None with the region's polarity. Outside regions, the old dark default
remains unchanged.

Note on verification: Somehow, gEDA gerbv would still render the broken
regions the way one would have intended, but other viewers (KiCAD
gerbview, the online EasyEDA one and whatever JLC uses to make their
silkscreens) would not.
2019-02-03 14:37:26 +09:00
doc doc options 2015-02-18 23:28:19 -05:00
examples Fix hard requirement of cairo per #83, and add stubs for required subclass methods to GerberContext per #84 2018-06-05 08:57:37 -04:00
gerber Make primitives with unset level polarity inherit from region 2019-02-03 14:37:26 +09:00
.coveragerc add coveralls 2014-09-30 17:49:04 -04:00
.gitignore Fix most broken tests so that I can safely merge into changes with known expected test result 2016-07-16 15:49:48 +08:00
.travis.yml Set travis distro to precise 2017-09-18 11:22:58 +02:00
doc-requirements.txt Python 3 tests passing 2015-02-18 21:14:30 -05:00
LICENSE Initial commit 2013-12-17 12:01:34 -08:00
Makefile Cleanup, rendering fixes. 2016-01-28 12:19:03 -05:00
README.md Fix broken Markdown headings 2017-04-16 16:46:15 -03:00
requirements.txt Remove scipy from requirements.txt 2017-09-16 14:52:44 +02:00
setup.py Remove references to scipy from travis config and setup.py 2017-09-18 10:23:08 +02:00
test-requirements.txt Fix most broken tests so that I can safely merge into changes with known expected test result 2016-07-16 15:49:48 +08:00

pcb-tools

Travis CI Build Status Coverage Status Documentation Status

Tools to handle Gerber and Excellon files in Python.

Usage Example:

import gerber
from gerber.render import GerberCairoContext

# Read gerber and Excellon files
top_copper = gerber.read('example.GTL')
nc_drill = gerber.read('example.txt')

# Rendering context
ctx = GerberCairoContext()

# Create SVG image
top_copper.render(ctx)
nc_drill.render(ctx, 'composite.svg')

Rendering Examples:

Top Composite rendering

Composite Top Image Composite Bottom Image

Source code for this example can be found here.

Install from source:

$ git clone https://github.com/curtacircuitos/pcb-tools.git
$ cd pcb-tools
$ pip install -r requirements.txt
$ python setup.py install

Documentation:

PCB Tools Documentation

Development and Testing:

Dependencies for developing and testing pcb-tools are listed in test-requirements.txt. Use of a virtual environment is strongly recommended.

$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install -r test-requirements.txt
(venv)$ pip install -e .

We use nose to run pcb-tools's suite of unittests and doctests.

(venv)$ nosetests