convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / switches / SK12F17.py
1 #!/usr/bin/python3
2 # Copyright 2020 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for TDK beeper
5 #
6
7 # dimensions in mm from SK-12F17-G.pdf
8 BodyX = 15.0
9 BodyY = 5.6
10 ActuatorX = 4.0
11 ActuatorY = 7.0
12
13 MntX = 14.0
14 MntY = 5.0
15 PinSpacing = 3.00
16
17 Drill = 1.1     # diameter of drill hole
18 Thickness = 2   # outer diameter of copper annulus
19 Clearance = 1   # delta in diameter above Thickness for plane clearance
20 Mask = 2.2      # mask opening diameter 
21
22 SilkWidth = 10  # in units of 1/1000 inch 
23 SilkNative = SilkWidth * 100 
24
25 import sys
26
27 # we're going to use the 1/100 of a mil fundamental unit form
28 def mm2mils100( mm ):
29         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
30
31 print('# author: Bdale Garbee')
32 print('# email: bdale@gag.com')
33 print('# dist-license: GPL 3')
34 print('# use-license: unlimited')
35
36 print('Element[0x0 "SK-12F17" "" "" 0 0 0 0 0 100 0x0]')
37 print("(")
38 print('   Pin[',\
39         mm2mils100(-PinSpacing), \
40         0, \
41         mm2mils100(Thickness), \
42         mm2mils100(Clearance), \
43         mm2mils100(Mask), \
44         mm2mils100(Drill), \
45         '"pin1" "1" 0x0101]')
46
47 print('   Pin[',\
48         0, \
49         0, \
50         mm2mils100(Thickness), \
51         mm2mils100(Clearance), \
52         mm2mils100(Mask), \
53         mm2mils100(Drill), \
54         '"pin2" "2" 0x0001]')
55
56 print('   Pin[',\
57         mm2mils100(PinSpacing), \
58         0, \
59         mm2mils100(Thickness), \
60         mm2mils100(Clearance), \
61         mm2mils100(Mask), \
62         mm2mils100(Drill), \
63         '"pin3" "3" 0x0001]')
64
65 print('   Pin[',\
66         mm2mils100(MntX/2), \
67         mm2mils100(MntY/2), \
68         mm2mils100(Thickness), \
69         mm2mils100(Clearance), \
70         mm2mils100(Mask), \
71         mm2mils100(Drill), \
72         '"GND" "4" 0x0001]')
73
74 print('   Pin[',\
75         mm2mils100(MntX/2), \
76         mm2mils100(-MntY/2), \
77         mm2mils100(Thickness), \
78         mm2mils100(Clearance), \
79         mm2mils100(Mask), \
80         mm2mils100(Drill), \
81         '"GND" "4" 0x0001]')
82
83 print('   Pin[',\
84         mm2mils100(-MntX/2), \
85         mm2mils100(MntY/2), \
86         mm2mils100(Thickness), \
87         mm2mils100(Clearance), \
88         mm2mils100(Mask), \
89         mm2mils100(Drill), \
90         '"GND" "4" 0x0001]')
91
92 print('   Pin[',\
93         mm2mils100(-MntX/2), \
94         mm2mils100(-MntY/2), \
95         mm2mils100(Thickness), \
96         mm2mils100(Clearance), \
97         mm2mils100(Mask), \
98         mm2mils100(Drill), \
99         '"GND" "4" 0x0001]')
100
101 print('   ElementLine[',\
102         mm2mils100(-BodyX/2), \
103         mm2mils100(-BodyY/2), \
104         mm2mils100(-BodyX/2), \
105         mm2mils100( BodyY/2), \
106         SilkNative, ']')
107
108 print('   ElementLine[',\
109         mm2mils100(-BodyX/2), \
110         mm2mils100(-BodyY/2), \
111         mm2mils100(BodyX/2), \
112         mm2mils100(- BodyY/2), \
113         SilkNative, ']')
114
115 print('   ElementLine[',\
116         mm2mils100(BodyX/2), \
117         mm2mils100(-BodyY/2), \
118         mm2mils100(BodyX/2), \
119         mm2mils100( BodyY/2), \
120         SilkNative, ']')
121
122 print('   ElementLine[',\
123         mm2mils100(-BodyX/2), \
124         mm2mils100(BodyY/2), \
125         mm2mils100(BodyX/2), \
126         mm2mils100(BodyY/2), \
127         SilkNative, ']')
128
129 print('   ElementLine[',\
130         mm2mils100(-ActuatorX/2), \
131         mm2mils100(BodyY/2 + ActuatorY), \
132         mm2mils100(ActuatorX/2), \
133         mm2mils100(BodyY/2 + ActuatorY), \
134         SilkNative, ']')
135
136 print('   ElementLine[',\
137         mm2mils100(-ActuatorX/2), \
138         mm2mils100(BodyY/2), \
139         mm2mils100(-ActuatorX/2), \
140         mm2mils100(BodyY/2 + ActuatorY), \
141         SilkNative, ']')
142
143 print('   ElementLine[',\
144         mm2mils100(ActuatorX/2), \
145         mm2mils100(BodyY/2), \
146         mm2mils100(ActuatorX/2), \
147         mm2mils100(BodyY/2 + ActuatorY), \
148         SilkNative, ']')
149
150 print(")")