Add footprints from telegps
authorKeith Packard <keithp@keithp.com>
Thu, 21 Mar 2013 18:27:58 +0000 (11:27 -0700)
committerKeith Packard <keithp@keithp.com>
Thu, 21 Mar 2013 18:27:58 +0000 (11:27 -0700)
Signed-off-by: Keith Packard <keithp@keithp.com>
packages/0604.fp [new file with mode: 0644]
packages/Makefile
packages/Venus634FLPx.fp [new file with mode: 0644]
packages/ap.10g.5c [new file with mode: 0644]
packages/microSD.fp [new file with mode: 0644]
packages/qfn-16.py [new file with mode: 0644]
packages/ti-qfn20.py [new file with mode: 0644]

diff --git a/packages/0604.fp b/packages/0604.fp
new file mode 100644 (file)
index 0000000..2f0f131
--- /dev/null
@@ -0,0 +1,27 @@
+       # grab the input values and convert to 1/100 mil
+       # how much to grow the pads by for soldermask [1/100 mil]
+       # clearance from planes [1/100 mil]
+       # silk screen width  [1/100 mil]
+       # courtyard silk screen width  [1/100 mil]
+# element_flags, description, pcb-name, value, mark_x, mark_y,
+# text_x, text_y, text_direction, text_scale, text_flags
+Element[0x00000000 "Standard SMT resistor, capacitor etc" "" "0604" 0 0 -3150 -3150 0 100 ""]
+(
+# 
+# Pad[x1, y1, x2, y2, thickness, clearance, mask, name , pad number, flags]
+       Pad[-2559 -542
+               -2559 542
+               2952 2000 3552 "1" "1" "square"]
+           Pad[2559 -542
+               2559 542
+               2952 2000 3552 "2" "2" "square"]
+#
+# This draws a 1 mil placement courtyard outline in silk.  It should probably
+# not be included since you wont want to try and fab a 1 mil silk line.  Then
+# again, it is most useful during parts placement.  It really is time for some
+# additional non-fab layers...
+#      ElementLine[eval(-1*V1/2) eval(-1*V2/2) eval(-1*V1/2) eval(   V2/2) CYW]
+#      ElementLine[eval(-1*V1/2) eval(-1*V2/2) eval(   V1/2) eval(-1*V2/2) CYW]
+#      ElementLine[eval(   V1/2) eval(   V2/2) eval(   V1/2) eval(-1*V2/2) CYW]
+#      ElementLine[eval(   V1/2) eval(   V2/2) eval(-1*V1/2) eval(   V2/2) CYW]
+)
index 50d5924e6197b31fccad36fab7f147f565485f5e..7e57f532dc1516178a2769aac9e177a4ad1ffe81 100644 (file)
@@ -29,7 +29,10 @@ FOOTPRINTS= \
        NDK32.fp \
        sma-edge.fp \
        MO-220.fp \
-       8ufson2x2.fp
+       8ufson2x2.fp \
+       ti-qfn20.fp \
+       qfn-16.fp \
+       ap.10g.fp
 
 .5c.fp:
        nickle $*.5c > $@
diff --git a/packages/Venus634FLPx.fp b/packages/Venus634FLPx.fp
new file mode 100644 (file)
index 0000000..3d7e1f1
--- /dev/null
@@ -0,0 +1,56 @@
+# author: Bdale Garbee
+# email: bdale@gag.com
+# dist-license: GPL 2
+# use-license: unlimited
+Element[0x0 "Venus634FLPx" "" "" 0 0 0 0 0 100 0x0]
+(
+   Pad[ -15747 -20550 -15747 -18030 1417 1732 1500 "pin11" "11" 0x0100]
+   Pad[ -15747 18031 -15747 20551 1417 1732 1500 "pin23" "23" 0x0100]
+   Pad[ 18031 -15747 20551 -15747 1417 1732 1500 "pin44" "44" 0x0100]
+   Pad[ -20550 -15747 -18030 -15747 1417 1732 1500 "pin12" "12" 0x0100]
+   Pad[ -12597 -20550 -12597 -18030 1417 1732 1500 "pin10" "10" 0x0100]
+   Pad[ -12597 18031 -12597 20551 1417 1732 1500 "pin24" "24" 0x0100]
+   Pad[ 18031 -12597 20551 -12597 1417 1732 1500 "pin43" "43" 0x0100]
+   Pad[ -20550 -12597 -18030 -12597 1417 1732 1500 "pin13" "13" 0x0100]
+   Pad[ -9448 -20550 -9448 -18030 1417 1732 1500 "pin9" "9" 0x0100]
+   Pad[ -9448 18031 -9448 20551 1417 1732 1500 "pin25" "25" 0x0100]
+   Pad[ 18031 -9448 20551 -9448 1417 1732 1500 "pin42" "42" 0x0100]
+   Pad[ -20550 -9448 -18030 -9448 1417 1732 1500 "pin14" "14" 0x0100]
+   Pad[ -6298 -20550 -6298 -18030 1417 1732 1500 "pin8" "8" 0x0100]
+   Pad[ -6298 18031 -6298 20551 1417 1732 1500 "pin26" "26" 0x0100]
+   Pad[ 18031 -6298 20551 -6298 1417 1732 1500 "pin41" "41" 0x0100]
+   Pad[ -20550 -6298 -18030 -6298 1417 1732 1500 "pin15" "15" 0x0100]
+   Pad[ -3149 -20550 -3149 -18030 1417 1732 1500 "pin7" "7" 0x0100]
+   Pad[ -3149 18031 -3149 20551 1417 1732 1500 "pin27" "27" 0x0100]
+   Pad[ 18031 -3149 20551 -3149 1417 1732 1500 "pin40" "40" 0x0100]
+   Pad[ -20550 -3149 -18030 -3149 1417 1732 1500 "pin16" "16" 0x0100]
+   Pad[ 0 -20550 0 -18030 1417 1732 1500 "pin6" "6" 0x0100]
+   Pad[ 0 18031 0 20551 1417 1732 1500 "pin28" "28" 0x0100]
+   Pad[ 18031 0 20551 0 1417 1732 1500 "pin39" "39" 0x0100]
+   Pad[ -20550 0 -18030 0 1417 1732 1500 "pin17" "17" 0x0100]
+   Pad[ 3150 -20550 3150 -18030 1417 1732 1500 "pin5" "5" 0x0100]
+   Pad[ 3150 18031 3150 20551 1417 1732 1500 "pin29" "29" 0x0100]
+   Pad[ 18031 3150 20551 3150 1417 1732 1500 "pin38" "38" 0x0100]
+   Pad[ -20550 3150 -18030 3150 1417 1732 1500 "pin18" "18" 0x0100]
+   Pad[ 6299 -20550 6299 -18030 1417 1732 1500 "pin4" "4" 0x0100]
+   Pad[ 6299 18031 6299 20551 1417 1732 1500 "pin30" "30" 0x0100]
+   Pad[ 18031 6299 20551 6299 1417 1732 1500 "pin37" "37" 0x0100]
+   Pad[ -20550 6299 -18030 6299 1417 1732 1500 "pin19" "19" 0x0100]
+   Pad[ 9449 -20550 9449 -18030 1417 1732 1500 "pin3" "3" 0x0100]
+   Pad[ 9449 18031 9449 20551 1417 1732 1500 "pin31" "31" 0x0100]
+   Pad[ 18031 9449 20551 9449 1417 1732 1500 "pin36" "36" 0x0100]
+   Pad[ -20550 9449 -18030 9449 1417 1732 1500 "pin20" "20" 0x0100]
+   Pad[ 12598 -20550 12598 -18030 1417 1732 1500 "pin2" "2" 0x0100]
+   Pad[ 12598 18031 12598 20551 1417 1732 1500 "pin32" "32" 0x0100]
+   Pad[ 18031 12598 20551 12598 1417 1732 1500 "pin35" "35" 0x0100]
+   Pad[ -20550 12598 -18030 12598 1417 1732 1500 "pin21" "21" 0x0100]
+   Pad[ 15748 -20550 15748 -18030 1417 1732 1500 "pin1" "1" 0x0100]
+   Pad[ 15748 18031 15748 20551 1417 1732 1500 "pin33" "33" 0x0100]
+   Pad[ 18031 15748 20551 15748 1417 1732 1500 "pin34" "34" 0x0100]
+   Pad[ -20550 15748 -18030 15748 1417 1732 1500 "pin22" "22" 0x0100]
+   ElementLine[ -19684 -19684 -19684 19685 1000 ]
+   ElementLine[ -19684 19685 19685 19685 1000 ]
+   ElementLine[ 19685 19685 19685 -19684 1000 ]
+   ElementLine[ 19685 -19684 -19684 -19684 1000 ]
+   ElementArc[ 20866 -20865 500 500 0 360 1000 ]
+)
diff --git a/packages/ap.10g.5c b/packages/ap.10g.5c
new file mode 100644 (file)
index 0000000..e69588e
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Copyright © 2012 Keith Packard <keithp@keithp.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+load "footprint.5c"
+import Footprint;
+
+element_start("ap.10g");
+
+real   edge_y = 5.85;
+
+real   hole_spacing = 9.7;
+real   hole_diameter = 1.5;
+real   hole_x = hole_spacing/2;
+real   hole_y = edge_y - 1.9;
+
+real   v_pad_width = 1.25;
+real   v_pad_height = 2.10;
+
+real   v_pad_x = 11.26 / 2 - v_pad_width / 2;
+real   v_pad_y = 3.65 - 1.25 - v_pad_height / 2;
+
+real   h_pad_width = 2.10;
+real   h_pad_height = 1.25;
+
+real   h_pad_x = 9.1 / 2 - h_pad_width / 2;
+real   h_pad_y = 0 + h_pad_height / 2;
+
+real   feed_width = 2.1;
+real   feed_height = 1.25;
+real   feed_clear = 0.5;
+real   feed_x = 0;
+real   feed_y = feed_height / 2;
+
+real   line_width = 1.29;
+real   line_height = 2;
+real   line_x = 0;
+real   line_y = feed_y + line_height/2;
+real   line_clear = feed_clear;
+
+/* Center point is at the "top" of the feed pad */
+
+/* Draw a line at the edge of the board for alignment */
+
+real   mark_y = -edge_y + mils1002mm(line_thickness) / 2;
+                                                     
+line(-hole_x, mark_y, hole_x, mark_y);
+
+/* alignment holes */
+pin_mm_clear(-hole_x, -hole_y, hole_diameter, .35, 0.35, "2", "2");
+pin_mm_clear(hole_x, -hole_y, hole_diameter, .35, 0.35, "2", "2");
+
+/* vertical pads */
+
+pad_mm_clear(-v_pad_x, -v_pad_y, v_pad_width, v_pad_height, 0, "2", "2");
+pad_mm_clear( v_pad_x, -v_pad_y, v_pad_width, v_pad_height, 0, "2", "2");
+
+/* horizontal pads */
+
+pad_mm_clear(-h_pad_x,  h_pad_y, h_pad_width, h_pad_height, 0, "2", "2");
+pad_mm_clear( h_pad_x,  h_pad_y, h_pad_width, h_pad_height, 0, "2", "2");
+
+/* feed pad */
+
+pad_mm_clear (feed_x,  feed_y, feed_width, feed_height, feed_clear, "1", "1");
+
+/* feed line */
+
+pad_mm_clear (line_x,  line_y, line_width, line_height, line_clear, "1", "1");
+
+element_end();
diff --git a/packages/microSD.fp b/packages/microSD.fp
new file mode 100644 (file)
index 0000000..80d70e7
--- /dev/null
@@ -0,0 +1,23 @@
+# author: Bdale Garbee
+# email: bdale@gag.com
+# dist-license: GPL 2
+# use-license: unlimited
+Element[0x0 "microSD" "" "" 0 0 0 0 0 100 0x0]
+(
+   Pad[ -26771 13287 -26771 15059 4134 0 4724 "9" "9" 0x0100]
+   Pad[ 26772 13287 26772 15059 4134 0 4724 "9" "9" 0x0100]
+   Pad[ -26771 46358 -26771 48130 4134 0 4724 "9" "9" 0x0100]
+   Pad[ 26772 46358 26772 48130 4134 0 4724 "9" "9" 0x0100]
+   Pad[ 12480 36398 12480 38169 2362 0 2953 "pin1" "1" 0x0100]
+   Pad[ 8150 36398 8150 38169 2362 0 2953 "pin2" "2" 0x0100]
+   Pad[ 3819 36398 3819 38169 2362 0 2953 "pin3" "3" 0x0100]
+   Pad[ -511 36398 -511 38169 2362 0 2953 "pin4" "4" 0x0100]
+   Pad[ -4842 36398 -4842 38169 2362 0 2953 "pin5" "5" 0x0100]
+   Pad[ -9172 36398 -9172 38169 2362 0 2953 "pin6" "6" 0x0100]
+   Pad[ -13503 36398 -13503 38169 2362 0 2953 "pin7" "7" 0x0100]
+   Pad[ -17834 36398 -17834 38169 2362 0 2953 "pin8" "8" 0x0100]
+   ElementLine[ 26772 0 26772 52362 1000 ]
+   ElementLine[ -26771 0 -26771 52362 1000 ]
+   ElementLine[ -26771 0 26772 0 1000 ]
+   ElementLine[ -26771 52362 26772 52362 1000 ]
+)
diff --git a/packages/qfn-16.py b/packages/qfn-16.py
new file mode 100644 (file)
index 0000000..f07317b
--- /dev/null
@@ -0,0 +1,145 @@
+#!/usr/bin/python
+# Copyright 2011 by Bdale Garbee <bdale@gag.com>.  GPLv2
+#
+# Program to emit PCB footprint for QFN-16 package used by the RFPA0133
+#
+
+# dimensions in mm from the RFPA0133
+
+PinWidth = 0.28          # b   
+PinHeight = 1  # L
+PinSpacing = 0.50 # e
+Overall = 4.25    # E
+GndSquare = 1.7  # D2 & E2
+CoreSquare = 1.7
+PinClearance = 2 * (PinSpacing - PinWidth)
+
+# ATMEL specifies 120-150 microns between pad and solder mask
+# AT88RF1354 Appplication note
+#
+PinResist = PinWidth + (2 * 0.07)
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+
+def mm2mils100( mm ):
+       return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print '# author: Keith Packard'
+print '# email: keithp@keithp.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "qfn-16" "" "" 0 0 0 0 0 100 0x0]'
+print "("
+
+# pad under the chip, must be grounded
+print '   Pad[',\
+       mm2mils100(0), \
+       mm2mils100(0), \
+       mm2mils100(0), \
+       mm2mils100(0), \
+       mm2mils100(GndSquare), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin17" "17" "square,nopaste"]'
+
+# vias in the ground pad under the chip
+for viarow in range (-1,1):
+  for viacol in range (-1,1):
+    print '   Pin[',\
+       mm2mils100(1.8 * viacol * CoreSquare / 3 + .9 * CoreSquare/3), \
+       mm2mils100(1.8 * viarow * CoreSquare / 3 + .9 * CoreSquare/3), \
+       2600, \
+       2500, \
+       0, \
+       1300, \
+       '"pin17" "17" 0x0002]'
+
+# break pad under chip into a grid to control the resist and paste masks
+
+blocks=3;
+
+for viarow in range (-1, 2):
+  for viacol in range (-1, 2):
+    if (viarow in (-1, 1)) and (viacol in (-1, 1)):
+      # copper sub-square with resist over vias
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100((CoreSquare)/blocks), \
+       0, \
+       0, \
+       '"pin17" "17" "square,nopaste"]'
+    else:
+      # copper sub-square without resist
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100((CoreSquare)/blocks), \
+       0, \
+       mm2mils100((CoreSquare)/blocks), \
+       '"pin17" "17" "square,nopaste"]'
+      # copper spot to control paste mask generation
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       1500, \
+       0, \
+       mm2mils100((CoreSquare)/blocks), \
+       '"pin17" "17" "square"]'
+
+# pins
+for pin in range (1,5):
+    print '   Pad[',\
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (13-pin), '"%i"' % (13-pin), '0x0000]'
+
+    print '   Pad[',\
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(+Overall/2 - PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % pin, '"%i"' % pin, '0x0000]'
+      
+    print '   Pad[',\
+       mm2mils100(Overall/2 - PinHeight + PinWidth/2), \
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(Overall/2 - PinWidth/2), \
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (9-pin), '"%i"' % (9-pin), '0x0000]'
+
+    print '   Pad[',\
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100((-2.5 + pin) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (12+pin), '"%i"' % (12+pin), '0x0000]'
+
+print '   ElementArc[',\
+       mm2mils100(-2.0), \
+       mm2mils100(2.0), \
+       '500 500 0 360 1000 ]'
+print ")"
diff --git a/packages/ti-qfn20.py b/packages/ti-qfn20.py
new file mode 100644 (file)
index 0000000..4e6c754
--- /dev/null
@@ -0,0 +1,145 @@
+#!/usr/bin/python
+# Copyright 2011 by Bdale Garbee <bdale@gag.com>.  GPLv2
+#
+# Program to emit PCB footprint for QFN-20 package used by the CC115L
+#
+
+# dimensions in mm from the CC115L datasheet
+
+PinWidth = 0.28          # b   
+PinHeight = 1  # L
+PinSpacing = 0.50 # e
+Overall = 4.9    # E
+GndSquare = 2.40  # D2 & E2
+CoreSquare = 2.40
+PinClearance = 2 * (PinSpacing - PinWidth)
+
+# ATMEL specifies 120-150 microns between pad and solder mask
+# AT88RF1354 Appplication note
+#
+PinResist = PinWidth + (2 * 0.07)
+
+import sys
+
+# we're going to use the 1/100 of a mil fundamental unit form
+
+def mm2mils100( mm ):
+       return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print '# author: Keith Packard'
+print '# email: keithp@keithp.com'
+print '# dist-license: GPL 2'
+print '# use-license: unlimited'
+
+print 'Element[0x0 "qfn-20" "" "" 0 0 0 0 0 100 0x0]'
+print "("
+
+# pad under the chip, must be grounded
+print '   Pad[',\
+       mm2mils100(0), \
+       mm2mils100(0), \
+       mm2mils100(0), \
+       mm2mils100(0), \
+       mm2mils100(GndSquare), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin21" "21" "square,nopaste"]'
+
+# vias in the ground pad under the chip
+for viarow in range (-1,1):
+  for viacol in range (-1,1):
+    print '   Pin[',\
+       mm2mils100(2 * viacol * CoreSquare / 3 + CoreSquare/3), \
+       mm2mils100(2 * viarow * CoreSquare / 3 + CoreSquare/3), \
+       2900, \
+       2500, \
+       0, \
+       1500, \
+       '"pin21" "21" 0x0002]'
+
+# break pad under chip into a grid to control the resist and paste masks
+
+blocks=3;
+
+for viarow in range (-1, 2):
+  for viacol in range (-1, 2):
+    if (viarow in (-1, 1)) and (viacol in (-1, 1)):
+      # copper sub-square with resist over vias
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100((CoreSquare)/blocks), \
+       0, \
+       0, \
+       '"pin21" "21" "square,nopaste"]'
+    else:
+      # copper sub-square without resist
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100((CoreSquare)/blocks), \
+       0, \
+       mm2mils100((CoreSquare)/blocks), \
+       '"pin21" "21" "square,nopaste"]'
+      # copper spot to control paste mask generation
+      print '   Pad[',\
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       mm2mils100(viacol * CoreSquare / blocks), \
+       mm2mils100(viarow * CoreSquare / blocks), \
+       1500, \
+       0, \
+       mm2mils100((CoreSquare)/blocks), \
+       '"pin21" "21" "square"]'
+
+# pins
+for pin in range (1,6):
+    print '   Pad[',\
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (16-pin), '"%i"' % (16-pin), '0x0000]'
+
+    print '   Pad[',\
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(+Overall/2 - PinHeight + PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(+Overall/2 - PinWidth/2), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % pin, '"%i"' % pin, '0x0000]'
+      
+    print '   Pad[',\
+       mm2mils100(Overall/2 - PinHeight + PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(Overall/2 - PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (11-pin), '"%i"' % (11-pin), '0x0000]'
+
+    print '   Pad[',\
+       mm2mils100(-Overall/2 + PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(-Overall/2 + PinHeight - PinWidth/2), \
+       mm2mils100((-3 + pin) * PinSpacing), \
+       mm2mils100(PinWidth), \
+       mm2mils100(PinClearance), \
+       mm2mils100(PinResist), \
+       '"pin%i"' % (15+pin), '"%i"' % (15+pin), '0x0000]'
+
+print '   ElementArc[',\
+       mm2mils100(-2.0), \
+       mm2mils100(2.0), \
+       '500 500 0 360 1000 ]'
+print ")"