convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / LPH.py
1 #!/usr/bin/python3
2 # Copyright 2021 by Bdale Garbee <bdale@gag.com>.  GPLv3
3 #
4 # Program to emit PCB footprint for Schurter LPH SPST switch
5 #
6
7 # dimensions in mm from schurter/typ_6x6_mm_tact_switches.pdf
8
9 PinDiam = 1.0
10 RowSpacing = 4.5
11 ColumnSpacing = 6.5
12 BodyHeight = 6.0
13 BodyWidth = 6.0
14
15 import sys
16
17 # we're going to use the 1/100 of a mil fundamental unit form
18 def mm2mils100( mm ):
19         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
20
21 print('# author: Bdale Garbee')
22 print('# email: bdale@gag.com')
23 print('# dist-license: GPL 3')
24 print('# use-license: unlimited')
25
26 print('Element[0x0 "LPH" "" "" 0 0 0 0 0 100 0x0]')
27 print("(")
28 print('   Pin[',\
29         mm2mils100(ColumnSpacing/2), \
30         mm2mils100(-RowSpacing/2), \
31         mm2mils100(PinDiam * 2.5), \
32         1200, \
33         mm2mils100(PinDiam * 2.5), \
34         mm2mils100(PinDiam), \
35         '"pin1" "1" 0x0000]')
36
37 print('   Pin[',\
38         mm2mils100(-ColumnSpacing/2), \
39         mm2mils100(-RowSpacing/2), \
40         mm2mils100(PinDiam * 2.5), \
41         1200, \
42         mm2mils100(PinDiam * 2.5), \
43         mm2mils100(PinDiam), \
44         '"pin1" "1" 0x0000]')
45
46 print('   Pin[',\
47         mm2mils100(ColumnSpacing/2), \
48         mm2mils100(RowSpacing/2), \
49         mm2mils100(PinDiam * 2.5), \
50         1200, \
51         mm2mils100(PinDiam * 2.5), \
52         mm2mils100(PinDiam), \
53         '"pin2" "2" 0x0000]')
54
55 print('   Pin[',\
56         mm2mils100(-ColumnSpacing/2), \
57         mm2mils100(RowSpacing/2), \
58         mm2mils100(PinDiam * 2.5), \
59         1200, \
60         mm2mils100(PinDiam * 2.5), \
61         mm2mils100(PinDiam), \
62         '"pin2" "2" 0x0000]')
63
64 print('   ElementLine[',\
65         -mm2mils100(BodyWidth/2), \
66         -mm2mils100(BodyHeight/2), \
67         mm2mils100(BodyWidth/2), \
68         -mm2mils100(BodyHeight/2), \
69         500, \
70         ']')
71 print('   ElementLine[',\
72         -mm2mils100(BodyWidth/2), \
73         -mm2mils100(BodyHeight/2), \
74         -mm2mils100(BodyWidth/2), \
75         mm2mils100(BodyHeight/2), \
76         500, \
77         ']')
78 print('   ElementLine[',\
79         -mm2mils100(BodyWidth/2), \
80         mm2mils100(BodyHeight/2), \
81         mm2mils100(BodyWidth/2), \
82         mm2mils100(BodyHeight/2), \
83         500, \
84         ']')
85 print('   ElementLine[',\
86         mm2mils100(BodyWidth/2), \
87         mm2mils100(BodyHeight/2), \
88         mm2mils100(BodyWidth/2), \
89         -mm2mils100(BodyHeight/2), \
90         500, \
91         ']')
92
93 print(")")