convert Python footprint generators to Python 3
[hw/altusmetrum] / packages / te-connectivity / 3.5mm-ra.py
1 #!/usr/bin/python3
2 # Copyright 2014 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for
5 #   Tyco Electronics 3.5mm pitch right-angle terminal blocks ala 284512-4
6 #
7 # Needs pin count on command line, in range of 2..25
8 #
9
10 # dimensions in mm from ENG_CD_284512_E3.pdf
11 PinDiam = 1.2
12 PinSpacing = 3.5
13 RowOffset = 8.0
14 BoxHeight = 9.2
15 BoxEnd = 2.75
16 LineWidth = 600
17 Thickness = 2.0
18 Clearance = .32
19 Mask = Thickness + 0.32
20
21 import sys
22
23 # we're going to use the 1/100 of a mil fundamental unit form
24 def mm2mils100( mm ):
25         return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
26
27 pins = int(sys.argv[1])
28 if pins < 2:
29         sys.stderr.write('Must be at least 2 pins\n')
30         sys.exit(1)
31 if pins > 25:
32         sys.stderr.write('Must be no more than 25 pins\n')
33         sys.exit(1)
34
35 print('# author: Bdale Garbee')
36 print('# email: bdale@gag.com')
37 print('# dist-license: GPL 2')
38 print('# use-license: unlimited')
39
40 print('Element[0x0 "284512-%i"' % pins,'"" "" 0 0 0 0 0 100 0x0]')
41 print("(")
42 for pin in range (1,pins+1):
43     pinnum = pins + 1 - pin
44     if pinnum == 1:
45         Flags = '0x0101'
46     else:
47         Flags = '0x0001'
48     print('   Pin[', \
49         mm2mils100(BoxEnd + (pin-1)*PinSpacing), \
50         mm2mils100(RowOffset), \
51         mm2mils100(Thickness), \
52         mm2mils100(Clearance), \
53         mm2mils100(Mask), \
54         mm2mils100(PinDiam), \
55         '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']')
56
57 BoxWidth = (BoxEnd * 2) + ((pins - 1) * PinSpacing);
58
59 print('   ElementLine[', \
60         mm2mils100(0), \
61         mm2mils100(0), \
62         mm2mils100(0), \
63         mm2mils100(BoxHeight), \
64         LineWidth, ']')
65
66 print('   ElementLine[', \
67         mm2mils100(0), \
68         mm2mils100(BoxHeight), \
69         mm2mils100(BoxWidth), \
70         mm2mils100(BoxHeight), \
71         LineWidth, ']')
72
73 print('   ElementLine[', \
74         mm2mils100(BoxWidth), \
75         mm2mils100(BoxHeight), \
76         mm2mils100(BoxWidth), \
77         mm2mils100(0), \
78         LineWidth, ']')
79
80 print('   ElementLine[', \
81         mm2mils100(BoxWidth), \
82         mm2mils100(0), \
83         mm2mils100(0), \
84         mm2mils100(0), \
85         LineWidth, ']')
86
87 print(")")