convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / g5rl1ae.py
1 #!/usr/bin/python3
2 # Copyright 2015 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for Omron G5RL-1A-E relays
5 #
6
7 # dimensions in mm from footprint drawing in en-g5rl-531959.pdf
8 BodyWidth = 29                  # body outline
9 BodyHeight = 12.7
10 PinSpace1 = 20.0
11 PinSpace2 = 5.0
12 RowSpace = 7.5
13 BackSpace = 2.3
14
15 Drill = 1.30
16 Thickness = 2.0 * Drill
17 Clearance = 1.0
18 Mask = Thickness + 0.3
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 "G5RL-1A-E" "" "" 0 0 0 0 0 100 0x0]')
32 print("(")
33 print('   Pin[',\
34         mm2mils100(0), \
35         mm2mils100(RowSpace/2), \
36         mm2mils100(Thickness), \
37         mm2mils100(Clearance), \
38         mm2mils100(Mask), \
39         mm2mils100(Drill), \
40         '"pin1" "1" 0x0001]')
41
42 print('   Pin[',\
43         mm2mils100(PinSpace1), \
44         mm2mils100(RowSpace/2), \
45         mm2mils100(Thickness), \
46         mm2mils100(Clearance), \
47         mm2mils100(Mask), \
48         mm2mils100(Drill), \
49         '"pin3" "3" 0x0001]')
50
51 print('   Pin[',\
52         mm2mils100(PinSpace1 + PinSpace2), \
53         mm2mils100(RowSpace/2), \
54         mm2mils100(Thickness), \
55         mm2mils100(Clearance), \
56         mm2mils100(Mask), \
57         mm2mils100(Drill), \
58         '"pin4" "4" 0x0001]')
59
60 print('   Pin[',\
61         mm2mils100(0), \
62         mm2mils100(-RowSpace/2), \
63         mm2mils100(Thickness), \
64         mm2mils100(Clearance), \
65         mm2mils100(Mask), \
66         mm2mils100(Drill), \
67         '"pin8" "8" 0x0001]')
68
69 print('   Pin[',\
70         mm2mils100(PinSpace1), \
71         mm2mils100(-RowSpace/2), \
72         mm2mils100(Thickness), \
73         mm2mils100(Clearance), \
74         mm2mils100(Mask), \
75         mm2mils100(Drill), \
76         '"pin6" "6" 0x0001]')
77
78 print('   Pin[',\
79         mm2mils100(PinSpace1 + PinSpace2), \
80         mm2mils100(-RowSpace/2), \
81         mm2mils100(Thickness), \
82         mm2mils100(Clearance), \
83         mm2mils100(Mask), \
84         mm2mils100(Drill), \
85         '"pin5" "5" 0x0001]')
86
87
88 print('   ElementLine[',\
89         -mm2mils100(BackSpace), \
90         -mm2mils100(BodyHeight/2), \
91         mm2mils100(BodyWidth-BackSpace), \
92         -mm2mils100(BodyHeight/2), \
93         500, \
94         ']')
95
96 print('   ElementLine[',\
97         -mm2mils100(BackSpace), \
98         mm2mils100(BodyHeight/2), \
99         mm2mils100(BodyWidth-BackSpace), \
100         mm2mils100(BodyHeight/2), \
101         500, \
102         ']')
103
104 print('   ElementLine[',\
105         -mm2mils100(BackSpace), \
106         mm2mils100(BodyHeight/2), \
107         -mm2mils100(BackSpace), \
108         -mm2mils100(BodyHeight/2), \
109         500, \
110         ']')
111
112 print('   ElementLine[',\
113         mm2mils100(BodyWidth-BackSpace), \
114         mm2mils100(BodyHeight/2), \
115         mm2mils100(BodyWidth-BackSpace), \
116         -mm2mils100(BodyHeight/2), \
117         500, \
118         ']')
119
120 print(")")