"""Deep groove ball bearing, shielded (2Z), ISO 15 boundary dimensions. Envelope: inner and outer rings and two recessed shields (four bodies; the balls behind the shields aren't modelled). Centred on the origin with its axis along Z. Material: rings in through-hardened high-carbon bearing steel (C60 from the material library, the closest it has to 100Cr6 / AISI 52100), ground; shields in cold-rolled steel (DC01).""" from steve import Model designation = "608" # Bearing designation # designation: (bore d, outside diameter D, width B) BEARINGS = { '623': (3, 10, 4), '624': (4, 13, 5), '625': (5, 16, 5), '626': (6, 19, 6), '608': (8, 22, 7), '688': (8, 16, 5), '6000': (10, 26, 8), '6001': (12, 28, 8), '6002': (15, 32, 9), '6003': (17, 35, 10), '6004': (20, 42, 12), '6200': (10, 30, 9), '6201': (12, 32, 10), '6202': (15, 35, 11), '6203': (17, 40, 12), '6204': (20, 47, 14), } d, D, B = BEARINGS[designation] ring = (D - d) * 0.22 # radial thickness of each ring's face recess = min(0.4, B * 0.06) # shield face below the ring faces shield = max(0.2, min(0.6, B * 0.05)) # shield sheet thickness gap = min(0.15, ring * 0.1) # running clearance between a shield and the inner ring model = Model() with model.sketch("outer_sketch", on="XY", name="Outer ring") as sk: sk.circle("outside", (0, 0), D / 2) sk.circle("inside", (0, 0), D / 2 - ring) model.extrude("outer_ring", "outer_sketch", distance=B, both=True, op="new", body="outer_ring") # B in all, centred with model.sketch("inner_sketch", on="XY", name="Inner ring") as sk: sk.circle("outside", (0, 0), d / 2 + ring) sk.circle("bore", (0, 0), d / 2) model.extrude("inner_ring", "inner_sketch", distance=B, both=True, op="new", body="inner_ring") model.plane("shield_top_plane", on="XY", offset=B / 2 - recess, name="Top shield face") with model.sketch("shield_top_sketch", on="shield_top_plane", name="Top shield") as sk: sk.circle("out", (0, 0), D / 2 - ring) sk.circle("inn", (0, 0), d / 2 + ring + gap) model.extrude("shield_top", "shield_top_sketch", distance=-shield, op="new", body="shield_top") model.plane("shield_bottom_plane", on="XY", offset=-B / 2 + recess, name="Bottom shield face") with model.sketch("shield_bottom_sketch", on="shield_bottom_plane", name="Bottom shield") as sk: sk.circle("out", (0, 0), D / 2 - ring) sk.circle("inn", (0, 0), d / 2 + ring + gap) model.extrude("shield_bottom", "shield_bottom_sketch", distance=shield, op="new", body="shield_bottom") model.material("steel-1c60", finish="polished") # rings: hardened bearing steel model.material("steel-dc01", bodies=["shield_top", "shield_bottom"], finish="machined") # pressed steel shields result = model.result()