Sign in with STEVE

Compare versions

3 files changed, +194 −78

part.py +135 −65
@@ -1,10 +1,10 @@
1"""Miniature through-hole SPDT slide switch, C&K OS series OS102011: a steel shell over a phenolic base, a square actuator through a
2slot in the shell, three terminals in a row and a snap-in leg at each end. MS2Q stands upright (actuator up); MA1Q is the right-angle
3version (actuator along -Y, parallel to the board). The origin is at terminal 2, on the board's top face (the XY plane); the terminals
4and legs lie along X. Dimensions from C&K's data sheet, in the README."""
1"""Through-hole slide switches: a steel shell over an insulating base, an actuator through a slot in the shell, terminals in a row and
2legs from the shell. C&K OS102011MS2Q stands upright (actuator up); C&K OS102011MA1Q and E-Switch EG1224 (SPDT) and EG2219 (DPDT) are
3right-angle (actuator along -Y, parallel to the board). The origin is at the centre of the shell's footprint, on the board's top face
4(the XY plane); the terminals lie along X. Dimensions from the makers' drawings, in the README."""
55from steve import Model
66
7kind = "MS2Q" # MS2Q: vertical (straight); MA1Q: right angle
7kind = "MS2Q" # MS2Q: C&K vertical; MA1Q: C&K right angle; EG1224, EG2219: E-Switch right angle
88position = 2 # Actuator position (1 or 2)
99
1010# Each entry: (shell length, shell width or depth, shell height, actuator out of the shell, actuator axis height (right angle only),
@@ -36,69 +36,139 @@
3636SHELL_T = 0.4
3737BARB = (-0.4, -1.4)
3838NOTCH = 0.6
39# E-Switch, each entry: (terminal rows, the rows' Y).
40# E-Switch drawing P040042 rev. A, "EG 1224 Non-Shorting", 4/27/98, and drawing P040170 rev. B, "EG 2219", 12/20/02 (datasheet.lcsc.com
41# copies), mm: body 13.8 x 6.5, 8.5 high; actuator 5.0 wide and 4.0 high, its axis 5.5 above the board, 9.0 out of the body (8.5 beyond a
42# 0.5 step); travel 4.0; terminals 4.0 apart, 0.5 wide and 0.4 thick, 3.5 below the board; four legs 0.8 wide and 0.5 thick, 12.0 apart
43# along the terminals and 6.0 across. EG1224: one row of three terminals 1.75 from the back legs' row, the body's lower edge 1.5 above
44# the board. EG2219: two rows 2.5 apart, between the legs' rows.
45EG = {"EG1224": ((1.25,),), "EG2219": ((-1.25, 1.25),)}
46EG_BODY = (13.8, 6.5, 8.5)
47EG_LOW = 1.5
48EG_ACTUATOR = (5.0, 4.0)
49EG_AXIS = 5.5
50EG_OUT = 9.0
51EG_STEP = 0.5
52EG_TRAVEL = 4.0
53EG_PITCH = 4.0
54EG_PIN = (0.5, 0.4)
55EG_TIP = 3.5
56EG_LEG = (0.8, 0.5)
57EG_LEGS = (12.0, 6.0)
58# Proportions, for looks only: the shell's sheet thickness (the legs' 0.5), the actuator's step 4.0 x 3.0 (narrower than the knob, as
59# drawn), and EG2219's body lower edge, 1.5 above the board as on EG1224's drawing (EG2219's doesn't dimension it).
60EG_SHELL_T = 0.5
61EG_STEP_SIZE = (4.0, 3.0)
3962
40if kind not in KINDS:
41 raise ValueError(f"no type {kind!r}: {', '.join(KINDS)}")
63if kind not in KINDS and kind not in EG:
64 raise ValueError(f"no type {kind!r}: {', '.join([*KINDS, *EG])}")
4265if position not in (1, 2):
4366 raise ValueError("position is 1 or 2")
44length, width, height, out, axis, base_low, angled = KINDS[kind]
45slide = (position - 1.5) * TRAVEL # pos. 1 and 2 are a travel apart, centred on terminal 2
46L, W = length / 2, width / 2
47inner = L - SHELL_T
67if kind in EG:
68 # E-Switch: right angle, the actuator a knob on a narrower step; four legs from the front and back walls.
69 (rows,) = EG[kind]
70 length, depth, height = EG_BODY
71 L, D, t = length / 2, depth / 2, EG_SHELL_T
72 slide = (position - 1.5) * EG_TRAVEL
73 aw, ah = EG_ACTUATOR
74 model = Model()
75 model.box("shell_top", length, depth, t, at=(0, 0, height - t / 2), op="new", body="shell_body", name="Shell top")
76 wall_h = height - EG_LOW
77 for side, sy in (("back", 1), ("front", -1)):
78 model.box(f"wall_{side}", length, t, wall_h, at=(0, sy * (D - t / 2), EG_LOW + wall_h / 2), op="join", body="shell_body",
79 name=f"Shell wall, {side}")
80 for side, sx in (("right", 1), ("left", -1)):
81 model.box(f"end_{side}", t, depth, wall_h, at=(sx * (L - t / 2), 0, EG_LOW + wall_h / 2), op="join", body="shell_body",
82 name=f"End wall, {side}")
83 lx, ly = EG_LEGS
84 for i, (sx, sy) in enumerate(((1, 1), (-1, 1), (-1, -1), (1, -1))):
85 model.box(f"leg_{i + 1}", EG_LEG[0], EG_LEG[1], EG_LOW + EG_TIP + 0.01, at=(sx * lx / 2, sy * ly / 2, (EG_LOW - EG_TIP + 0.01) / 2),
86 op="join", body="shell_body", name=f"Leg {i + 1}")
87 model.box("slot", aw + EG_TRAVEL, t + 0.2, ah, at=(0, -D + t / 2, EG_AXIS), op="cut", body="shell_body", name="Slot")
88 model.box("base", length - 2 * t, depth - 2 * t, height - t - EG_LOW, at=(0, 0, (EG_LOW + height - t) / 2), op="new", body="base_body",
89 name="Base")
90 sw, sh = EG_STEP_SIZE
91 model.box("actuator_step", sw, t + EG_STEP, sh, at=(slide, -D + t - (t + EG_STEP) / 2, EG_AXIS), op="new", body="actuator_body",
92 name="Actuator step")
93 knob = EG_OUT - EG_STEP
94 model.box("actuator", aw, knob + 0.01, ah, at=(slide, -D - EG_STEP - (knob - 0.01) / 2, EG_AXIS), op="join", body="actuator_body",
95 name="Actuator")
96 pins = []
97 for r, y in enumerate(rows):
98 for i in range(3):
99 n = r * 3 + i + 1
100 model.box(f"terminal_{n}", EG_PIN[0], EG_PIN[1], EG_LOW + EG_TIP, at=((i - 1) * EG_PITCH, y, (EG_LOW - EG_TIP) / 2), op="new",
101 body=f"terminal_{n}_body", name=f"Terminal {n}")
102 pins.append(f"terminal_{n}_body")
103 # Materials, for looks and a rough mass (the drawings name none): the shell sheet steel (steel-c10), the base black phenolic
104 # (bakelite), the actuator black POM (pom-copolymer), the terminals brass (brass), silver coloured.
105 model.material("steel-c10", bodies=["shell_body"], color="#c9ccd0")
106 model.material("bakelite", bodies=["base_body"], color="#2a2a2c")
107 model.material("pom-copolymer", bodies=["actuator_body"], color="#222325")
108 model.material("brass", bodies=pins, color="#d6d8db")
109else:
110 # C&K OS102011.
111 length, width, height, out, axis, base_low, angled = KINDS[kind]
112 slide = (position - 1.5) * TRAVEL # pos. 1 and 2 are a travel apart, centred on terminal 2
113 L, W = length / 2, width / 2
114 inner = L - SHELL_T
48115
49model = Model()
50# Shell: the end walls (whose legs reach through the board), the top, and the long sides (upright) or the front face (right angle); the
51# actuator's slot, the actuator plus its travel long, in the top (upright) or in the front face (right angle).
52model.box("shell_top", length, width, SHELL_T, at=(0, 0, height - SHELL_T / 2), op="new", body="shell_body", name="Shell top")
53for side, sx in (("right", 1), ("left", -1)):
54 model.box(f"end_{side}", SHELL_T, width, height, at=(sx * (L - SHELL_T / 2), 0, height / 2), op="join", body="shell_body",
55 name=f"End wall, {side}")
56 model.box(f"leg_{side}", LEG_T, LEG_W, TIP + 0.01, at=(sx * LEG_PITCH / 2, 0, -(TIP - 0.01) / 2), op="join", body="shell_body",
57 name=f"Leg, {side}")
58 model.box(f"barb_{side}", LEG_T, BARB_W, BARB[0] - BARB[1], at=(sx * LEG_PITCH / 2, 0, (BARB[0] + BARB[1]) / 2), op="join",
59 body="shell_body", name=f"Leg barb, {side}")
60if angled:
61 model.box("shell_front", length, SHELL_T, height, at=(0, -W + SHELL_T / 2, height / 2), op="join", body="shell_body", name="Shell front")
62 model.box("slot", ACTUATOR + TRAVEL, SHELL_T + 0.2, ACTUATOR, at=(0, -W + SHELL_T / 2, axis), op="cut", body="shell_body", name="Slot")
63else:
64 for side, sy in (("back", 1), ("front", -1)):
65 model.box(f"side_{side}", length, SHELL_T, height - base_low, at=(0, sy * (W - SHELL_T / 2), (height + base_low) / 2), op="join",
66 body="shell_body", name=f"Shell side, {side}")
67 model.box("slot", ACTUATOR + TRAVEL, ACTUATOR, SHELL_T + 0.2, at=(0, 0, height - SHELL_T / 2), op="cut", body="shell_body", name="Slot")
68# Base: the phenolic block inside the shell, from its lower edge up to the top.
69front = -W + SHELL_T
70back = W if angled else W - SHELL_T # the right-angle shell has no back
71model.box("base", 2 * inner, back - front, height - SHELL_T - base_low, at=(0, (front + back) / 2, (base_low + height - SHELL_T) / 2),
72 op="new", body="base_body", name="Base")
73# Actuator: square, out of the slot by `out`, a V notch in its end.
74if angled:
75 a_in = -W + SHELL_T
76 a_end = -W - out
77 model.box("actuator", ACTUATOR, a_in - a_end, ACTUATOR, at=(slide, (a_in + a_end) / 2, axis), op="new", body="actuator_body",
78 name="Actuator")
79 with model.sketch("notch_sketch", on="XY", name="Actuator notch") as sk:
80 sk.polyline("notch_outline", [(slide - NOTCH / 2, a_end - 0.01), (slide + NOTCH / 2, a_end - 0.01), (slide, a_end + NOTCH)],
81 closed=True)
82 model.extrude("notch", "notch_sketch", distance=height, op="cut", body="actuator_body", name="Actuator notch")
83else:
84 a_low = height - SHELL_T
85 a_end = height + out
86 model.box("actuator", ACTUATOR, ACTUATOR, a_end - a_low, at=(slide, 0, (a_low + a_end) / 2), op="new", body="actuator_body",
87 name="Actuator")
88 model.plane("notch_plane", on="XZ", offset=-(ACTUATOR / 2 + 0.1), name="Actuator notch")
89 with model.sketch("notch_sketch", on="notch_plane", name="Actuator notch") as sk:
90 sk.polyline("notch_outline", [(slide - NOTCH / 2, a_end + 0.01), (slide + NOTCH / 2, a_end + 0.01), (slide, a_end - NOTCH)],
91 closed=True)
92 model.extrude("notch", "notch_sketch", distance=ACTUATOR + 0.2, op="cut", body="actuator_body", name="Actuator notch")
93# Terminals 1-3: straight down from the base's lower edge to the tips.
94for i in range(3):
95 model.box(f"terminal_{i + 1}", PIN_W, PIN_T, base_low + TIP, at=((i - 1) * PITCH, 0, (base_low - TIP) / 2), op="new",
96 body=f"terminal_{i + 1}_body", name=f"Terminal {i + 1}")
97# Materials (page I-37, Materials): base phenolic resin (bakelite), actuator POM, black (pom-copolymer), housing plate SPCC, tin plated
98# (steel-c10), terminals brass, silver plated (brass, silver coloured).
99model.material("steel-c10", bodies=["shell_body"], color="#c9ccd0")
100model.material("bakelite", bodies=["base_body"], color="#a5562a")
101model.material("pom-copolymer", bodies=["actuator_body"], color="#222325")
102model.material("brass", bodies=[f"terminal_{i + 1}_body" for i in range(3)], color="#d6d8db")
116 model = Model()
117 # Shell: the end walls (whose legs reach through the board), the top, and the long sides (upright) or the front face (right angle); the
118 # actuator's slot, the actuator plus its travel long, in the top (upright) or in the front face (right angle).
119 model.box("shell_top", length, width, SHELL_T, at=(0, 0, height - SHELL_T / 2), op="new", body="shell_body", name="Shell top")
120 for side, sx in (("right", 1), ("left", -1)):
121 model.box(f"end_{side}", SHELL_T, width, height, at=(sx * (L - SHELL_T / 2), 0, height / 2), op="join", body="shell_body",
122 name=f"End wall, {side}")
123 model.box(f"leg_{side}", LEG_T, LEG_W, TIP + 0.01, at=(sx * LEG_PITCH / 2, 0, -(TIP - 0.01) / 2), op="join", body="shell_body",
124 name=f"Leg, {side}")
125 model.box(f"barb_{side}", LEG_T, BARB_W, BARB[0] - BARB[1], at=(sx * LEG_PITCH / 2, 0, (BARB[0] + BARB[1]) / 2), op="join",
126 body="shell_body", name=f"Leg barb, {side}")
127 if angled:
128 model.box("shell_front", length, SHELL_T, height, at=(0, -W + SHELL_T / 2, height / 2), op="join", body="shell_body",
129 name="Shell front")
130 model.box("slot", ACTUATOR + TRAVEL, SHELL_T + 0.2, ACTUATOR, at=(0, -W + SHELL_T / 2, axis), op="cut", body="shell_body",
131 name="Slot")
132 else:
133 for side, sy in (("back", 1), ("front", -1)):
134 model.box(f"side_{side}", length, SHELL_T, height - base_low, at=(0, sy * (W - SHELL_T / 2), (height + base_low) / 2),
135 op="join", body="shell_body", name=f"Shell side, {side}")
136 model.box("slot", ACTUATOR + TRAVEL, ACTUATOR, SHELL_T + 0.2, at=(0, 0, height - SHELL_T / 2), op="cut", body="shell_body",
137 name="Slot")
138 # Base: the phenolic block inside the shell, from its lower edge up to the top.
139 front = -W + SHELL_T
140 back = W if angled else W - SHELL_T # the right-angle shell has no back
141 model.box("base", 2 * inner, back - front, height - SHELL_T - base_low, at=(0, (front + back) / 2, (base_low + height - SHELL_T) / 2),
142 op="new", body="base_body", name="Base")
143 # Actuator: square, out of the slot by `out`, a V notch in its end.
144 if angled:
145 a_in = -W + SHELL_T
146 a_end = -W - out
147 model.box("actuator", ACTUATOR, a_in - a_end, ACTUATOR, at=(slide, (a_in + a_end) / 2, axis), op="new", body="actuator_body",
148 name="Actuator")
149 with model.sketch("notch_sketch", on="XY", name="Actuator notch") as sk:
150 sk.polyline("notch_outline", [(slide - NOTCH / 2, a_end - 0.01), (slide + NOTCH / 2, a_end - 0.01), (slide, a_end + NOTCH)],
151 closed=True)
152 model.extrude("notch", "notch_sketch", distance=height, op="cut", body="actuator_body", name="Actuator notch")
153 else:
154 a_low = height - SHELL_T
155 a_end = height + out
156 model.box("actuator", ACTUATOR, ACTUATOR, a_end - a_low, at=(slide, 0, (a_low + a_end) / 2), op="new", body="actuator_body",
157 name="Actuator")
158 model.plane("notch_plane", on="XZ", offset=-(ACTUATOR / 2 + 0.1), name="Actuator notch")
159 with model.sketch("notch_sketch", on="notch_plane", name="Actuator notch") as sk:
160 sk.polyline("notch_outline", [(slide - NOTCH / 2, a_end + 0.01), (slide + NOTCH / 2, a_end + 0.01), (slide, a_end - NOTCH)],
161 closed=True)
162 model.extrude("notch", "notch_sketch", distance=ACTUATOR + 0.2, op="cut", body="actuator_body", name="Actuator notch")
163 # Terminals 1-3: straight down from the base's lower edge to the tips.
164 for i in range(3):
165 model.box(f"terminal_{i + 1}", PIN_W, PIN_T, base_low + TIP, at=((i - 1) * PITCH, 0, (base_low - TIP) / 2), op="new",
166 body=f"terminal_{i + 1}_body", name=f"Terminal {i + 1}")
167 # Materials (page I-37, Materials): base phenolic resin (bakelite), actuator POM, black (pom-copolymer), housing plate SPCC, tin plated
168 # (steel-c10), terminals brass, silver plated (brass, silver coloured).
169 model.material("steel-c10", bodies=["shell_body"], color="#c9ccd0")
170 model.material("bakelite", bodies=["base_body"], color="#a5562a")
171 model.material("pom-copolymer", bodies=["actuator_body"], color="#222325")
172 model.material("brass", bodies=[f"terminal_{i + 1}_body" for i in range(3)], color="#d6d8db")
103173result = model.result()
104174
pypart.toml +21 −7
@@ -1,17 +1,17 @@
11name = "steve/slide-switch-tht"
2version = "1.0.0"
2version = "1.1.0"
33runtime = "steve"
44license = "MIT"
5summary = "Miniature through-hole SPDT slide switches, C&K OS102011: vertical (MS2Q) and right-angle (MA1Q), from C&K's OS series data sheet."
6description = """Miniature through-hole SPDT slide switch, C&K OS series OS102011, from C&K's data sheet (8 aug 17): a steel shell 8.6 long and 4.7 high over a phenolic base, a 2.0 mm square actuator with 2.0 mm travel, three terminals on a 2.0 mm pitch and a snap-in leg at each end, 8.2 apart. MS2Q stands upright with the actuator 4.0 above the shell; MA1Q is the right-angle version with the actuator 4.0 out of the shell's front, 2.6 above the board. See the README."""
7tags = ["slide-switch", "switch", "spdt", "through-hole", "c-and-k", "electronics"]
5summary = "Through-hole slide switches from the makers' drawings: C&K OS102011 SPDT, vertical (MS2Q) and right-angle (MA1Q); E-Switch EG1224 (SPDT) and EG2219 (DPDT), right-angle."
6description = """Through-hole slide switch from the makers' drawings. C&K OS102011 (SPDT): steel shell 8.6 x 4.7 high over a phenolic base, 2.0 square actuator, 2.0 travel, terminals on 2.0, a leg at each end; MS2Q upright with the actuator 4.0 above, MA1Q right-angle. E-Switch EG1224 (SPDT) and EG2219 (DPDT): right-angle, body 13.8 x 6.5 x 8.5, a 5.0 x 4.0 actuator 9.0 out, 4.0 travel, terminals on 4.0, four legs. See the README."""
7tags = ["slide-switch", "switch", "spdt", "dpdt", "through-hole", "c-and-k", "e-switch", "electronics"]
88
99[parameters.kind]
1010type = "choice"
1111default = "MS2Q"
12choices = ["MS2Q", "MA1Q"]
12choices = ["MS2Q", "MA1Q", "EG1224", "EG2219"]
1313label = "Type"
14description = "MS2Q: vertical (actuator up); MA1Q: right angle (actuator parallel to the board)."
14description = "C&K MS2Q: vertical (actuator up); C&K MA1Q: right angle; E-Switch EG1224 (SPDT) and EG2219 (DPDT): right angle."
1515
1616[parameters.position]
1717type = "integer"
@@ -19,7 +19,7 @@
1919min = 1
2020max = 2
2121label = "Actuator position"
22description = "1 or 2 (the data sheet draws position 2)."
22description = "1 or 2 (the C&K sheet draws position 2)."
2323
2424[[presets]]
2525id = "os102011ms2q"
@@ -35,3 +35,17 @@
3535aliases = ["C&K OS102011MA1Q", "OS102011MA1QN1", "OS102011MA1QN1C", "OS102011MA1QS1", "OS102011MA1QS1C"]
3636standard = "C&K OS"
3737
38[[presets]]
39id = "eg1224"
40title = "E-Switch EG1224, SPDT slide switch, right angle"
41params = { kind = "EG1224" }
42aliases = ["E-Switch EG1224", "EG1224"]
43standard = "E-Switch EG"
44
45[[presets]]
46id = "eg2219"
47title = "E-Switch EG2219, DPDT slide switch, right angle"
48params = { kind = "EG2219" }
49aliases = ["E-Switch EG2219", "EG2219"]
50standard = "E-Switch EG"
51
README.md +38 −6
@@ -1,10 +1,15 @@
1# Through-hole slide switch, miniature SPDT
1# Through-hole slide switch
22
3A miniature through-hole SPDT slide switch, C&K's OS series OS102011. It has a steel shell over a phenolic base, a square actuator through a slot in the shell, three terminals in a row, and a snap-in leg at each end. MS2Q stands upright with the actuator on top. MA1Q is the right-angle version: the actuator comes out of the shell's front, parallel to the board.
3A through-hole slide switch with a steel shell over an insulating base, an actuator through a slot in the shell, terminals in a row, and legs from the shell:
44
5The origin is at terminal 2, on the board's top face (the XY plane). The terminals and legs lie along X. The right-angle actuator points along -Y.
5- C&K's miniature SPDT OS102011, with three terminals and a snap-in leg at each end. MS2Q stands upright with the actuator on top. MA1Q is the right-angle version: the actuator comes out of the shell's front, parallel to the board.
6- E-Switch's EG1224 (SPDT, one row of three terminals) and EG2219 (DPDT, two rows), right-angle, with a large actuator knob and four legs.
67
7`kind` is the type. `position` is where the actuator sits: positions 1 and 2 are the travel apart, centred on terminal 2 (position 1 connects terminals 1-2, position 2 connects 2-3).
8The origin is at the centre of the shell's footprint, on the board's top face (the XY plane); for the C&K types that is terminal 2. The terminals lie along X. The right-angle actuator points along -Y.
9
10`kind` is the type. `position` is where the actuator sits: positions 1 and 2 are the travel apart, centred on the middle terminal (position 1 connects terminals 1-2, position 2 connects 2-3).
11
12## C&K OS102011
813
914| Type | Parts | Shell (long x wide/deep x high) | Actuator | Base's lower edge |
1015|---|---|---|---|---|
@@ -21,6 +26,23 @@
2126- The terminals and legs reach 2.8 below the board. The vertical type's shell top is 7.5 above the tips.
2227- PC mounting: the terminals go in Ø0.8 holes, and the legs in Ø1.5 holes, 2.1 from terminals 1 and 3.
2328
29## E-Switch EG1224 and EG2219
30
31| Type | Circuit | Terminals |
32|---|---|---|
33| EG1224 | SPDT, non-shorting | one row of three, 1.75 from the back legs' row |
34| EG2219 | DPDT, non-shorting | two rows of three, 2.5 apart, between the legs' rows |
35
36For both:
37
38- The body is 13.8 x 6.5 and 8.5 high.
39- The actuator is 5.0 wide and 4.0 high, its axis 5.5 above the board. It comes 9.0 out of the body: a 0.5 step, then the knob 8.5 long. The travel is 4.0.
40- The terminals are 4.0 apart, 0.5 wide and 0.4 thick.
41- Four legs, 0.8 wide and 0.5 thick, are 12.0 apart along the terminals and 6.0 across.
42- The terminals and legs reach 3.5 below the board.
43- EG1224's body lower edge is 1.5 above the board.
44- PCB holes (EG2219's drawing): Ø1.2 for the legs and Ø0.9 for the terminals.
45
2446## Source
2547
2648C&K, *OS Series, Miniature Slide Switches*, dated 8 aug 17, catalogue pages I-37 to I-43, from the copy at datasheet.lcsc.com (<https://datasheet.lcsc.com/datasheet/pdf/9e68893bade4341f8dc17b91bf8fc979.pdf>, LCSC part C221829; C&K's own site isn't used). Dimensions are in inches (mm); the mm values are used here.
@@ -31,14 +53,22 @@
3153
3254The sheet gives no weight.
3355
56E-Switch's drawings, both in mm, from the copies at datasheet.lcsc.com:
57
58- Drawing P040042 rev. A, *EG 1224 Non-Shorting*, 4/27/98, scale 3:1 (<https://datasheet.lcsc.com/datasheet/pdf/81a8fbc03a60aba6b6e95cd6436e5e9a.pdf>, LCSC part C273395): body 13.80 x 6.50, 8.50 high; actuator 5.00 wide, 4.00 high, 9.00 out of the body and 8.50 beyond its step; actuator axis 5.50 above the board; body lower edge 1.50 above it; terminals 4.00 apart, 0.50 wide, 0.40 thick; legs 0.80 wide, 0.50 thick, 12.00 and 6.00 apart; terminals 1.75 from the back legs' row; 3.50 below the board; travel 4.0 mm (note 4). Tolerances ±0.4 (0.0) and ±0.25 (0.00).
59- Drawing P040170 rev. B, *EG 2219*, 12/20/02, scale 2:1 (<https://datasheet.lcsc.com/datasheet/pdf/45b5d88da26f8e98312dcd5197ffd830.pdf>, LCSC part C3664594): body 13.8 x 6.5, 8.5 high; actuator 5.0 wide, 4.0 high, 8.5 beyond a 0.5 step; axis 5.5; terminals 4.0 apart, 0.5 wide, 0.4 thick, in two rows 2.5 apart; legs 0.8 wide, 0.5 thick, 12.0 and 6.0 apart; 3.5 below the board; travel 4.00 mm (note 5); PCB holes 4x Ø1.2 and 6x Ø0.9.
60
61The drawings give no weight and name no materials.
62
3463**Proportions, for looks only.** The drawings don't dimension the following:
3564
36- The shell's sheet thickness, 0.4, as the legs'.
65- The shell's sheet thickness: 0.4 for C&K (the legs'), 0.5 for E-Switch (the legs').
66- E-Switch: the actuator's step, 4.0 x 3.0, narrower than the knob as drawn; and EG2219's body lower edge, 1.5 above the board as on EG1224's drawing (EG2219's doesn't dimension it). The base fills the shell from that edge, and the slot is the actuator plus its travel long.
3767- Where the barb sits on the leg: from 0.4 to 1.4 below the board.
3868- The V notch in the actuator's end, 0.6 wide and deep.
3969- The shell is drawn as plain plates: on the vertical type the top, the long sides down to the base's lower edge, and the end walls down to the board; on the right-angle type the top, the front (with the slot) and the end walls. The slot is the actuator plus its travel long.
4070
41Materials follow the sheet: the shell sheet steel (`steel-c10`), the base phenolic (`bakelite`), the actuator black POM (`pom-copolymer`), and the terminals brass (`brass`), silver coloured. **Mass check:** the sheet states no weight. As modelled, MS2Q is 0.41 g shell + 0.13 g base + 0.02 g actuator + 0.01 g terminals = 0.57 g, and MA1Q is 0.52 g.
71For C&K, materials follow the sheet: the shell sheet steel (`steel-c10`), the base phenolic (`bakelite`), the actuator black POM (`pom-copolymer`), and the terminals brass (`brass`), silver coloured. **Mass check:** the sheet states no weight. As modelled, MS2Q is 0.41 g shell + 0.13 g base + 0.02 g actuator + 0.01 g terminals = 0.57 g, and MA1Q is 0.52 g. E-Switch's drawings name no materials, so the same are used for looks (the base black). EG1224 as modelled is 1.26 g shell + 0.59 g base + 0.26 g actuator + 0.03 g terminals = 2.14 g; no weight is stated.
4272
4373## Catalogue models
4474
@@ -56,5 +86,7 @@
5686| Legs | 0.4 thick, 8.2 apart, up to 1.07 wide, narrowing to 0.59 at the tip | 0.4 thick, 8.2 apart, 1.2 wide, barbs 1.5 |
5787| Actuator position | between terminals 1 and 2 (position 1) | drawn in position 2 |
5888
89The old `SW E-Switch EG1224 SPDT Angled` and `SW E-Switch EG2219 DPDT Angled` models name these exact parts, so they map to EG1224 and EG2219. Measured on the reference models (2026-11-06), they match the drawings: body 13.8 x 6.5 x 8.5; actuator 5.0 x 4.0 on a 5.5 axis, 9.0 out with a 0.5 step (4.0 x 4.0 there); terminals 0.5 x 0.4 on 4.0, rows 1.75 from the back legs (EG2219 2.5 apart); legs 0.8 x 0.5, 12.0 by 6.0; 3.5 below the board. Their body lower edge is between 1.0 and 1.4 above the board, against EG1224's drawn 1.5, and their actuator sits in position 1.
90
5991The family's other switches (DIP switches, tactile switches and other makers' switches) are other parts. See `COVERAGE.md`.
6092