Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cfcf4c5395 | ||
|
|
9a6ab822f2 |
2 changed files with 7 additions and 6 deletions
|
|
@ -16,6 +16,7 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
vectorize_parser.add_argument('side', choices=['top', 'bottom'], help='Target board side')
|
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('--layer', '-l', choices=['silk', 'mask', 'copper'], default='silk', help='Target layer on given side')
|
||||||
|
vectorize_parser.add_argument('--exact', '-x', action='store_true', default=False, help='Do not subtract existing features on other layers from overlay')
|
||||||
|
|
||||||
vectorize_parser.add_argument('source', help='Source gerber directory')
|
vectorize_parser.add_argument('source', help='Source gerber directory')
|
||||||
vectorize_parser.add_argument('target', help='Target gerber directory')
|
vectorize_parser.add_argument('target', help='Target gerber directory')
|
||||||
|
|
@ -29,7 +30,7 @@ if __name__ == '__main__':
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if args.command == 'vectorize':
|
if args.command == 'vectorize':
|
||||||
gerbolyze.process_gerbers(args.source, args.target, args.image, args.side, args.layer, args.debugdir)
|
gerbolyze.process_gerbers(args.source, args.target, args.image, args.side, args.layer, args.exact, args.debugdir)
|
||||||
else: # command == render
|
else: # command == render
|
||||||
gerbolyze.render_preview(args.source, args.image, args.side, args.fab_resolution, args.oversampling)
|
gerbolyze.render_preview(args.source, args.image, args.side, args.fab_resolution, args.oversampling)
|
||||||
|
|
||||||
|
|
|
||||||
10
gerbolyze.py
10
gerbolyze.py
|
|
@ -288,14 +288,14 @@ def find_gerber_in_dir(dir_path, extensions, exclude=''):
|
||||||
LAYER_SPEC = {
|
LAYER_SPEC = {
|
||||||
'top': {
|
'top': {
|
||||||
'paste': '.gtp|-F_Paste.gbr|-F.Paste.gbr|.pmc',
|
'paste': '.gtp|-F_Paste.gbr|-F.Paste.gbr|.pmc',
|
||||||
'silk': '.gto|-F_SilkS.gbr|-F.SilkS.gbr|.plc',
|
'silk': '.gto|-F_SilkS.gbr|-F.SilkS.gbr|.plc|-F_Silkscreen.gbr',
|
||||||
'mask': '.gts|-F_Mask.gbr|-F.Mask.gbr|.stc',
|
'mask': '.gts|-F_Mask.gbr|-F.Mask.gbr|.stc',
|
||||||
'copper': '.gtl|-F_Cu.gbr|-F.Cu.gbr|.cmp',
|
'copper': '.gtl|-F_Cu.gbr|-F.Cu.gbr|.cmp',
|
||||||
'outline': '.gko|.gm1|-Edge_Cuts.gbr|-Edge.Cuts.gbr|.gmb',
|
'outline': '.gko|.gm1|-Edge_Cuts.gbr|-Edge.Cuts.gbr|.gmb',
|
||||||
},
|
},
|
||||||
'bottom': {
|
'bottom': {
|
||||||
'paste': '.gbp|-B_Paste.gbr|-B.Paste.gbr|.pms',
|
'paste': '.gbp|-B_Paste.gbr|-B.Paste.gbr|.pms',
|
||||||
'silk': '.gbo|-B_SilkS.gbr|-B.SilkS.gbr|.pls',
|
'silk': '.gbo|-B_SilkS.gbr|-B.SilkS.gbr|.pls|-B_Silkscreen.gbr',
|
||||||
'mask': '.gbs|-B_Mask.gbr|-B.Mask.gbr|.sts',
|
'mask': '.gbs|-B_Mask.gbr|-B.Mask.gbr|.sts',
|
||||||
'copper': '.gbl|-B_Cu.gbr|-B.Cu.gbr|.sol',
|
'copper': '.gbl|-B_Cu.gbr|-B.Cu.gbr|.sol',
|
||||||
'outline': '.gko|.gm1|-Edge_Cuts.gbr|-Edge.Cuts.gbr|.gmb'
|
'outline': '.gko|.gm1|-Edge_Cuts.gbr|-Edge.Cuts.gbr|.gmb'
|
||||||
|
|
@ -305,7 +305,7 @@ LAYER_SPEC = {
|
||||||
# Command line interface
|
# Command line interface
|
||||||
# ======================
|
# ======================
|
||||||
|
|
||||||
def process_gerbers(source, target, image, side, layer, debugdir):
|
def process_gerbers(source, target, image, side, layer, exact, debugdir):
|
||||||
if not os.path.isdir(source):
|
if not os.path.isdir(source):
|
||||||
raise ValueError(f'Given source "{source}" is not a directory.')
|
raise ValueError(f'Given source "{source}" is not a directory.')
|
||||||
|
|
||||||
|
|
@ -326,7 +326,7 @@ def process_gerbers(source, target, image, side, layer, debugdir):
|
||||||
print('Target layer file {}'.format(os.path.basename(tname)))
|
print('Target layer file {}'.format(os.path.basename(tname)))
|
||||||
oname, ogrb = find_gerber_in_dir(source, layers['outline'])
|
oname, ogrb = find_gerber_in_dir(source, layers['outline'])
|
||||||
print('Outline layer file {}'.format(os.path.basename(oname)))
|
print('Outline layer file {}'.format(os.path.basename(oname)))
|
||||||
subtract = find_gerber_in_dir(source, layers[slayer]) if slayer else None
|
subtract = [find_gerber_in_dir(source, layers[slayer])] if slayer and not exact else []
|
||||||
|
|
||||||
# Prepare output. Do this now to error out as early as possible if there's a problem.
|
# Prepare output. Do this now to error out as early as possible if there's a problem.
|
||||||
if os.path.exists(target):
|
if os.path.exists(target):
|
||||||
|
|
@ -337,7 +337,7 @@ def process_gerbers(source, target, image, side, layer, debugdir):
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# Generate output
|
# Generate output
|
||||||
out = paste_image(tgrb, ogrb, source_img, [subtract], debugdir=debugdir, status_print=lambda *args: print(*args, flush=True))
|
out = paste_image(tgrb, ogrb, source_img, subtract, debugdir=debugdir, status_print=lambda *args: print(*args, flush=True))
|
||||||
|
|
||||||
shutil.copytree(source, target)
|
shutil.copytree(source, target)
|
||||||
with open(os.path.join(target, os.path.basename(tname)), 'w') as f:
|
with open(os.path.join(target, os.path.basename(tname)), 'w') as f:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue