19600850db96c974ad49d068f34c87e5b80a684b
[hw/altusmetrum] / packages / te-connectivity / buchanan.py
1 #!/usr/bin/python2
2 # Copyright 2007 by Bdale Garbee <bdale@gag.com>.  GPLv2
3 #
4 # Program to emit PCB footprint for
5 #   Tyco Electronics Buchanan 2.54mm pitch terminal blocks
6 #
7 # Needs pin count on command line, in range of 2..12
8 #
9
10 # dimensions in mm from ENG_CS_1308389_EUROSTYLE_TERMINAL_BLOCKS_0607.pdf 
11 PinDiam = 1.15
12 PinSpacing = 2.54
13 RowOffset = 3.25
14 BoxHeight = 6.5
15 BoxEnd = 1.5
16 LineWidth = 600
17 Thickness = 1.8
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 > 15:
32         sys.stderr.write('Must be no more than 15 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 "282834-%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 ")"