steve/hex-head-screw
Hexagon head screw, fully threaded, ISO 4017 / DIN 933, M1.6 to M36, any length, with catalogue sizes as presets.
Button head socket screw, ISO 7380, M3 to M12, any length.
| 1 | """ISO 7380 button head socket screw. Envelope: domed head (revolved profile), hex socket, plain shank. |
| 2 | The head's flat side is on the XY plane at the origin; the shank points down -Z. |
| 3 | |
| 4 | Material: property class 10.9 alloy steel, quenched and tempered (34CrNiMo6 from the material library), black oxide.""" |
| 5 | from steve import Model |
| 6 | |
| 7 | size = "M4" # Thread size |
| 8 | length = 10 # mm Length under the head |
| 9 | |
| 10 | # size: (head diameter dk, head height k, hex key s) |
| 11 | HEADS = { |
| 12 | 'M3': (5.7, 1.65, 2.0), |
| 13 | 'M4': (7.6, 2.2, 2.5), |
| 14 | 'M5': (9.5, 2.75, 3.0), |
| 15 | 'M6': (10.5, 3.3, 4.0), |
| 16 | 'M8': (14.0, 4.4, 5.0), |
| 17 | 'M10': (17.5, 5.5, 6.0), |
| 18 | 'M12': (21.0, 6.6, 8.0), |
| 19 | } |
| 20 | NOMINAL = { |
| 21 | 'M3': 3.0, |
| 22 | 'M4': 4.0, |
| 23 | 'M5': 5.0, |
| 24 | 'M6': 6.0, |
| 25 | 'M8': 8.0, |
| 26 | 'M10': 10.0, |
| 27 | 'M12': 12.0, |
| 28 | } |
| 29 | dk, k, s = HEADS[size] |
| 30 | d = NOMINAL[size] |
| 31 | |
| 32 | model = Model() |
| 33 | with model.sketch("head_profile", on="XZ", name="Head profile") as sk: |
| 34 | sk.polyline("outline", [(0, 0), (dk / 2, 0), (dk / 2, 0.25 * k), (0.42 * dk, 0.7 * k), (0.3 * dk, 0.92 * k), (0, k)]) |
| 35 | model.revolve("head", "head_profile", axis="Z") |
| 36 | with model.sketch("shank_sketch", on="XY", name="Shank") as sk: |
| 37 | sk.circle("shank", (0, 0), d / 2) |
| 38 | model.extrude("shank", "shank_sketch", distance=-length) |
| 39 | model.plane("head_top", on="XY", offset=k, name="Head top") |
| 40 | with model.sketch("socket_sketch", on="head_top", name="Hex socket") as sk: |
| 41 | sk.polygon("hex", (0, 0), s / 2, 6, inscribed=False) |
| 42 | model.extrude("socket", "socket_sketch", distance=-0.6 * k, op="cut") |
| 43 | model.material("steel-34crnimo6") # class 10.9 alloy steel |
| 44 | model.appearance(color="#2e3034", metalness=0.75, roughness=0.38) # black oxide finish |
| 45 | result = model.result() |
| 46 |
| 1 | name = "steve/button-head-screw" |
| 2 | version = "1.1.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "Button head socket screw, ISO 7380, M3 to M12, any length." |
| 6 | description = "ISO 7380 button head socket screw. Envelope: domed head (revolved profile), hex socket, plain shank.\nThe head's flat side is on the XY plane at the origin; the shank points down -Z.\n\nMaterial: property class 10.9 alloy steel, quenched and tempered (34CrNiMo6 from the material library), black oxide.\n\nDimensions from STEVE's standard-part tables (nominal values of the standard). Envelope geometry: no modelled thread." |
| 7 | tags = ["fastener", "screw", "iso-7380", "metric"] |
| 8 | changes = "Materials and finishes: each part is made of its standard's engineering material, with its usual finish." |
| 9 | |
| 10 | [parameters.size] |
| 11 | type = "choice" |
| 12 | default = "M4" |
| 13 | choices = ["M3", "M4", "M5", "M6", "M8", "M10", "M12"] |
| 14 | label = "Thread size" |
| 15 | |
| 16 | [parameters.length] |
| 17 | type = "number" |
| 18 | default = 10 |
| 19 | min = 3 |
| 20 | max = 120 |
| 21 | step = 1 |
| 22 | unit = "mm" |
| 23 | label = "Length" |
| 24 |
ISO 7380 button head socket screw. Envelope: domed head (revolved profile), hex socket, plain shank. The head's flat side is on the XY plane at the origin; the shank points down -Z. Material: property class 10.9 alloy steel, quenched and tempered (34CrNiMo6 from the material library), black oxide. Dimensions from STEVE's standard-part tables (nominal values of the standard). Envelope geometry: no modelled thread.
Materials and finishes: each part is made of its standard's engineering material, with its usual finish.
Hexagon head screw, fully threaded, ISO 4017 / DIN 933, M1.6 to M36, any length, with catalogue sizes as presets.
Hexagon socket countersunk head screw, ISO 10642 / DIN 7991, M3 to M12, any length, with catalogue sizes as presets.
Pan head screw with cross recess, ISO 7045, M2 to M8, any length.
Captive panel screw envelope, M3 to M5, any length: shank and round knob (simplified).