"""Conical spring washer for bolted joints, DIN 6796, M2 to M125. A conical ring (disc spring) in its free state: hole d, outside diameter d1, material thickness s and free height h (max); the section is a parallelogram with vertical sides, the outer edge on the bearing face and the inner edge raised. It lies on the XY plane at the origin, rising along +Z. """ from steve import Model size = "M8" # Thread size material = "spring-steel" # Material # DIN 6796:2009-08 table (https://fasten.it/norms/norm/din_6796). size: (d hole, d1 outside diameter, s thickness, h max free height) DIMENSIONS = { "M2": (2.2, 5.0, 0.4, 0.6), "M2.5": (2.7, 6.0, 0.5, 0.72), "M3": (3.2, 7.0, 0.6, 0.85), "M3.5": (3.7, 8.0, 0.8, 1.06), "M4": (4.3, 9.0, 1.0, 1.3), "M5": (5.3, 11.0, 1.2, 1.55), "M6": (6.4, 14.0, 1.5, 2.0), "M7": (7.4, 17.0, 1.8, 2.3), "M8": (8.4, 18.0, 2.0, 2.6), "M10": (10.5, 23.0, 2.5, 3.2), "M12": (13.0, 29.0, 3.0, 3.95), "M14": (15.0, 35.0, 3.5, 4.65), "M16": (17.0, 39.0, 4.0, 5.25), "M18": (19.0, 42.0, 4.5, 5.8), "M20": (21.0, 45.0, 5.0, 6.4), "M22": (23.0, 49.0, 5.5, 7.05), "M24": (25.0, 56.0, 6.0, 7.75), "M27": (28.0, 60.0, 6.5, 8.35), "M30": (31.0, 70.0, 7.0, 9.2), "M33": (34.0, 76.0, 7.5, 10.0), "M36": (37.2, 83.0, 8.0, 10.5), "M42": (43.5, 96.0, 8.5, 12.0), "M48": (49.5, 110.0, 9.0, 12.5), "M56": (58.0, 128.0, 9.5, 13.5), "M64": (66.0, 136.0, 10.0, 14.0), "M72": (74.0, 145.0, 10.5, 15.0), "M90": (92.5, 160.0, 11.0, 16.0), "M100": (102.5, 180.0, 11.5, 17.0), "M125": (128.0, 220.0, 12.0, 19.0), } # material choice: (STEVE material library id, appearance colour) MATERIALS = { "spring-steel": ("steel-c60e", "#2f3134"), "stainless": ("stainless-420c", "#c9ccd0"), } d, d1, s, h = DIMENSIONS[size] material_id, colour = MATERIALS[material] model = Model() with model.sketch("section", on="XZ", name="Section") as sk: sk.polyline("outline", [(d / 2, h - s), (d1 / 2, 0), (d1 / 2, s), (d / 2, h)]) model.revolve("washer", "section", axis="Z", name="Washer") model.material(material_id, color=colour) result = model.result()