Initial revision gerber-fab-heater-20140114-1423
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 15 Jan 2014 08:53:56 +0000 (09:53 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Wed, 15 Jan 2014 08:53:56 +0000 (09:53 +0100)
16 files changed:
ATtiny25-1.sym [new file with mode: 0644]
HEADER2_1_PWR.fp [new file with mode: 0644]
Makefile [new file with mode: 0644]
SO8NM.fp [new file with mode: 0644]
gafrc [new file with mode: 0644]
header3_2_edge.fp [new file with mode: 0644]
heater.pcb [new file with mode: 0644]
heater.prj [new file with mode: 0644]
heater.sch [new file with mode: 0644]
heater2.pcb [new file with mode: 0644]
image.scm [new file with mode: 0644]
microswitch.fp [new file with mode: 0644]
mosfet-with-diode-2.sym [new file with mode: 0644]
panel.pl [new file with mode: 0644]
panel2pcb [new file with mode: 0755]
pcb2panel [new file with mode: 0755]

diff --git a/ATtiny25-1.sym b/ATtiny25-1.sym
new file mode 100644 (file)
index 0000000..9eefe4b
--- /dev/null
@@ -0,0 +1,112 @@
+v 20110115 2
+T 100 100 0 1 0 0 0 0 1
+gedasymbols::url=http://www.gedasymbols.org/user/anton_dubniak/symbols/MCU/ATtiny25-1.sym
+B 300 0 1000 1400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+T 275 3450 5 10 0 0 0 0 1
+device=ATtiny25
+T 1100 1450 8 10 1 1 0 0 1
+refdes=U?
+T 275 2650 5 10 0 0 0 0 1
+footprint=so8
+T 300 1450 9 10 1 0 0 0 1
+ATtiny25
+T 275 2050 5 10 0 0 0 0 1
+author=Anton Dubniak <twister@tfsoft.org.ua>
+T 275 2450 5 10 0 0 0 0 1
+numslots=0
+T 275 1850 5 10 0 0 0 0 1
+dist-license=GPL
+T 275 1650 5 10 0 0 0 0 1
+use-license=unlimited
+T 275 3250 5 10 0 0 0 0 1
+description=ATtiny25/45/85 - 8-bit AVR RISC microcontrollers with 2/4/8 kb of flash memory (Atmel)
+T 275 3050 5 10 0 0 0 0 1
+documentation=http://www.atmel.com/dyn/resources/prod_documents/doc2586.pdf
+P 0 1200 300 1200 1 0 0
+{
+T 205 1245 5 8 1 1 0 6 1
+pinnumber=5
+T 450 1375 5 8 0 1 0 8 1
+pinseq=5
+T 355 1195 9 8 1 1 0 0 1
+pinlabel=PB0/MOSI
+T 500 1375 5 8 0 1 0 2 1
+pintype=io
+}
+P 0 1000 300 1000 1 0 0
+{
+T 205 1045 5 8 1 1 0 6 1
+pinnumber=6
+T 450 1175 5 8 0 1 0 8 1
+pinseq=6
+T 355 995 9 8 1 1 0 0 1
+pinlabel=PB1/MISO
+T 500 1175 5 8 0 1 0 2 1
+pintype=io
+}
+P 0 800 300 800 1 0 0
+{
+T 205 845 5 8 1 1 0 6 1
+pinnumber=7
+T 450 975 5 8 0 1 0 8 1
+pinseq=7
+T 355 795 9 8 1 1 0 0 1
+pinlabel=PB2/SCK
+T 500 975 5 8 0 1 0 2 1
+pintype=io
+}
+P 0 400 300 400 1 0 0
+{
+T 205 445 5 8 1 1 0 6 1
+pinnumber=3
+T 450 575 5 8 0 1 0 8 1
+pinseq=3
+T 355 395 9 8 1 1 0 0 1
+pinlabel=PB4
+T 500 575 5 8 0 1 0 2 1
+pintype=io
+}
+P 0 200 300 200 1 0 0
+{
+T 205 245 5 8 1 1 0 6 1
+pinnumber=1
+T 450 375 5 8 0 1 0 8 1
+pinseq=1
+T 355 195 9 8 1 1 0 0 1
+pinlabel=PB5/\_RESET\_
+T 500 375 5 8 0 1 0 2 1
+pintype=io
+}
+P 0 600 300 600 1 0 0
+{
+T 205 645 5 8 1 1 0 6 1
+pinnumber=2
+T 450 775 5 8 0 1 0 8 1
+pinseq=2
+T 355 595 9 8 1 1 0 0 1
+pinlabel=PB3
+T 500 775 5 8 0 1 0 2 1
+pintype=io
+}
+P 1600 400 1300 400 1 0 0
+{
+T 1395 445 5 8 1 1 0 0 1
+pinnumber=4
+T 1150 575 5 8 0 1 0 2 1
+pinseq=4
+T 1245 395 9 8 1 1 0 6 1
+pinlabel=GND
+T 1100 575 5 8 0 1 0 8 1
+pintype=pwr
+}
+P 1600 600 1300 600 1 0 0
+{
+T 1395 645 5 8 1 1 0 0 1
+pinnumber=8
+T 1150 775 5 8 0 1 0 2 1
+pinseq=8
+T 1245 595 9 8 1 1 0 6 1
+pinlabel=VCC
+T 1100 775 5 8 0 1 0 8 1
+pintype=pwr
+}
diff --git a/HEADER2_1_PWR.fp b/HEADER2_1_PWR.fp
new file mode 100644 (file)
index 0000000..85d5055
--- /dev/null
@@ -0,0 +1,12 @@
+Element(0x00 "Header connector, DIP pin numbering" "" "HEADER2_1" 260 0 3 100 0x00)
+(
+       Pin(50 50 70 50 "1" 0x101)
+       Pin(150 50 70 50 "2" 0x01)
+       ElementLine(0 0 0 100 10)
+       ElementLine(0 100 200 100 10)
+       ElementLine(200 100 200 0 10)
+       ElementLine(200 0 0 0 10)
+       ElementLine(0 100 100 100 10)
+       ElementLine(100 100 100 0 10)
+       Mark(50 50)
+)
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..fa6e458
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,55 @@
+WEB_DIR=/home/kas/html/heater/
+WEB_FILES=pcb-back.png pcb-front.png schematics.png
+GERBER_FILES=\
+       heater-panel.top.gbr \
+       heater-panel.bottom.gbr \
+       heater-panel.topmask.gbr \
+       heater-panel.bottommask.gbr \
+       heater-panel.topsilk.gbr \
+       heater-panel.bottomsilk.gbr \
+       heater-panel.plated-drill.cnc
+
+all:
+       @echo "Usage: make [clean|web|gerber|fab|heater.pcb]"
+
+clean:
+       rm -f heater.cmd heater.jpg heater.net heater.new.pcb heater.pcb- \
+               heater.png heater.ps heater.sch~ pcb-back.png pcb-front.png \
+               schematics.png *.gbr *.cnc
+
+web: $(WEB_FILES)
+       test -d $(WEB_DIR) && install -m 644 $(WEB_FILES) $(WEB_DIR)
+
+heater.pcb: heater.sch heater.prj
+       gsch2pcb heater.prj
+
+pcb-front.png: heater.pcb
+       pcb -x png --dpi 200 --photo-mode heater.pcb \
+               && mv heater.png $@
+
+pcb-back.png: heater.pcb
+       pcb -x png --dpi 200 --photo-mode --photo-flip-y heater.pcb \
+               && mv heater.png $@
+
+schematics.png: heater.sch
+       gschem -s image.scm heater.sch -o schematics.png
+
+gerber: $(GERBER_FILES)
+
+$(GERBER_FILES): heater-panel.pcb
+       pcb -x gerber heater-panel.pcb
+
+fab: $(GERBER_FILES)
+       @sh -c 'D=heater-`date +\%Y\%m\%d-\%H\%M` && mkdir $$D && \
+               cp heater-panel.top.gbr $$D/heater.gtl && \
+               cp heater-panel.bottom.gbr $$D/heater.gbl && \
+               cp heater-panel.topmask.gbr $$D/heater.gts && \
+               cp heater-panel.bottommask.gbr $$D/heater.gbs && \
+               cp heater-panel.topsilk.gbr $$D/heater.gto && \
+               cp heater-panel.bottomsilk.gbr $$D/heater.gbo && \
+               cp heater-panel.plated-drill.cnc $$D/heater.txt && \
+               zip -r $$D.zip $$D && \
+               echo "Done. Output in $$D.zip."; \
+               echo "You may also want to do git tag gerber-fab-$$D" '
+
+.PHONY: gerber
diff --git a/SO8NM.fp b/SO8NM.fp
new file mode 100644 (file)
index 0000000..30dfee6
--- /dev/null
+++ b/SO8NM.fp
@@ -0,0 +1,49 @@
+       # number of pads
+       # pad width in 1/1000 mil
+       # pad length in 1/1000 mil
+       # pad pitch 1/1000 mil
+       # seperation between pads on opposite sides 1/1000 mil
+       # X coordinates for the right hand column of pads (1/100 mils)
+       # pad clearance to plane layer in 1/100 mil
+       # pad soldermask width in 1/100 mil
+       # silk screen width (1/100 mils)
+       # figure out if we have an even or odd number of pins per side
+       # silk bounding box is -XMAX,-YMAX, XMAX,YMAX (1/100 mils)
+# element_flags, description, pcb-name, value, mark_x, mark_y,
+# text_x, text_y, text_direction, text_scale, text_flags
+Element[0x00000000 "Small outline package, narrow or medium (150 or 200mil)" "" "SO8NM" 0 0 -2000 -6000 0 100 0x00000000]
+(
+# 
+# Pad[x1, y1, x2, y2, thickness, clearance, mask, name , pad number, flags]
+        Pad[   -16000 -7500 
+                        -7000 -7500 
+                       2000 1000 3000 "1" "1" 0x00000100]
+        Pad[   -16000 -2500 
+                        -7000 -2500 
+                       2000 1000 3000 "2" "2" 0x00000100]
+        Pad[   -16000 2500 
+                        -7000 2500 
+                       2000 1000 3000 "3" "3" 0x00000100]
+        Pad[   -16000 7500 
+                        -7000 7500 
+                       2000 1000 3000 "4" "4" 0x00000100]
+        Pad[   16000 7500 
+                        7000 7500 
+                       2000 1000 3000 "5" "5" 0x00000100]
+        Pad[   16000 2500 
+                        7000 2500 
+                       2000 1000 3000 "6" "6" 0x00000100]
+        Pad[   16000 -2500 
+                        7000 -2500 
+                       2000 1000 3000 "7" "7" 0x00000100]
+        Pad[   16000 -7500 
+                        7000 -7500 
+                       2000 1000 3000 "8" "8" 0x00000100]
+       ElementLine[-18000 -9500 -18000  9500 1000]
+       ElementLine[-18000  9500  18000  9500 1000]
+       ElementLine[ 18000  9500  18000 -9500 1000]
+       ElementLine[-18000 -9500 -2500 -9500 1000]
+       ElementLine[ 18000 -9500  2500 -9500 1000]
+       # punt on the arc on small parts as it can cover the pads
+       ElementArc[0 -9500 2500 2500 0 180 1000]
+)
diff --git a/gafrc b/gafrc
new file mode 100644 (file)
index 0000000..22acb85
--- /dev/null
+++ b/gafrc
@@ -0,0 +1,2 @@
+(component-library ".")
+(source-library  ".")
diff --git a/header3_2_edge.fp b/header3_2_edge.fp
new file mode 100644 (file)
index 0000000..9989cac
--- /dev/null
@@ -0,0 +1,23 @@
+Element["Header 3x2, 2.54mm, edge-mounted" "header3_2_edge" "X?" "" 0 0 -12500  5000 0 100 ""]
+(
+   Pad[     0  -7500     0 7500 5000 2000 6000 "1" "1" "square" ]
+   Pad[     0  -7500     0 7500 5000 2000 6000 "2" "2" "square,onsolder" ]
+
+   Pad[ 10000  -7500 10000 7500 5000 2000 6000 "3" "3" "square" ]
+   Pad[ 10000  -7500 10000 7500 5000 2000 6000 "4" "4" "square,onsolder" ]
+
+   Pad[ 20000  -7500 20000 7500 5000 2000 6000 "5" "5" "square" ]
+   Pad[ 20000  -7500 20000 7500 5000 2000 6000 "6" "6" "square,onsolder" ]
+
+   ElementLine[  -5000 -8500  -5000 11000 1000 ]
+   ElementLine[  25000 -8500  25000 11000 1000 ]
+   ElementLine[  -5000 11000  25000 11000 1000 ]
+
+   ElementLine[  -3750     0  -5000     0 1000 ]
+   ElementLine[  -3750     0  -3750 11000 1000 ]
+   Attribute("author" "Jan Yenya Kasprzak, http://www.fi.muni.cz/~kas/")
+   Attribute("copyright" "Jan Yenya Kasprzak, http://www.fi.muni.cz/~kas/")
+   Attribute("use-license" "Unlimited")
+   Attribute("dist-license" "GPL 2.0")
+   Attribute("comment" "Thanks: Karl Hammar")
+)
diff --git a/heater.pcb b/heater.pcb
new file mode 100644 (file)
index 0000000..1fd5d3a
--- /dev/null
@@ -0,0 +1,1161 @@
+# release: pcb 20110918
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20070407]
+
+PCB["" 140000 42000]
+
+Grid[1000.0 0 0 0]
+Cursor[16000 35000 0.000000]
+PolyArea[200000000.000000]
+Thermal[0.500000]
+DRC[1000 1000 1000 1000 1500 1000]
+Flags("nameonpcb,uniquename")
+Groups("1,c:2,s")
+Styles["Signal,1000,4000,2000,1000:Power,2500,6000,3500,1000:Fat,8000,9000,3500,1000:Skinny,600,2402,1181,600"]
+
+Symbol[' ' 1800]
+(
+)
+Symbol['!' 1200]
+(
+       SymbolLine[0 4500 0 5000 800]
+       SymbolLine[0 1000 0 3500 800]
+)
+Symbol['"' 1200]
+(
+       SymbolLine[0 1000 0 2000 800]
+       SymbolLine[1000 1000 1000 2000 800]
+)
+Symbol['#' 1200]
+(
+       SymbolLine[0 3500 2000 3500 800]
+       SymbolLine[0 2500 2000 2500 800]
+       SymbolLine[1500 2000 1500 4000 800]
+       SymbolLine[500 2000 500 4000 800]
+)
+Symbol['$' 1200]
+(
+       SymbolLine[1500 1500 2000 2000 800]
+       SymbolLine[500 1500 1500 1500 800]
+       SymbolLine[0 2000 500 1500 800]
+       SymbolLine[0 2000 0 2500 800]
+       SymbolLine[0 2500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 4000 800]
+       SymbolLine[1500 4500 2000 4000 800]
+       SymbolLine[500 4500 1500 4500 800]
+       SymbolLine[0 4000 500 4500 800]
+       SymbolLine[1000 1000 1000 5000 800]
+)
+Symbol['%' 1200]
+(
+       SymbolLine[0 1500 0 2000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1000 1000 800]
+       SymbolLine[1000 1000 1500 1500 800]
+       SymbolLine[1500 1500 1500 2000 800]
+       SymbolLine[1000 2500 1500 2000 800]
+       SymbolLine[500 2500 1000 2500 800]
+       SymbolLine[0 2000 500 2500 800]
+       SymbolLine[0 5000 4000 1000 800]
+       SymbolLine[3500 5000 4000 4500 800]
+       SymbolLine[4000 4000 4000 4500 800]
+       SymbolLine[3500 3500 4000 4000 800]
+       SymbolLine[3000 3500 3500 3500 800]
+       SymbolLine[2500 4000 3000 3500 800]
+       SymbolLine[2500 4000 2500 4500 800]
+       SymbolLine[2500 4500 3000 5000 800]
+       SymbolLine[3000 5000 3500 5000 800]
+)
+Symbol['&' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 1500 0 2500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 3500 1500 2000 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[1000 5000 2000 4000 800]
+       SymbolLine[0 2500 2500 5000 800]
+       SymbolLine[500 1000 1000 1000 800]
+       SymbolLine[1000 1000 1500 1500 800]
+       SymbolLine[1500 1500 1500 2000 800]
+       SymbolLine[0 3500 0 4500 800]
+)
+Symbol[''' 1200]
+(
+       SymbolLine[0 2000 1000 1000 800]
+)
+Symbol['(' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 4500 800]
+)
+Symbol[')' 1200]
+(
+       SymbolLine[0 1000 500 1500 800]
+       SymbolLine[500 1500 500 4500 800]
+       SymbolLine[0 5000 500 4500 800]
+)
+Symbol['*' 1200]
+(
+       SymbolLine[0 2000 2000 4000 800]
+       SymbolLine[0 4000 2000 2000 800]
+       SymbolLine[0 3000 2000 3000 800]
+       SymbolLine[1000 2000 1000 4000 800]
+)
+Symbol['+' 1200]
+(
+       SymbolLine[0 3000 2000 3000 800]
+       SymbolLine[1000 2000 1000 4000 800]
+)
+Symbol[',' 1200]
+(
+       SymbolLine[0 6000 1000 5000 800]
+)
+Symbol['-' 1200]
+(
+       SymbolLine[0 3000 2000 3000 800]
+)
+Symbol['.' 1200]
+(
+       SymbolLine[0 5000 500 5000 800]
+)
+Symbol['/' 1200]
+(
+       SymbolLine[0 4500 3000 1500 800]
+)
+Symbol['0' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4000 2000 2000 800]
+)
+Symbol['1' 1200]
+(
+       SymbolLine[0 1800 800 1000 800]
+       SymbolLine[800 1000 800 5000 800]
+       SymbolLine[0 5000 1500 5000 800]
+)
+Symbol['2' 1200]
+(
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2500 800]
+       SymbolLine[0 5000 2500 2500 800]
+       SymbolLine[0 5000 2500 5000 800]
+)
+Symbol['3' 1200]
+(
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 2800 1500 2800 800]
+       SymbolLine[2000 1500 2000 2300 800]
+       SymbolLine[2000 3300 2000 4500 800]
+       SymbolLine[2000 3300 1500 2800 800]
+       SymbolLine[2000 2300 1500 2800 800]
+)
+Symbol['4' 1200]
+(
+       SymbolLine[0 3500 2000 1000 800]
+       SymbolLine[0 3500 2500 3500 800]
+       SymbolLine[2000 1000 2000 5000 800]
+)
+Symbol['5' 1200]
+(
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[0 1000 0 3000 800]
+       SymbolLine[0 3000 500 2500 800]
+       SymbolLine[500 2500 1500 2500 800]
+       SymbolLine[1500 2500 2000 3000 800]
+       SymbolLine[2000 3000 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['6' 1200]
+(
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[1500 2800 2000 3300 800]
+       SymbolLine[0 2800 1500 2800 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 3300 2000 4500 800]
+)
+Symbol['7' 1200]
+(
+       SymbolLine[500 5000 2500 1000 800]
+       SymbolLine[0 1000 2500 1000 800]
+)
+Symbol['8' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 3700 0 4500 800]
+       SymbolLine[0 3700 700 3000 800]
+       SymbolLine[700 3000 1300 3000 800]
+       SymbolLine[1300 3000 2000 3700 800]
+       SymbolLine[2000 3700 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 2300 700 3000 800]
+       SymbolLine[0 1500 0 2300 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 2300 800]
+       SymbolLine[1300 3000 2000 2300 800]
+)
+Symbol['9' 1200]
+(
+       SymbolLine[500 5000 2000 3000 800]
+       SymbolLine[2000 1500 2000 3000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 2500 800]
+       SymbolLine[0 2500 500 3000 800]
+       SymbolLine[500 3000 2000 3000 800]
+)
+Symbol[':' 1200]
+(
+       SymbolLine[0 2500 500 2500 800]
+       SymbolLine[0 3500 500 3500 800]
+)
+Symbol[';' 1200]
+(
+       SymbolLine[0 5000 1000 4000 800]
+       SymbolLine[1000 2500 1000 3000 800]
+)
+Symbol['<' 1200]
+(
+       SymbolLine[0 3000 1000 2000 800]
+       SymbolLine[0 3000 1000 4000 800]
+)
+Symbol['=' 1200]
+(
+       SymbolLine[0 2500 2000 2500 800]
+       SymbolLine[0 3500 2000 3500 800]
+)
+Symbol['>' 1200]
+(
+       SymbolLine[0 2000 1000 3000 800]
+       SymbolLine[0 4000 1000 3000 800]
+)
+Symbol['?' 1200]
+(
+       SymbolLine[1000 3000 1000 3500 800]
+       SymbolLine[1000 4500 1000 5000 800]
+       SymbolLine[0 1500 0 2000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 2000 800]
+       SymbolLine[1000 3000 2000 2000 800]
+)
+Symbol['@' 1200]
+(
+       SymbolLine[0 1000 0 4000 800]
+       SymbolLine[0 4000 1000 5000 800]
+       SymbolLine[1000 5000 4000 5000 800]
+       SymbolLine[5000 3500 5000 1000 800]
+       SymbolLine[5000 1000 4000 0 800]
+       SymbolLine[4000 0 1000 0 800]
+       SymbolLine[1000 0 0 1000 800]
+       SymbolLine[1500 2000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 3000 3500 800]
+       SymbolLine[3000 3500 3500 3000 800]
+       SymbolLine[3500 3000 4000 3500 800]
+       SymbolLine[3500 3000 3500 1500 800]
+       SymbolLine[3500 2000 3000 1500 800]
+       SymbolLine[2000 1500 3000 1500 800]
+       SymbolLine[2000 1500 1500 2000 800]
+       SymbolLine[4000 3500 5000 3500 800]
+)
+Symbol['A' 1200]
+(
+       SymbolLine[0 2000 0 5000 800]
+       SymbolLine[0 2000 700 1000 800]
+       SymbolLine[700 1000 1800 1000 800]
+       SymbolLine[1800 1000 2500 2000 800]
+       SymbolLine[2500 2000 2500 5000 800]
+       SymbolLine[0 3000 2500 3000 800]
+)
+Symbol['B' 1200]
+(
+       SymbolLine[0 5000 2000 5000 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[2500 3300 2500 4500 800]
+       SymbolLine[2000 2800 2500 3300 800]
+       SymbolLine[500 2800 2000 2800 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2300 800]
+       SymbolLine[2000 2800 2500 2300 800]
+)
+Symbol['C' 1200]
+(
+       SymbolLine[700 5000 2000 5000 800]
+       SymbolLine[0 4300 700 5000 800]
+       SymbolLine[0 1700 0 4300 800]
+       SymbolLine[0 1700 700 1000 800]
+       SymbolLine[700 1000 2000 1000 800]
+)
+Symbol['D' 1200]
+(
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[1800 1000 2500 1700 800]
+       SymbolLine[2500 1700 2500 4300 800]
+       SymbolLine[1800 5000 2500 4300 800]
+       SymbolLine[0 5000 1800 5000 800]
+       SymbolLine[0 1000 1800 1000 800]
+)
+Symbol['E' 1200]
+(
+       SymbolLine[0 2800 1500 2800 800]
+       SymbolLine[0 5000 2000 5000 800]
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+)
+Symbol['F' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[0 2800 1500 2800 800]
+)
+Symbol['G' 1200]
+(
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[500 1000 2000 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[2500 3500 2500 4500 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[1000 3000 2000 3000 800]
+)
+Symbol['H' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[2500 1000 2500 5000 800]
+       SymbolLine[0 3000 2500 3000 800]
+)
+Symbol['I' 1200]
+(
+       SymbolLine[0 1000 1000 1000 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 5000 1000 5000 800]
+)
+Symbol['J' 1200]
+(
+       SymbolLine[700 1000 1500 1000 800]
+       SymbolLine[1500 1000 1500 4500 800]
+       SymbolLine[1000 5000 1500 4500 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 4500 0 4000 800]
+)
+Symbol['K' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 3000 2000 1000 800]
+       SymbolLine[0 3000 2000 5000 800]
+)
+Symbol['L' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 5000 2000 5000 800]
+)
+Symbol['M' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 1500 3000 800]
+       SymbolLine[1500 3000 3000 1000 800]
+       SymbolLine[3000 1000 3000 5000 800]
+)
+Symbol['N' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 2500 5000 800]
+       SymbolLine[2500 1000 2500 5000 800]
+)
+Symbol['O' 1200]
+(
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['P' 1200]
+(
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2500 800]
+       SymbolLine[2000 3000 2500 2500 800]
+       SymbolLine[500 3000 2000 3000 800]
+)
+Symbol['Q' 1200]
+(
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 4000 800]
+       SymbolLine[1000 5000 2000 4000 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[1000 3500 2000 5000 800]
+)
+Symbol['R' 1200]
+(
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2500 800]
+       SymbolLine[2000 3000 2500 2500 800]
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[1300 3000 2500 5000 800]
+)
+Symbol['S' 1200]
+(
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[500 1000 2000 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 2500 800]
+       SymbolLine[0 2500 500 3000 800]
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[2500 3500 2500 4500 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['T' 1200]
+(
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[1000 1000 1000 5000 800]
+)
+Symbol['U' 1200]
+(
+       SymbolLine[0 1000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 1000 2000 4500 800]
+)
+Symbol['V' 1200]
+(
+       SymbolLine[0 1000 1000 5000 800]
+       SymbolLine[1000 5000 2000 1000 800]
+)
+Symbol['W' 1200]
+(
+       SymbolLine[0 1000 0 3000 800]
+       SymbolLine[0 3000 500 5000 800]
+       SymbolLine[500 5000 1500 3000 800]
+       SymbolLine[1500 3000 2500 5000 800]
+       SymbolLine[2500 5000 3000 3000 800]
+       SymbolLine[3000 3000 3000 1000 800]
+)
+Symbol['X' 1200]
+(
+       SymbolLine[0 5000 2500 1000 800]
+       SymbolLine[0 1000 2500 5000 800]
+)
+Symbol['Y' 1200]
+(
+       SymbolLine[0 1000 1000 3000 800]
+       SymbolLine[1000 3000 2000 1000 800]
+       SymbolLine[1000 3000 1000 5000 800]
+)
+Symbol['Z' 1200]
+(
+       SymbolLine[0 1000 2500 1000 800]
+       SymbolLine[0 5000 2500 1000 800]
+       SymbolLine[0 5000 2500 5000 800]
+)
+Symbol['[' 1200]
+(
+       SymbolLine[0 1000 500 1000 800]
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 5000 500 5000 800]
+)
+Symbol['\' 1200]
+(
+       SymbolLine[0 1500 3000 4500 800]
+)
+Symbol[']' 1200]
+(
+       SymbolLine[0 1000 500 1000 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 5000 500 5000 800]
+)
+Symbol['^' 1200]
+(
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1000 1500 800]
+)
+Symbol['_' 1200]
+(
+       SymbolLine[0 5000 2000 5000 800]
+)
+Symbol['a' 1200]
+(
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[2000 3000 2000 4500 800]
+       SymbolLine[2000 4500 2500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+)
+Symbol['b' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 3500 2000 4500 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+)
+Symbol['c' 1200]
+(
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 2000 5000 800]
+)
+Symbol['d' 1200]
+(
+       SymbolLine[2000 1000 2000 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+)
+Symbol['e' 1200]
+(
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[0 4000 2000 4000 800]
+       SymbolLine[2000 4000 2000 3500 800]
+)
+Symbol['f' 1000]
+(
+       SymbolLine[500 1500 500 5000 800]
+       SymbolLine[500 1500 1000 1000 800]
+       SymbolLine[1000 1000 1500 1000 800]
+       SymbolLine[0 3000 1000 3000 800]
+)
+Symbol['g' 1200]
+(
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[0 6000 500 6500 800]
+       SymbolLine[500 6500 1500 6500 800]
+       SymbolLine[1500 6500 2000 6000 800]
+       SymbolLine[2000 3000 2000 6000 800]
+)
+Symbol['h' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 5000 800]
+)
+Symbol['i' 1000]
+(
+       SymbolLine[0 2000 0 2100 1000]
+       SymbolLine[0 3500 0 5000 800]
+)
+Symbol['j' 1000]
+(
+       SymbolLine[500 2000 500 2100 1000]
+       SymbolLine[500 3500 500 6000 800]
+       SymbolLine[0 6500 500 6000 800]
+)
+Symbol['k' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 3500 1500 5000 800]
+       SymbolLine[0 3500 1000 2500 800]
+)
+Symbol['l' 1000]
+(
+       SymbolLine[0 1000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['m' 1200]
+(
+       SymbolLine[500 3500 500 5000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 5000 800]
+       SymbolLine[2000 3500 2500 3000 800]
+       SymbolLine[2500 3000 3000 3000 800]
+       SymbolLine[3000 3000 3500 3500 800]
+       SymbolLine[3500 3500 3500 5000 800]
+       SymbolLine[0 3000 500 3500 800]
+)
+Symbol['n' 1200]
+(
+       SymbolLine[500 3500 500 5000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 5000 800]
+       SymbolLine[0 3000 500 3500 800]
+)
+Symbol['o' 1200]
+(
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['p' 1200]
+(
+       SymbolLine[500 3500 500 6500 800]
+       SymbolLine[0 3000 500 3500 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 2000 3000 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[2500 3500 2500 4500 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[1000 5000 2000 5000 800]
+       SymbolLine[500 4500 1000 5000 800]
+)
+Symbol['q' 1200]
+(
+       SymbolLine[2000 3500 2000 6500 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+)
+Symbol['r' 1200]
+(
+       SymbolLine[500 3500 500 5000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 2000 3000 800]
+       SymbolLine[0 3000 500 3500 800]
+)
+Symbol['s' 1200]
+(
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[2000 4000 2500 4500 800]
+       SymbolLine[500 4000 2000 4000 800]
+       SymbolLine[0 3500 500 4000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['t' 1000]
+(
+       SymbolLine[500 1000 500 4500 800]
+       SymbolLine[500 4500 1000 5000 800]
+       SymbolLine[0 2500 1000 2500 800]
+)
+Symbol['u' 1200]
+(
+       SymbolLine[0 3000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 3000 2000 4500 800]
+)
+Symbol['v' 1200]
+(
+       SymbolLine[0 3000 1000 5000 800]
+       SymbolLine[2000 3000 1000 5000 800]
+)
+Symbol['w' 1200]
+(
+       SymbolLine[0 3000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[1000 5000 1500 4500 800]
+       SymbolLine[1500 3000 1500 4500 800]
+       SymbolLine[1500 4500 2000 5000 800]
+       SymbolLine[2000 5000 2500 5000 800]
+       SymbolLine[2500 5000 3000 4500 800]
+       SymbolLine[3000 3000 3000 4500 800]
+)
+Symbol['x' 1200]
+(
+       SymbolLine[0 3000 2000 5000 800]
+       SymbolLine[0 5000 2000 3000 800]
+)
+Symbol['y' 1200]
+(
+       SymbolLine[0 3000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[2000 3000 2000 6000 800]
+       SymbolLine[1500 6500 2000 6000 800]
+       SymbolLine[500 6500 1500 6500 800]
+       SymbolLine[0 6000 500 6500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+)
+Symbol['z' 1200]
+(
+       SymbolLine[0 3000 2000 3000 800]
+       SymbolLine[0 5000 2000 3000 800]
+       SymbolLine[0 5000 2000 5000 800]
+)
+Symbol['{' 1200]
+(
+       SymbolLine[500 1500 1000 1000 800]
+       SymbolLine[500 1500 500 2500 800]
+       SymbolLine[0 3000 500 2500 800]
+       SymbolLine[0 3000 500 3500 800]
+       SymbolLine[500 3500 500 4500 800]
+       SymbolLine[500 4500 1000 5000 800]
+)
+Symbol['|' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+)
+Symbol['}' 1200]
+(
+       SymbolLine[0 1000 500 1500 800]
+       SymbolLine[500 1500 500 2500 800]
+       SymbolLine[500 2500 1000 3000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[500 3500 500 4500 800]
+       SymbolLine[0 5000 500 4500 800]
+)
+Symbol['~' 1200]
+(
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1000 3000 800]
+       SymbolLine[1000 3000 1500 3500 800]
+       SymbolLine[1500 3500 2000 3500 800]
+       SymbolLine[2000 3500 2500 3000 800]
+)
+Attribute("PCB::grid::unit" "mil")
+Via[35000 4000 4000 2000 0 2000 "" ""]
+Via[102000 14000 4000 2000 0 2000 "" ""]
+Via[41000 11000 4000 2000 0 2000 "" ""]
+Via[72000 10000 6000 2000 0 3500 "" ""]
+Via[118000 37000 6000 2000 0 3500 "" ""]
+Via[118000 16000 4000 2000 0 2000 "" ""]
+Via[118000 26000 4000 2000 0 2000 "" ""]
+
+Element["" "microswitch" "S2" "unknown" 54000 21000 -3000 -3000 0 100 ""]
+(
+       Attribute("author" "Alexander Kurz, Stefan Tauner")
+       Attribute("copyright" "2008 Alexander Kurz, 2010 Stefan Tauner")
+       Attribute("use-license" "Unlimited")
+       Attribute("dist-license" "CC-BY-SA-2.5")
+       Attribute("ref" "tycoelectronics.com document number 2-1437565-7 rev S1 2010-04-10")
+       Attribute("comment" "rev S1 of the document has an error: horizontal pad spacing implies 2*1,4 + 3,1 = 5,86. i used 5,9 instead.")
+       Pad[-7874 -15748 -7874 -8661 5512 1969 5906 "1" "1" "square"]
+       Pad[7874 -15748 7874 -8661 5512 1969 5906 "2" "2" "square"]
+       Pad[-7874 8661 -7874 15748 5512 1969 5906 "1" "1" "square,edge2"]
+       Pad[7874 8661 7874 15748 5512 1969 5906 "2" "2" "square,edge2"]
+       ElementLine [-12992 -12402 -12992 12402 1000]
+       ElementLine [-4331 -12402 4331 -12402 1000]
+       ElementLine [12992 -12402 12992 12402 1000]
+       ElementLine [-4331 12402 4331 12402 1000]
+
+       )
+
+Element["" "microswitch" "S1" "unknown" 104000 21000 -3000 -3000 0 100 ""]
+(
+       Attribute("author" "Alexander Kurz, Stefan Tauner")
+       Attribute("copyright" "2008 Alexander Kurz, 2010 Stefan Tauner")
+       Attribute("use-license" "Unlimited")
+       Attribute("dist-license" "CC-BY-SA-2.5")
+       Attribute("ref" "tycoelectronics.com document number 2-1437565-7 rev S1 2010-04-10")
+       Attribute("comment" "rev S1 of the document has an error: horizontal pad spacing implies 2*1,4 + 3,1 = 5,86. i used 5,9 instead.")
+       Pad[-7874 -15748 -7874 -8661 5512 1969 5906 "1" "1" "square"]
+       Pad[7874 -15748 7874 -8661 5512 1969 5906 "2" "2" "square"]
+       Pad[-7874 8661 -7874 15748 5512 1969 5906 "1" "1" "square,edge2"]
+       Pad[7874 8661 7874 15748 5512 1969 5906 "2" "2" "square,edge2"]
+       ElementLine [-12992 -12402 -12992 12402 1000]
+       ElementLine [-4331 -12402 4331 -12402 1000]
+       ElementLine [12992 -12402 12992 12402 1000]
+       ElementLine [-4331 12402 4331 12402 1000]
+
+       )
+
+Element["" "HEADER2_1_PWR" "LOAD" "unknown" 6000 8000 17000 -5000 0 100 ""]
+(
+       Pin[0 0 7000 3000 7600 5000 "1" "1" "square,edge2"]
+       Pin[10000 0 7000 3000 7600 5000 "2" "2" "edge2"]
+       ElementLine [-5000 -5000 -5000 5000 1000]
+       ElementLine [-5000 5000 15000 5000 1000]
+       ElementLine [15000 5000 15000 -5000 1000]
+       ElementLine [15000 -5000 -5000 -5000 1000]
+       ElementLine [-5000 5000 5000 5000 1000]
+       ElementLine [5000 5000 5000 -5000 1000]
+
+       )
+
+Element["" "HEADER2_1_PWR" "B1" "unknown" 6000 34000 29000 -1000 0 100 ""]
+(
+       Pin[0 0 7000 3000 7600 5000 "1" "1" "square,edge2"]
+       Pin[10000 0 7000 3000 7600 5000 "2" "2" "edge2"]
+       ElementLine [-5000 -5000 -5000 5000 1000]
+       ElementLine [-5000 5000 15000 5000 1000]
+       ElementLine [15000 5000 15000 -5000 1000]
+       ElementLine [15000 -5000 -5000 -5000 1000]
+       ElementLine [-5000 5000 5000 5000 1000]
+       ElementLine [5000 5000 5000 -5000 1000]
+
+       )
+
+Element["onsolder" "1206" "R3" "1M5" 42000 11000 -3000 3000 0 100 "auto"]
+(
+       Pad[-1181 -5905 1181 -5905 5118 2000 5718 "1" "1" "onsolder,square"]
+       Pad[-1181 5905 1181 5905 5118 2000 5718 "2" "2" "onsolder,square"]
+       ElementLine [-3740 -2362 -3740 2362 800]
+       ElementLine [3740 -2362 3740 2362 800]
+
+       )
+
+Element["onsolder" "1206" "R4" "300K" 42000 30000 -3150 3150 0 100 "auto"]
+(
+       Pad[-1181 -5905 1181 -5905 5118 2000 5718 "1" "1" "onsolder,square"]
+       Pad[-1181 5905 1181 5905 5118 2000 5718 "2" "2" "onsolder,square"]
+       ElementLine [-3740 -2362 -3740 2362 800]
+       ElementLine [3740 -2362 3740 2362 800]
+
+       )
+
+Element["" "1206" "R2" "39R" 79000 35000 3000 -3000 3 100 ""]
+(
+       Pad[5905 -1181 5905 1181 5118 2000 5718 "1" "1" "square"]
+       Pad[-5905 -1181 -5905 1181 5118 2000 5718 "2" "2" "square"]
+       ElementLine [-2362 3740 2362 3740 800]
+       ElementLine [-2362 -3740 2362 -3740 800]
+
+       )
+
+Element["onsolder" "SO8NM" "U1" "unknown" 59000 21000 -2000 3000 0 100 "auto"]
+(
+       Pad[7500 7000 7500 16000 2000 1000 3000 "1" "1" "onsolder,square,edge2"]
+       Pad[2500 7000 2500 16000 2000 1000 3000 "2" "2" "onsolder,square,edge2"]
+       Pad[-2500 7000 -2500 16000 2000 1000 3000 "3" "3" "onsolder,square,edge2"]
+       Pad[-7500 7000 -7500 16000 2000 1000 3000 "4" "4" "onsolder,square,edge2"]
+       Pad[-7500 -16000 -7500 -7000 2000 1000 3000 "5" "5" "onsolder,square"]
+       Pad[-2500 -16000 -2500 -7000 2000 1000 3000 "6" "6" "onsolder,square"]
+       Pad[2500 -16000 2500 -7000 2000 1000 3000 "7" "7" "onsolder,square"]
+       Pad[7500 -16000 7500 -7000 2000 1000 3000 "8" "8" "onsolder,square"]
+       ElementLine [-9500 18000 9500 18000 1000]
+       ElementLine [-9500 -18000 -9500 18000 1000]
+       ElementLine [-9500 -18000 9500 -18000 1000]
+       ElementLine [9500 2500 9500 18000 1000]
+       ElementLine [9500 -18000 9500 -2500 1000]
+       ElementArc [9500 0 2500 2500 270 180 1000]
+
+       )
+
+Element["onsolder" "1206" "R5" "15K" 30000 30000 -3095 3000 0 100 "auto"]
+(
+       Pad[-1181 -5905 1181 -5905 5118 2000 5718 "1" "1" "onsolder,square"]
+       Pad[-1181 5905 1181 5905 5118 2000 5718 "2" "2" "onsolder,square"]
+       ElementLine [-3740 -2362 -3740 2362 800]
+       ElementLine [3740 -2362 3740 2362 800]
+
+       )
+
+Element["" "SOD123" "D1" "unknown" 12000 22000 12000 -9000 0 100 ""]
+(
+       Pad[-5500 -600 -5500 600 6900 2000 7500 "1" "1" "square"]
+       Pad[5500 -600 5500 600 6900 2000 7500 "2" "2" "square"]
+       ElementLine [-11000 -4000 -11000 4000 2000]
+       ElementLine [-11000 4000 -7600 5100 1000]
+       ElementLine [-7600 5100 10000 5100 1000]
+       ElementLine [10000 -5100 10000 5100 1000]
+       ElementLine [-7600 -5100 10000 -5100 1000]
+       ElementLine [-7600 -5100 -11000 -4000 1000]
+
+       )
+
+Element["" "1210" "C1" "unknown" 29000 28000 -2000 -3000 0 100 ""]
+(
+       Pad[-2755 -5905 2755 -5905 5118 2000 5718 "1" "1" "square"]
+       Pad[-2755 5905 2755 5905 5118 2000 5718 "2" "2" "square"]
+       ElementLine [5314 -1968 5314 1968 800]
+       ElementLine [-5314 -1968 -5314 1968 800]
+
+       )
+
+Element["" "LED3" "D2" "unknown" 79000 21000 -2500 -15000 0 100 ""]
+(
+       Pin[0 5000 6500 3000 7100 4300 "1" "1" "square"]
+       Pin[0 -5000 6500 3000 7100 4300 "2" "2" ""]
+       ElementArc [0 0 5900 5900 135 90 1000]
+       ElementArc [0 0 5900 5900 315 90 1000]
+       ElementArc [0 0 7900 7900 135 90 1000]
+       ElementArc [0 0 7900 7900 315 90 1000]
+
+       )
+
+Element["onsolder" "SOT23" "Q1" "unknown" 32000 17000 -17000 3000 0 100 "auto"]
+(
+       Pad[0 -300 0 300 3400 3000 4000 "1" "1" "onsolder,square,edge2"]
+       Pad[-7800 -300 -7800 300 3400 3000 4000 "2" "2" "onsolder,square,edge2"]
+       Pad[-3900 -8500 -3900 -7900 3400 3000 4000 "3" "3" "onsolder,square"]
+       ElementLine [2500 -11000 2500 2900 1000]
+       ElementLine [-10300 2900 2500 2900 1000]
+       ElementLine [-10300 -11000 -10300 2900 1000]
+       ElementLine [-10300 -11000 2500 -11000 1000]
+
+       )
+
+Element["" "header3_2_edge" "PROG" "unknown" 130000 11000 -9000 -10000 0 100 ""]
+(
+       Attribute("author" "Jan Yenya Kasprzak, http://www.fi.muni.cz/~kas/")
+       Attribute("copyright" "Jan Yenya Kasprzak, http://www.fi.muni.cz/~kas/")
+       Attribute("use-license" "Unlimited")
+       Attribute("dist-license" "GPL 2.0")
+       Attribute("comment" "Thanks: Karl Hammar")
+       Pad[-7500 0 7500 0 5000 2000 6000 "1" "1" "square,edge2"]
+       Pad[-7500 0 7500 0 5000 2000 6000 "2" "2" "onsolder,square,edge2"]
+       Pad[-7500 10000 7500 10000 5000 2000 6000 "3" "3" "square,edge2"]
+       Pad[-7500 10000 7500 10000 5000 2000 6000 "4" "4" "onsolder,square,edge2"]
+       Pad[-7500 20000 7500 20000 5000 2000 6000 "5" "5" "square,edge2"]
+       Pad[-7500 20000 7500 20000 5000 2000 6000 "6" "6" "onsolder,square,edge2"]
+       ElementLine [-11000 -5000 8500 -5000 1000]
+       ElementLine [-11000 25000 8500 25000 1000]
+       ElementLine [-11000 -5000 -11000 25000 1000]
+       ElementLine [0 -5000 0 -3750 1000]
+       ElementLine [-11000 -3750 0 -3750 1000]
+
+       )
+Rat[55000 24000 0 61874 5252 0  ""]
+Rat[105000 19000 0 111874 36748 0  ""]
+Rat[89000 21000 1 96126 36748 0  ""]
+Rat[62000 24000 1 46126 36748 0  ""]
+Layer(1 "top")
+(
+       Line[62000 4000 76000 4000 2500 2000 ""]
+       Line[41000 11000 46000 11000 1000 2000 ""]
+       Line[6000 15000 24000 15000 1000 2000 ""]
+       Line[102000 14000 95000 14000 1000 2000 ""]
+       Line[85000 22000 79000 16000 1000 2000 ""]
+       Line[127000 22000 85000 22000 1000 2000 ""]
+       Line[105000 19000 111000 13000 2500 2000 ""]
+       Line[91000 19000 105000 19000 2500 2000 ""]
+       Line[76000 4000 91000 19000 2500 2000 ""]
+       Line[79000 26000 86000 33000 1000 2000 ""]
+       Line[62000 36000 74000 36000 2500 2000 ""]
+       Line[72000 16000 72000 10000 2500 2000 ""]
+       Line[68000 20000 72000 16000 2500 2000 ""]
+       Line[27000 20000 68000 20000 2500 2000 ""]
+       Line[55000 24000 62000 31000 2500 2000 ""]
+       Line[41000 24000 55000 24000 2500 2000 ""]
+       Line[33000 32000 41000 24000 2500 2000 ""]
+       Line[33000 34000 33000 32000 2500 2000 ""]
+       Line[24000 15000 35000 4000 1000 2000 ""]
+       Line[18000 22000 26000 22000 8000 2000 ""]
+       Line[16000 34000 28000 34000 8000 2000 ""]
+       Line[6000 8000 6000 34000 8000 2000 ""]
+       Line[118000 16000 123000 11000 1000 2000 ""]
+       Line[118000 37000 112000 37000 2500 2000 ""]
+       Line[118000 26000 123000 31000 1000 2000 ""]
+)
+Layer(2 "bottom")
+(
+       Line[41000 11000 51000 11000 1000 2000 ""]
+       Line[77000 5000 72000 10000 2500 2000 ""]
+       Line[117000 5000 77000 5000 2500 2000 ""]
+       Line[67000 10000 72000 10000 2500 2000 ""]
+       Line[35000 4000 41000 4000 1000 2000 ""]
+       Line[35000 29000 31000 25000 1000 2000 ""]
+       Line[47000 29000 35000 29000 1000 2000 ""]
+       Line[48000 28000 47000 29000 1000 2000 ""]
+       Line[48000 27000 48000 28000 1000 2000 ""]
+       Line[50000 25000 48000 27000 1000 2000 ""]
+       Line[16000 34000 51000 34000 2500 2000 ""]
+       Line[32000 23000 32000 17000 1000 2000 ""]
+       Line[16000 23000 21000 18000 8000 2000 ""]
+       Line[16000 34000 16000 23000 8000 2000 ""]
+       Line[16000 8000 26000 8000 8000 2000 ""]
+       Line[6000 34000 6000 8000 8000 2000 ""]
+       Line[62000 15000 65000 18000 1000 2000 ""]
+       Line[75000 32000 84000 32000 1000 2000 ""]
+       Line[72000 29000 75000 32000 1000 2000 ""]
+       Line[72000 27000 72000 29000 1000 2000 ""]
+       Line[69000 24000 72000 27000 1000 2000 ""]
+       Line[62000 24000 69000 24000 1000 2000 ""]
+       Line[52000 14000 62000 24000 1000 2000 ""]
+       Line[64000 21000 89000 21000 1000 2000 ""]
+       Line[57000 14000 64000 21000 1000 2000 ""]
+       Line[56000 22000 40000 22000 1000 2000 ""]
+       Line[62000 28000 56000 22000 1000 2000 ""]
+       Line[77000 18000 79000 16000 1000 2000 ""]
+       Line[65000 18000 77000 18000 1000 2000 ""]
+       Line[62000 14000 62000 15000 1000 2000 ""]
+       Line[42000 22000 42000 17000 1000 2000 ""]
+       Line[54000 25000 57000 28000 1000 2000 ""]
+       Line[50000 25000 54000 25000 1000 2000 ""]
+       Line[117000 5000 123000 11000 2500 2000 ""]
+       Line[118000 37000 119000 36000 2500 2000 ""]
+       Line[119000 36000 123000 32000 2500 2000 ""]
+       Line[84000 32000 94000 22000 1000 2000 ""]
+       Line[94000 22000 124000 22000 1000 2000 ""]
+       Line[116000 14000 118000 16000 1000 2000 ""]
+       Line[89000 21000 96000 14000 1000 2000 ""]
+       Line[116000 14000 96000 14000 1000 2000 ""]
+       Line[67000 36000 87000 36000 1000 2000 ""]
+       Line[87000 36000 97000 26000 1000 2000 ""]
+       Line[97000 26000 118000 26000 1000 2000 ""]
+)
+Layer(3 "silk")
+(
+       Text[75000 11000 0 120 "yenya.net/htr" "clearline,onsolder"]
+       Text[5000 32000 0 120 "+" "clearline,onsolder"]
+       Text[125000 29000 0 80 "GND" "clearline,onsolder"]
+       Text[124000 19000 0 80 "MOSI" "clearline,onsolder"]
+       Text[125000 9000 0 80 "VCC" "clearline,onsolder"]
+)
+Layer(4 "silk")
+(
+       Line[134000 0 6000 0 1000 2000 ""]
+       Line[0 6000 0 36000 1000 2000 ""]
+       Line[6000 42000 134000 42000 1000 2000 ""]
+       Line[140000 6000 140000 36000 1000 2000 ""]
+       Line[21000 38000 33000 38000 1000 2000 ""]
+       Arc[6000 36000 6000 6000 1000 2000 0 90 ""]
+       Arc[6000 6000 6000 6000 1000 2000 -90 90 ""]
+       Arc[134000 36000 6000 6000 1000 2000 90 90 ""]
+       Arc[134000 6000 6000 6000 1000 2000 -90 -90 ""]
+       Text[83000 9000 0 120 "+" "clearline"]
+       Text[13000 23000 0 120 "-" "clearline"]
+       Text[1000 23000 0 120 "+" "clearline"]
+       Text[126000 13000 0 80 "MISO" "clearline"]
+       Text[127000 23000 0 80 "SCK" "clearline"]
+       Text[124000 36000 0 80 "RESET" "clearline"]
+)
+NetList()
+(
+       Net("GND" "(unknown)")
+       (
+               Connect("B1-2")
+               Connect("C1-2")
+               Connect("PROG-6")
+               Connect("Q1-2")
+               Connect("R2-2")
+               Connect("R4-2")
+               Connect("R5-2")
+               Connect("S1-2")
+               Connect("S2-2")
+               Connect("U1-4")
+       )
+       Net("MISO" "(unknown)")
+       (
+               Connect("PROG-1")
+               Connect("S1-1")
+               Connect("U1-6")
+       )
+       Net("MOSI" "(unknown)")
+       (
+               Connect("PROG-4")
+               Connect("S2-1")
+               Connect("U1-5")
+       )
+       Net("RESET" "(unknown)")
+       (
+               Connect("PROG-5")
+               Connect("U1-1")
+       )
+       Net("SCK" "(unknown)")
+       (
+               Connect("D2-2")
+               Connect("PROG-3")
+               Connect("U1-7")
+       )
+       Net("unnamed_net1" "(unknown)")
+       (
+               Connect("Q1-1")
+               Connect("R5-1")
+               Connect("U1-3")
+       )
+       Net("unnamed_net2" "(unknown)")
+       (
+               Connect("R3-2")
+               Connect("R4-1")
+               Connect("U1-2")
+       )
+       Net("unnamed_net3" "(unknown)")
+       (
+               Connect("LOAD-2")
+               Connect("Q1-3")
+       )
+       Net("unnamed_net4" "(unknown)")
+       (
+               Connect("D2-1")
+               Connect("R2-1")
+       )
+       Net("Vbat" "(unknown)")
+       (
+               Connect("B1-1")
+               Connect("D1-1")
+               Connect("LOAD-1")
+               Connect("R3-1")
+       )
+       Net("Vcc" "(unknown)")
+       (
+               Connect("C1-1")
+               Connect("D1-2")
+               Connect("PROG-2")
+               Connect("U1-8")
+       )
+)
diff --git a/heater.prj b/heater.prj
new file mode 100644 (file)
index 0000000..c2cc6cb
--- /dev/null
@@ -0,0 +1,3 @@
+schematics heater.sch
+elements-dir .
+output-name heater
diff --git a/heater.sch b/heater.sch
new file mode 100644 (file)
index 0000000..8594e32
--- /dev/null
@@ -0,0 +1,220 @@
+v 20130925 2
+C 40000 40000 0 0 0 title-B.sym
+C 46500 46300 1 0 1 ATtiny25-1.sym
+{
+T 46225 49750 5 10 0 0 0 6 1
+device=ATtiny25
+T 45400 47750 5 10 1 1 0 6 1
+refdes=U1
+T 46225 48950 5 10 0 0 0 6 1
+footprint=SO8NM
+}
+C 54200 47900 1 0 1 connector2-1.sym
+{
+T 54000 48900 5 10 0 0 0 6 1
+device=CONNECTOR_2
+T 54200 48700 5 10 1 1 0 6 1
+refdes=LOAD
+T 54200 47900 5 10 0 1 0 0 1
+footprint=HEADER2_1_PWR
+}
+N 42900 44300 42900 46600 4
+N 42900 44300 52500 44300 4
+{
+T 45400 44400 5 10 1 1 0 0 1
+netname=GND
+}
+N 42900 47300 42900 50200 4
+N 42900 50200 52500 50200 4
+{
+T 45400 50000 5 10 1 1 0 0 1
+netname=Vbat
+}
+N 52500 50200 52500 48400 4
+C 51500 46500 1 270 0 resistor-2.sym
+{
+T 51850 46100 5 10 0 0 270 0 1
+device=RESISTOR
+T 51800 46300 5 10 1 1 270 0 1
+refdes=R5
+T 51300 46300 5 10 1 1 270 0 1
+value=15K
+T 51500 46500 5 10 0 1 0 0 1
+footprint=1206
+}
+C 50500 48000 1 270 0 resistor-2.sym
+{
+T 50850 47600 5 10 0 0 270 0 1
+device=RESISTOR
+T 50800 47800 5 10 1 1 270 0 1
+refdes=R3
+T 50300 47800 5 10 1 1 270 0 1
+value=1M5
+T 50500 48000 5 10 0 1 0 0 1
+footprint=1206
+}
+C 48100 45400 1 270 0 resistor-2.sym
+{
+T 48450 45000 5 10 0 0 270 0 1
+device=RESISTOR
+T 48400 45200 5 10 1 1 270 0 1
+refdes=R2
+T 47900 45200 5 10 1 1 270 0 1
+value=39R
+T 48100 45400 5 10 0 1 0 0 1
+footprint=1206
+}
+C 50500 46500 1 270 0 resistor-2.sym
+{
+T 50850 46100 5 10 0 0 270 0 1
+device=RESISTOR
+T 50800 46300 5 10 1 1 270 0 1
+refdes=R4
+T 50300 46300 5 10 1 1 270 0 1
+value=300K
+T 50500 46500 5 10 0 1 0 0 1
+footprint=1206
+}
+C 43800 48200 1 270 0 diode-1.sym
+{
+T 44400 47800 5 10 0 0 270 0 1
+device=DIODE
+T 44300 47900 5 10 1 1 270 0 1
+refdes=D1
+T 43800 48200 5 10 0 1 0 0 1
+footprint=SOD123
+}
+C 43800 46500 1 270 0 capacitor-2.sym
+{
+T 44500 46300 5 10 0 0 270 0 1
+device=POLARIZED_CAPACITOR
+T 44300 46300 5 10 1 1 270 0 1
+refdes=C1
+T 44700 46300 5 10 0 0 270 0 1
+symversion=0.1
+T 43800 46500 5 10 0 1 0 0 1
+footprint=1210
+}
+N 44000 50200 44000 48200 4
+N 44000 47300 44000 46500 4
+N 44000 45600 44000 44300 4
+N 52500 48100 52500 47200 4
+N 52500 46200 52500 44300 4
+N 46500 46700 51900 46700 4
+N 51600 45600 51600 44300 4
+N 44900 46700 44900 44300 4
+N 44900 46900 44000 46900 4
+C 48000 45600 1 270 1 led-3.sym
+{
+T 48650 46550 5 10 0 0 90 2 1
+device=LED
+T 48550 46450 5 10 1 1 270 2 1
+refdes=D2
+T 48000 45600 5 10 0 1 0 0 1
+footprint=LED3
+}
+N 48200 45600 48200 45400 4
+C 48900 46500 1 270 0 switch-spst-1.sym
+{
+T 49600 46100 5 10 0 0 270 0 1
+device=SPST
+T 49200 46200 5 10 1 1 270 0 1
+refdes=S1
+T 48900 46500 5 10 0 1 0 0 1
+footprint=microswitch
+}
+N 50600 50200 50600 48000 4
+N 50600 47100 50600 46500 4
+N 50600 45600 50600 44300 4
+C 42700 47300 1 270 0 battery-1.sym
+{
+T 43600 47000 5 10 0 0 270 0 1
+device=BATTERY
+T 43200 47000 5 10 1 1 270 0 1
+refdes=B1
+T 44000 47000 5 10 0 0 270 0 1
+symversion=0.1
+T 42700 47300 5 10 0 1 0 0 1
+footprint=HEADER2_1_PWR
+}
+C 49200 47900 1 0 1 connector6-1.sym
+{
+T 47400 49700 5 10 0 0 0 6 1
+device=CONNECTOR_6
+T 49100 49900 5 10 1 1 0 6 1
+refdes=PROG
+T 49200 47900 5 10 0 1 0 0 1
+footprint=header3_2_edge
+}
+N 47500 49600 46700 49600 4
+{
+T 47200 49700 5 10 1 1 0 0 1
+netname=MISO
+}
+N 46700 49600 46700 47300 4
+N 46500 47300 48900 47300 4
+N 47500 49300 44600 49300 4
+{
+T 47200 49400 5 10 1 1 0 0 1
+netname=Vcc
+}
+N 44600 49300 44600 46900 4
+N 47500 49000 46900 49000 4
+{
+T 47200 49100 5 10 1 1 0 0 1
+netname=SCK
+}
+N 46900 49000 46900 47100 4
+N 46500 47100 48200 47100 4
+N 47500 48700 46500 48700 4
+{
+T 47200 48800 5 10 1 1 0 0 1
+netname=MOSI
+}
+N 46500 48700 46500 47500 4
+N 46500 46500 47100 46500 4
+N 47100 46500 47100 48400 4
+N 47100 48400 47500 48400 4
+{
+T 47200 48500 5 10 1 1 0 0 1
+netname=RESET
+}
+N 47500 48100 47300 48100 4
+{
+T 47200 48200 5 10 1 1 0 0 1
+netname=GND
+}
+N 47300 48100 47300 44300 4
+N 48200 47100 48200 46500 4
+N 48900 47300 48900 46500 4
+N 48900 45700 48900 44300 4
+N 48200 44500 48200 44300 4
+N 51600 46700 51600 46500 4
+N 46500 46900 50600 46900 4
+C 49600 46500 1 270 0 switch-spst-1.sym
+{
+T 50300 46100 5 10 0 0 270 0 1
+device=SPST
+T 49600 46500 5 10 0 1 0 0 1
+footprint=microswitch
+T 49900 46200 5 10 1 1 270 0 1
+refdes=S2
+}
+N 49600 47500 49600 46500 4
+N 49600 45700 49600 44300 4
+N 49600 47500 46500 47500 4
+C 51900 46200 1 0 0 mosfet-with-diode-2.sym
+{
+T 52800 46700 5 10 0 0 0 0 1
+device=NPN_TRANSISTOR
+T 52800 46700 5 10 1 1 0 0 1
+refdes=Q1
+T 51900 46200 5 10 0 0 0 0 1
+footprint=SOT23
+}
+T 51200 41000 9 16 1 0 0 0 1
+http://www.fi.muni.cz/~kas/heater/
+T 54000 40200 9 16 1 0 0 0 1
+Jan "Yenya" Kasprzak
+T 50400 40700 9 10 1 0 0 0 1
+Distributable under the terms of GNU General Public License, version 2
diff --git a/heater2.pcb b/heater2.pcb
new file mode 100644 (file)
index 0000000..4355345
--- /dev/null
@@ -0,0 +1,856 @@
+# release: pcb 20110918
+
+# To read pcb files, the pcb version (or the git source date) must be >= the file version
+FileVersion[20070407]
+
+PCB["" 200000 200000]
+
+Grid[5000.0 0 0 1]
+Cursor[0 20000 0.000000]
+PolyArea[3100.006200]
+Thermal[0.500000]
+DRC[799 799 800 100 1500 800]
+Flags("nameonpcb,uniquename,clearnew")
+Groups("1,c:2,s")
+Styles["Signal,1000,3600,2000,1000:Power,2500,6000,3500,1000:Fat,4000,6000,3500,1000:Skinny,600,2402,1181,600"]
+
+Symbol[' ' 1800]
+(
+)
+Symbol['!' 1200]
+(
+       SymbolLine[0 4500 0 5000 800]
+       SymbolLine[0 1000 0 3500 800]
+)
+Symbol['"' 1200]
+(
+       SymbolLine[0 1000 0 2000 800]
+       SymbolLine[1000 1000 1000 2000 800]
+)
+Symbol['#' 1200]
+(
+       SymbolLine[0 3500 2000 3500 800]
+       SymbolLine[0 2500 2000 2500 800]
+       SymbolLine[1500 2000 1500 4000 800]
+       SymbolLine[500 2000 500 4000 800]
+)
+Symbol['$' 1200]
+(
+       SymbolLine[1500 1500 2000 2000 800]
+       SymbolLine[500 1500 1500 1500 800]
+       SymbolLine[0 2000 500 1500 800]
+       SymbolLine[0 2000 0 2500 800]
+       SymbolLine[0 2500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 4000 800]
+       SymbolLine[1500 4500 2000 4000 800]
+       SymbolLine[500 4500 1500 4500 800]
+       SymbolLine[0 4000 500 4500 800]
+       SymbolLine[1000 1000 1000 5000 800]
+)
+Symbol['%' 1200]
+(
+       SymbolLine[0 1500 0 2000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1000 1000 800]
+       SymbolLine[1000 1000 1500 1500 800]
+       SymbolLine[1500 1500 1500 2000 800]
+       SymbolLine[1000 2500 1500 2000 800]
+       SymbolLine[500 2500 1000 2500 800]
+       SymbolLine[0 2000 500 2500 800]
+       SymbolLine[0 5000 4000 1000 800]
+       SymbolLine[3500 5000 4000 4500 800]
+       SymbolLine[4000 4000 4000 4500 800]
+       SymbolLine[3500 3500 4000 4000 800]
+       SymbolLine[3000 3500 3500 3500 800]
+       SymbolLine[2500 4000 3000 3500 800]
+       SymbolLine[2500 4000 2500 4500 800]
+       SymbolLine[2500 4500 3000 5000 800]
+       SymbolLine[3000 5000 3500 5000 800]
+)
+Symbol['&' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 1500 0 2500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 3500 1500 2000 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[1000 5000 2000 4000 800]
+       SymbolLine[0 2500 2500 5000 800]
+       SymbolLine[500 1000 1000 1000 800]
+       SymbolLine[1000 1000 1500 1500 800]
+       SymbolLine[1500 1500 1500 2000 800]
+       SymbolLine[0 3500 0 4500 800]
+)
+Symbol[''' 1200]
+(
+       SymbolLine[0 2000 1000 1000 800]
+)
+Symbol['(' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 4500 800]
+)
+Symbol[')' 1200]
+(
+       SymbolLine[0 1000 500 1500 800]
+       SymbolLine[500 1500 500 4500 800]
+       SymbolLine[0 5000 500 4500 800]
+)
+Symbol['*' 1200]
+(
+       SymbolLine[0 2000 2000 4000 800]
+       SymbolLine[0 4000 2000 2000 800]
+       SymbolLine[0 3000 2000 3000 800]
+       SymbolLine[1000 2000 1000 4000 800]
+)
+Symbol['+' 1200]
+(
+       SymbolLine[0 3000 2000 3000 800]
+       SymbolLine[1000 2000 1000 4000 800]
+)
+Symbol[',' 1200]
+(
+       SymbolLine[0 6000 1000 5000 800]
+)
+Symbol['-' 1200]
+(
+       SymbolLine[0 3000 2000 3000 800]
+)
+Symbol['.' 1200]
+(
+       SymbolLine[0 5000 500 5000 800]
+)
+Symbol['/' 1200]
+(
+       SymbolLine[0 4500 3000 1500 800]
+)
+Symbol['0' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4000 2000 2000 800]
+)
+Symbol['1' 1200]
+(
+       SymbolLine[0 1800 800 1000 800]
+       SymbolLine[800 1000 800 5000 800]
+       SymbolLine[0 5000 1500 5000 800]
+)
+Symbol['2' 1200]
+(
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2500 800]
+       SymbolLine[0 5000 2500 2500 800]
+       SymbolLine[0 5000 2500 5000 800]
+)
+Symbol['3' 1200]
+(
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 2800 1500 2800 800]
+       SymbolLine[2000 1500 2000 2300 800]
+       SymbolLine[2000 3300 2000 4500 800]
+       SymbolLine[2000 3300 1500 2800 800]
+       SymbolLine[2000 2300 1500 2800 800]
+)
+Symbol['4' 1200]
+(
+       SymbolLine[0 3500 2000 1000 800]
+       SymbolLine[0 3500 2500 3500 800]
+       SymbolLine[2000 1000 2000 5000 800]
+)
+Symbol['5' 1200]
+(
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[0 1000 0 3000 800]
+       SymbolLine[0 3000 500 2500 800]
+       SymbolLine[500 2500 1500 2500 800]
+       SymbolLine[1500 2500 2000 3000 800]
+       SymbolLine[2000 3000 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['6' 1200]
+(
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[1500 2800 2000 3300 800]
+       SymbolLine[0 2800 1500 2800 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 3300 2000 4500 800]
+)
+Symbol['7' 1200]
+(
+       SymbolLine[500 5000 2500 1000 800]
+       SymbolLine[0 1000 2500 1000 800]
+)
+Symbol['8' 1200]
+(
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 3700 0 4500 800]
+       SymbolLine[0 3700 700 3000 800]
+       SymbolLine[700 3000 1300 3000 800]
+       SymbolLine[1300 3000 2000 3700 800]
+       SymbolLine[2000 3700 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 2300 700 3000 800]
+       SymbolLine[0 1500 0 2300 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 2300 800]
+       SymbolLine[1300 3000 2000 2300 800]
+)
+Symbol['9' 1200]
+(
+       SymbolLine[500 5000 2000 3000 800]
+       SymbolLine[2000 1500 2000 3000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 2500 800]
+       SymbolLine[0 2500 500 3000 800]
+       SymbolLine[500 3000 2000 3000 800]
+)
+Symbol[':' 1200]
+(
+       SymbolLine[0 2500 500 2500 800]
+       SymbolLine[0 3500 500 3500 800]
+)
+Symbol[';' 1200]
+(
+       SymbolLine[0 5000 1000 4000 800]
+       SymbolLine[1000 2500 1000 3000 800]
+)
+Symbol['<' 1200]
+(
+       SymbolLine[0 3000 1000 2000 800]
+       SymbolLine[0 3000 1000 4000 800]
+)
+Symbol['=' 1200]
+(
+       SymbolLine[0 2500 2000 2500 800]
+       SymbolLine[0 3500 2000 3500 800]
+)
+Symbol['>' 1200]
+(
+       SymbolLine[0 2000 1000 3000 800]
+       SymbolLine[0 4000 1000 3000 800]
+)
+Symbol['?' 1200]
+(
+       SymbolLine[1000 3000 1000 3500 800]
+       SymbolLine[1000 4500 1000 5000 800]
+       SymbolLine[0 1500 0 2000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 2000 800]
+       SymbolLine[1000 3000 2000 2000 800]
+)
+Symbol['@' 1200]
+(
+       SymbolLine[0 1000 0 4000 800]
+       SymbolLine[0 4000 1000 5000 800]
+       SymbolLine[1000 5000 4000 5000 800]
+       SymbolLine[5000 3500 5000 1000 800]
+       SymbolLine[5000 1000 4000 0 800]
+       SymbolLine[4000 0 1000 0 800]
+       SymbolLine[1000 0 0 1000 800]
+       SymbolLine[1500 2000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 3000 3500 800]
+       SymbolLine[3000 3500 3500 3000 800]
+       SymbolLine[3500 3000 4000 3500 800]
+       SymbolLine[3500 3000 3500 1500 800]
+       SymbolLine[3500 2000 3000 1500 800]
+       SymbolLine[2000 1500 3000 1500 800]
+       SymbolLine[2000 1500 1500 2000 800]
+       SymbolLine[4000 3500 5000 3500 800]
+)
+Symbol['A' 1200]
+(
+       SymbolLine[0 2000 0 5000 800]
+       SymbolLine[0 2000 700 1000 800]
+       SymbolLine[700 1000 1800 1000 800]
+       SymbolLine[1800 1000 2500 2000 800]
+       SymbolLine[2500 2000 2500 5000 800]
+       SymbolLine[0 3000 2500 3000 800]
+)
+Symbol['B' 1200]
+(
+       SymbolLine[0 5000 2000 5000 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[2500 3300 2500 4500 800]
+       SymbolLine[2000 2800 2500 3300 800]
+       SymbolLine[500 2800 2000 2800 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2300 800]
+       SymbolLine[2000 2800 2500 2300 800]
+)
+Symbol['C' 1200]
+(
+       SymbolLine[700 5000 2000 5000 800]
+       SymbolLine[0 4300 700 5000 800]
+       SymbolLine[0 1700 0 4300 800]
+       SymbolLine[0 1700 700 1000 800]
+       SymbolLine[700 1000 2000 1000 800]
+)
+Symbol['D' 1200]
+(
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[1800 1000 2500 1700 800]
+       SymbolLine[2500 1700 2500 4300 800]
+       SymbolLine[1800 5000 2500 4300 800]
+       SymbolLine[0 5000 1800 5000 800]
+       SymbolLine[0 1000 1800 1000 800]
+)
+Symbol['E' 1200]
+(
+       SymbolLine[0 2800 1500 2800 800]
+       SymbolLine[0 5000 2000 5000 800]
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+)
+Symbol['F' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[0 2800 1500 2800 800]
+)
+Symbol['G' 1200]
+(
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[500 1000 2000 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[2500 3500 2500 4500 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[1000 3000 2000 3000 800]
+)
+Symbol['H' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[2500 1000 2500 5000 800]
+       SymbolLine[0 3000 2500 3000 800]
+)
+Symbol['I' 1200]
+(
+       SymbolLine[0 1000 1000 1000 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 5000 1000 5000 800]
+)
+Symbol['J' 1200]
+(
+       SymbolLine[700 1000 1500 1000 800]
+       SymbolLine[1500 1000 1500 4500 800]
+       SymbolLine[1000 5000 1500 4500 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 4500 0 4000 800]
+)
+Symbol['K' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 3000 2000 1000 800]
+       SymbolLine[0 3000 2000 5000 800]
+)
+Symbol['L' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 5000 2000 5000 800]
+)
+Symbol['M' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 1500 3000 800]
+       SymbolLine[1500 3000 3000 1000 800]
+       SymbolLine[3000 1000 3000 5000 800]
+)
+Symbol['N' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 1000 2500 5000 800]
+       SymbolLine[2500 1000 2500 5000 800]
+)
+Symbol['O' 1200]
+(
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['P' 1200]
+(
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2500 800]
+       SymbolLine[2000 3000 2500 2500 800]
+       SymbolLine[500 3000 2000 3000 800]
+)
+Symbol['Q' 1200]
+(
+       SymbolLine[0 1500 0 4500 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1500 1000 800]
+       SymbolLine[1500 1000 2000 1500 800]
+       SymbolLine[2000 1500 2000 4000 800]
+       SymbolLine[1000 5000 2000 4000 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[1000 3500 2000 5000 800]
+)
+Symbol['R' 1200]
+(
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[2500 1500 2500 2500 800]
+       SymbolLine[2000 3000 2500 2500 800]
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[1300 3000 2500 5000 800]
+)
+Symbol['S' 1200]
+(
+       SymbolLine[2000 1000 2500 1500 800]
+       SymbolLine[500 1000 2000 1000 800]
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[0 1500 0 2500 800]
+       SymbolLine[0 2500 500 3000 800]
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[2500 3500 2500 4500 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['T' 1200]
+(
+       SymbolLine[0 1000 2000 1000 800]
+       SymbolLine[1000 1000 1000 5000 800]
+)
+Symbol['U' 1200]
+(
+       SymbolLine[0 1000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 1000 2000 4500 800]
+)
+Symbol['V' 1200]
+(
+       SymbolLine[0 1000 1000 5000 800]
+       SymbolLine[1000 5000 2000 1000 800]
+)
+Symbol['W' 1200]
+(
+       SymbolLine[0 1000 0 3000 800]
+       SymbolLine[0 3000 500 5000 800]
+       SymbolLine[500 5000 1500 3000 800]
+       SymbolLine[1500 3000 2500 5000 800]
+       SymbolLine[2500 5000 3000 3000 800]
+       SymbolLine[3000 3000 3000 1000 800]
+)
+Symbol['X' 1200]
+(
+       SymbolLine[0 5000 2500 1000 800]
+       SymbolLine[0 1000 2500 5000 800]
+)
+Symbol['Y' 1200]
+(
+       SymbolLine[0 1000 1000 3000 800]
+       SymbolLine[1000 3000 2000 1000 800]
+       SymbolLine[1000 3000 1000 5000 800]
+)
+Symbol['Z' 1200]
+(
+       SymbolLine[0 1000 2500 1000 800]
+       SymbolLine[0 5000 2500 1000 800]
+       SymbolLine[0 5000 2500 5000 800]
+)
+Symbol['[' 1200]
+(
+       SymbolLine[0 1000 500 1000 800]
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 5000 500 5000 800]
+)
+Symbol['\' 1200]
+(
+       SymbolLine[0 1500 3000 4500 800]
+)
+Symbol[']' 1200]
+(
+       SymbolLine[0 1000 500 1000 800]
+       SymbolLine[500 1000 500 5000 800]
+       SymbolLine[0 5000 500 5000 800]
+)
+Symbol['^' 1200]
+(
+       SymbolLine[0 1500 500 1000 800]
+       SymbolLine[500 1000 1000 1500 800]
+)
+Symbol['_' 1200]
+(
+       SymbolLine[0 5000 2000 5000 800]
+)
+Symbol['a' 1200]
+(
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[2000 3000 2000 4500 800]
+       SymbolLine[2000 4500 2500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+)
+Symbol['b' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 3500 2000 4500 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+)
+Symbol['c' 1200]
+(
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 2000 5000 800]
+)
+Symbol['d' 1200]
+(
+       SymbolLine[2000 1000 2000 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+)
+Symbol['e' 1200]
+(
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[0 4000 2000 4000 800]
+       SymbolLine[2000 4000 2000 3500 800]
+)
+Symbol['f' 1000]
+(
+       SymbolLine[500 1500 500 5000 800]
+       SymbolLine[500 1500 1000 1000 800]
+       SymbolLine[1000 1000 1500 1000 800]
+       SymbolLine[0 3000 1000 3000 800]
+)
+Symbol['g' 1200]
+(
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[0 6000 500 6500 800]
+       SymbolLine[500 6500 1500 6500 800]
+       SymbolLine[1500 6500 2000 6000 800]
+       SymbolLine[2000 3000 2000 6000 800]
+)
+Symbol['h' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 5000 800]
+)
+Symbol['i' 1000]
+(
+       SymbolLine[0 2000 0 2100 1000]
+       SymbolLine[0 3500 0 5000 800]
+)
+Symbol['j' 1000]
+(
+       SymbolLine[500 2000 500 2100 1000]
+       SymbolLine[500 3500 500 6000 800]
+       SymbolLine[0 6500 500 6000 800]
+)
+Symbol['k' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+       SymbolLine[0 3500 1500 5000 800]
+       SymbolLine[0 3500 1000 2500 800]
+)
+Symbol['l' 1000]
+(
+       SymbolLine[0 1000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['m' 1200]
+(
+       SymbolLine[500 3500 500 5000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 5000 800]
+       SymbolLine[2000 3500 2500 3000 800]
+       SymbolLine[2500 3000 3000 3000 800]
+       SymbolLine[3000 3000 3500 3500 800]
+       SymbolLine[3500 3500 3500 5000 800]
+       SymbolLine[0 3000 500 3500 800]
+)
+Symbol['n' 1200]
+(
+       SymbolLine[500 3500 500 5000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 5000 800]
+       SymbolLine[0 3000 500 3500 800]
+)
+Symbol['o' 1200]
+(
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[2000 3500 2000 4500 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['p' 1200]
+(
+       SymbolLine[500 3500 500 6500 800]
+       SymbolLine[0 3000 500 3500 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 2000 3000 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[2500 3500 2500 4500 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[1000 5000 2000 5000 800]
+       SymbolLine[500 4500 1000 5000 800]
+)
+Symbol['q' 1200]
+(
+       SymbolLine[2000 3500 2000 6500 800]
+       SymbolLine[1500 3000 2000 3500 800]
+       SymbolLine[500 3000 1500 3000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[0 3500 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+)
+Symbol['r' 1200]
+(
+       SymbolLine[500 3500 500 5000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[1000 3000 2000 3000 800]
+       SymbolLine[0 3000 500 3500 800]
+)
+Symbol['s' 1200]
+(
+       SymbolLine[500 5000 2000 5000 800]
+       SymbolLine[2000 5000 2500 4500 800]
+       SymbolLine[2000 4000 2500 4500 800]
+       SymbolLine[500 4000 2000 4000 800]
+       SymbolLine[0 3500 500 4000 800]
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 2000 3000 800]
+       SymbolLine[2000 3000 2500 3500 800]
+       SymbolLine[0 4500 500 5000 800]
+)
+Symbol['t' 1000]
+(
+       SymbolLine[500 1000 500 4500 800]
+       SymbolLine[500 4500 1000 5000 800]
+       SymbolLine[0 2500 1000 2500 800]
+)
+Symbol['u' 1200]
+(
+       SymbolLine[0 3000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+       SymbolLine[2000 3000 2000 4500 800]
+)
+Symbol['v' 1200]
+(
+       SymbolLine[0 3000 1000 5000 800]
+       SymbolLine[2000 3000 1000 5000 800]
+)
+Symbol['w' 1200]
+(
+       SymbolLine[0 3000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[500 5000 1000 5000 800]
+       SymbolLine[1000 5000 1500 4500 800]
+       SymbolLine[1500 3000 1500 4500 800]
+       SymbolLine[1500 4500 2000 5000 800]
+       SymbolLine[2000 5000 2500 5000 800]
+       SymbolLine[2500 5000 3000 4500 800]
+       SymbolLine[3000 3000 3000 4500 800]
+)
+Symbol['x' 1200]
+(
+       SymbolLine[0 3000 2000 5000 800]
+       SymbolLine[0 5000 2000 3000 800]
+)
+Symbol['y' 1200]
+(
+       SymbolLine[0 3000 0 4500 800]
+       SymbolLine[0 4500 500 5000 800]
+       SymbolLine[2000 3000 2000 6000 800]
+       SymbolLine[1500 6500 2000 6000 800]
+       SymbolLine[500 6500 1500 6500 800]
+       SymbolLine[0 6000 500 6500 800]
+       SymbolLine[500 5000 1500 5000 800]
+       SymbolLine[1500 5000 2000 4500 800]
+)
+Symbol['z' 1200]
+(
+       SymbolLine[0 3000 2000 3000 800]
+       SymbolLine[0 5000 2000 3000 800]
+       SymbolLine[0 5000 2000 5000 800]
+)
+Symbol['{' 1200]
+(
+       SymbolLine[500 1500 1000 1000 800]
+       SymbolLine[500 1500 500 2500 800]
+       SymbolLine[0 3000 500 2500 800]
+       SymbolLine[0 3000 500 3500 800]
+       SymbolLine[500 3500 500 4500 800]
+       SymbolLine[500 4500 1000 5000 800]
+)
+Symbol['|' 1200]
+(
+       SymbolLine[0 1000 0 5000 800]
+)
+Symbol['}' 1200]
+(
+       SymbolLine[0 1000 500 1500 800]
+       SymbolLine[500 1500 500 2500 800]
+       SymbolLine[500 2500 1000 3000 800]
+       SymbolLine[500 3500 1000 3000 800]
+       SymbolLine[500 3500 500 4500 800]
+       SymbolLine[0 5000 500 4500 800]
+)
+Symbol['~' 1200]
+(
+       SymbolLine[0 3500 500 3000 800]
+       SymbolLine[500 3000 1000 3000 800]
+       SymbolLine[1000 3000 1500 3500 800]
+       SymbolLine[1500 3500 2000 3500 800]
+       SymbolLine[2000 3500 2500 3000 800]
+)
+Attribute("PCB::grid::unit" "mil")
+
+Element["" "heater.pcb" "heater" "140000 x 42000" 5000 5000 2000 2000 0 50 ""]
+(
+       Pin[0 0 1000 0 0 400 "1" "1" "edge2"]
+       Pin[140000 0 1000 0 0 400 "2" "2" "edge2"]
+       ElementLine [0 0 140000 0 100]
+       ElementLine [0 0 0 42000 100]
+       ElementLine [140000 0 140000 42000 100]
+       ElementLine [0 42000 140000 42000 100]
+
+       )
+
+Element["" "heater.pcb" "heater" "140000 x 42000" 5000 155000 2000 2000 0 50 ""]
+(
+       Pin[0 0 1000 0 0 400 "1" "1" "edge2"]
+       Pin[140000 0 1000 0 0 400 "2" "2" "edge2"]
+       ElementLine [0 0 140000 0 100]
+       ElementLine [0 0 0 42000 100]
+       ElementLine [140000 0 140000 42000 100]
+       ElementLine [0 42000 140000 42000 100]
+
+       )
+
+Element["" "heater.pcb" "heater" "140000 x 42000" 5000 55000 2000 2000 0 50 ""]
+(
+       Pin[0 0 1000 0 0 400 "1" "1" "edge2"]
+       Pin[140000 0 1000 0 0 400 "2" "2" "edge2"]
+       ElementLine [0 0 140000 0 100]
+       ElementLine [0 0 0 42000 100]
+       ElementLine [140000 0 140000 42000 100]
+       ElementLine [0 42000 140000 42000 100]
+
+       )
+
+Element["" "heater.pcb" "heater" "140000 x 42000" 5000 105000 2000 2000 0 50 ""]
+(
+       Pin[0 0 1000 0 0 400 "1" "1" "edge2"]
+       Pin[140000 0 1000 0 0 400 "2" "2" "edge2"]
+       ElementLine [0 0 140000 0 100]
+       ElementLine [0 0 0 42000 100]
+       ElementLine [140000 0 140000 42000 100]
+       ElementLine [0 42000 140000 42000 100]
+
+       )
+
+Element["" "heater.pcb" "heater" "140000 x 42000" 155000 145000 2000 -2000 1 50 ""]
+(
+       Pin[0 0 1000 0 0 400 "1" "1" ""]
+       Pin[0 -140000 1000 0 0 400 "2" "2" ""]
+       ElementLine [0 -140000 0 0 100]
+       ElementLine [0 0 42000 0 100]
+       ElementLine [0 -140000 42000 -140000 100]
+       ElementLine [42000 -140000 42000 0 100]
+
+       )
+Layer(1 "component")
+(
+)
+Layer(2 "solder")
+(
+)
+Layer(3 "silk")
+(
+)
+Layer(4 "silk")
+(
+)
diff --git a/image.scm b/image.scm
new file mode 100644 (file)
index 0000000..e2bd3e0
--- /dev/null
+++ b/image.scm
@@ -0,0 +1,21 @@
+;; $Id$
+;;
+;; This file may be used to produce png files from gschem schematics from the
+;; command line.  Typical usage is:
+;;
+;;   gschem -p -o mysch.png -s /path/to/this/file/image.scm mysch.sch
+;;
+;; The schematic in "mysch.sch" will be exported to the file "mysch.png"
+
+(image-size 1024 768)
+;(image-size 3200 2400)
+(image-color "enabled")
+;(image-color "disabled")
+
+; You need call this after you call any rc file function
+(gschem-use-rc-values)
+
+; filename is specified on the command line
+(gschem-image "dummyfilename")
+
+(gschem-exit)
diff --git a/microswitch.fp b/microswitch.fp
new file mode 100644 (file)
index 0000000..1c2fa2f
--- /dev/null
@@ -0,0 +1,38 @@
+Element[0x0 "Microswitch 6.3x6.3mm" "SW?" "microswitch63x63" 26575 15000 -5000 -2500 0 100 ""]
+(
+       # signal pads
+#      Pad[rX1 rY1 rX2 rY2 Thickness Clearance Mask "Name" "Number" SFlags]
+       # Pad[ -2.3mm -4.9mm -2.3mm -4.2mm 1.4mm 0.5mm 4543 "3"  "3" "square"]
+       # Pad[ +2.3mm -4.9mm +2.3mm -4.2mm 1.4mm 0.5mm 4543 "1"  "1" "square"]
+       # Pad[ -2.3mm +4.9mm -2.3mm +4.2mm 1.4mm 0.5mm 4543 "4"  "4" "square"]
+       # Pad[ +2.3mm +4.9mm +2.3mm +4.2mm 1.4mm 0.5mm 4543 "2"  "2" "square"]
+       Pad[ -2.0mm -2.2mm -2.0mm -4.0mm 1.4mm 0.5mm 1.5mm "1"  "1" "square"]
+       Pad[  2.0mm -2.2mm  2.0mm -4.0mm 1.4mm 0.5mm 1.5mm "2"  "2" "square"]
+       Pad[ -2.0mm  2.2mm -2.0mm  4.0mm 1.4mm 0.5mm 1.5mm "1"  "1" "square"]
+       Pad[  2.0mm  2.2mm  2.0mm  4.0mm 1.4mm 0.5mm 1.5mm "2"  "2" "square"]
+       # the element box
+       ElementLine [-3.30mm -3.15mm -3.30mm 3.15mm 1000]
+       ElementLine [-1.10mm -3.15mm  1.10mm -3.15mm 1000]
+       ElementLine [ 3.30mm -3.15mm  3.30mm 3.15mm 1000]
+       ElementLine [-1.10mm  3.15mm  1.10mm  3.15mm 1000]
+       #ElementLine [-11800 -11800 -11800 11800 1000]
+       #ElementLine [11800 -11800 11800 11800 1000]
+       #ElementLine [-11800 -11800 11800 -11800 1000]
+       #ElementLine [-11800 11800 11800 11800 1000]
+       # the stylus
+       #ElementArc[0 0 6900 6900 0 0 1000]
+       #ElementArc[0 0 6900 6900 0 180 1000]
+       # two connected pins
+       #ElementLine [-8850 -10325 -8850 10325 1000]
+       #ElementLine [8850 -10325 8850 10325 1000]
+       #ElementLine [8850 -8850 2950 -8850 1000]
+       #ElementLine [-8850 -8850 -2950 -8850 1000]
+       #ElementLine [2950 -10325 -2950 -8850 1000]
+
+       Attribute("author" "Alexander Kurz, Stefan Tauner")
+       Attribute("copyright" "2008 Alexander Kurz, 2010 Stefan Tauner")
+       Attribute("use-license" "Unlimited")
+       Attribute("dist-license" "CC-BY-SA-2.5")
+       Attribute("ref" "tycoelectronics.com document number 2-1437565-7 rev S1 2010-04-10")
+       Attribute("comment" "rev S1 of the document has an error: horizontal pad spacing implies 2*1,4 + 3,1 = 5,86. i used 5,9 instead.")
+)
diff --git a/mosfet-with-diode-2.sym b/mosfet-with-diode-2.sym
new file mode 100644 (file)
index 0000000..bd29314
--- /dev/null
@@ -0,0 +1,68 @@
+v 20121123 2
+P 600 1000 600 800 1 0 0
+{
+T 500 850 5 6 1 1 0 0 1
+pinnumber=3
+T 500 850 5 6 0 0 0 0 1
+pinseq=3
+T 500 850 5 6 0 1 0 0 1
+pinlabel=D
+T 500 850 5 6 0 1 0 0 1
+pintype=pas
+}
+P 600 200 600 0 1 0 1
+{
+T 500 50 5 6 1 1 0 0 1
+pinnumber=2
+T 500 50 5 6 0 0 0 0 1
+pinseq=2
+T 500 50 5 6 0 1 0 0 1
+pinlabel=S
+T 500 50 5 6 0 1 0 0 1
+pintype=pas
+}
+V 500 501 316 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
+T 900 500 5 10 0 0 0 0 1
+device=NPN_TRANSISTOR
+L 400 700 400 300 3 0 0 0 -1 -1
+P 0 500 184 500 1 0 0
+{
+T 100 550 5 6 1 1 0 0 1
+pinnumber=1
+T 100 550 5 6 0 0 0 0 1
+pinseq=1
+T 100 550 5 6 0 1 0 0 1
+pinlabel=G
+T 100 550 5 6 0 1 0 0 1
+pintype=pas
+}
+L 400 500 184 500 3 0 0 0 -1 -1
+T 900 500 8 10 1 1 0 0 1
+refdes=Q?
+L 600 800 600 640 3 0 0 0 -1 -1
+L 440 700 440 580 3 0 0 0 -1 -1
+L 440 300 440 420 3 0 0 0 -1 -1
+L 440 440 440 560 3 0 0 0 -1 -1
+L 440 640 600 640 3 0 0 0 -1 -1
+L 440 360 600 360 3 0 0 0 -1 -1
+L 600 200 600 360 3 0 0 0 -1 -1
+L 600 360 600 500 3 0 0 0 -1 -1
+L 440 500 480 520 3 0 0 0 -1 -1
+L 480 520 480 480 3 0 0 0 -1 -1
+L 480 480 440 500 3 0 0 0 -1 -1
+L 480 500 600 500 3 0 0 0 -1 -1
+L 600 700 680 700 3 0 0 0 -1 -1
+L 660 530 720 530 3 0 0 0 -1 -1
+L 680 700 690 700 3 0 0 0 -1 -1
+L 690 580 690 700 3 0 0 0 -1 -1
+L 640 510 660 530 3 0 0 0 -1 -1
+L 720 530 740 550 3 0 0 0 -1 -1
+L 660 470 690 530 3 0 0 0 -1 -1
+L 720 470 690 530 3 0 0 0 -1 -1
+L 660 470 720 470 3 0 0 0 -1 -1
+L 690 530 690 580 3 0 0 0 -1 -1
+L 600 300 690 300 3 0 0 0 -1 -1
+L 690 300 690 470 3 0 0 0 -1 -1
+V 600 700 5 3 0 0 0 -1 -1 1 -1 -1 1 -1 1
+V 600 360 5 3 0 0 0 -1 -1 1 -1 -1 1 -1 1
+V 600 300 5 3 0 0 0 -1 -1 1 -1 -1 1 -1 1
diff --git a/panel.pl b/panel.pl
new file mode 100644 (file)
index 0000000..d551e56
--- /dev/null
+++ b/panel.pl
@@ -0,0 +1,126 @@
+#!/usr/bin/perl
+# -*- perl -*-
+
+# Copyright 2006 DJ Delorie <dj@delorie.com>
+# Released under the terms of the GNU General Public License, version 2
+
+sub baseboard {
+    my ($file, $width, $height, $nbase) = @_;
+    if (! $nbase) {
+       $base = $file;
+       $base =~ s@.*/@@;
+    } else {
+       $base = $nbase;
+    }
+
+    $panelcopperlayers = ".*" unless $panelcopperlayers;
+
+    $pscript = "$base.pscript";
+    open(PS, ">$pscript");
+    push(@files_to_remove, "$base.pscript");
+
+    open(S, $file) || die("$file: $!");
+    $outname = "$base.panel.pcb";
+    $outname =~ s/pnl\.panel\.pcb/pcb/;
+    open(O, ">$outname");
+    while (<S>) {
+       if (/PCB\[.* (\S+) (\S+)\]/) {
+           s/ (\S+) (\S+)\]/ $width $height\]/;
+       }
+       s/Cursor\[.*\]/Cursor[0 0 0.0]/;
+       if (/^Flags/) {
+           s/,uniquename,/,/;
+           s/,uniquename//;
+           s/uniquename,//;
+       }
+       next if /\b(Via|Pin|Pad|ElementLine|Line|Arc|ElementArc|Text)/;
+       if (/Polygon|Element/) {
+           $hole = 0;
+           while (<S>) {
+               $hole++ if /Hole \(/;
+               last if /^\s*\)\s*$/ && $hole <= 0;
+               $hole-- if /\)/;
+           }
+           next;
+       }
+       if (/Layer/) {
+           if (@panelvias) {
+               print O @panelvias;
+               @panelvias = ();
+           }
+       }
+       print O;
+       if (/Layer\((\d+) \"(.*)\"\)/) {
+           $lnum = $1;
+           $lname = $2;
+           print O scalar <S>;
+           print STDERR "layer $lnum $lname vs '$panelcopperlayers'\n";
+           if ($lnum =~ /$panelcopperlayers/ || $lname =~ /$panelcopperlayers/) {
+               print O @panelcopper;
+           }
+       }
+    }
+    close O;
+    close S;
+
+    print PS "LoadFrom(Layout,$outname)\n";
+
+    $ox = $oy = 0;
+}
+
+sub loadboard {
+    my ($file) = @_;
+    $seq = 1 + $seq;
+
+    open(S, $file);
+    open(O, ">temp-panel.$seq");
+    while (<S>) {
+       if (/PCB\[.* (\S+) (\S+)\]/) {
+           $width = &parseval($1);
+           $height = &parseval($2);
+       }
+       s/Cursor\[.*\]/Cursor[0 0 0.0]/;
+       print O;
+    }
+    close O;
+    close S;
+    print PS "LoadFrom(LayoutToBuffer,temp-panel.$seq)\n";
+    push(@files_to_remove, "temp-panel.$seq");
+}
+
+sub opaste {
+    $vx = $ox;
+    $vy = $oy + $height;
+    print PS "PasteBuffer(ToLayout,$ox,$oy)\n";
+    $ox += $width;
+    $oy = 0;
+}
+
+sub vpaste {
+    print PS "PasteBuffer(ToLayout,$vx,$vy)\n";
+    $vy += $height;
+}
+
+sub done {
+    print PS "SaveTo(LayoutAs,$outname)\n";
+    print PS "Quit()\n";
+
+    close PS;
+
+    system "set -x; pcb --action-script $pscript";
+    #system "pcb -x ps $base.panel.pcb";
+    #unlink @files_to_remove;
+}
+
+sub parseval {
+    my ($v) = @_;
+    if ($v =~ /mil/) {
+       $v *= 100;
+    }
+    if ($v =~ /mm/) {
+       $v *= 3937.007874015748;
+    }
+    return 0 + $v;
+}
+
+1;
diff --git a/panel2pcb b/panel2pcb
new file mode 100755 (executable)
index 0000000..b281dec
--- /dev/null
+++ b/panel2pcb
@@ -0,0 +1,99 @@
+#!/usr/bin/perl
+# -*- perl -*-
+
+# Copyright 2006 DJ Delorie <dj@delorie.com>
+# Released under the terms of the GNU General Public License, version 2
+
+if (! @ARGV) {
+    print "Usage: pcb2panel board1.pcb board2.pcb board3.pcb > boards.pcb";
+    print "Then edit boards.pcb, putting each outline where you want it\n";
+    print "and sizing the board.  Then:\n";
+    print "panel2pcb [-l regex] boards.pcb\n";
+    print "and edit/print boards.panel.pcb\n";
+    exit 0;
+}
+
+$mydir = $0;
+if ($mydir =~ m@/@) {
+    $mydir =~ s@[^/]*$@@;
+} else {
+    $mydir = ".";
+}
+
+require "$mydir/panel.pl";
+
+$panel = shift;
+
+if ($panel eq "-l") {
+    $panelcopperlayers = shift;
+    $panel = shift;
+}
+
+open(P, $panel);
+while (<P>) {
+    if (/PCB\[.* (\S+) (\S+)\]/) {
+       $panel_width = &parseval($1);
+       $panel_height = &parseval($2);
+    }
+    if (/Element\[\"[^\"]*\" \"([^\"]*)\" \"([^\"]*)\" \"([^\"]*)\" (\S+) (\S+)/) {
+       $pcb = $1;
+       $base = $2;
+       $value = $3;
+       $mx = &parseval($4);
+       $my = &parseval($5);
+       %pinx = ();
+       %piny = ();
+    }
+    if (/Pin\[(\S+) (\S+) \S+ \S+ \S+ \S+ \"(\d)\"/) {
+       $pinx{$3} = &parseval($1);
+       $piny{$3} = &parseval($2);
+    }
+    if ($pcb && /\)/) {
+       if ($pinx{'1'} < $pinx{'2'}) {
+           $rot = 0;
+       } elsif ($pinx{'1'} > $pinx{'2'}) {
+           $rot = 2;
+       } elsif ($piny{'1'} < $piny{'2'}) {
+           $rot = 3;
+       } elsif ($piny{'1'} > $piny{'2'}) {
+           $rot = 1;
+       }
+       push (@paste, "$pcb\0$rot\0$mx\0$my");
+       $pcb = undef;
+    }
+    if (/Via/) {
+       push (@panelvias, $_);
+    }
+    if (/^Layer\([^)]*\)$/) {
+       $junk = <P>; # The opening '('
+       while ($junk = <P>) {
+           last if $junk =~ /^\)/;
+           push (@panelcopper, $junk);
+       }
+    }
+}
+
+$tmp = "/tmp/panel$$.pcb";
+
+$start = $paste[0];
+$start =~ s/\0.*//;
+
+$panel =~ s/\.pcb$//;
+&baseboard($start, $panel_width, $panel_height, $panel);
+
+$lastboard = undef;
+for $paste (sort @paste) {
+    ($pcb, $rot, $mx, $my) = split(/\0/, $paste);
+    if ($lastboard ne $pcb) {
+       &loadboard ($pcb);
+       $lastboard = $pcb;
+       $lastrot = 0;
+    }
+    while ($lastrot != $rot) {
+       print PS "PasteBuffer(Rotate,1)\n";
+       $lastrot = ($lastrot+1) % 4;
+    }
+    print PS "PasteBuffer(ToLayout,$mx,$my)\n";
+}
+
+&done();
diff --git a/pcb2panel b/pcb2panel
new file mode 100755 (executable)
index 0000000..ddc7bbf
--- /dev/null
+++ b/pcb2panel
@@ -0,0 +1,101 @@
+#!/usr/bin/perl
+# -*- perl -*-
+
+# Copyright 2006 DJ Delorie <dj@delorie.com>
+# Released under the terms of the GNU General Public License, version 2
+
+$mydir = $0;
+if ($mydir =~ m@/@) {
+    $mydir =~ s@[^/]*$@@;
+} else {
+    $mydir = ".";
+}
+
+require "$mydir/panel.pl";
+
+if (! @ARGV) {
+    print "Usage: pcb2panel board1.pcb board2.pcb board3.pcb > boards.pcb\n";
+    print "Then edit boards.pcb, putting each outline where you want it\n";
+    print "and sizing the board.  Then:\n";
+    print "panel2pcb boards.pcb\n";
+    print "and edit/print boards.panel.pcb\n";
+    exit 0;
+}
+
+for $pcb (@ARGV) {
+    $base = $pcb;
+    $base =~ s@.*/@@;
+    $base =~ s@\.pcb$@@;
+    $base{$pcb} = $base;
+    push (@pcbs, $pcb);
+    open(PCB, $pcb);
+    while (<PCB>) {
+       if (/^PCB\[".*" (\S+) (\S+)\]/) {
+           $width{$pcb} = &parseval($1);
+           $height{$pcb} = &parseval($2);
+           printf STDERR "%s : %d x %d\n", $pcb, $width{$pcb}, $height{$pcb};
+           last;
+       }
+    }
+    $outline = '';
+    while (<PCB>) {
+       if (/Layer\(.*"outline"\)/) {
+           $junk = <PCB>; # open paren
+           while (<PCB>) {
+               last if /^\)/; # close paren
+               ($args) = m@\[(.*)\]@;
+               ($x1, $y1, $x2, $y2, $width) = split(' ', $args);
+               $outline .= "  ElementLine[$x1 $y1 $x2 $y2 $width]\n";
+           }
+       }
+    }
+    push (@outlines, $outline);
+    close PCB;
+}
+
+$pw = 10000;
+$ph = 0;
+for $pcb (@pcbs) {
+    $pw += 10000;
+    $pw += $width{$pcb};
+    $ph = $height{$pcb} if $ph < $height{$pcb};
+}
+$ph += 20000;
+
+print "PCB[\"\" $pw $ph]\n";
+print "Grid[10000.0 0 0 1]\n";
+print "DRC[799 799 800 100 1500 800]\n";
+print "Groups(\"1,c:2,s\")\n"; #"
+
+$x = 10000;
+$y = 10000;
+for ($i=0; $i<@pcbs; $i++) {
+    $pcb = $pcbs[$i];
+    $outline = $outlines[$i];
+    $desc = $pcb;
+    $name = $base{$pcb};
+    $value = "$width{$pcb} x $height{$pcb}";
+    $w = $width{$pcb};
+    $h = $height{$pcb};
+
+    print "Element[\"\" \"$desc\" \"$name\" \"$value\" $x $y 2000 2000 0 50 \"\"] (\n";
+    print "  Pin[0  0 1000 0 0 400 \"1\" \"1\" \"\"]\n";
+    print "  Pin[$w 0 1000 0 0 400 \"2\" \"2\" \"\"]\n";
+    if ($outline =~ /\S/) {
+       print $outline;
+    } else {
+       print "  ElementLine[0 0 $w 0 100]\n";
+       print "  ElementLine[0 0 0 $h 100]\n";
+       print "  ElementLine[$w 0 $w $h 100]\n";
+       print "  ElementLine[0 $h $w $h 100]\n";
+    }
+    print ")\n";
+    $x += $w + 10000;
+}
+
+print "Layer(1 \"component\")()\n";
+print "Layer(2 \"solder\")()\n";
+print "Layer(3 \"silk\")()\n";
+print "Layer(4 \"silk\")()\n";
+
+exit 0;