Sign in with STEVE

steve/countersink-hole

Countersink for metric countersunk head screws, M1.6 to M10: ISO 15065's 90 degree countersink over its ISO 273 medium clearance hole, as a solid to cut with.

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 39 lines · Python · STEVE runtime · checked
Download
1"""Countersink for a metric countersunk head screw (head to ISO 7721), as a solid to cut with: ISO 15065's 90 degree countersink over its
2clearance hole. Axis along Z, the top face on the XY plane: the cone from the countersink diameter Dc at the top down to the hole d_h, then the
3hole running down to the depth. Dimensions in the README."""
4from steve import Model
5
6thread = "M3" # Thread (ISO 15065 nominal size)
7depth = 10 # mm Depth of the hole, from the top face
8
9# thread: (hole d_h min. (nom.), d_h max., countersink Dc min. (nom.), Dc max., depth t approx.) in mm. ISO 15065:2005, Clause 3, Table 1,
10# "Dimensions of countersink" (official preview p. 2, https://cdn.standards.iteh.ai/samples/37365/57c8c6dac6864ac5a6f7bfa6fdd06111/ISO-15065-2005.pdf).
11# d_h is ISO 273's medium series clearance hole, tolerance H13 (the table's footnote a).
12COUNTERSINKS = {
13 "M1.6": (1.80, 1.94, 3.6, 3.7, 0.95),
14 "M2": (2.40, 2.54, 4.4, 4.5, 1.05),
15 "M2.5": (2.90, 3.04, 5.5, 5.6, 1.35),
16 "M3": (3.40, 3.58, 6.3, 6.5, 1.55),
17 "M3.5": (3.90, 4.08, 8.2, 8.4, 2.25),
18 "M4": (4.50, 4.68, 9.4, 9.6, 2.55),
19 "M5": (5.50, 5.68, 10.40, 10.65, 2.58),
20 "M6": (6.60, 6.82, 12.60, 12.85, 3.13),
21 "M8": (9.00, 9.22, 17.30, 17.55, 4.28),
22 "M10": (11.00, 11.27, 20.0, 20.3, 4.65),
23}
24# The countersink angle, ISO 15065:2005 Figure 1: 90 degrees (+-1).
25ANGLE = 90
26
27if thread not in COUNTERSINKS:
28 raise ValueError(f"no ISO 15065 countersink for {thread!r}: {', '.join(COUNTERSINKS)}")
29d_h, _d_h_max, d_c, _d_c_max, _t = COUNTERSINKS[thread]
30cone = (d_c - d_h) / 2 # the 90 degree cone's height from Dc to d_h
31if depth <= cone:
32 raise ValueError(f"the depth must be more than the countersink's {cone:g} mm")
33
34model = Model()
35with model.sketch("profile_sketch", on="XZ", name="Profile") as sk:
36 sk.polyline("profile", [(0, 0), (d_c / 2, 0), (d_h / 2, -cone), (d_h / 2, -depth), (0, -depth)], closed=True)
37model.revolve("countersink", "profile_sketch", axis="Z", name="Countersink")
38result = model.result()
39

A solid to cut a countersunk screw's hole with: the 90 degree cone from ISO 15065's countersink diameter Dc down to its clearance hole d_h (ISO 273 medium series), then the hole to the depth you set. Nominal (minimum) Dc and d_h. For screws whose head follows ISO 7721 (ISO 10642, ISO 2009, ISO 7046 and others). See the README.

Countersink hole

A solid to cut a countersink and its clearance hole with, for a metric countersunk head screw whose head follows ISO 7721: for example ISO 10642 hexagon socket, ISO 2009 slotted and ISO 7046 cross recessed countersunk screws. Its axis is along Z, with its top face on the XY plane. The 90 degree cone runs from the countersink diameter Dc at the top down to the hole diameter d_h. The hole then runs down to the depth, measured from the top face.

Thread d_h min. (nom.) d_h max. Dc min. (nom.) Dc max. t ≈
M1.6 1.80 1.94 3.6 3.7 0.95
M2 2.40 2.54 4.4 4.5 1.05
M2.5 2.90 3.04 5.5 5.6 1.35
M3 3.40 3.58 6.3 6.5 1.55
M3.5 3.90 4.08 8.2 8.4 2.25
M4 4.50 4.68 9.4 9.6 2.55
M5 5.50 5.68 10.40 10.65 2.58
M6 6.60 6.82 12.60 12.85 3.13
M8 9.00 9.22 17.30 17.55 4.28
M10 11.00 11.27 20.0 20.3 4.65

The model uses the nominal values, d_h and Dc min. (nom.), and the 90 degree angle. The cone's height is then (Dc − d_h) / 2. The table's t, the countersink depth, is given as approximate (≈) and isn't used; it is the depth at Dc max.

Source

ISO 15065:2005, Countersinks for countersunk head screws with head configuration in accordance with ISO 7721, first edition. Clause 3, Figure 1 (the 90° ±1° angle) and Table 1, "Dimensions of countersink", are on page 2 of the official preview: https://cdn.standards.iteh.ai/samples/37365/57c8c6dac6864ac5a6f7bfa6fdd06111/ISO-15065-2005.pdf. Table 1's footnote a says d_h is ISO 273's medium series clearance hole, tolerance H13. ISO 15065 also lists tapping screw sizes ST2,2 to ST9,5 and a nominal size 5,5 for ST5,5 only; this recipe offers the metric threads.

The depth of the hole is yours to set; it isn't part of the standard.

Catalogue models

The old catalogue's countersink_clearance_M<n>_cutter entries (M2, M2.5, M3, M4, M5, M6, M8) name only the thread and have no model to measure. Each maps to this recipe's preset for that thread.

  1. 1.0.0 Latest
More #countersink
STEVEMIT

steve/clearance-hole

Clearance hole cylinder for metric bolts and screws, M1.6 to M100: ISO 273 fine, medium and coarse, at the low, middle or high end of H12, H13 or H14.

0 216 sizes 0 2 hours ago v1.0.1
STEVEMIT

steve/hex-head-screw

Hexagon head screw, fully threaded, ISO 4017 / DIN 933, M1.6 to M36, any length, with catalogue sizes as presets.

21 86 sizes 0 17 hours ago v2.4.2
STEVEMIT

steve/button-head-screw

Hexagon socket button head screw, ISO 7380-1, M3 to M16, any length, with catalogue sizes as presets.

13 66 sizes 0 17 hours ago v2.2.2
STEVEMIT

steve/hex-nut

Hex nut, ISO 4032, M2 to M12.

10 9 variants 0 5 days ago v1.1.0