2 # Copyright 2016 by Bdale Garbee <bdale@gag.com>. GPLv3+
4 # Program to emit PCB footprint(for Norcomp 181-YYY-213RYY1 connectors
5 # Female, right angle, 0.318 setback
7 # Needs pin count on command line, 15/26/44/62 are valid
10 # dimensions in mm from R181-YYY-213RYY1-1.pdf
25 # we're going to use the 1/100 of a mil fundamental unit form
27 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
29 pins = int(sys.argv[1])
30 pinoffset = (pins - 1) / 6 * PinSpacing
35 pinoffset = pinoffset - (0.010 * 25.4)
39 pinoffset = pinoffset - (0.020 * 25.4)
43 pinoffset = pinoffset - (0.020 * 25.4)
47 pinoffset = pinoffset - (0.023 * 25.4)
49 sys.stderr.write('Valid pin counts are 15|26|44|62\n')
52 print('# author: Bdale Garbee')
53 print('# email: bdale@gag.com')
54 print('# dist-license: GPL 3+')
55 print('# use-license: unlimited')
57 print('Element[0x0 "DB%iFHD"' % pins,'"" "" 0 0 0 0 0 100 0x0]')
59 for col in range (int((pins+1)/3)):
67 mm2mils100((col)*PinSpacing-pinoffset), \
68 mm2mils100(RowSpacing), \
69 mm2mils100(PinDiam+ARing), \
70 mm2mils100(Clearance), \
71 mm2mils100(PinDiam+ARing+Clearance), \
72 mm2mils100(PinDiam), \
73 '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']')
75 pinnum = col + 1 + (pins+1)/3
78 mm2mils100((col)*PinSpacing-pinoffset-PinSpacing/2), \
80 mm2mils100(PinDiam+ARing), \
81 mm2mils100(Clearance), \
82 mm2mils100(PinDiam+ARing+Clearance), \
83 mm2mils100(PinDiam), \
84 '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']')
86 pinnum = col + 1 + 2*(pins+1)/3
90 mm2mils100((col)*PinSpacing-pinoffset), \
91 mm2mils100(-RowSpacing), \
92 mm2mils100(PinDiam+ARing), \
93 mm2mils100(Clearance), \
94 mm2mils100(PinDiam+ARing+Clearance), \
95 mm2mils100(PinDiam), \
96 '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']')
99 # make the mounting tabs be ground-able
103 mm2mils100(MntX/2), \
105 mm2mils100(MntDiam+ARing), \
106 mm2mils100(Clearance), \
107 mm2mils100(MntDiam+ARing+Clearance), \
108 mm2mils100(MntDiam), \
109 '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']')
112 mm2mils100(-MntX/2), \
114 mm2mils100(MntDiam+ARing), \
115 mm2mils100(Clearance), \
116 mm2mils100(MntDiam+ARing+Clearance), \
117 mm2mils100(MntDiam), \
118 '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']')
120 print(' ElementLine[', \
121 mm2mils100(-BoxX/2), \
122 mm2mils100(-FaceY-RowSpacing), \
123 mm2mils100(BoxX/2), \
124 mm2mils100(-FaceY-RowSpacing), \
127 print(' ElementLine[', \
128 mm2mils100(-BoxX/2), \
129 mm2mils100(BoxY-FaceY-RowSpacing), \
130 mm2mils100(BoxX/2), \
131 mm2mils100(BoxY-FaceY-RowSpacing), \
134 print(' ElementLine[', \
135 mm2mils100(BoxX/2), \
136 mm2mils100(-FaceY-RowSpacing), \
137 mm2mils100(BoxX/2), \
138 mm2mils100(BoxY-FaceY-RowSpacing), \
141 print(' ElementLine[', \
142 mm2mils100(-BoxX/2), \
143 mm2mils100(-FaceY-RowSpacing), \
144 mm2mils100(-BoxX/2), \
145 mm2mils100(BoxY-FaceY-RowSpacing), \