summaryrefslogtreecommitdiff
path: root/gerber/pcb.py
diff options
context:
space:
mode:
authorGarret Fick <garret@fickworkshop.com>2016-11-11 15:54:42 +0800
committerGitHub <noreply@github.com>2016-11-11 15:54:42 +0800
commit1e868763a1c4030bedd51553468cbe25f272bef9 (patch)
tree59cef68f1449a5be8d2a9a8ed352e3d9974a3edb /gerber/pcb.py
parent5af19af190c1fb0f0c5be029d46d63e657dde4d9 (diff)
parent60d08dc8ad72f5bb0a14d4821451d7dce20b9639 (diff)
downloadgerbonara-1e868763a1c4030bedd51553468cbe25f272bef9.tar.gz
gerbonara-1e868763a1c4030bedd51553468cbe25f272bef9.tar.bz2
gerbonara-1e868763a1c4030bedd51553468cbe25f272bef9.zip
Merge pull request #5 from hamiltonkibbe/merge-curtacircuitos
Merge curtacircuitos
Diffstat (limited to 'gerber/pcb.py')
-rw-r--r--gerber/pcb.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/gerber/pcb.py b/gerber/pcb.py
index 92a1f28..a213fb3 100644
--- a/gerber/pcb.py
+++ b/gerber/pcb.py
@@ -18,7 +18,7 @@
import os
from .exceptions import ParseError
-from .layers import PCBLayer, LayerSet, sort_layers
+from .layers import PCBLayer, sort_layers
from .common import read as gerber_read
from .utils import listdir
@@ -29,22 +29,26 @@ class PCB(object):
def from_directory(cls, directory, board_name=None, verbose=False):
layers = []
names = set()
+
# Validate
directory = os.path.abspath(directory)
if not os.path.isdir(directory):
raise TypeError('{} is not a directory.'.format(directory))
+
# Load gerber files
for filename in listdir(directory, True, True):
try:
camfile = gerber_read(os.path.join(directory, filename))
- layer = PCBLayer.from_gerber(camfile)
+ layer = PCBLayer.from_cam(camfile)
layers.append(layer)
names.add(os.path.splitext(filename)[0])
if verbose:
- print('Added {} layer <{}>'.format(layer.layer_class, filename))
+ print('[PCB]: Added {} layer <{}>'.format(layer.layer_class,
+ filename))
except ParseError:
if verbose:
- print('Skipping file {}'.format(filename))
+ print('[PCB]: Skipping file {}'.format(filename))
+
# Try to guess board name
if board_name is None:
if len(names) == 1:
@@ -66,14 +70,16 @@ class PCB(object):
board_layers = [l for l in reversed(self.layers) if l.layer_class in
('topsilk', 'topmask', 'top')]
drill_layers = [l for l in self.drill_layers if 'top' in l.layers]
- return board_layers + drill_layers
+ # Drill layer goes under soldermask for proper rendering of tented vias
+ return [board_layers[0]] + drill_layers + board_layers[1:]
@property
def bottom_layers(self):
board_layers = [l for l in self.layers if l.layer_class in
('bottomsilk', 'bottommask', 'bottom')]
drill_layers = [l for l in self.drill_layers if 'bottom' in l.layers]
- return board_layers + drill_layers
+ # Drill layer goes under soldermask for proper rendering of tented vias
+ return [board_layers[0]] + drill_layers + board_layers[1:]
@property
def drill_layers(self):
@@ -81,8 +87,9 @@ class PCB(object):
@property
def copper_layers(self):
- return [layer for layer in self.layers if layer.layer_class in
- ('top', 'bottom', 'internal')]
+ return list(reversed([layer for layer in self.layers if
+ layer.layer_class in
+ ('top', 'bottom', 'internal')]))
@property
def layer_count(self):