"""Deep groove ball bearing, single row, metric: miniature (6xx, MR), 60, 62, 63, 68 and 69 series, open, shielded (ZZ) or sealed (2RS), optionally with a flange on the outer ring. Envelope model for assemblies: one solid with the boundary dimensions (bore d, outside diameter D, width B) and, when flanged, the flange (diameter D1, width C1) flush with the bottom face. The faces are flat (shields and seals flush with the ring faces); rolling elements, cage and the gap between the rings are not modelled, since no catalogue dimension gives them. Centred on the origin, axis along Z; the faces are at z = +-B/2. """ from steve import Model designation = "608" # Bearing designation (basic number) closure = "zz" # Shields / seals flanged = False # Flange on the outer ring # designation: (bore d, outside diameter D, width B open, width B shielded or sealed) # ISO 15:2017 boundary dimensions (dimension series; preview https://cdn.standards.iteh.ai/samples/69977/9ac39b8b79a94b74b35cba8868eabe4f/ISO-15-2017.pdf); # per bearing number from NTN "Ball and Roller Bearings" CAT. No. 2203-3/E, pp. B-22 to B-27 (60, 62, 63, 68, 69 # series) and B-48 to B-51 (miniature: 623 to 629, 688A, MR85 = 675, MR95), https://www.ntnglobal.com/en/products/catalog/pdf/2203E.pdf; # MR85 / MR95 / 688A also NSK's online catalogue (open and shielded widths differ). BEARINGS = { "623": (3, 10, 4, 4), "624": (4, 13, 5, 5), "625": (5, 16, 5, 5), "626": (6, 19, 6, 6), "627": (7, 22, 7, 7), "608": (8, 22, 7, 7), "629": (9, 26, 8, 8), "688": (8, 16, 4, 5), "MR85": (5, 8, 2, 2.5), "MR95": (5, 9, 2.5, 3), "6000": (10, 26, 8, 8), "6001": (12, 28, 8, 8), "6002": (15, 32, 9, 9), "6003": (17, 35, 10, 10), "6004": (20, 42, 12, 12), "6005": (25, 47, 12, 12), "6006": (30, 55, 13, 13), "6007": (35, 62, 14, 14), "6008": (40, 68, 15, 15), "6009": (45, 75, 16, 16), "6010": (50, 80, 16, 16), "6200": (10, 30, 9, 9), "6201": (12, 32, 10, 10), "6202": (15, 35, 11, 11), "6203": (17, 40, 12, 12), "6204": (20, 47, 14, 14), "6205": (25, 52, 15, 15), "6206": (30, 62, 16, 16), "6207": (35, 72, 17, 17), "6208": (40, 80, 18, 18), "6209": (45, 85, 19, 19), "6210": (50, 90, 20, 20), "6300": (10, 35, 11, 11), "6301": (12, 37, 12, 12), "6302": (15, 42, 13, 13), "6303": (17, 47, 14, 14), "6304": (20, 52, 15, 15), "6305": (25, 62, 17, 17), "6306": (30, 72, 19, 19), "6307": (35, 80, 21, 21), "6308": (40, 90, 23, 23), "6309": (45, 100, 25, 25), "6310": (50, 110, 27, 27), "6800": (10, 19, 5, 5), "6801": (12, 21, 5, 5), "6802": (15, 24, 5, 5), "6803": (17, 26, 5, 5), "6804": (20, 32, 7, 7), "6805": (25, 37, 7, 7), "6806": (30, 42, 7, 7), "6807": (35, 47, 7, 7), "6808": (40, 52, 7, 7), "6809": (45, 58, 7, 7), "6810": (50, 65, 7, 7), "6900": (10, 22, 6, 6), "6901": (12, 24, 6, 6), "6902": (15, 28, 7, 7), "6903": (17, 30, 7, 7), "6904": (20, 37, 9, 9), "6905": (25, 42, 9, 9), "6906": (30, 47, 9, 9), "6907": (35, 55, 10, 10), "6908": (40, 62, 12, 12), "6909": (45, 68, 12, 12), "6910": (50, 72, 12, 12), } # Sealed (2RS) widths that differ from the shielded width and aren't sourced: not offered. NO_SEALED = ("MR85", "MR95") # designation: (flange diameter D1, flange width C1 open, C1 shielded or sealed): NSK online catalogue (F623ZZ, F624ZZ, # F625ZZ, F626ZZ1, F608ZZ, F688A, F688AZZ1) and NTN CAT. 2203-3/E p. B-50 (FL688A: C1 1.0 open, 1.1 shielded). FLANGES = { "623": (11.5, 1.0, 1.0), "624": (15.0, 1.0, 1.0), "625": (18.0, 1.0, 1.0), "626": (22.0, 1.5, 1.5), "608": (25.0, 1.5, 1.5), "688": (18.0, 1.0, 1.1), } if closure == "2rs" and designation in NO_SEALED: raise ValueError(f"{designation}: no sourced width for the sealed (2RS) version; choose open or zz.") if flanged and designation not in FLANGES: raise ValueError(f"{designation}: no sourced flange dimensions; flanged sizes: {', '.join(FLANGES)}.") d, D, b_open, b_closed = BEARINGS[designation] B = b_open if closure == "open" else b_closed model = Model() with model.sketch("rings", on="XY", name="Rings") as sk: sk.circle("outer", (0, 0), D / 2) sk.circle("bore", (0, 0), d / 2) model.extrude("body", "rings", distance=B, both=True, name="Bearing") model.plane("face_bottom", on="XY", offset=-B / 2, name="Bottom face") if flanged: D1, c1_open, c1_closed = FLANGES[designation] C1 = c1_open if closure == "open" else c1_closed with model.sketch("flange_sketch", on="face_bottom", name="Flange") as sk: sk.circle("flange_out", (0, 0), D1 / 2) sk.circle("flange_in", (0, 0), D / 2) model.extrude("flange", "flange_sketch", distance=C1, name="Flange") model.material("steel-generic", color="#b9bdc2") result = model.result()