convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / AH3.py
1 #!/usr/bin/python3
2 # Copyright 2022 by Bdale Garbee <bdale@gag.com>.  GPLv3
3 #
4 # Program to emit PCB footprint for Fujikura AH3 pressure sensor
5 #
6
7 # dimensions in mm from fujikura/ah3.pdf
8
9 HoleDiam = 1.0
10 PadDiam = 1.8
11 Pins = 6
12
13 RowSpacing = 10.16
14 ColumnSpacing = 2.54
15 BodyHeight = 8.0
16 BodyWidth = 8.0
17 SnoutHeight = 3.2
18 SnoutWidth = 6.0
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 "AH3" "" "" 0 0 0 0 0 100 0x0]')
32 print("(")
33
34 for pin in range (0,3):
35     if pin == 0:
36         Flags = '0x0101'
37     else:
38         Flags = '0x0001'
39
40     print('   Pin[',\
41         mm2mils100((pin-1) * ColumnSpacing), \
42         mm2mils100(-RowSpacing/2), \
43         mm2mils100(PadDiam), \
44         1200, \
45         mm2mils100(PadDiam), \
46         mm2mils100(HoleDiam), \
47         '"pin%i"' % (pin+1), '"%i"' % (pin+1), Flags, ']')
48
49     print('   Pin[',\
50         mm2mils100((pin-1) * ColumnSpacing), \
51         mm2mils100(RowSpacing/2), \
52         mm2mils100(PadDiam), \
53         1200, \
54         mm2mils100(PadDiam), \
55         mm2mils100(HoleDiam), \
56         '"pin%i"' % (Pins-pin), '"%i"' % (Pins-pin), '0x0001', ']')
57
58 print('   ElementLine[',\
59         -mm2mils100(BodyWidth/2), \
60         -mm2mils100(BodyHeight/2), \
61         mm2mils100(BodyWidth/2), \
62         -mm2mils100(BodyHeight/2), \
63         500, \
64         ']')
65 print('   ElementLine[',\
66         -mm2mils100(BodyWidth/2), \
67         -mm2mils100(BodyHeight/2), \
68         -mm2mils100(BodyWidth/2), \
69         mm2mils100(BodyHeight/2), \
70         500, \
71         ']')
72 print('   ElementLine[',\
73         -mm2mils100(BodyWidth/2), \
74         mm2mils100(BodyHeight/2), \
75         mm2mils100(BodyWidth/2), \
76         mm2mils100(BodyHeight/2), \
77         500, \
78         ']')
79 print('   ElementLine[',\
80         mm2mils100(BodyWidth/2), \
81         mm2mils100(BodyHeight/2), \
82         mm2mils100(BodyWidth/2), \
83         -mm2mils100(BodyHeight/2), \
84         500, \
85         ']')
86
87 # snout
88 print('   ElementLine[',\
89         mm2mils100(-BodyWidth/2), \
90         mm2mils100(SnoutHeight/2), \
91         mm2mils100(-BodyWidth/2-SnoutWidth), \
92         mm2mils100(SnoutHeight/2), \
93         500, \
94         ']')
95
96 print('   ElementLine[',\
97         mm2mils100(-BodyWidth/2), \
98         mm2mils100(-SnoutHeight/2), \
99         mm2mils100(-BodyWidth/2-SnoutWidth), \
100         mm2mils100(-SnoutHeight/2), \
101         500, \
102         ']')
103
104 print('   ElementLine[',\
105         mm2mils100(-BodyWidth/2-SnoutWidth), \
106         mm2mils100(SnoutHeight/2), \
107         mm2mils100(-BodyWidth/2-SnoutWidth), \
108         mm2mils100(-SnoutHeight/2), \
109         500, \
110         ']')
111
112 print(")")