kopia lustrzana https://gitlab.com/gerbolyze/gerbonara
73 wiersze
1.9 KiB
Python
Executable File
73 wiersze
1.9 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import sys, os
|
|
import gerberex
|
|
from gerberex import DxfFile, GerberComposition, DrillComposition
|
|
|
|
exts = ['GTL', 'GTO', 'GTP', 'GTS', 'GBL', 'GBO', 'GBP', 'GBS', 'TXT']
|
|
boards=[
|
|
('inputs/sonopi-digi.', 0, 0, 0),
|
|
('inputs/sonopi-digi.', 0, 22.5, 0),
|
|
('inputs/rcstick-f-small.', 0, 60, 0),
|
|
('inputs/rcstick-f-small.', 20, 60, 0),
|
|
('inputs/rcstick-f-small.', 40, 60, 0),
|
|
('inputs/rcstick-f.', 92.216, 55.238, 190),
|
|
('inputs/rcstick-jig.', 0, 44, 0),
|
|
('inputs/stm32breakout.', 78.0, 59.36, 90),
|
|
('inputs/stm32breakout.', 100.0, 59.36, 90),
|
|
]
|
|
outline = 'inputs/outline.dxf'
|
|
mousebites = 'inputs/mousebites.dxf'
|
|
outputs = 'outputs/panelized'
|
|
|
|
os.chdir(os.path.dirname(__file__))
|
|
try:
|
|
os.mkdir('outputs')
|
|
except FileExistsError:
|
|
pass
|
|
|
|
def putstr(text):
|
|
sys.stdout.write(text)
|
|
sys.stdout.flush()
|
|
|
|
for ext in exts:
|
|
putstr('merging %s: ' % ext)
|
|
if ext == 'TXT':
|
|
ctx = DrillComposition()
|
|
else:
|
|
ctx = GerberComposition()
|
|
for path, x_offset, y_offset, angle in boards:
|
|
file = gerberex.read(path + ext)
|
|
file.to_metric()
|
|
file.rotate(angle)
|
|
file.offset(x_offset, y_offset)
|
|
ctx.merge(file)
|
|
putstr('.')
|
|
if ext == 'TXT':
|
|
file = gerberex.read(mousebites)
|
|
file.draw_mode = DxfFile.DM_MOUSE_BITES
|
|
file.to_metric()
|
|
file.width = 0.5
|
|
file.format = (3, 3)
|
|
ctx.merge(file)
|
|
else:
|
|
file = gerberex.read(outline)
|
|
ctx.merge(file)
|
|
ctx.dump(outputs + '.' + ext)
|
|
putstr(' end\n')
|
|
|
|
putstr('generating GML: ')
|
|
file = gerberex.read(outline)
|
|
file.write(outputs + '.GML')
|
|
putstr('.')
|
|
ctx = GerberComposition()
|
|
base = gerberex.rectangle(width=100, height=100, left=0, bottom=0, units='metric')
|
|
base.draw_mode = DxfFile.DM_FILL
|
|
ctx.merge(base)
|
|
file.draw_mode = DxfFile.DM_FILL
|
|
file.negate_polarity()
|
|
ctx.merge(file)
|
|
ctx.dump(outputs + '-fill.GML')
|
|
|
|
putstr('. end\n')
|