2 # Copyright 2021 by Bdale Garbee <bdale@gag.com>. GPLv3
4 # Program to emit PCB footprint for CUI SJ-352X-SMT 1/8" headphone jacks
7 # dimensions in mm from cui/sj-352x-smt.pdf
9 Pad1Setback = 2.4 # to center
10 Pad2Setback = 11.8 # to center
11 Pad3Setback = 4.4 # to center
12 Pad4Setback = 14.5 # to leading edge
13 PadOffset = 2.3 # start of pad above/below centerline
15 FrontPadHeight = 5.1 - PadOffset
22 Clearance = 0.010 * 25.4
23 Mask = 0.007 * 2 * 25.4
34 # we're going to use the 1/100 of a mil fundamental unit form
36 return int( mm / 25.4 * 1000.0 * 100.0 + 0.5 )
38 print('# author: Bdale Garbee')
39 print('# email: bdale@gag.com')
40 print('# dist-license: GPL 2')
41 print('# use-license: unlimited')
43 print('Element[0x0 "SJ-352X-SMT" "" "" 0 0 0 0 0 100 0x0]')
47 mm2mils100(Pad1Setback), \
48 mm2mils100(PadOffset + FrontPadWidth/2), \
49 mm2mils100(Pad1Setback), \
50 mm2mils100(PadOffset + FrontPadHeight - FrontPadWidth/2), \
51 mm2mils100(FrontPadWidth), \
52 mm2mils100(Clearance), \
53 mm2mils100(FrontPadWidth + Mask), \
57 mm2mils100(Pad2Setback), \
58 mm2mils100(PadOffset + BackPadWidth/2), \
59 mm2mils100(Pad2Setback), \
60 mm2mils100(PadOffset + FrontPadHeight - BackPadWidth/2), \
61 mm2mils100(BackPadWidth), \
62 mm2mils100(Clearance), \
63 mm2mils100(BackPadWidth + Mask), \
67 mm2mils100(Pad3Setback), \
68 mm2mils100(-PadOffset - FrontPadWidth/2), \
69 mm2mils100(Pad3Setback), \
70 mm2mils100(-PadOffset - FrontPadHeight + FrontPadWidth/2), \
71 mm2mils100(FrontPadWidth), \
72 mm2mils100(Clearance), \
73 mm2mils100(FrontPadWidth + Mask), \
77 mm2mils100(Pad4Setback + BackPadWidth/2 ), \
78 mm2mils100(-BackPadOffset - BackPadHeight/2 + BackPadWidth/2), \
79 mm2mils100(Pad4Setback + BackPadWidth/2 ), \
80 mm2mils100(-BackPadOffset + BackPadHeight/2 - BackPadWidth/2), \
81 mm2mils100(BackPadWidth), \
82 mm2mils100(Clearance), \
83 mm2mils100(BackPadWidth + Mask), \
87 mm2mils100(HoleSetback), \
89 mm2mils100(HoleDiam), \
91 mm2mils100(1.5*HoleDiam), \
92 mm2mils100(HoleDiam), \
93 '"mounting" "M" 0x0008]')
96 mm2mils100(HoleSetback+HoleSpacing), \
98 mm2mils100(HoleDiam), \
100 mm2mils100(1.5*HoleDiam), \
101 mm2mils100(HoleDiam), \
102 '"mounting" "M" 0x0008]')
104 print(' ElementLine[',\
106 mm2mils100(-BodyHeight/2), \
107 mm2mils100(BodyWidth), \
108 mm2mils100(-BodyHeight/2), \
112 print(' ElementLine[',\
114 mm2mils100(BodyHeight/2), \
115 mm2mils100(BodyWidth), \
116 mm2mils100(BodyHeight/2), \
120 print(' ElementLine[',\
121 mm2mils100(BodyWidth), \
122 mm2mils100(-BodyHeight/2), \
123 mm2mils100(BodyWidth), \
124 mm2mils100(BodyHeight/2), \
128 print(' ElementLine[',\
129 mm2mils100(-SnoutWidth), \
130 mm2mils100(SnoutHeight/2), \
132 mm2mils100(SnoutHeight/2), \
136 print(' ElementLine[',\
137 mm2mils100(-SnoutWidth), \
138 mm2mils100(-SnoutHeight/2), \
140 mm2mils100(-SnoutHeight/2), \
144 print(' ElementLine[',\
145 mm2mils100(-SnoutWidth), \
146 mm2mils100(-SnoutHeight/2), \
147 mm2mils100(-SnoutWidth), \
148 mm2mils100(SnoutHeight/2), \
152 print(' ElementLine[',\
154 mm2mils100(SnoutHeight/2), \
156 mm2mils100(BodyHeight/2), \
160 print(' ElementLine[',\
162 mm2mils100(-SnoutHeight/2), \
164 mm2mils100(-BodyHeight/2), \