steve/hex-head-screw
Hexagon head screw, fully threaded, ISO 4017 / DIN 933, M1.6 to M36, any length, with catalogue sizes as presets.
Cotter pin (split pin), nominal 1 to 5 mm, any length: simplified envelope measured from step.parts' models.
| 1 | """Cotter pin (split pin), simplified as step.parts' published models draw it: two round legs side by side and a round |
| 2 | cross bar for the eye, nominal sizes 1 to 5 mm, any length. |
| 3 | |
| 4 | The legs (diameter d, the nominal size) run along +Z from z = 0 to the length l, their axes at x = +-e; the eye is a |
| 5 | round bar of diameter d along X, 2d long, centred on the origin. There is no eye loop, no half-round wire and no |
| 6 | point: see the README. |
| 7 | """ |
| 8 | from steve import Model |
| 9 | |
| 10 | size = "2" # Nominal size d (mm) |
| 11 | length = 32 # mm Length l |
| 12 | material = "steel" # Material |
| 13 | |
| 14 | # mm, measured on step.parts' models iso_1234_cotter_pin_d<d>_l<l>_simple (every face read: the legs' and the bar's |
| 15 | # cylinder radii and axes): {d: (leg and bar diameter, leg axis offset e from the centre, bar length)} |
| 16 | SIZES = { |
| 17 | "1": (1.0, 0.35, 2.0), |
| 18 | "1.6": (1.6, 0.56, 3.2), |
| 19 | "2": (2.0, 0.7, 4.0), |
| 20 | "2.5": (2.5, 0.875, 5.0), |
| 21 | "3.2": (3.2, 1.12, 6.4), |
| 22 | "4": (4.0, 1.4, 8.0), |
| 23 | "5": (5.0, 1.75, 10.0), |
| 24 | } |
| 25 | MATERIALS = {"steel": ("steel-generic", "#9da2a8"), "stainless": ("stainless-304", "#c9ccd0")} |
| 26 | |
| 27 | d, e, bar = SIZES[size] |
| 28 | material_id, colour = MATERIALS[material] |
| 29 | model = Model() |
| 30 | model.cylinder("leg_1", d / 2, length, at=(e, 0, 0), name="Leg") |
| 31 | model.cylinder("leg_2", d / 2, length, at=(-e, 0, 0), op="join", name="Leg") |
| 32 | model.cylinder("eye", d / 2, bar, at=(-bar / 2, 0, 0), direction=(1, 0, 0), op="join", name="Eye") |
| 33 | model.material(material_id, color=colour) |
| 34 | result = model.result() |
| 35 |
| 1 | name = "steve/cotter-pin" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "Cotter pin (split pin), nominal 1 to 5 mm, any length: simplified envelope measured from step.parts' models." |
| 6 | description = """A simplified cotter pin (split pin) for assemblies, nominal sizes 1, 1.6, 2, 2.5, 3.2, 4 and 5 mm (the \ |
| 7 | ISO 1234 sizes), any length: two round legs of the nominal diameter side by side and a round cross bar for the eye. \ |
| 8 | Measured from step.parts' published models (MIT); ISO 1234 does not dimension the eye, so no drawing exists. Not the \ |
| 9 | real wire shape: see the README. |
| 10 | |
| 11 | The legs run along +Z from z = 0 to the length, the eye bar along X centred on the origin.""" |
| 12 | tags = ["cotter-pin", "split-pin", "pin", "iso-1234", "fastener", "metric"] |
| 13 | |
| 14 | [parameters.size] |
| 15 | type = "choice" |
| 16 | default = "2" |
| 17 | choices = ["1", "1.6", "2", "2.5", "3.2", "4", "5"] |
| 18 | label = "Nominal size d" |
| 19 | description = "Nominal size (the hole diameter), mm." |
| 20 | |
| 21 | [parameters.length] |
| 22 | type = "number" |
| 23 | default = 32 |
| 24 | min = 4 |
| 25 | max = 250 |
| 26 | unit = "mm" |
| 27 | label = "Length l" |
| 28 | |
| 29 | [parameters.material] |
| 30 | type = "choice" |
| 31 | default = "steel" |
| 32 | choices = ["steel", "stainless"] |
| 33 | label = "Material" |
| 34 | |
| 35 | [[presets]] |
| 36 | id = "CP1x20" |
| 37 | title = "Cotter pin 1 × 20 (simplified)" |
| 38 | params = { size = "1", length = 20 } |
| 39 | aliases = ["split pin 1 x 20", "ISO 1234 1 x 20", "cotter pin 1x20", "DIN 94 1 x 20"] |
| 40 | standard = "step.parts simplified model" |
| 41 | |
| 42 | [[presets]] |
| 43 | id = "CP1.6x25" |
| 44 | title = "Cotter pin 1.6 × 25 (simplified)" |
| 45 | params = { size = "1.6", length = 25 } |
| 46 | aliases = ["split pin 1.6 x 25", "ISO 1234 1.6 x 25", "cotter pin 1.6x25", "DIN 94 1.6 x 25"] |
| 47 | standard = "step.parts simplified model" |
| 48 | |
| 49 | [[presets]] |
| 50 | id = "CP2x32" |
| 51 | title = "Cotter pin 2 × 32 (simplified)" |
| 52 | params = { size = "2", length = 32 } |
| 53 | aliases = ["split pin 2 x 32", "ISO 1234 2 x 32", "cotter pin 2x32", "DIN 94 2 x 32"] |
| 54 | standard = "step.parts simplified model" |
| 55 | |
| 56 | [[presets]] |
| 57 | id = "CP2.5x40" |
| 58 | title = "Cotter pin 2.5 × 40 (simplified)" |
| 59 | params = { size = "2.5", length = 40 } |
| 60 | aliases = ["split pin 2.5 x 40", "ISO 1234 2.5 x 40", "cotter pin 2.5x40", "DIN 94 2.5 x 40"] |
| 61 | standard = "step.parts simplified model" |
| 62 | |
| 63 | [[presets]] |
| 64 | id = "CP3.2x50" |
| 65 | title = "Cotter pin 3.2 × 50 (simplified)" |
| 66 | params = { size = "3.2", length = 50 } |
| 67 | aliases = ["split pin 3.2 x 50", "ISO 1234 3.2 x 50", "cotter pin 3.2x50", "DIN 94 3.2 x 50"] |
| 68 | standard = "step.parts simplified model" |
| 69 | |
| 70 | [[presets]] |
| 71 | id = "CP4x63" |
| 72 | title = "Cotter pin 4 × 63 (simplified)" |
| 73 | params = { size = "4", length = 63 } |
| 74 | aliases = ["split pin 4 x 63", "ISO 1234 4 x 63", "cotter pin 4x63", "DIN 94 4 x 63"] |
| 75 | standard = "step.parts simplified model" |
| 76 | |
| 77 | [[presets]] |
| 78 | id = "CP5x80" |
| 79 | title = "Cotter pin 5 × 80 (simplified)" |
| 80 | params = { size = "5", length = 80 } |
| 81 | aliases = ["split pin 5 x 80", "ISO 1234 5 x 80", "cotter pin 5x80", "DIN 94 5 x 80"] |
| 82 | standard = "step.parts simplified model" |
| 83 |
A simplified cotter pin (split pin) for assemblies, nominal sizes 1, 1.6, 2, 2.5, 3.2, 4 and 5 mm (the ISO 1234 sizes), any length.
Two round legs of the nominal diameter d, side by side (axes at x = ±e), along +Z from z = 0 to the length l, and a round bar of diameter d along X, 2d long, centred on the origin, standing for the eye. Overall: 2d × d × (l + d/2).
| d | Legs and bar Ø | Leg axis offset e | Bar length |
|---|---|---|---|
| 1 | 1 | 0.35 | 2 |
| 1.6 | 1.6 | 0.56 | 3.2 |
| 2 | 2 | 0.7 | 4 |
| 2.5 | 2.5 | 0.875 | 5 |
| 3.2 | 3.2 | 1.12 | 6.4 |
| 4 | 4 | 1.4 | 8 |
| 5 | 5 | 1.75 | 10 |
| Parameter | Meaning |
|---|---|
size |
nominal size d (the hole diameter), mm |
length |
l, mm (from the eye's centre line to the leg ends) |
material |
steel (STEVE steel-generic) or stainless (stainless-304) |
ISO 1234 gives d, a, b, c and l but not the eye's shape, and no maker publishes a dimensioned drawing of it: the geometry was measured from the published reference models below (every face read: the legs' and the bar's cylinder radii and axes; e = 0.35 d and the bar 2 d long in every size), and the recipe re-draws it in its own code. Every preset is checked against its own model: bounding box within 0.05 mm and volume within 2 %.
iso_1234_cotter_pin_d<d>_l<l>_simple for d = 1 to 5 (https://www.step.parts, repository
https://github.com/earthtojake/step.parts, commit c6113328, catalog/step/): step.parts' own "analytic simplified"
models, original project material under the repository's MIT licence (© 2026 earthtojake; no third-party
source is recorded for them in its THIRD_PARTY_NOTICES.md or catalogue).Simplifications (the models'): the legs are full round rods of the nominal diameter (a real pin is a half-round wire somewhat thinner than the hole), the eye is a straight bar instead of a loop, and there is no point or bent-out leg. Use it as an envelope in assemblies, not for the wire's dimensions.
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
| 1 | # Cotter pin (simplified) |
| 2 | |
| 3 | A simplified cotter pin (split pin) for assemblies, nominal sizes 1, 1.6, 2, 2.5, 3.2, 4 and 5 mm (the ISO 1234 |
| 4 | sizes), any length. |
| 5 | |
| 6 | ## Geometry |
| 7 | |
| 8 | Two round legs of the nominal diameter d, side by side (axes at x = ±e), along +Z from z = 0 to the length l, and a |
| 9 | round bar of diameter d along X, 2d long, centred on the origin, standing for the eye. Overall: 2d × d × (l + d/2). |
| 10 | |
| 11 | | d | Legs and bar Ø | Leg axis offset e | Bar length | |
| 12 | |---|---|---|---| |
| 13 | | 1 | 1 | 0.35 | 2 | |
| 14 | | 1.6 | 1.6 | 0.56 | 3.2 | |
| 15 | | 2 | 2 | 0.7 | 4 | |
| 16 | | 2.5 | 2.5 | 0.875 | 5 | |
| 17 | | 3.2 | 3.2 | 1.12 | 6.4 | |
| 18 | | 4 | 4 | 1.4 | 8 | |
| 19 | | 5 | 5 | 1.75 | 10 | |
| 20 | |
| 21 | ## Parameters |
| 22 | |
| 23 | | Parameter | Meaning | |
| 24 | |---|---| |
| 25 | | `size` | nominal size d (the hole diameter), mm | |
| 26 | | `length` | l, mm (from the eye's centre line to the leg ends) | |
| 27 | | `material` | `steel` (STEVE `steel-generic`) or `stainless` (`stainless-304`) | |
| 28 | |
| 29 | ## Sources |
| 30 | |
| 31 | ISO 1234 gives d, a, b, c and l but not the eye's shape, and no maker publishes a dimensioned drawing of it: **the |
| 32 | geometry was measured from the published reference models** below (every face read: the legs' and the bar's |
| 33 | cylinder radii and axes; e = 0.35 d and the bar 2 d long in every size), and the recipe re-draws it in its own code. |
| 34 | Every preset is checked against its own model: bounding box within 0.05 mm and volume within 2 %. |
| 35 | |
| 36 | - **step.parts**, `iso_1234_cotter_pin_d<d>_l<l>_simple` for d = 1 to 5 (https://www.step.parts, repository |
| 37 | https://github.com/earthtojake/step.parts, commit c6113328, `catalog/step/`): step.parts' own "analytic simplified" |
| 38 | models, original project material under the repository's **MIT** licence (© 2026 earthtojake; no third-party |
| 39 | source is recorded for them in its THIRD_PARTY_NOTICES.md or catalogue). |
| 40 | |
| 41 | Simplifications (the models'): the legs are full round rods of the nominal diameter (a real pin is a half-round wire |
| 42 | somewhat thinner than the hole), the eye is a straight bar instead of a loop, and there is no point or bent-out leg. |
| 43 | Use it as an envelope in assemblies, not for the wire's dimensions. |
| 44 | |
| 45 | Preset list: from the step.parts catalogue (MIT), see `library/NOTICE.md`. |
| 46 |
A simplified cotter pin (split pin) for assemblies, nominal sizes 1, 1.6, 2, 2.5, 3.2, 4 and 5 mm (the ISO 1234 sizes), any length: two round legs of the nominal diameter side by side and a round cross bar for the eye. Measured from step.parts' published models (MIT); ISO 1234 does not dimension the eye, so no drawing exists. Not the real wire shape: see the README. The legs run along +Z from z = 0 to the length, the eye bar along X centred on the origin.
A simplified cotter pin (split pin) for assemblies, nominal sizes 1, 1.6, 2, 2.5, 3.2, 4 and 5 mm (the ISO 1234 sizes), any length.
Two round legs of the nominal diameter d, side by side (axes at x = ±e), along +Z from z = 0 to the length l, and a round bar of diameter d along X, 2d long, centred on the origin, standing for the eye. Overall: 2d × d × (l + d/2).
| d | Legs and bar Ø | Leg axis offset e | Bar length |
|---|---|---|---|
| 1 | 1 | 0.35 | 2 |
| 1.6 | 1.6 | 0.56 | 3.2 |
| 2 | 2 | 0.7 | 4 |
| 2.5 | 2.5 | 0.875 | 5 |
| 3.2 | 3.2 | 1.12 | 6.4 |
| 4 | 4 | 1.4 | 8 |
| 5 | 5 | 1.75 | 10 |
| Parameter | Meaning |
|---|---|
size |
nominal size d (the hole diameter), mm |
length |
l, mm (from the eye's centre line to the leg ends) |
material |
steel (STEVE steel-generic) or stainless (stainless-304) |
ISO 1234 gives d, a, b, c and l but not the eye's shape, and no maker publishes a dimensioned drawing of it: the geometry was measured from the published reference models below (every face read: the legs' and the bar's cylinder radii and axes; e = 0.35 d and the bar 2 d long in every size), and the recipe re-draws it in its own code. Every preset is checked against its own model: bounding box within 0.05 mm and volume within 2 %.
iso_1234_cotter_pin_d<d>_l<l>_simple for d = 1 to 5 (https://www.step.parts, repository
https://github.com/earthtojake/step.parts, commit c6113328, catalog/step/): step.parts' own "analytic simplified"
models, original project material under the repository's MIT licence (© 2026 earthtojake; no third-party
source is recorded for them in its THIRD_PARTY_NOTICES.md or catalogue).Simplifications (the models'): the legs are full round rods of the nominal diameter (a real pin is a half-round wire somewhat thinner than the hole), the eye is a straight bar instead of a loop, and there is no point or bent-out leg. Use it as an envelope in assemblies, not for the wire's dimensions.
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
Hexagon head screw, fully threaded, ISO 4017 / DIN 933, M1.6 to M36, any length, with catalogue sizes as presets.
Hexagon socket button head screw, ISO 7380-1, M3 to M16, any length, with catalogue sizes as presets.
Hex nut, ISO 4032, M2 to M12.
Split lock washer (spring washer), DIN 127 form B, M2 to M100.