aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjaseg <code@jaseg.net>2018-07-08 13:04:41 +0200
committerjaseg <code@jaseg.net>2018-07-08 13:04:41 +0200
commita367a3be958bba8858cd486b5cf5de27c3edf1cd (patch)
tree9a77311d5e42fc6ce53797a0bebe578059121650
parent522ed9b4a13e070a9c2a97cfe7d55cac7f70eb8d (diff)
downloadgerbolyze-a367a3be958bba8858cd486b5cf5de27c3edf1cd.tar.gz
gerbolyze-a367a3be958bba8858cd486b5cf5de27c3edf1cd.tar.bz2
gerbolyze-a367a3be958bba8858cd486b5cf5de27c3edf1cd.zip
Split command-line interface and python package
-rw-r--r--gerbolyze36
-rwxr-xr-xgerbolyze.py38
2 files changed, 36 insertions, 38 deletions
diff --git a/gerbolyze b/gerbolyze
new file mode 100644
index 0000000..7c5d923
--- /dev/null
+++ b/gerbolyze
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+
+import gerbolyze
+import tqdm
+
+if __name__ == '__main__':
+ # Parse command line arguments
+ import argparse
+ parser = argparse.ArgumentParser()
+
+ subcommand = parser.add_subparsers(help='Sub-commands')
+ subcommand.required, subcommand.dest = True, 'command'
+ vectorize_parser = subcommand.add_parser('vectorize', help='Vectorize bitmap image onto gerber layer')
+ render_parser = subcommand.add_parser('render', help='Render bitmap preview of board suitable as a template for positioning and scaling the input image')
+
+ parser.add_argument('-d', '--debugdir', type=str, default=None, help='Directory to place intermediate images into for debuggin')
+
+ vectorize_parser.add_argument('side', choices=['top', 'bottom'], help='Target board side')
+ vectorize_parser.add_argument('--layer', '-l', choices=['silk', 'mask', 'copper'], default='silk', help='Target layer on given side')
+
+ vectorize_parser.add_argument('source', help='Source gerber directory')
+ vectorize_parser.add_argument('target', help='Target gerber directory')
+ vectorize_parser.add_argument('image', help='Image to render')
+
+ render_parser.add_argument('--fab-resolution', '-r', type=float, nargs='?', default=6.0, help='Smallest feature size supported by PCB manufacturer, in mil. On silkscreen layers, this is the minimum font stroke width.')
+ render_parser.add_argument('--oversampling', '-o', type=float, nargs='?', default=10, help='Oversampling factor for the image. If set to say, 10 pixels, one minimum feature size (see --fab-resolution) will be 10 pixels long. The input image for vectorization should not contain any detail of smaller pixel size than this number in order to be manufacturable.')
+ render_parser.add_argument('side', choices=['top', 'bottom'], help='Target board side')
+ render_parser.add_argument('source', help='Source gerber directory')
+ render_parser.add_argument('image', help='Output image filename')
+ args = parser.parse_args()
+
+ if args.command == 'vectorize':
+ gerbolyze.process_gerbers(args.source, args.target, args.image, args.side, args.layer, args.debugdir)
+ else: # command == render
+ gerbolyze.render_preview(args.source, args.image, args.side, args.fab_resolution, args.oversampling)
+
diff --git a/gerbolyze.py b/gerbolyze.py
index 9f79a52..9c3c9db 100755
--- a/gerbolyze.py
+++ b/gerbolyze.py
@@ -1,7 +1,5 @@
#!/usr/bin/env python3
-import subprocess
-import zipfile
import tempfile
import os.path as path
import os
@@ -10,7 +8,6 @@ import time
import shutil
import math
-import tqdm
import gerber
from gerber.render import GerberCairoContext
import numpy as np
@@ -374,38 +371,3 @@ def render_preview(source, image, side, process_resolution, resolution_oversampl
resolution_oversampling=resolution_oversampling,
)
-if __name__ == '__main__':
- # Parse command line arguments
- import argparse
- parser = argparse.ArgumentParser()
-
- subcommand = parser.add_subparsers(help='Sub-commands')
- subcommand.required, subcommand.dest = True, 'command'
- vectorize_parser = subcommand.add_parser('vectorize', help='Vectorize bitmap image onto gerber layer')
- render_parser = subcommand.add_parser('render', help='Render bitmap preview of board suitable as a template for positioning and scaling the input image')
-
- parser.add_argument('-d', '--debugdir', type=str, default=None, help='Directory to place intermediate images into for debuggin')
-
- vectorize_parser.add_argument('side', choices=['top', 'bottom'], help='Target board side')
- vectorize_parser.add_argument('--layer', '-l', choices=['silk', 'mask', 'copper'], default='silk', help='Target layer on given side')
-
- vectorize_parser.add_argument('source', help='Source gerber directory')
- vectorize_parser.add_argument('target', help='Target gerber directory')
- vectorize_parser.add_argument('image', help='Image to render')
-
- render_parser.add_argument('--fab-resolution', '-r', type=float, nargs='?', default=6.0, help='Smallest feature size supported by PCB manufacturer, in mil. On silkscreen layers, this is the minimum font stroke width.')
- render_parser.add_argument('--oversampling', '-o', type=float, nargs='?', default=10, help='Oversampling factor for the image. If set to say, 10 pixels, one minimum feature size (see --fab-resolution) will be 10 pixels long. The input image for vectorization should not contain any detail of smaller pixel size than this number in order to be manufacturable.')
- render_parser.add_argument('side', choices=['top', 'bottom'], help='Target board side')
- render_parser.add_argument('source', help='Source gerber directory')
- render_parser.add_argument('image', help='Output image filename')
- args = parser.parse_args()
-
- #try:
- if args.command == 'vectorize':
- process_gerbers(args.source, args.target, args.image, args.side, args.layer, args.debugdir)
- else: # command == render
- render_preview(args.source, args.image, args.side, args.fab_resolution, args.oversampling)
- #except ValueError as e:
- # print(*e.args, file=sys.stderr)
- # sys.exit(1)
-