51 lines
1.7 KiB
Python
Executable file
51 lines
1.7 KiB
Python
Executable file
#!/usr/bin/env python
|
|
import os
|
|
import gerberex
|
|
from gerberex.dxf import DxfFile
|
|
|
|
exts = ['GTL', 'GTO', 'GTP', 'GTS', 'GBL', 'GBO', 'GBP', 'GBS', 'TXT']
|
|
boards=[
|
|
('../../sonopi-digi/pcb/CAMOutputs/sonopi-digi.', 0, 0),
|
|
('../../sonopi-digi/pcb/CAMOutputs/sonopi-digi.', 0, 22.5),
|
|
('../../rcstick-f/pcb/small/CAMOutputs/rcstick-f-small.', 0, 60),
|
|
('../../rcstick-f/pcb/small/CAMOutputs/rcstick-f-small.', 20, 60),
|
|
('../../rcstick-f/pcb/small/CAMOutputs/rcstick-f-small.', 40, 60),
|
|
('../../rcstick-f/pcb/large/CAMOutputs/rcstick-f.', 72.4, 0),
|
|
('../../rcstick-f/pcb/jig/CAMOutputs/rcstick-jig.', 0, 44),
|
|
('../../stm32breakout/pcb/CAMOutputs/stm32breakout.', 78.0, 59.36),
|
|
('../../stm32breakout/pcb/CAMOutputs/stm32breakout.', 100.0, 59.36),
|
|
]
|
|
outline = 'outline.dxf'
|
|
fill = 'fill.dxf'
|
|
|
|
outputs = 'outputs/elecrow-panelized'
|
|
|
|
os.chdir(os.path.dirname(__file__))
|
|
|
|
for ext in exts:
|
|
print('merging %s: ' % ext ,end='', flush=True)
|
|
if ext == 'TXT':
|
|
ctx = gerberex.DrillComposition()
|
|
else:
|
|
ctx = gerberex.GerberComposition()
|
|
for board in boards:
|
|
file = gerberex.read(board[0] + ext)
|
|
file.to_metric()
|
|
file.offset(board[1], board[2])
|
|
ctx.merge(file)
|
|
print('.', end='', flush=True)
|
|
if ext != 'TXT':
|
|
file = gerberex.read(outline)
|
|
ctx.merge(file)
|
|
ctx.dump(outputs + '.' + ext)
|
|
print(' end', flush=True)
|
|
|
|
print('generating GML: ', end='', flush=True)
|
|
file = gerberex.read(outline)
|
|
file.write(outputs + '.GML')
|
|
print('.', end='', flush=True)
|
|
file = gerberex.read(fill)
|
|
file.to_metric()
|
|
file.draw_mode = DxfFile.DM_FILL
|
|
file.write(outputs + '-fill.GML')
|
|
print('. end', flush=True)
|