summaryrefslogtreecommitdiff
path: root/examples/panelize.py
diff options
context:
space:
mode:
authorjaseg <git@jaseg.de>2021-06-06 13:28:42 +0200
committerjaseg <git@jaseg.de>2021-06-06 13:28:42 +0200
commit889ea37d9b66cbfb7a61795c7750b9f4311faa3f (patch)
tree34db36bcdf0501445aaec30c845ed644537e638a /examples/panelize.py
parent5a5ba2b709f01b2100cd767a25a41737541ad53c (diff)
parent71c371ca680483aa9ef18d2998832460dd43abdf (diff)
downloadgerbonara-889ea37d9b66cbfb7a61795c7750b9f4311faa3f.tar.gz
gerbonara-889ea37d9b66cbfb7a61795c7750b9f4311faa3f.tar.bz2
gerbonara-889ea37d9b66cbfb7a61795c7750b9f4311faa3f.zip
Graft pcb-tools-extension master onto gerbonara main
Diffstat (limited to 'examples/panelize.py')
-rwxr-xr-xexamples/panelize.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/examples/panelize.py b/examples/panelize.py
new file mode 100755
index 0000000..20a2cac
--- /dev/null
+++ b/examples/panelize.py
@@ -0,0 +1,72 @@
+#!/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')