steve/hex-head-screw
Hexagon head screw, fully threaded, ISO 4017 / DIN 933, M1.6 to M36, any length, with catalogue sizes as presets.
External retaining ring (circlip) for shafts, DIN 471 pattern, shafts 10 to 34 mm, measured from published models.
| 1 | """External retaining ring (circlip) for shafts of the DIN 471 pattern, shafts 10 to 34 mm, as the published |
| 2 | FreeCAD-library models draw them. |
| 3 | |
| 4 | The ring lies on the XY plane (from z = 0 to its thickness s), its bore centred on the origin (the shaft's axis along |
| 5 | Z), the lugs with their holes toward +X. Each size's outline is the reference model's own (lines and arcs, each arc by |
| 6 | its ends and midpoint); the model is a flat plate of constant thickness. See the README for the models and authors. |
| 7 | """ |
| 8 | import cadquery as cq |
| 9 | |
| 10 | from steve import Model |
| 11 | |
| 12 | size = "20" # Shaft diameter d1 (mm) |
| 13 | material = "spring-steel" # Material |
| 14 | |
| 15 | # mm. Measured on each reference model: its largest planar face gives the ring's plane; s is the model's extent across |
| 16 | # it; the outline is the OCCT section at mid-thickness, every edge read exactly (line ends; each arc's ends and |
| 17 | # midpoint), placed with the bore arc's centre at the origin and the lug holes toward +X, rounded to 1e-4 mm. |
| 18 | # {d1: (s, [outline, hole, hole])}: a loop is x0, y0, then ("L", x, y) a line to or ("A", xm, ym, x, y) an arc through |
| 19 | # (xm, ym) to; ("C", cx, cy, r) a circle. |
| 20 | RINGS = { |
| 21 | # d1 = 10: step.parts din471_retaining_ring_m10, FreeCAD-library DIN471_CLASS_A_M10RetainingRings.step; |
| 22 | # s = 1.0, bore (d3) 9.2966, outline area 61.5094 mm^2 on the model |
| 23 | 10: (1.0, [ |
| 24 | [4.1213, -4.1346, ('L', 5.9421, -4.1346), ('A', 6.7601, -3.892, 7.3134, -3.2426), |
| 25 | ('A', 7.7312, -2.0562, 7.958, -0.819), ('L', 4.5756, -0.819), ('A', -4.6483, 0.0, 4.5756, 0.819), |
| 26 | ('L', 7.958, 0.819), ('A', 7.7312, 2.0562, 7.3134, 3.2426), ('A', 6.7601, 3.892, 5.9421, 4.1346), |
| 27 | ('L', 4.1213, 4.1346), ('A', -6.5794, 0.0, 4.1213, -4.1346)], |
| 28 | [('C', 5.7, 2.5, 0.75)], |
| 29 | [('C', 5.7, -2.5, 0.75)], |
| 30 | ]), |
| 31 | # d1 = 12: step.parts din471_retaining_ring_m12, FreeCAD-library DIN471_CLASS_A_M12RetainingRings.step; |
| 32 | # s = 1.0, bore (d3) 11.0, outline area 67.6073 mm^2 on the model |
| 33 | 12: (1.0, [ |
| 34 | [5.498, 0.15, ('L', 8.758, 0.1499), ('A', 8.6548, 1.3486, 8.3884, 2.5218), |
| 35 | ('A', 8.1164, 2.9619, 7.661, 3.2071), ('L', 6.0001, 3.6), ('A', 5.5769, 3.8145, 5.3002, 4.2), |
| 36 | ('A', -7.3, -0.0182, 5.3222, -4.17), ('A', 5.5945, -3.8059, 5.9999, -3.6), ('L', 7.6607, -3.2072), |
| 37 | ('A', 8.1162, -2.962, 8.3882, -2.522), ('A', 8.6547, -1.3488, 8.758, -0.1501), ('L', 5.498, -0.15), |
| 38 | ('A', -5.5, 0.0004, 5.498, 0.15)], |
| 39 | [('C', 7.1199, -1.54, 0.85)], |
| 40 | [('C', 7.1201, 1.54, 0.85)], |
| 41 | ]), |
| 42 | # d1 = 14: step.parts din471_retaining_ring_m14, FreeCAD-library DIN471_CLASS_A_M14RetainingRings.step; |
| 43 | # s = 1.0, bore (d3) 12.8, outline area 94.503 mm^2 on the model |
| 44 | 14: (1.0, [ |
| 45 | [6.3983, 0.147, ('L', 9.8983, 0.1832), ('A', 9.745, 1.7456, 9.3466, 3.2642), |
| 46 | ('A', 9.0738, 3.6757, 8.6374, 3.9065), ('L', 6.9988, 4.3024), ('A', 6.5247, 4.4807, 6.1987, 4.8684), |
| 47 | ('A', -8.6, -0.0018, 6.2013, -4.864), ('A', 6.55, -4.4632, 7.0547, -4.2976), ('L', 8.6951, -3.8348), |
| 48 | ('A', 9.1114, -3.5982, 9.3701, -3.1951), ('A', 9.7526, -1.7016, 9.8986, -0.1668), ('L', 6.3984, -0.1425), |
| 49 | ('A', -6.4, -0.0012, 6.3983, 0.147)], |
| 50 | [('C', 8.2005, -1.7972, 0.85)], |
| 51 | [('C', 8.1995, 1.8028, 0.85)], |
| 52 | ]), |
| 53 | # d1 = 16: step.parts din471_retaining_ring_m16, FreeCAD-library DIN471_CLASS_A_M16RetainingRings.step; |
| 54 | # s = 1.0, bore (d3) 14.7, outline area 109.0171 mm^2 on the model |
| 55 | 16: (1.0, [ |
| 56 | [7.9978, -4.65, ('L', 9.8012, -4.1482), ('A', 10.2219, -3.9097, 10.4815, -3.5017), |
| 57 | ('A', 10.8904, -1.8774, 11.049, -0.21), ('L', 7.349, -0.1212), ('A', -7.35, 0.0, 7.349, 0.1212), |
| 58 | ('L', 11.049, 0.21), ('A', 10.8904, 1.8774, 10.4815, 3.5017), ('A', 10.2219, 3.9097, 9.8012, 4.1482), |
| 59 | ('L', 7.9978, 4.65), ('A', 7.5499, 4.7805, 7.21, 5.1), ('A', -3.0637, 8.7733, -9.55, 0.0), |
| 60 | ('A', -3.0637, -8.7733, 7.21, -5.1), ('A', 7.5499, -4.7805, 7.9978, -4.65)], |
| 61 | [('C', 9.15, -2.0, 0.85)], |
| 62 | [('C', 9.15, 2.0, 0.85)], |
| 63 | ]), |
| 64 | # d1 = 18: step.parts din471_retaining_ring_m18, FreeCAD-library DIN471_CLASS_A_M18RetainingRings.step; |
| 65 | # s = 1.2, bore (d3) 16.6, outline area 129.3663 mm^2 on the model |
| 66 | 18: (1.2, [ |
| 67 | [10.7415, -4.6379, ('A', 11.1509, -4.4136, 11.4139, -4.0278), ('A', 11.96, -2.1453, 12.1976, -0.1996), |
| 68 | ('L', 8.2976, -0.2), ('A', -8.3, -0.0021, 8.2976, 0.2), ('L', 12.1976, 0.2004), |
| 69 | ('A', 11.9049, 2.3991, 11.2189, 4.5084), ('L', 8.7656, 5.1751), ('A', 8.3188, 5.3776, 8.0222, 5.7682), |
| 70 | ('A', -10.7, -0.0024, 8.0236, -5.7683), ('A', 8.3202, -5.3777, 8.7668, -5.175), ('L', 10.7415, -4.6379)], |
| 71 | [('C', 10.1997, 2.3002, 1.0)], |
| 72 | [('C', 10.2003, -2.2998, 1.0)], |
| 73 | ]), |
| 74 | # d1 = 20: step.parts din471_retaining_ring_m20, FreeCAD-library DIN471_CLASS_A_M20RetainingRings.step; |
| 75 | # s = 1.2, bore (d3) 18.6, outline area 155.5462 mm^2 on the model |
| 76 | 20: (1.2, [ |
| 77 | [9.2986, -0.1602, ('A', -9.3, -0.002, 9.2986, 0.1602), ('L', 13.2986, 0.2337), |
| 78 | ('A', 13.0287, 2.6749, 12.3145, 5.0249), ('L', 9.7099, 5.753), ('A', 9.2202, 5.9772, 8.9177, 6.4229), |
| 79 | ('A', -11.9, -0.0023, 8.9191, -6.4229), ('A', 9.2215, -5.9771, 9.7112, -5.7529), ('L', 11.8325, -5.1593), |
| 80 | ('A', 12.2431, -4.9295, 12.5031, -4.5374), ('A', 13.0792, -2.418, 13.2986, -0.2328), ('L', 9.2986, -0.1602)], |
| 81 | [('C', 11.1997, 2.5002, 1.0)], |
| 82 | [('C', 11.2002, -2.4998, 1.0)], |
| 83 | ]), |
| 84 | # d1 = 22: step.parts din471_retaining_ring_m22, FreeCAD-library DIN471_CLASS_A_M22RetainingRings.step; |
| 85 | # s = 1.2, bore (d3) 20.6, outline area 186.9612 mm^2 on the model |
| 86 | 22: (1.2, [ |
| 87 | [10.0827, -6.8387, ('A', 10.3353, -6.5356, 10.6855, -6.3538), ('L', 12.8908, -5.7455), |
| 88 | ('A', 13.2984, -5.5207, 13.56, -5.1357), ('A', 14.2397, -2.735, 14.4978, -0.2534), ('L', 10.2978, -0.2135), |
| 89 | ('A', -10.3, 0.0, 10.2978, 0.2135), ('L', 14.4978, 0.2534), ('A', 14.2397, 2.735, 13.56, 5.1357), |
| 90 | ('A', 13.2984, 5.5207, 12.8908, 5.7455), ('L', 10.6855, 6.3538), ('A', 10.3353, 6.5356, 10.0827, 6.8387), |
| 91 | ('A', -13.1, 0.0, 10.0827, -6.8387)], |
| 92 | [('C', 12.3, -2.75, 1.0)], |
| 93 | [('C', 12.3, 2.75, 1.0)], |
| 94 | ]), |
| 95 | # d1 = 24: step.parts din471_retaining_ring_m24, FreeCAD-library DIN471_CLASS_A_M24RetainingRings.step; |
| 96 | # s = 1.2, bore (d3) 22.1773, outline area 216.3393 mm^2 on the model |
| 97 | 24: (1.2, [ |
| 98 | [13.7647, -6.2178, ('A', 14.1732, -5.9964, 14.4375, -5.6144), ('A', 15.1956, -3.0094, 15.4876, -0.3121), |
| 99 | ('L', 11.0876, -0.1561), ('A', -11.0886, 0.0, 11.0876, 0.1561), ('L', 15.4876, 0.3121), |
| 100 | ('A', 15.1956, 3.0094, 14.4375, 5.6144), ('A', 14.1732, 5.9964, 13.7647, 6.2178), ('L', 11.7665, 6.7542), |
| 101 | ('A', 11.2834, 6.9037, 10.9351, 7.2705), ('A', -14.0886, 0.0, 10.9351, -7.2705), |
| 102 | ('A', 11.2834, -6.9037, 11.7665, -6.7542), ('L', 13.7647, -6.2178)], |
| 103 | [('C', 13.25, 3.0, 1.0)], |
| 104 | [('C', 13.25, -3.0, 1.0)], |
| 105 | ]), |
| 106 | # d1 = 26: step.parts din471_external_retaining_ring_m26, FreeCAD-library DIN471_CLASS_A_M26RetainingRings.step; |
| 107 | # s = 1.2, bore (d3) 24.1999, outline area 238.6832 mm^2 on the model |
| 108 | 26: (1.2, [ |
| 109 | [14.8315, -6.521, ('A', 15.2313, -6.2976, 15.4897, -5.9193), ('A', 16.2952, -3.1197, 16.5989, -0.2223), |
| 110 | ('L', 12.0989, -0.1571), ('A', -0.1051, -12.0995, -12.0999, 0.053), ('A', -0.1051, 12.2055, 12.0989, 0.2631), |
| 111 | ('L', 16.5989, 0.3283), ('A', 16.2952, 3.2257, 15.4897, 6.0253), ('A', 15.2313, 6.4036, 14.8315, 6.627), |
| 112 | ('L', 13.0012, 7.1502), ('A', 12.4555, 7.2829, 12.0012, 7.613), ('A', -15.1999, 0.053, 12.0012, -7.507), |
| 113 | ('A', 12.4555, -7.1769, 13.0012, -7.0442), ('L', 14.8315, -6.521)], |
| 114 | [('C', 14.3012, 3.253, 1.0)], |
| 115 | [('C', 14.3012, -3.147, 1.0)], |
| 116 | ]), |
| 117 | # d1 = 28: step.parts din471_external_retaining_ring_m28, FreeCAD-library DIN471_CLASS_A_M28RetainingRings.step; |
| 118 | # s = 1.5, bore (d3) 25.9, outline area 264.2574 mm^2 on the model |
| 119 | 28: (1.5, [ |
| 120 | [12.9483, 0.2098, ('L', 17.6484, 0.3128), ('A', 17.3269, 3.3676, 16.4807, 6.3205), |
| 121 | ('A', 16.2118, 6.7095, 15.7942, 6.9314), ('L', 13.7322, 7.4575), ('A', 13.1852, 7.702, 12.7012, 8.055), |
| 122 | ('A', -16.15, 0.0, 12.7012, -8.055), ('A', 13.1852, -7.702, 13.7322, -7.4575), ('L', 15.7942, -6.9314), |
| 123 | ('A', 16.2118, -6.7095, 16.4807, -6.3205), ('A', 17.3269, -3.3676, 17.6483, -0.3128), |
| 124 | ('L', 12.9483, -0.2098), ('A', -12.95, 0.0, 12.9483, 0.2098)], |
| 125 | [('C', 15.2001, 3.4, 1.0)], |
| 126 | [('C', 15.2, -3.4, 1.0)], |
| 127 | ]), |
| 128 | # d1 = 30: step.parts din471_retaining_ring_m30, FreeCAD-library DIN471_CLASS_A_M30RetainingRings.step; |
| 129 | # s = 1.5, bore (d3) 27.9987, outline area 321.2757 mm^2 on the model |
| 130 | 30: (1.5, [ |
| 131 | [17.6469, -7.0418, ('A', 18.6243, -3.7595, 18.9966, -0.355), ('L', 13.9966, -0.276), |
| 132 | ('A', -13.9994, 0.0, 13.9966, 0.276), ('L', 18.9966, 0.355), ('A', 18.6243, 3.7595, 17.6469, 7.0418), |
| 133 | ('A', 17.3789, 7.4218, 16.968, 7.6394), ('L', 14.5822, 8.2553), ('A', 14.0253, 8.5855, 13.6395, 9.1054), |
| 134 | ('A', -17.5994, 0.0, 13.6395, -9.1054), ('A', 14.0253, -8.5855, 14.5822, -8.2553), ('L', 16.968, -7.6394), |
| 135 | ('A', 17.3789, -7.4218, 17.6469, -7.0418)], |
| 136 | [('C', 16.3679, -3.7076, 1.0)], |
| 137 | [('C', 16.3679, 3.7076, 1.0)], |
| 138 | ]), |
| 139 | # d1 = 32: step.parts din471_external_retaining_ring_m32, FreeCAD-library DIN471_CLASS_A_M32RetainingRings.step; |
| 140 | # s = 1.5, bore (d3) 29.4739, outline area 345.7124 mm^2 on the model |
| 141 | 32: (1.5, [ |
| 142 | [17.85, -7.9776, ('A', 18.2554, -7.759, 18.5198, -7.382), ('A', 19.5474, -3.9212, 19.9341, -0.3318), |
| 143 | ('L', 14.7341, -0.2904), ('A', -14.7369, 0.0, 14.7341, 0.2904), ('L', 19.9341, 0.3318), |
| 144 | ('A', 19.5474, 3.9212, 18.5198, 7.382), ('A', 18.2554, 7.759, 17.85, 7.9776), ('L', 15.4868, 8.6115), |
| 145 | ('A', 14.8458, 8.9745, 14.3796, 9.545), ('A', -18.4079, 0.0, 14.3796, -9.545), |
| 146 | ('A', 14.8458, -8.9745, 15.4868, -8.6115), ('L', 17.85, -7.9776)], |
| 147 | [('C', 17.3207, 3.9, 1.25)], |
| 148 | [('C', 17.3207, -3.9, 1.25)], |
| 149 | ]), |
| 150 | # d1 = 34: step.parts din471_retaining_ring_m34, FreeCAD-library DIN471_CLASS_A_M34RetainingRings.step; |
| 151 | # s = 1.5, bore (d3) 31.6321, outline area 381.0868 mm^2 on the model |
| 152 | 34: (1.5, [ |
| 153 | [21.1723, 0.4026, ('A', 20.756, 4.1973, 19.6652, 7.8556), ('A', 19.3954, 8.2368, 18.9819, 8.454), |
| 154 | ('L', 16.6191, 9.0521), ('A', 16.0305, 9.3414, 15.5672, 9.8056), ('A', -19.6161, 0.0, 15.5672, -9.8056), |
| 155 | ('A', 16.0305, -9.3414, 16.6191, -9.0521), ('L', 18.9819, -8.454), ('A', 19.3954, -8.2368, 19.6652, -7.8556), |
| 156 | ('A', 20.756, -4.1973, 21.1723, -0.4026), ('L', 15.811, -0.3996), ('A', -15.8161, 0.0, 15.811, 0.3996), |
| 157 | ('L', 21.1723, 0.4026)], |
| 158 | [('C', 18.3, -4.1, 1.25)], |
| 159 | [('C', 18.3, 4.1, 1.25)], |
| 160 | ]), |
| 161 | } |
| 162 | MATERIALS = {"spring-steel": ("steel-c60e", "#3a3c3f"), "stainless": ("stainless-420c", "#c9ccd0")} |
| 163 | |
| 164 | |
| 165 | def loop_wire(loop): |
| 166 | if isinstance(loop[0], (tuple, list)): # ("C", cx, cy, r) |
| 167 | _, cx, cy, r = loop[0] |
| 168 | return cq.Wire.makeCircle(r, cq.Vector(cx, cy, 0), cq.Vector(0, 0, 1)) |
| 169 | x, y = loop[0], loop[1] |
| 170 | edges = [] |
| 171 | for seg in loop[2:]: |
| 172 | start = cq.Vector(x, y, 0) |
| 173 | if seg[0] == "L": |
| 174 | x, y = seg[1], seg[2] |
| 175 | edges.append(cq.Edge.makeLine(start, cq.Vector(x, y, 0))) |
| 176 | else: |
| 177 | x, y = seg[3], seg[4] |
| 178 | edges.append(cq.Edge.makeThreePointArc(start, cq.Vector(seg[1], seg[2], 0), cq.Vector(x, y, 0))) |
| 179 | return cq.Wire.assembleEdges(edges) |
| 180 | |
| 181 | |
| 182 | s, outline = RINGS[int(size)] |
| 183 | loops = [loop_wire(loop) for loop in outline] |
| 184 | ring = cq.Solid.extrudeLinear(cq.Face.makeFromWires(loops[0], loops[1:]), cq.Vector(0, 0, s)) |
| 185 | material_id, colour = MATERIALS[material] |
| 186 | |
| 187 | model = Model() |
| 188 | model.add("ring", cq.Workplane("XY").add(ring), name="Retaining ring") |
| 189 | model.material(material_id, color=colour) # DIN 471: spring steel (C75S); closest library grade C60E |
| 190 | result = model.result() |
| 191 |
| 1 | name = "steve/retaining-ring" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "External retaining ring (circlip) for shafts, DIN 471 pattern, shafts 10 to 34 mm, measured from published models." |
| 6 | description = """External retaining ring (circlip) for shafts of the DIN 471 pattern, shaft diameters 10 to 34 mm: the \ |
| 7 | ring's outline with its lugs and lug holes, a flat plate of the ring's thickness. Each size was measured from the \ |
| 8 | FreeCAD-library model of that size (CC-BY-3.0, by nachotineo); DIN 471 gives the ring's key dimensions but not its \ |
| 9 | outline between the back and the lugs, so the models' outlines are used as they are. |
| 10 | |
| 11 | On the XY plane from z = 0, the bore centred on the origin, the lugs toward +X. Dimensions and attribution: see the README.""" |
| 12 | tags = ["retaining-ring", "circlip", "din-471", "snap-ring", "shaft", "fastener", "metric"] |
| 13 | |
| 14 | [parameters.size] |
| 15 | type = "choice" |
| 16 | default = "20" |
| 17 | choices = ["10", "12", "14", "16", "18", "20", "22", "24", "26", "28", "30", "32", "34"] |
| 18 | label = "Shaft diameter d1" |
| 19 | description = "Nominal shaft diameter, mm." |
| 20 | |
| 21 | [parameters.material] |
| 22 | type = "choice" |
| 23 | default = "spring-steel" |
| 24 | choices = ["spring-steel", "stainless"] |
| 25 | label = "Material" |
| 26 | |
| 27 | [[presets]] |
| 28 | id = "DIN471-10" |
| 29 | title = "Retaining ring for 10 mm shaft (DIN 471 pattern)" |
| 30 | params = { size = "10" } |
| 31 | aliases = ["DIN 471 10", "circlip 10 mm shaft", "external circlip 10", "10x1 DIN 471", "Seeger A10", "shaft retaining ring 10 mm", "M10 external retaining ring", "M10 circlip", "DIN 471 M10", "DIN471 M10"] |
| 32 | standard = "DIN 471 (FreeCAD-library model)" |
| 33 | |
| 34 | [[presets]] |
| 35 | id = "DIN471-12" |
| 36 | title = "Retaining ring for 12 mm shaft (DIN 471 pattern)" |
| 37 | params = { size = "12" } |
| 38 | aliases = ["DIN 471 12", "circlip 12 mm shaft", "external circlip 12", "12x1 DIN 471", "Seeger A12", "shaft retaining ring 12 mm", "M12 external retaining ring", "M12 circlip", "DIN 471 M12", "DIN471 M12"] |
| 39 | standard = "DIN 471 (FreeCAD-library model)" |
| 40 | |
| 41 | [[presets]] |
| 42 | id = "DIN471-14" |
| 43 | title = "Retaining ring for 14 mm shaft (DIN 471 pattern)" |
| 44 | params = { size = "14" } |
| 45 | aliases = ["DIN 471 14", "circlip 14 mm shaft", "external circlip 14", "14x1 DIN 471", "Seeger A14", "shaft retaining ring 14 mm", "M14 external retaining ring", "M14 circlip", "DIN 471 M14", "DIN471 M14"] |
| 46 | standard = "DIN 471 (FreeCAD-library model)" |
| 47 | |
| 48 | [[presets]] |
| 49 | id = "DIN471-16" |
| 50 | title = "Retaining ring for 16 mm shaft (DIN 471 pattern)" |
| 51 | params = { size = "16" } |
| 52 | aliases = ["DIN 471 16", "circlip 16 mm shaft", "external circlip 16", "16x1 DIN 471", "Seeger A16", "shaft retaining ring 16 mm", "M16 external retaining ring", "M16 circlip", "DIN 471 M16", "DIN471 M16"] |
| 53 | standard = "DIN 471 (FreeCAD-library model)" |
| 54 | |
| 55 | [[presets]] |
| 56 | id = "DIN471-18" |
| 57 | title = "Retaining ring for 18 mm shaft (DIN 471 pattern)" |
| 58 | params = { size = "18" } |
| 59 | aliases = ["DIN 471 18", "circlip 18 mm shaft", "external circlip 18", "18x1.2 DIN 471", "Seeger A18", "shaft retaining ring 18 mm", "M18 external retaining ring", "M18 circlip", "DIN 471 M18", "DIN471 M18"] |
| 60 | standard = "DIN 471 (FreeCAD-library model)" |
| 61 | |
| 62 | [[presets]] |
| 63 | id = "DIN471-20" |
| 64 | title = "Retaining ring for 20 mm shaft (DIN 471 pattern)" |
| 65 | params = { size = "20" } |
| 66 | aliases = ["DIN 471 20", "circlip 20 mm shaft", "external circlip 20", "20x1.2 DIN 471", "Seeger A20", "shaft retaining ring 20 mm", "M20 external retaining ring", "M20 circlip", "DIN 471 M20", "DIN471 M20"] |
| 67 | standard = "DIN 471 (FreeCAD-library model)" |
| 68 | |
| 69 | [[presets]] |
| 70 | id = "DIN471-22" |
| 71 | title = "Retaining ring for 22 mm shaft (DIN 471 pattern)" |
| 72 | params = { size = "22" } |
| 73 | aliases = ["DIN 471 22", "circlip 22 mm shaft", "external circlip 22", "22x1.2 DIN 471", "Seeger A22", "shaft retaining ring 22 mm", "M22 external retaining ring", "M22 circlip", "DIN 471 M22", "DIN471 M22"] |
| 74 | standard = "DIN 471 (FreeCAD-library model)" |
| 75 | |
| 76 | [[presets]] |
| 77 | id = "DIN471-24" |
| 78 | title = "Retaining ring for 24 mm shaft (DIN 471 pattern)" |
| 79 | params = { size = "24" } |
| 80 | aliases = ["DIN 471 24", "circlip 24 mm shaft", "external circlip 24", "24x1.2 DIN 471", "Seeger A24", "shaft retaining ring 24 mm", "M24 external retaining ring", "M24 circlip", "DIN 471 M24", "DIN471 M24"] |
| 81 | standard = "DIN 471 (FreeCAD-library model)" |
| 82 | |
| 83 | [[presets]] |
| 84 | id = "DIN471-26" |
| 85 | title = "Retaining ring for 26 mm shaft (DIN 471 pattern)" |
| 86 | params = { size = "26" } |
| 87 | aliases = ["DIN 471 26", "circlip 26 mm shaft", "external circlip 26", "26x1.2 DIN 471", "Seeger A26", "shaft retaining ring 26 mm", "DIN 471 M26", "DIN471 M26", "M26 circlip"] |
| 88 | standard = "DIN 471 (FreeCAD-library model)" |
| 89 | |
| 90 | [[presets]] |
| 91 | id = "DIN471-28" |
| 92 | title = "Retaining ring for 28 mm shaft (DIN 471 pattern)" |
| 93 | params = { size = "28" } |
| 94 | aliases = ["DIN 471 28", "circlip 28 mm shaft", "external circlip 28", "28x1.5 DIN 471", "Seeger A28", "shaft retaining ring 28 mm", "DIN 471 M28", "DIN471 M28", "M28 circlip"] |
| 95 | standard = "DIN 471 (FreeCAD-library model)" |
| 96 | |
| 97 | [[presets]] |
| 98 | id = "DIN471-30" |
| 99 | title = "Retaining ring for 30 mm shaft (DIN 471 pattern)" |
| 100 | params = { size = "30" } |
| 101 | aliases = ["DIN 471 30", "circlip 30 mm shaft", "external circlip 30", "30x1.5 DIN 471", "Seeger A30", "shaft retaining ring 30 mm", "M30 external retaining ring", "M30 circlip", "DIN 471 M30", "DIN471 M30"] |
| 102 | standard = "DIN 471 (FreeCAD-library model)" |
| 103 | |
| 104 | [[presets]] |
| 105 | id = "DIN471-32" |
| 106 | title = "Retaining ring for 32 mm shaft (DIN 471 pattern)" |
| 107 | params = { size = "32" } |
| 108 | aliases = ["DIN 471 32", "circlip 32 mm shaft", "external circlip 32", "32x1.5 DIN 471", "Seeger A32", "shaft retaining ring 32 mm", "DIN 471 M32", "DIN471 M32", "M32 circlip"] |
| 109 | standard = "DIN 471 (FreeCAD-library model)" |
| 110 | |
| 111 | [[presets]] |
| 112 | id = "DIN471-34" |
| 113 | title = "Retaining ring for 34 mm shaft (DIN 471 pattern)" |
| 114 | params = { size = "34" } |
| 115 | aliases = ["DIN 471 34", "circlip 34 mm shaft", "external circlip 34", "34x1.5 DIN 471", "Seeger A34", "shaft retaining ring 34 mm", "M34 external retaining ring", "M34 circlip", "DIN 471 M34", "DIN471 M34"] |
| 116 | standard = "DIN 471 (FreeCAD-library model)" |
| 117 |
External retaining ring (circlip) for shafts, shaft diameters 10 to 34 mm, as the published FreeCAD-library models draw them: the ring's outline with its lugs and lug holes, a flat plate of the ring's thickness.
The ring lies on the XY plane from z = 0 to its thickness s, the bore centred on the origin (shaft axis along Z), the
lugs toward +X. Each size's outline is the reference model's own, written in the recipe as a table (RINGS, in
part.py): lines and arcs (each arc by its ends and midpoint) and the two lug holes.
Measured on the models, mm (bore d3: the ring's inside arc, free state; extents: across the lugs (X) × across (Y)):
| d1 | s | d3 | Extents | Lug holes |
|---|---|---|---|---|
| 10 | 1 | 9.2966 | 14.54 × 12.3 | 1.5 |
| 12 | 1 | 11 | 16.06 × 14 | 1.7 |
| 14 | 1 | 12.8 | 18.5 × 16.4 | 1.7 |
| 16 | 1 | 14.7 | 20.6 × 18.34 | 1.7 |
| 18 | 1.2 | 16.6 | 22.9 × 20.5 | 2 |
| 20 | 1.2 | 18.6 | 25.2 × 22.8 | 2 |
| 22 | 1.2 | 20.6 | 27.6 × 25.2 | 2 |
| 24 | 1.2 | 22.1773 | 29.58 × 27.14 | 2 |
| 26 | 1.2 | 24.1999 | 31.8 × 29.3 | 2 |
| 28 | 1.5 | 25.9 | 33.8 × 31.1 | 2 |
| 30 | 1.5 | 27.9987 | 36.6 × 33.89 | 2 |
| 32 | 1.5 | 29.4739 | 38.34 × 35.57 | 2.5 |
| 34 | 1.5 | 31.6321 | 40.79 × 37.92 | 2.5 |
| Parameter | Meaning |
|---|---|
size |
shaft diameter d1, mm |
material |
spring-steel (STEVE steel-c60e, the closest grade to DIN 471's C75S) or stainless |
DIN 471 gives the ring's thickness, bore, lug size and hole diameter but no drawing of the ring's outline between its back and its lugs. The geometry was measured from the published reference models below: each model's largest planar face gives the ring's plane, the thickness is the model's extent across it, and the outline is the OCCT section at mid-thickness with every edge read exactly (line ends; each arc's ends and midpoint), rounded to 0.0001 mm; the recipe re-draws it in its own code. Every preset is checked against its own model: bounding box within 0.05 mm (the M10 model is stored tilted, so its oriented box is compared) and volume within 2 %.
Mechanical Parts/Fasteners/RetainingRings/Metric/DIN471_CLASS_A_M<d1>RetainingRings.step for
d1 = 10 to 34 (commit 2e36ae32), by nachotineo (added 2015-10-11);
https://github.com/FreeCAD/FreeCAD-library; licensed under
CC-BY-3.0 (the library's licence for all its parts). Distributed by
step.parts as din471_retaining_ring_m<d1> / din471_external_retaining_ring_m<d1>
(https://www.step.parts), identical geometry. No endorsement by the author or the FreeCAD project is implied.The models follow DIN 471's key dimensions closely but not exactly: their bores differ from DIN 471's d3 by up to 0.13 mm in some sizes (14, 18, 20, 22, 30, 32, 34). The recipe keeps the models' values; use DIN 471's table where the groove fit matters. Simplifications: none beyond the models' own (sharp edges, free state).
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
| 1 | # Retaining ring (DIN 471 pattern) |
| 2 | |
| 3 | External retaining ring (circlip) for shafts, shaft diameters 10 to 34 mm, as the published FreeCAD-library models |
| 4 | draw them: the ring's outline with its lugs and lug holes, a flat plate of the ring's thickness. |
| 5 | |
| 6 | ## Geometry |
| 7 | |
| 8 | The ring lies on the XY plane from z = 0 to its thickness s, the bore centred on the origin (shaft axis along Z), the |
| 9 | lugs toward +X. Each size's outline is the reference model's own, written in the recipe as a table (`RINGS`, in |
| 10 | `part.py`): lines and arcs (each arc by its ends and midpoint) and the two lug holes. |
| 11 | |
| 12 | Measured on the models, mm (bore d3: the ring's inside arc, free state; extents: across the lugs (X) × across (Y)): |
| 13 | |
| 14 | | d1 | s | d3 | Extents | Lug holes | |
| 15 | |---|---|---|---|---| |
| 16 | | 10 | 1 | 9.2966 | 14.54 × 12.3 | 1.5 | |
| 17 | | 12 | 1 | 11 | 16.06 × 14 | 1.7 | |
| 18 | | 14 | 1 | 12.8 | 18.5 × 16.4 | 1.7 | |
| 19 | | 16 | 1 | 14.7 | 20.6 × 18.34 | 1.7 | |
| 20 | | 18 | 1.2 | 16.6 | 22.9 × 20.5 | 2 | |
| 21 | | 20 | 1.2 | 18.6 | 25.2 × 22.8 | 2 | |
| 22 | | 22 | 1.2 | 20.6 | 27.6 × 25.2 | 2 | |
| 23 | | 24 | 1.2 | 22.1773 | 29.58 × 27.14 | 2 | |
| 24 | | 26 | 1.2 | 24.1999 | 31.8 × 29.3 | 2 | |
| 25 | | 28 | 1.5 | 25.9 | 33.8 × 31.1 | 2 | |
| 26 | | 30 | 1.5 | 27.9987 | 36.6 × 33.89 | 2 | |
| 27 | | 32 | 1.5 | 29.4739 | 38.34 × 35.57 | 2.5 | |
| 28 | | 34 | 1.5 | 31.6321 | 40.79 × 37.92 | 2.5 | |
| 29 | |
| 30 | ## Parameters |
| 31 | |
| 32 | | Parameter | Meaning | |
| 33 | |---|---| |
| 34 | | `size` | shaft diameter d1, mm | |
| 35 | | `material` | `spring-steel` (STEVE `steel-c60e`, the closest grade to DIN 471's C75S) or `stainless` | |
| 36 | |
| 37 | ## Sources |
| 38 | |
| 39 | DIN 471 gives the ring's thickness, bore, lug size and hole diameter but no drawing of the ring's outline between its |
| 40 | back and its lugs. **The geometry was measured from the published reference models** below: each model's largest |
| 41 | planar face gives the ring's plane, the thickness is the model's extent across it, and the outline is the OCCT section |
| 42 | at mid-thickness with every edge read exactly (line ends; each arc's ends and midpoint), rounded to 0.0001 mm; the |
| 43 | recipe re-draws it in its own code. Every preset is checked against its own model: bounding box within 0.05 mm (the |
| 44 | M10 model is stored tilted, so its oriented box is compared) and volume within 2 %. |
| 45 | |
| 46 | - **FreeCAD-library**, `Mechanical Parts/Fasteners/RetainingRings/Metric/DIN471_CLASS_A_M<d1>RetainingRings.step` for |
| 47 | d1 = 10 to 34 (commit 2e36ae32), by **nachotineo** (added 2015-10-11); |
| 48 | https://github.com/FreeCAD/FreeCAD-library; licensed under |
| 49 | [CC-BY-3.0](https://creativecommons.org/licenses/by/3.0/) (the library's licence for all its parts). Distributed by |
| 50 | step.parts as `din471_retaining_ring_m<d1>` / `din471_external_retaining_ring_m<d1>` |
| 51 | (https://www.step.parts), identical geometry. No endorsement by the author or the FreeCAD project is implied. |
| 52 | |
| 53 | The models follow DIN 471's key dimensions closely but not exactly: their bores differ from DIN 471's d3 by up to |
| 54 | 0.13 mm in some sizes (14, 18, 20, 22, 30, 32, 34). The recipe keeps the models' values; use DIN 471's table where |
| 55 | the groove fit matters. Simplifications: none beyond the models' own (sharp edges, free state). |
| 56 | |
| 57 | Preset list: from the step.parts catalogue (MIT), see `library/NOTICE.md`. |
| 58 |
External retaining ring (circlip) for shafts of the DIN 471 pattern, shaft diameters 10 to 34 mm: the ring's outline with its lugs and lug holes, a flat plate of the ring's thickness. Each size was measured from the FreeCAD-library model of that size (CC-BY-3.0, by nachotineo); DIN 471 gives the ring's key dimensions but not its outline between the back and the lugs, so the models' outlines are used as they are. On the XY plane from z = 0, the bore centred on the origin, the lugs toward +X. Dimensions and attribution: see the README.
External retaining ring (circlip) for shafts, shaft diameters 10 to 34 mm, as the published FreeCAD-library models draw them: the ring's outline with its lugs and lug holes, a flat plate of the ring's thickness.
The ring lies on the XY plane from z = 0 to its thickness s, the bore centred on the origin (shaft axis along Z), the
lugs toward +X. Each size's outline is the reference model's own, written in the recipe as a table (RINGS, in
part.py): lines and arcs (each arc by its ends and midpoint) and the two lug holes.
Measured on the models, mm (bore d3: the ring's inside arc, free state; extents: across the lugs (X) × across (Y)):
| d1 | s | d3 | Extents | Lug holes |
|---|---|---|---|---|
| 10 | 1 | 9.2966 | 14.54 × 12.3 | 1.5 |
| 12 | 1 | 11 | 16.06 × 14 | 1.7 |
| 14 | 1 | 12.8 | 18.5 × 16.4 | 1.7 |
| 16 | 1 | 14.7 | 20.6 × 18.34 | 1.7 |
| 18 | 1.2 | 16.6 | 22.9 × 20.5 | 2 |
| 20 | 1.2 | 18.6 | 25.2 × 22.8 | 2 |
| 22 | 1.2 | 20.6 | 27.6 × 25.2 | 2 |
| 24 | 1.2 | 22.1773 | 29.58 × 27.14 | 2 |
| 26 | 1.2 | 24.1999 | 31.8 × 29.3 | 2 |
| 28 | 1.5 | 25.9 | 33.8 × 31.1 | 2 |
| 30 | 1.5 | 27.9987 | 36.6 × 33.89 | 2 |
| 32 | 1.5 | 29.4739 | 38.34 × 35.57 | 2.5 |
| 34 | 1.5 | 31.6321 | 40.79 × 37.92 | 2.5 |
| Parameter | Meaning |
|---|---|
size |
shaft diameter d1, mm |
material |
spring-steel (STEVE steel-c60e, the closest grade to DIN 471's C75S) or stainless |
DIN 471 gives the ring's thickness, bore, lug size and hole diameter but no drawing of the ring's outline between its back and its lugs. The geometry was measured from the published reference models below: each model's largest planar face gives the ring's plane, the thickness is the model's extent across it, and the outline is the OCCT section at mid-thickness with every edge read exactly (line ends; each arc's ends and midpoint), rounded to 0.0001 mm; the recipe re-draws it in its own code. Every preset is checked against its own model: bounding box within 0.05 mm (the M10 model is stored tilted, so its oriented box is compared) and volume within 2 %.
Mechanical Parts/Fasteners/RetainingRings/Metric/DIN471_CLASS_A_M<d1>RetainingRings.step for
d1 = 10 to 34 (commit 2e36ae32), by nachotineo (added 2015-10-11);
https://github.com/FreeCAD/FreeCAD-library; licensed under
CC-BY-3.0 (the library's licence for all its parts). Distributed by
step.parts as din471_retaining_ring_m<d1> / din471_external_retaining_ring_m<d1>
(https://www.step.parts), identical geometry. No endorsement by the author or the FreeCAD project is implied.The models follow DIN 471's key dimensions closely but not exactly: their bores differ from DIN 471's d3 by up to 0.13 mm in some sizes (14, 18, 20, 22, 30, 32, 34). The recipe keeps the models' values; use DIN 471's table where the groove fit matters. Simplifications: none beyond the models' own (sharp edges, free state).
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.