2 # Copyright 2023 by Bdale Garbee <bdale@gag.com>. GPLv3
4 # Program to emit PCB footprint for GCT MEM2051-00-195-00-A micro SD connector
5 # this is a push-push style connector with normally open card detection pin
8 # dimensions in mm from gct/mem2051.pdf
13 MntYR = MntRHeight/2 - 0.3
14 MntYFL = MntYR + MntRHeight/2 + 11.50 + MntFHeight/2
15 MntYFR = MntYR + MntRHeight/2 + 12.50 + MntFHeight/2
16 MntXRL = -11.50/2 + MntRWidth/2
17 MntXRR = -11.50/2 + 5.70 + MntRWidth/2
18 MntXFL = -11.50/2 - MntFWidth/2
19 MntXFR = 11.50/2 + MntFWidth/2
23 CDX = -11.50/2 + 1.54 + CDWidth/2
24 CDY = CDHeight/2 - 0.3
29 PinY = MntYR + MntRHeight/2 + 9.41 + PinHeight/2
47 # we're going to use the 1/100 of a mil fundamental unit form
49 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
51 print('# author: Bdale Garbee')
52 print('# email: bdale@gag.com')
53 print('# dist-license: GPL 3')
54 print('# use-license: unlimited')
56 print('Element[0x0 "microSD" "" "" 0 0 0 0 0 100 0x0]')
62 mm2mils100(MntYFL - MntFHeight/2 + MntFWidth/2), \
64 mm2mils100(MntYFL + MntFHeight/2 - MntFWidth/2), \
65 mm2mils100(MntFWidth), \
66 mm2mils100(Clearance), \
67 mm2mils100(MntFWidth + MaskAdd), \
72 mm2mils100(MntYFR - MntFHeight/2 + MntFWidth/2), \
74 mm2mils100(MntYFR + MntFHeight/2 - MntFWidth/2), \
75 mm2mils100(MntFWidth), \
76 mm2mils100(Clearance), \
77 mm2mils100(MntFWidth + MaskAdd), \
82 mm2mils100(MntYR - MntRHeight/2 + MntRWidth/2), \
84 mm2mils100(MntYR + MntRHeight/2 - MntRWidth/2), \
85 mm2mils100(MntRWidth), \
86 mm2mils100(Clearance), \
87 mm2mils100(MntRWidth + MaskAdd), \
92 mm2mils100(MntYR - MntRHeight/2 + MntRWidth/2), \
94 mm2mils100(MntYR + MntRHeight/2 - MntRWidth/2), \
95 mm2mils100(MntRWidth), \
96 mm2mils100(Clearance), \
97 mm2mils100(MntRWidth + MaskAdd), \
101 for pin in range (1,9):
106 elif (pin == 4 or pin == 6):
112 mm2mils100(CDX + (6-pin) * PinSpacing), \
113 mm2mils100(myPinY-(PinHeight/2)+(PinWidth/2)), \
114 mm2mils100(CDX + (6-pin) * PinSpacing), \
115 mm2mils100(myPinY+(PinHeight/2)-(PinWidth/2)), \
116 mm2mils100(PinWidth), \
117 mm2mils100(Clearance), \
118 mm2mils100(PinWidth + MaskAdd), \
119 '"pin%i"' % (pin), '"%i"' % (pin), '0x0100]')
123 mm2mils100(CDX - CDHeight/2 + CDWidth/2), \
125 mm2mils100(CDX + CDHeight/2 - CDWidth/2), \
127 mm2mils100(CDHeight), \
128 mm2mils100(Clearance), \
129 mm2mils100(CDHeight + MaskAdd), \
133 print(' ElementLine[', \
134 mm2mils100(CDX - 2.10/2), \
135 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 4.37), \
136 mm2mils100(CDX + 2.10/2), \
137 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 4.37), \
140 print(' ElementLine[', \
141 mm2mils100(CDX + 2.10/2), \
142 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
143 mm2mils100(CDX + 2.10/2), \
144 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 4.37), \
147 print(' ElementLine[', \
148 mm2mils100(CDX - 2.10/2), \
149 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
150 mm2mils100(CDX - 2.10/2), \
151 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 4.37), \
154 print(' ElementLine[', \
155 mm2mils100(-14.00/2 + 0.75), \
156 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
157 mm2mils100(CDX - 2.10/2), \
158 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
161 print(' ElementLine[', \
162 mm2mils100(14.00/2 - 4.55), \
163 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
164 mm2mils100(14.00/2 - 4.55), \
165 mm2mils100(MntYFR - MntFHeight/2 - 7.37), \
168 print(' ElementLine[', \
169 mm2mils100(-14.00/2 + 0.75), \
170 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
171 mm2mils100(-14.00/2 + 0.75), \
172 mm2mils100(MntYFR - MntFHeight/2 - 7.37), \
175 print(' ElementLine[', \
176 mm2mils100(CDX + 2.10/2), \
177 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
178 mm2mils100(14.00/2 - 4.55), \
179 mm2mils100(MntYFR - MntFHeight/2 - 7.37 - 2.30), \
182 print(' ElementLine[', \
183 mm2mils100(-14.00/2 + 0.75), \
184 mm2mils100(MntYFR - MntFHeight/2 - 7.37), \
185 mm2mils100(14.00/2 - 4.55), \
186 mm2mils100(MntYFR - MntFHeight/2 - 7.37), \
191 print(' ElementLine[', \
192 mm2mils100(BoxX/2), \
194 mm2mils100(BoxX/2), \
195 mm2mils100(BoxYright), \
198 print(' ElementLine[', \
199 mm2mils100(-BoxX/2), \
201 mm2mils100(-BoxX/2), \
202 mm2mils100(BoxYleft), \
205 print(' ElementLine[', \
206 mm2mils100(-BoxX/2), \
208 mm2mils100(+BoxX/2), \
212 print(' ElementLine[', \
213 mm2mils100(+BoxX/2-2*ArcHeight), \
214 mm2mils100(BoxYleft), \
215 mm2mils100(+BoxX/2-2*ArcHeight), \
216 mm2mils100(BoxYright), \
219 print(' ElementLine[', \
220 mm2mils100(+BoxX/2-5), \
221 mm2mils100(BoxYleft-1), \
222 mm2mils100(+BoxX/2-5), \
223 mm2mils100(BoxYright), \
226 print(' ElementLine[', \
227 mm2mils100(+BoxX/2-5), \
228 mm2mils100(BoxYright), \
229 mm2mils100(+BoxX/2), \
230 mm2mils100(BoxYright), \
233 print(' ElementArc[', \
234 mm2mils100(-ArcOffset), \
235 mm2mils100((BoxYleft*2-3.75)-ArcHeight), \
236 mm2mils100(ArcWidth), \
237 mm2mils100(ArcHeight), \