Sign in with STEVE

steve/small-tactile-switch-tht

6 x 3.5 mm through-hole tactile switches from APEM's MJTP sheet: MJTP1243 (4.3 mm actuator) and MJTP1250 (5.0 mm), two terminals 6.5 apart.

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 126 lines · Python · STEVE runtime · checked
Download
1"""6 x 3.5 mm through-hole tactile switch, APEM MJTP1243 and MJTP1250 (top-operated, two terminals). The body is centred on the origin,
2its underside on the board's top face (the XY plane); the body's 6.0 length and the two terminals lie along X (6.5 apart), its 3.5 depth
3along Y. Dimensions from APEM's MJTP series sheet, in the README."""
4from steve import Model
5
6kind = "1243" # Type (MJTP1243 or MJTP1250)
7
8# Each entry: (height to the actuator's top L1, overall height to the terminals' tips L).
9# APEM "MJTP Series 6mm Thru-Hole Mtg. Tact Switches", catalogue section M (pages M3 to M7, PDF dated 2021-09-05/2023-04-20; the
10# mm.digikey.com copy), page M6, MJTP1243 & MJTP1250, table: MJTP1243 L1 .169 (4,3), L .307 (7,8); MJTP1250 L1 .197 (5,0),
11# L .335 (8,5).
12TYPES = {
13 "1243": (4.3, 7.8),
14 "1250": (5.0, 8.5),
15}
16# Page M6, the MJTP1243 & MJTP1250 drawing, in inches (mm); the mm values are used:
17BODY_L = 6.0 # .236 (6.0), the body's length (front view)
18BODY_W = 3.5 # .138 (3.5), its depth (side view)
19TOP = 3.5 # .138 (3.5), the board to the cover's top
20EAR_H = 0.3 # .012 (0.3), the two end bosses above the cover's top
21ACT_L = 3.0 # .118 (3.0), the actuator's length (front view)
22ACT_W = 1.5 # .059 (1.5), its depth (side view)
23TAIL = 3.5 # .138 (3.5), the terminals' tips below the board
24PITCH = 6.5 # .256 (6.5), the terminals' centres at the tips
25OVER = 7.9 # .311 (7.9), over the terminals' bends
26LEAD_W = 1.0 # .039 (1.0), the terminals' width (side view)
27LEAD_T = 0.3 # .012 (0.3), their thickness
28BEND_START = 0.7 # .028 (0.7), the board to where the terminal starts to bend out
29BEND_APEX = 1.8 # .071 (1.8), the board to the bend's outermost point
30BEND_END = 2.8 # .110 (2.8), the board to where the terminal is straight again
31# Proportions, for looks only (the drawing doesn't dimension them; scaled from the drawing, README): the cover's thickness, the end
32# bosses' size, the corner feet's recesses, and where the terminals leave the housing.
33COVER_T = 0.3
34EAR_L = 1.0
35EAR_W = 2.0
36RECESS_L = 2.2
37RECESS_W = 2.5
38RECESS_H = 0.4
39LEAD_TOP = 0.8
40
41if kind not in TYPES:
42 raise ValueError(f"no type {kind!r}: {', '.join(TYPES)}")
43height, overall = TYPES[kind]
44if abs(height + TAIL - overall) > 0.05:
45 raise ValueError("L1 and L disagree with the 3.5 tail")
46hx, hy = BODY_L / 2, BODY_W / 2
47housing_top = TOP - COVER_T
48
49# model.box takes the box's centre; the XZ plane's normal is -Y, so a sketch on it extrudes towards -Y.
50model = Model()
51model.box("housing", BODY_L, BODY_W, housing_top - RECESS_H, at=(0, 0, (housing_top + RECESS_H) / 2), op="new", body="housing_body",
52 name="Housing")
53# Four corner feet: the underside is recessed RECESS_L along X and RECESS_W along Y (front and side views).
54foot_l = (BODY_L - RECESS_L) / 2
55foot_w = (BODY_W - RECESS_W) / 2
56for i, (sx, sy) in enumerate(((1, 1), (-1, 1), (-1, -1), (1, -1))):
57 model.box(f"foot_{i + 1}", foot_l, foot_w, RECESS_H + 0.01, at=(sx * (hx - foot_l / 2), sy * (hy - foot_w / 2), (RECESS_H + 0.01) / 2),
58 op="join", body="housing_body", name="Foot")
59# The two end bosses stand on the cover; they are moulded with the housing, through the cover's end notches.
60for i, sx in enumerate((1, -1)):
61 model.box(f"ear_{i + 1}", EAR_L, EAR_W, COVER_T + EAR_H + 0.01, at=(sx * (hx - EAR_L / 2), 0, housing_top - 0.01 + (COVER_T + EAR_H + 0.01) / 2),
62 op="join", body="housing_body", name="End boss")
63# Cover: a plate over the housing with the ends notched round the bosses and an opening for the actuator.
64model.box("cover", BODY_L, BODY_W, COVER_T, at=(0, 0, housing_top + COVER_T / 2), op="new", body="cover_body", name="Cover")
65for i, sx in enumerate((1, -1)):
66 model.box(f"cover_notch_{i + 1}", EAR_L + 0.02, EAR_W, COVER_T + 0.2, at=(sx * (hx - EAR_L / 2 + 0.01), 0, housing_top + COVER_T / 2),
67 op="cut", body="cover_body", name="Boss notch")
68model.box("cover_opening", ACT_L, ACT_W, COVER_T + 0.2, at=(0, 0, housing_top + COVER_T / 2), op="cut", body="cover_body",
69 name="Actuator opening")
70# Actuator: from the housing's top, through the cover, up to L1.
71model.box("actuator", ACT_L, ACT_W, height - housing_top, at=(0, 0, (height + housing_top) / 2), op="new", body="actuator_body",
72 name="Actuator")
73
74
75def outline(points, t):
76 """A closed outline around a polyline of straight segments, t thick (mitred corners)."""
77 import math
78
79 def offset(sign):
80 out = []
81 for i, (x, y) in enumerate(points):
82 normals = []
83 segments = ([(points[i - 1], points[i])] if i else []) + ([(points[i], points[i + 1])] if i + 1 < len(points) else [])
84 for a, b in segments:
85 dx, dy = b[0] - a[0], b[1] - a[1]
86 n = math.hypot(dx, dy)
87 normals.append((-dy / n, dx / n))
88 if len(normals) == 1:
89 nx, ny = normals[0]
90 k = 1.0
91 else:
92 nx, ny = normals[0][0] + normals[1][0], normals[0][1] + normals[1][1]
93 n = math.hypot(nx, ny)
94 nx, ny = nx / n, ny / n
95 k = 1 / (nx * normals[0][0] + ny * normals[0][1])
96 out.append((x + sign * nx * k * t / 2, y + sign * ny * k * t / 2))
97 return out
98 return offset(1) + offset(-1)[::-1]
99
100
101# Terminals 1 (-X) and 2 (+X): a strip 1.0 wide and 0.3 thick down the housing's end face from LEAD_TOP, out to the bends' 7.9 overall
102# at 1.8 below the board, back in to the 6.5 pitch at 2.8 and straight down to the tip; drawn as an outline in the XZ plane (the strip's
103# centre line offset by half the thickness) and extruded along Y.
104x_face = hx + LEAD_T / 2
105x_pin = PITCH / 2
106x_apex = OVER / 2 - LEAD_T / 2
107for _ in range(4): # the mitred outer corner reaches past half the thickness: move the bend in until it sits at OVER / 2
108 path = [(x_face, LEAD_TOP), (x_face, -BEND_START), (x_apex, -BEND_APEX), (x_pin, -BEND_END), (x_pin, -TAIL)]
109 x_apex -= max(x for x, z in outline(path, LEAD_T)) - OVER / 2
110path = [(x_face, LEAD_TOP), (x_face, -BEND_START), (x_apex, -BEND_APEX), (x_pin, -BEND_END), (x_pin, -TAIL)]
111leads = []
112for i, sx in enumerate((-1, 1)):
113 pts = [(sx * x, z) for x, z in path]
114 model.plane(f"lead_{i + 1}_plane", on="XZ", offset=-LEAD_W / 2, name=f"Terminal {i + 1}")
115 with model.sketch(f"lead_{i + 1}_sketch", on=f"lead_{i + 1}_plane", name=f"Terminal {i + 1}") as sk:
116 sk.polyline(f"lead_{i + 1}_outline", outline(pts, LEAD_T), closed=True)
117 model.extrude(f"lead_{i + 1}", f"lead_{i + 1}_sketch", distance=LEAD_W, op="new", body=f"lead_{i + 1}_body", name=f"Terminal {i + 1}")
118 leads.append(f"lead_{i + 1}_body")
119# Materials (page M3): the case and actuator black thermoplastic (pa6 for both, the sheet names no resin), the cover PET film
120# (pet; the sheet also lists tin plated brass or stainless steel for covers and brackets), the terminals silver plated brass (brass).
121model.material("pa6", bodies=["housing_body"], color="#26272a")
122model.material("pet", bodies=["cover_body"], color="#1c1d20")
123model.material("pa6", bodies=["actuator_body"], color="#202124")
124model.material("brass", bodies=leads, color="#d6d8db")
125result = model.result()
126

6 x 3.5 mm through-hole tactile switch (SPST-NO), APEM MJTP1243 and MJTP1250, from APEM's MJTP series sheet (catalogue page M6): a black 6.0 x 3.5 body 3.5 high, a 3.0 x 1.5 actuator 4.3 (MJTP1243) or 5.0 (MJTP1250) above the board, and two bent terminals 1.0 x 0.3, 6.5 apart, 7.9 over the bends, 3.5 below the board. See the README.

Through-hole tactile switch, 6 x 3.5 mm

A 6 x 3.5 mm through-hole tactile switch (SPST-NO), APEM's MJTP1243 and MJTP1250. It has a black housing, a cover with a boss at each end, a rectangular actuator, and two bent terminals, one at each end. The body is centred on the origin, with its underside on the board's top face (the XY plane). The body's 6.0 length and the terminals lie along X: terminal 1 at -X, terminal 2 at +X. Its 3.5 depth lies along Y.

kind is the MJTP number.

Type Actuator's top above the board (L1) Overall, tips to actuator (L)
MJTP1243 4.3 7.8
MJTP1250 5.0 8.5

For both types:

  • The body is 6.0 long and 3.5 deep. Its top (the cover's) is 3.5 above the board, and the two end bosses stand 0.3 above that.
  • The actuator is 3.0 long (along X) and 1.5 deep (along Y).
  • The terminals are 1.0 wide and 0.3 thick. Their tips are 6.5 apart, centre to centre, and reach 3.5 below the board.
  • Each terminal runs down the housing's end, starts to bend out 0.7 below the board, is furthest out 1.8 below it (7.9 over both bends), and is straight again 2.8 below it.

Source

APEM, MJTP Series 6mm Thru-Hole Mtg. Tact Switches, catalogue section M, pages M3 to M7 (PDF created 2021-09-05, modified 2023-04-20), from the copy at mm.digikey.com (https://mm.digikey.com/Volume0/opasdata/d220001/medias/docus/5561/MJTP thruhole.pdf; APEM's own site isn't used). Dimensions are in inches (mm); the mm values are used here.

  • Page M6, MJTP1243 & MJTP1250 drawing: body .236 (6.0) long and .138 (3.5) deep; .138 (3.5) from the board to the cover's top; the end bosses .012 (0.3) above it; actuator .118 (3.0) long and .059 (1.5) deep; terminals .039 (1.0) wide and .012 (0.3) thick, tips .256 (6.5) apart and .138 (3.5) below the board; .311 (7.9) over the bends; the bend starts .028 (0.7), is furthest out .071 (1.8), and ends .110 (2.8) below the board.
  • Page M6, the table: MJTP1243 L1 .169 (4,3), L .307 (7,8); MJTP1250 L1 .197 (5,0), L .335 (8,5).
  • Page M3, Materials: case thermoplastic, black, UL94HB; actuator thermoplastic, black unless otherwise specified; cover/bracket PET film, tin plated brass or stainless steel; terminals silver plated brass.

The sheet gives no weight.

Proportions, for looks only. The drawing doesn't dimension the following. They are scaled from the drawing:

  • The cover, 0.3 thick, so the housing's top is 3.2 above the board.
  • The end bosses: 1.0 long (front view) and 2.0 deep (side view), at each end of the body, through notches in the cover.
  • The underside: four corner feet 0.4 high. The front view shows a recess 2.2 long in the middle, and the side view one 2.5 deep, so the feet are 1.9 x 0.5.
  • Where the terminals leave the housing: 0.8 above the board, on its end faces.

Materials follow page M3: the housing and actuator black thermoplastic (pa6; the sheet names no resin), the cover PET film (pet, dark as in the sheet's photos; the sheet also lists tin plated brass or stainless steel for covers and brackets without saying which model has which), and the terminals brass (brass), silver coloured. The sheet's photos show one switch with a light actuator, but they aren't labelled, so both types are black as the materials say. Mass check: the sheet states no weight. As modelled, MJTP1243 is 0.071 g housing + 0.006 g actuator + 0.005 g cover + 0.024 g terminals = 0.11 g.

Catalogue models

The old SW PUSH 1 P1 T 6x3.5mm H4.3 APEM MJTP1243 and SW PUSH 1 P1 T 6x3.5mm H5.0 APEM MJTP1250 models name these exact parts, so they map to MJTP1243 and MJTP1250. They were measured on the reference models (2026-11-06). The terminals (pitch, width and thickness) and the body agree with the drawing; the other differences are below.

Old models APEM drawing
Body 6.0 x 3.5, top 3.58 above the board 6.0 x 3.5, top 3.5
End bosses 0.8 x 2.0, about 0.3 high, tapered 0.3 high (1.0 x 2.0 drawn)
Actuator 3.5 x 1.5 3.0 x 1.5
Actuator's top 4.3 and 5.0 4.3 and 5.0
Terminals 1.0 x 0.3, tips 6.5 apart, narrowed to 0.64 below 3.0 1.0 x 0.3, tips 6.5 apart
Over the bends 7.8, furthest out 1.8 below the board 7.9, furthest out 1.8 below
Tips below the board 3.5 3.5
Underside a recess 2.8 long across the whole depth, 0.4 high four corner feet 0.4 high (proportion)

The family's other switches (DIP switches, slide and toggle switches, other makers' tactile switches) are other parts. See COVERAGE.md.

  1. 1.0.0 Latest
STEVEMIT

steve/tht-tactile-switch

6 x 6 mm through-hole tactile switches from Omron's B3F data sheet: flat plungers 4.3 to 9.5 mm high, projected 7.3 mm, with or without a ground terminal.

0 9 sizes 0 3 hours ago v1.0.0
STEVEMIT

steve/right-angle-tactile-switch

Right-angle 6 x 6 mm through-hole tactile switches, C&K PTS645V: round actuators 3.15 to 8.35 mm from the front leads, or the 6.15 mm square actuator.

0 5 sizes 0 1 hour ago v1.0.0
STEVEMIT

steve/right-angle-pushbutton-tht

Right-angle subminiature pushbutton from NKK's Series BB sheet: BB15AH, SPDT momentary, with a support bracket, without a cap or with a 5.1 or 7.5 mm slip-on cap.

0 7 sizes 0 1 hour ago v1.0.0
STEVEMIT

steve/dip-switch-tht

Through-hole side-actuated (piano) DIP switches, CTS Series 194/195, 2 to 10 and 12 positions, from CTS's data sheet.

0 10 sizes 0 2 hours ago v1.0.0