convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / MD-60S.py
1 #!/usr/bin/python3
2 # Copyright 2016 by Bdale Garbee <bdale@gag.com>.  GPLv3+
3 #
4 # Program to emit PCB footprint for CUI MD-60S Mini DIN Connector
5 #
6
7 # dimensions in mm from footprint(drawing at DigiKey
8 BodyWidth = 14.0                # body outline
9 BodyHeight = 12.4
10 InnerPinSpace = 2.6
11 OuterPinSpace = 6.8
12 PinDiam = 0.90
13 MntSetback = 4.7
14 Row1Setback = 8.5
15 Row2Setback = 11.0
16 MntDiam = 2.32                  # round hole for rectangular tab
17 ARing = 0.8
18 Clearance = 0.36
19
20 LineWidth = 1000
21
22 import sys
23
24 # we're going to use the 1/100 of a mil fundamental unit form
25 def mm2mils100( mm ):
26         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
27
28 print('# author: Bdale Garbee')
29 print('# email: bdale@gag.com')
30 print('# dist-license: GPL 3')
31 print('# use-license: unlimited')
32
33 print('Element[0x0 "MD-60S" "" "" 0 0 0 0 0 100 0x0]')
34 print("(")
35 print('   Pin[',\
36         mm2mils100(-InnerPinSpace/2), \
37         mm2mils100(Row1Setback), \
38         mm2mils100(PinDiam+ARing), \
39         mm2mils100(Clearance), \
40         mm2mils100(PinDiam+ARing+Clearance), \
41         mm2mils100(PinDiam), \
42         '"pin1" "1" 0x0001]')
43
44 print('   Pin[',\
45         mm2mils100(InnerPinSpace/2), \
46         mm2mils100(Row1Setback), \
47         mm2mils100(PinDiam+ARing), \
48         mm2mils100(Clearance), \
49         mm2mils100(PinDiam+ARing+Clearance), \
50         mm2mils100(PinDiam), \
51         '"pin2" "2" 0x0001]')
52
53 print('   Pin[',\
54         mm2mils100(-OuterPinSpace/2), \
55         mm2mils100(Row1Setback), \
56         mm2mils100(PinDiam+ARing), \
57         mm2mils100(Clearance), \
58         mm2mils100(PinDiam+ARing+Clearance), \
59         mm2mils100(PinDiam), \
60         '"pin3" "3" 0x0001]')
61
62 print('   Pin[',\
63         mm2mils100(OuterPinSpace/2), \
64         mm2mils100(Row1Setback), \
65         mm2mils100(PinDiam+ARing), \
66         mm2mils100(Clearance), \
67         mm2mils100(PinDiam+ARing+Clearance), \
68         mm2mils100(PinDiam), \
69         '"pin4" "4" 0x0001]')
70
71 print('   Pin[',\
72         mm2mils100(-OuterPinSpace/2), \
73         mm2mils100(Row2Setback), \
74         mm2mils100(PinDiam+ARing), \
75         mm2mils100(Clearance), \
76         mm2mils100(PinDiam+ARing+Clearance), \
77         mm2mils100(PinDiam), \
78         '"pin5" "5" 0x0001]')
79
80 print('   Pin[',\
81         mm2mils100(OuterPinSpace/2), \
82         mm2mils100(Row2Setback), \
83         mm2mils100(PinDiam+ARing), \
84         mm2mils100(Clearance), \
85         mm2mils100(PinDiam+ARing+Clearance), \
86         mm2mils100(PinDiam), \
87         '"pin6" "6" 0x0001]')
88
89 print('   Pin[',\
90         0, \
91         mm2mils100(MntSetback), \
92         mm2mils100(MntDiam+ARing), \
93         mm2mils100(Clearance), \
94         mm2mils100(MntDiam+ARing+Clearance), \
95         mm2mils100(MntDiam), \
96         '"pin7" "7" 0x0001]')
97
98 print('   ElementLine[',\
99         -mm2mils100(BodyWidth/2), \
100         0, \
101         mm2mils100(BodyWidth/2), \
102         0, \
103         LineWidth, \
104         ']')
105 print('   ElementLine[',\
106         -mm2mils100(BodyWidth/2), \
107         mm2mils100(BodyHeight), \
108         mm2mils100(BodyWidth/2), \
109         mm2mils100(BodyHeight), \
110         LineWidth, \
111         ']')
112 print('   ElementLine[',\
113         -mm2mils100(BodyWidth/2), \
114         0, \
115         -mm2mils100(BodyWidth/2), \
116         mm2mils100(BodyHeight), \
117         LineWidth, \
118         ']')
119 print('   ElementLine[',\
120         mm2mils100(BodyWidth/2), \
121         0, \
122         mm2mils100(BodyWidth/2), \
123         mm2mils100(BodyHeight), \
124         LineWidth, \
125         ']')
126
127 print(")")