2 # Copyright 2011 by Bdale Garbee <bdale@gag.com>. GPLv2
4 # Program to emit PCB footprint for Norcomp 182-YYY-213RYY1 connectors
5 # dual (stacked) female, right angle, 0.318 setback
7 # Needs pin count on command line, 9/15/25/37 are valid
10 # dimensions in mm from 189-YYY-513R571.pdf
26 # we're going to use the 1/100 of a mil fundamental unit form
28 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
30 pins = int(sys.argv[1])
45 sys.stderr.write('Valid pin counts are 9|15|25|37\n')
48 pinoffset = (pins - 1) / 4 * PinSpacing
50 pinoffset += PinSpacing/2
52 print '# author: Bdale Garbee'
53 print '# email: bdale@gag.com'
54 print '# dist-license: GPL 2'
55 print '# use-license: unlimited'
57 print 'Element[0x0 "DB%iF"' % pins,'"" "" 0 0 0 0 0 100 0x0]'
59 for col in range ((pins+1)/2):
67 mm2mils100((pinnum-1)*PinSpacing-pinoffset), \
68 mm2mils100(RowSpacing/2), \
69 mm2mils100(PinDiam+ARing), \
70 mm2mils100(Clearance), \
71 mm2mils100(PinDiam+ARing+Clearance), \
72 mm2mils100(PinDiam), \
73 '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']'
75 pinnum2 = pinnum + pins
77 mm2mils100((pinnum-1)*PinSpacing-pinoffset), \
78 mm2mils100(RowSpacing/2+DualSpacing), \
79 mm2mils100(PinDiam+ARing), \
80 mm2mils100(Clearance), \
81 mm2mils100(PinDiam+ARing+Clearance), \
82 mm2mils100(PinDiam), \
83 '"pin%i"' % pinnum2, '"%i"' % pinnum2, Flags, ']'
85 pinnum = col + 1 + (pins+1)/2
89 mm2mils100((col)*PinSpacing-pinoffset+PinSpacing/2), \
90 mm2mils100(-RowSpacing/2), \
91 mm2mils100(PinDiam+ARing), \
92 mm2mils100(Clearance), \
93 mm2mils100(PinDiam+ARing+Clearance), \
94 mm2mils100(PinDiam), \
95 '"pin%i"' % pinnum, '"%i"' % pinnum, Flags, ']'
97 pinnum2 = pinnum + pins
99 mm2mils100((col)*PinSpacing-pinoffset+PinSpacing/2), \
100 mm2mils100(-RowSpacing/2+DualSpacing), \
101 mm2mils100(PinDiam+ARing), \
102 mm2mils100(Clearance), \
103 mm2mils100(PinDiam+ARing+Clearance), \
104 mm2mils100(PinDiam), \
105 '"pin%i"' % pinnum2, '"%i"' % pinnum2, Flags, ']'
108 mm2mils100(MntX/2), \
109 mm2mils100(-RowSpacing/2), \
110 mm2mils100(MntDiam+ARing), \
111 mm2mils100(Clearance), \
112 mm2mils100(MntDiam+ARing+Clearance), \
113 mm2mils100(MntDiam), \
114 '"mnt" "0"', '0x0001', ']'
117 mm2mils100(-MntX/2), \
118 mm2mils100(-RowSpacing/2), \
119 mm2mils100(MntDiam+ARing), \
120 mm2mils100(Clearance), \
121 mm2mils100(MntDiam+ARing+Clearance), \
122 mm2mils100(MntDiam), \
123 '"mnt" "0"', '0x0001', ']'
126 mm2mils100(MntX/2), \
127 mm2mils100(DualSpacing), \
128 mm2mils100(MntDiam+ARing), \
129 mm2mils100(Clearance), \
130 mm2mils100(MntDiam+ARing+Clearance), \
131 mm2mils100(MntDiam), \
132 '"mnt" "0"', '0x0001', ']'
135 mm2mils100(-MntX/2), \
136 mm2mils100(DualSpacing), \
137 mm2mils100(MntDiam+ARing), \
138 mm2mils100(Clearance), \
139 mm2mils100(MntDiam+ARing+Clearance), \
140 mm2mils100(MntDiam), \
141 '"mnt" "0"', '0x0001', ']'
143 print ' ElementLine[', \
144 mm2mils100(-BoxX/2), \
145 mm2mils100(-FaceY-RowSpacing/2), \
146 mm2mils100(BoxX/2), \
147 mm2mils100(-FaceY-RowSpacing/2), \
150 print ' ElementLine[', \
151 mm2mils100(-BoxX/2), \
152 mm2mils100(BoxY-FaceY-RowSpacing/2), \
153 mm2mils100(BoxX/2), \
154 mm2mils100(BoxY-FaceY-RowSpacing/2), \
157 print ' ElementLine[', \
158 mm2mils100(BoxX/2), \
159 mm2mils100(-FaceY-RowSpacing/2), \
160 mm2mils100(BoxX/2), \
161 mm2mils100(BoxY-FaceY-RowSpacing/2), \
164 print ' ElementLine[', \
165 mm2mils100(-BoxX/2), \
166 mm2mils100(-FaceY-RowSpacing/2), \
167 mm2mils100(-BoxX/2), \
168 mm2mils100(BoxY-FaceY-RowSpacing/2), \