convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / te-connectivity / bnc-th.py
1 #!/usr/bin/python3
2 # Copyright 2017 by Bdale Garbee <bdale@gag.com>.  GPLv2+
3 #
4 # Program to emit PCB footprint for
5 #   TE Connectivity (AMP) through-hole BNC connectors 5227673 & 5227677
6 #
7 #   This footprint is meant to allow the right-angle connector to be installed
8 #   on the "top" surface of the board, and the straight connector to be 
9 #   installed on the top or bottom of the board.
10 #
11 # dimensions in mm from ENG_CD_5227673_A.pdf & ENG_CD_5227677_A1.pdf
12
13 PinDiam = 0.89
14 PinSpacing = 2.54
15
16 MntDiam = 2.01
17 MntSpacing = 10.16
18 Mnt2Edge = 7.75
19
20 SilkBox = 14.76
21
22 LineWidth = 600
23 ThicknessDelta = 1.0
24 Clearance = .32
25 MaskDelta = 0.32
26
27 import sys
28
29 # we're going to use the 1/100 of a mil fundamental unit form
30 def mm2mils100( mm ):
31         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
32
33 print('# author: Bdale Garbee')
34 print('# email: bdale@gag.com')
35 print('# dist-license: GPL 2+')
36 print('# use-license: unlimited')
37
38 print('Element[0x0 "AMP BNC" "" "" 0 0 0 0 0 100 0x0]')
39 print("(")
40
41 print('   Pin[', \
42         0, \
43         0, \
44         mm2mils100(PinDiam+ThicknessDelta), \
45         mm2mils100(Clearance), \
46         mm2mils100(PinDiam+ThicknessDelta+MaskDelta), \
47         mm2mils100(PinDiam), \
48         '"1"', \
49         '"1"', \
50         "0x0001", ']')
51
52 print('   Pin[', \
53         0, \
54         mm2mils100(-PinSpacing), \
55         mm2mils100(PinDiam+ThicknessDelta), \
56         mm2mils100(Clearance), \
57         mm2mils100(PinDiam+ThicknessDelta+MaskDelta), \
58         mm2mils100(PinDiam), \
59         '"GND"', \
60         '"2"', \
61         "0x0001", ']')
62
63 print('   Pin[', \
64         mm2mils100(MntSpacing/2), \
65         mm2mils100(MntSpacing/2), \
66         mm2mils100(MntDiam+ThicknessDelta), \
67         mm2mils100(Clearance), \
68         mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
69         mm2mils100(MntDiam), \
70         '"GND"', \
71         '"2"', \
72         "0x0001", ']')
73
74 print('   Pin[', \
75         mm2mils100(-MntSpacing/2), \
76         mm2mils100(MntSpacing/2), \
77         mm2mils100(MntDiam+ThicknessDelta), \
78         mm2mils100(Clearance), \
79         mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
80         mm2mils100(MntDiam), \
81         '"GND"', \
82         '"2"', \
83         "0x0001", ']')
84
85 print('   Pin[', \
86         mm2mils100(MntSpacing/2), \
87         mm2mils100(-MntSpacing/2), \
88         mm2mils100(MntDiam+ThicknessDelta), \
89         mm2mils100(Clearance), \
90         mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
91         mm2mils100(MntDiam), \
92         '"GND"', \
93         '"2"', \
94         "0x0001", ']')
95
96 print('   Pin[', \
97         mm2mils100(-MntSpacing/2), \
98         mm2mils100(-MntSpacing/2), \
99         mm2mils100(MntDiam+ThicknessDelta), \
100         mm2mils100(Clearance), \
101         mm2mils100(MntDiam+ThicknessDelta+MaskDelta), \
102         mm2mils100(MntDiam), \
103         '"GND"', \
104         '"2"', \
105         "0x0001", ']')
106
107
108 print('   ElementLine[', \
109         mm2mils100(MntSpacing/2+Mnt2Edge-SilkBox), \
110         mm2mils100(SilkBox/2), \
111         mm2mils100(MntSpacing/2+Mnt2Edge), \
112         mm2mils100(SilkBox/2), \
113         LineWidth, ']')
114
115 print('   ElementLine[', \
116         mm2mils100(MntSpacing/2+Mnt2Edge-SilkBox), \
117         mm2mils100(-SilkBox/2), \
118         mm2mils100(MntSpacing/2+Mnt2Edge), \
119         mm2mils100(-SilkBox/2), \
120         LineWidth, ']')
121
122 print('   ElementLine[', \
123         mm2mils100(MntSpacing/2+Mnt2Edge-SilkBox), \
124         mm2mils100(SilkBox/2), \
125         mm2mils100(MntSpacing/2+Mnt2Edge-SilkBox), \
126         mm2mils100(-SilkBox/2), \
127         LineWidth, ']')
128
129 print('   ElementLine[', \
130         mm2mils100(MntSpacing/2+Mnt2Edge), \
131         mm2mils100(SilkBox/2), \
132         mm2mils100(MntSpacing/2+Mnt2Edge), \
133         mm2mils100(-SilkBox/2), \
134         LineWidth, ']')
135
136 print(")")