convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / TO252AA.py
1 #!/usr/bin/python3
2 # Copyright 2015 by Bdale Garbee <bdale@gag.com>.  GPLv3
3 #
4 # Emit PCB footprint for TO-252AA parts from International Rectifier
5 #
6
7 # dimensions in mm from ir/dpakfootprint.pdf
8
9 PinWidth = 1.50
10 PinHeight = 2.50
11 PinSpacing = 4.60
12
13 PadSquare = 7.00
14 Pad2Pin = 6.90
15
16 BodyWidth = 7.00
17 BodyHeight = 10.50
18 BodyOffset = 1.90
19
20 import sys
21
22 # we're going to use the 1/100 of a mil fundamental unit form
23 def mm2mils100( mm ):
24         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
25
26 print('# author: Bdale Garbee')
27 print('# email: bdale@gag.com')
28 print('# dist-license: GPL 3')
29 print('# use-license: unlimited')
30
31 print('Element[0x0 "TO252AA" "" "" 0 0 0 0 0 100 0x0]')
32 print("(")
33 print('   Pad[',\
34         mm2mils100(0), \
35         mm2mils100(0), \
36         mm2mils100(0), \
37         mm2mils100(0), \
38         mm2mils100(PadSquare), \
39         mm2mils100(1.5), \
40         mm2mils100(PadSquare+0.4), \
41         '"pin1" "1" 0x0100]')
42
43 print('   Pad[',\
44         mm2mils100(-PinSpacing/2 - PinWidth/2), \
45         mm2mils100(Pad2Pin + PinWidth/2), \
46         mm2mils100(-PinSpacing/2 - PinWidth/2), \
47         mm2mils100(Pad2Pin - PinWidth/2), \
48         mm2mils100(PinWidth), \
49         mm2mils100(1.5), \
50         mm2mils100(PinWidth+0.4), \
51         '"pin3" "3" 0x0100]')
52
53 print('   Pad[',\
54         mm2mils100(PinSpacing/2 + PinWidth/2), \
55         mm2mils100(Pad2Pin + PinWidth/2), \
56         mm2mils100(PinSpacing/2 + PinWidth/2), \
57         mm2mils100(Pad2Pin - PinWidth/2), \
58         mm2mils100(PinWidth), \
59         mm2mils100(1.5), \
60         mm2mils100(PinWidth+0.4), \
61         '"pin2" "2" 0x0100]')
62
63 print('   ElementLine[',\
64         mm2mils100(-BodyWidth/2), \
65         mm2mils100(BodyOffset - BodyHeight/2), \
66         mm2mils100(BodyWidth/2), \
67         mm2mils100(BodyOffset - BodyHeight/2), \
68         '1000 ]')
69
70 print('   ElementLine[',\
71         mm2mils100(-BodyWidth/2), \
72         mm2mils100(BodyOffset + BodyHeight/2), \
73         mm2mils100(BodyWidth/2), \
74         mm2mils100(BodyOffset + BodyHeight/2), \
75         '1000 ]')
76
77 print('   ElementLine[',\
78         mm2mils100(BodyWidth/2), \
79         mm2mils100(BodyOffset - BodyHeight/2), \
80         mm2mils100(BodyWidth/2), \
81         mm2mils100(BodyOffset + BodyHeight/2), \
82         '1000 ]')
83
84 print('   ElementLine[',\
85         mm2mils100(-BodyWidth/2), \
86         mm2mils100(BodyOffset - BodyHeight/2), \
87         mm2mils100(-BodyWidth/2), \
88         mm2mils100(BodyOffset + BodyHeight/2), \
89         '1000 ]')
90
91 print(")")