-#!/usr/bin/python2
+#!/usr/bin/python3
# Copyright 2011 by Bdale Garbee <bdale@gag.com>. GPLv2
#
# Program to emit PCB footprint for
# 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: Bdale Garbee'
-print '# email: bdale@gag.com'
-print '# dist-license: GPL 2'
-print '# use-license: unlimited'
-
-print 'Element[0x0 "USBmicroB" "" "" 0 0 -10161 -12011 0 100 0x0]'
-print "("
-print ' Pad[', \
- mm2mils100(0), \
- mm2mils100(PinWidth/2), \
- mm2mils100(0), \
- mm2mils100(PinHeight - PinWidth/2), \
- mm2mils100(PinWidth), \
- (MinClearance*2), \
- mm2mils100(PinWidth)+(MaskDelta*2), \
- '"D+" "3" 0x0100]'
-
-print ' Pad[', \
- mm2mils100(-PinSpacing), \
- mm2mils100(PinWidth/2), \
- mm2mils100(-PinSpacing), \
- mm2mils100(PinHeight - PinWidth/2), \
- mm2mils100(PinWidth), \
- (MinClearance*2), \
- mm2mils100(PinWidth)+(MaskDelta*2), \
- '"D-" "2" 0x0100]'
-
-print ' Pad[', \
- mm2mils100(PinSpacing), \
- mm2mils100(PinWidth/2), \
- mm2mils100(PinSpacing), \
- mm2mils100(PinHeight - PinWidth/2), \
- mm2mils100(PinWidth), \
- (MinClearance*2), \
- mm2mils100(PinWidth)+(MaskDelta*2), \
- '"HS" "4" 0x0100]'
-
-print ' Pad[', \
- mm2mils100(-PinSpacing*2), \
- mm2mils100(PinWidth/2), \
- mm2mils100(-PinSpacing*2), \
- mm2mils100(PinHeight - PinWidth/2), \
- mm2mils100(PinWidth), \
- (MinClearance*2), \
- mm2mils100(PinWidth)+(MaskDelta*2), \
- '"VBUS" "1" 0x0100]'
-
-print ' Pad[', \
- mm2mils100(PinSpacing*2), \
- mm2mils100(PinWidth/2), \
- mm2mils100(PinSpacing*2), \
- mm2mils100(PinHeight - PinWidth/2), \
- mm2mils100(PinWidth), \
- (MinClearance*2), \
- mm2mils100(PinWidth)+(MaskDelta*2), \
- '"GND" "5" 0x0100]'
+ return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
+
+print('# author: Bdale Garbee')
+print('# email: bdale@gag.com')
+print('# dist-license: GPL 3')
+print('# use-license: unlimited')
+
+print('Element[0x0 "USBmicroB" "" "" 0 0 -10161 -12011 0 100 0x0]')
+print("(")
+print(' Pad[', \
+ mm2mils100(0), \
+ mm2mils100(PinWidth/2), \
+ mm2mils100(0), \
+ mm2mils100(PinHeight - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ (MinClearance*2), \
+ mm2mils100(PinWidth)+(MaskDelta*2), \
+ '"D+" "3" 0x0100]')
+
+print(' Pad[', \
+ mm2mils100(-PinSpacing), \
+ mm2mils100(PinWidth/2), \
+ mm2mils100(-PinSpacing), \
+ mm2mils100(PinHeight - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ (MinClearance*2), \
+ mm2mils100(PinWidth)+(MaskDelta*2), \
+ '"D-" "2" 0x0100]')
+
+print(' Pad[', \
+ mm2mils100(PinSpacing), \
+ mm2mils100(PinWidth/2), \
+ mm2mils100(PinSpacing), \
+ mm2mils100(PinHeight - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ (MinClearance*2), \
+ mm2mils100(PinWidth)+(MaskDelta*2), \
+ '"HS" "4" 0x0100]')
+
+print(' Pad[', \
+ mm2mils100(-PinSpacing*2), \
+ mm2mils100(PinWidth/2), \
+ mm2mils100(-PinSpacing*2), \
+ mm2mils100(PinHeight - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ (MinClearance*2), \
+ mm2mils100(PinWidth)+(MaskDelta*2), \
+ '"VBUS" "1" 0x0100]')
+
+print(' Pad[', \
+ mm2mils100(PinSpacing*2), \
+ mm2mils100(PinWidth/2), \
+ mm2mils100(PinSpacing*2), \
+ mm2mils100(PinHeight - PinWidth/2), \
+ mm2mils100(PinWidth), \
+ (MinClearance*2), \
+ mm2mils100(PinWidth)+(MaskDelta*2), \
+ '"GND" "5" 0x0100]')
# the two ground / mounting tabs in line with signal pins
-print ' Pad[', \
- mm2mils100(TabInner + TabHeight/2), \
- mm2mils100(TabHeight/2), \
- mm2mils100(TabInner + TabWidth - TabHeight/2), \
- mm2mils100(TabHeight/2), \
- mm2mils100(TabHeight), \
- (MinClearance*2), \
- mm2mils100(TabHeight)+(MaskDelta*2), \
- '"tab1" "G" 0x0100]'
-
-print ' Pad[', \
- mm2mils100(-TabInner - TabHeight/2), \
- mm2mils100(TabHeight/2), \
- mm2mils100(-TabInner - TabWidth + TabHeight/2), \
- mm2mils100(TabHeight/2), \
- mm2mils100(TabHeight), \
- (MinClearance*2), \
- mm2mils100(TabHeight)+(MaskDelta*2), \
- '"tab2" "G" 0x0100]'
+print(' Pad[', \
+ mm2mils100(TabInner + TabHeight/2), \
+ mm2mils100(TabHeight/2), \
+ mm2mils100(TabInner + TabWidth - TabHeight/2), \
+ mm2mils100(TabHeight/2), \
+ mm2mils100(TabHeight), \
+ (MinClearance*2), \
+ mm2mils100(TabHeight)+(MaskDelta*2), \
+ '"tab1" "G" 0x0100]')
+
+print(' Pad[', \
+ mm2mils100(-TabInner - TabHeight/2), \
+ mm2mils100(TabHeight/2), \
+ mm2mils100(-TabInner - TabWidth + TabHeight/2), \
+ mm2mils100(TabHeight/2), \
+ mm2mils100(TabHeight), \
+ (MinClearance*2), \
+ mm2mils100(TabHeight)+(MaskDelta*2), \
+ '"tab2" "G" 0x0100]')
# the two ground / mounting tabs near the center of area
-print ' Pad[', \
- mm2mils100(PadInner + PadHeight/2), \
- mm2mils100(PadCenter), \
- mm2mils100(PadInner + PadWidth - PadHeight/2), \
- mm2mils100(PadCenter), \
- mm2mils100(PadHeight), \
- (MinClearance*2), \
- mm2mils100(PadHeight)+(MaskDelta*2), \
- '"tab3" "G" 0x0100]'
-
-print ' Pad[', \
- mm2mils100(-PadInner - PadHeight/2), \
- mm2mils100(PadCenter), \
- mm2mils100(-PadInner - PadWidth + PadHeight/2), \
- mm2mils100(PadCenter), \
- mm2mils100(PadHeight), \
- (MinClearance*2), \
- mm2mils100(PadHeight)+(MaskDelta*2), \
- '"tab4" "G" 0x0100]'
+print(' Pad[', \
+ mm2mils100(PadInner + PadHeight/2), \
+ mm2mils100(PadCenter), \
+ mm2mils100(PadInner + PadWidth - PadHeight/2), \
+ mm2mils100(PadCenter), \
+ mm2mils100(PadHeight), \
+ (MinClearance*2), \
+ mm2mils100(PadHeight)+(MaskDelta*2), \
+ '"tab3" "G" 0x0100]')
+
+print(' Pad[', \
+ mm2mils100(-PadInner - PadHeight/2), \
+ mm2mils100(PadCenter), \
+ mm2mils100(-PadInner - PadWidth + PadHeight/2), \
+ mm2mils100(PadCenter), \
+ mm2mils100(PadHeight), \
+ (MinClearance*2), \
+ mm2mils100(PadHeight)+(MaskDelta*2), \
+ '"tab4" "G" 0x0100]')
# the two "wing tab" ground / mounting pads on the sides
-print ' Pad[', \
- mm2mils100(WingInner + WingWidth/2), \
- mm2mils100(PadCenter - WingHeight/2 + WingWidth/2), \
- mm2mils100(WingInner + WingWidth/2), \
- mm2mils100(PadCenter + WingHeight/2 - WingWidth/2), \
- mm2mils100(WingWidth), \
- (MinClearance*2), \
- mm2mils100(WingWidth)+(MaskDelta*2), \
- '"tab5" "G" 0x0100]'
-
-print ' Pad[', \
- mm2mils100(-WingInner - WingWidth/2), \
- mm2mils100(PadCenter - WingHeight/2 + WingWidth/2), \
- mm2mils100(-WingInner - WingWidth/2), \
- mm2mils100(PadCenter + WingHeight/2 - WingWidth/2), \
- mm2mils100(WingWidth), \
- (MinClearance*2), \
- mm2mils100(WingWidth)+(MaskDelta*2), \
- '"tab6" "G" 0x0100]'
-
-# box around actual connector size, with line at PCB edge
-#
-#print ' ElementLine[',\
-# mm2mils100(-BoxWidth/2), \
-# mm2mils100(0), \
-# mm2mils100(-BoxWidth/2), \
-# mm2mils100(BoxHeight), \
-# '1000 ]'
-#
-#print ' ElementLine[',\
-# mm2mils100(BoxWidth/2), \
-# mm2mils100(0), \
-# mm2mils100(BoxWidth/2), \
-# mm2mils100(BoxHeight), \
-# '1000 ]'
-#
-#print ' ElementLine[',\
-# mm2mils100(-BoxWidth/2), \
-# mm2mils100(0), \
-# mm2mils100(BoxWidth/2), \
-# mm2mils100(0), \
-# '1000 ]'
-#
-#print ' ElementLine[',\
-# mm2mils100(-BoxWidth/2), \
-# mm2mils100(BoxHeight), \
-# mm2mils100(BoxWidth/2), \
-# mm2mils100(BoxHeight), \
-# '1000 ]'
-#
-#print ' ElementLine[',\
-# mm2mils100(-EdgeWidth/2), \
-# mm2mils100(EdgeHeight), \
-# mm2mils100(-BoxWidth/2), \
-# mm2mils100(EdgeHeight), \
-# '1000 ]'
-#
-#print ' ElementLine[',\
-# mm2mils100(BoxWidth/2), \
-# mm2mils100(EdgeHeight), \
-# mm2mils100(EdgeWidth/2), \
-# mm2mils100(EdgeHeight), \
-# '1000 ]'
-#
-print ")"
+print(' Pad[', \
+ mm2mils100(WingInner + WingWidth/2), \
+ mm2mils100(PadCenter - WingHeight/2 + WingWidth/2), \
+ mm2mils100(WingInner + WingWidth/2), \
+ mm2mils100(PadCenter + WingHeight/2 - WingWidth/2), \
+ mm2mils100(WingWidth), \
+ (MinClearance*2), \
+ mm2mils100(WingWidth)+(MaskDelta*2), \
+ '"tab5" "G" 0x0100]')
+
+print(' Pad[', \
+ mm2mils100(-WingInner - WingWidth/2), \
+ mm2mils100(PadCenter - WingHeight/2 + WingWidth/2), \
+ mm2mils100(-WingInner - WingWidth/2), \
+ mm2mils100(PadCenter + WingHeight/2 - WingWidth/2), \
+ mm2mils100(WingWidth), \
+ (MinClearance*2), \
+ mm2mils100(WingWidth)+(MaskDelta*2), \
+ '"tab6" "G" 0x0100]')
+
+print(")")