"""Hot-rolled equal and unequal leg steel angle, EN 10056-1, any length. Section: leg a along +Y and leg b along +X from the heel at the origin, thickness t, root radius r1 between the legs and toe radius r2 at the end of each leg (EN 10056-1 profile), extruded along +Z by `length`. """ from steve import Model size = "50x50x5" # Size a x b x t length = 1000 # mm Length material = "steel-s235" # Material # EN 10056-1 (1998 / 2017) equal and unequal leg angles, as tabulated by ArcelorMittal (https://home.agh.edu.pl/~blajer/wpages/cad/tablice.pdf pp. 54-70; # https://constructalia.arcelormittal.com/files/V2026_3_Sales%20programme_FR_EN_DE--123b7234b68e0b1b5576b03bb791a537.pdf pp. 110-116), British Steel (https://www.britishsteel.co.uk/wp-content/uploads/2026/07/EA-datasheet-21.07.26.pdf, https://www.britishsteel.co.uk/wp-content/uploads/2026/07/UA-datasheet-21.07.26.pdf) and, # for the small unequal angles, https://roymech.org/Useful_Tables/Sections/U_AngleA_dim_prop.html and https://www.koyda.com/steel-section-tables/unequal-angles/. # size: (leg a, leg b, thickness t, root radius r1, toe radius r2), mm ANGLES = { "20x20x3": (20, 20, 3, 3.5, 2), "25x25x3": (25, 25, 3, 3.5, 2), "25x25x4": (25, 25, 4, 3.5, 2), "30x30x3": (30, 30, 3, 5, 2.5), "30x30x4": (30, 30, 4, 5, 2.5), "35x35x4": (35, 35, 4, 5, 2.5), "40x40x4": (40, 40, 4, 6, 3), "40x40x5": (40, 40, 5, 6, 3), "45x45x4.5": (45, 45, 4.5, 7, 3.5), "50x50x4": (50, 50, 4, 7, 3.5), "50x50x5": (50, 50, 5, 7, 3.5), "50x50x6": (50, 50, 6, 7, 3.5), "60x60x5": (60, 60, 5, 8, 4), "60x60x6": (60, 60, 6, 8, 4), "60x60x8": (60, 60, 8, 8, 4), "65x65x7": (65, 65, 7, 9, 4.5), "70x70x6": (70, 70, 6, 9, 4.5), "70x70x7": (70, 70, 7, 9, 4.5), "75x75x6": (75, 75, 6, 9, 4.5), "75x75x8": (75, 75, 8, 9, 4.5), "80x80x8": (80, 80, 8, 10, 5), "80x80x10": (80, 80, 10, 10, 5), "90x90x7": (90, 90, 7, 11, 5.5), "90x90x8": (90, 90, 8, 11, 5.5), "90x90x9": (90, 90, 9, 11, 5.5), "90x90x10": (90, 90, 10, 11, 5.5), "100x100x8": (100, 100, 8, 12, 6), "100x100x10": (100, 100, 10, 12, 6), "100x100x12": (100, 100, 12, 12, 6), "120x120x10": (120, 120, 10, 13, 6.5), "120x120x12": (120, 120, 12, 13, 6.5), "130x130x12": (130, 130, 12, 14, 7), "150x150x10": (150, 150, 10, 16, 8), "150x150x12": (150, 150, 12, 16, 8), "150x150x15": (150, 150, 15, 16, 8), "160x160x15": (160, 160, 15, 17, 8.5), "180x180x18": (180, 180, 18, 18, 9), "200x200x16": (200, 200, 16, 18, 9), "200x200x18": (200, 200, 18, 18, 9), "200x200x20": (200, 200, 20, 18, 9), "200x200x24": (200, 200, 24, 18, 9), "250x250x28": (250, 250, 28, 18, 9), "250x250x35": (250, 250, 35, 18, 9), "30x20x3": (30, 20, 3, 4, 2), "30x20x4": (30, 20, 4, 4, 2), "40x20x4": (40, 20, 4, 4, 2), "40x25x4": (40, 25, 4, 4, 2), "45x30x4": (45, 30, 4, 4.5, 2.25), "50x30x5": (50, 30, 5, 5, 2.5), "60x30x5": (60, 30, 5, 6, 3), "60x40x5": (60, 40, 5, 6, 3), "60x40x6": (60, 40, 6, 6, 3), "65x50x5": (65, 50, 5, 6, 3), "70x50x6": (70, 50, 6, 7, 3.5), "75x50x6": (75, 50, 6, 7, 3.5), "75x50x8": (75, 50, 8, 7, 3.5), "80x40x6": (80, 40, 6, 7, 3.5), "80x40x8": (80, 40, 8, 7, 3.5), "80x60x7": (80, 60, 7, 8, 4), "100x50x6": (100, 50, 6, 8, 4), "100x50x8": (100, 50, 8, 8, 4), "100x65x7": (100, 65, 7, 10, 5), "100x65x8": (100, 65, 8, 10, 5), "100x65x10": (100, 65, 10, 10, 5), "100x75x8": (100, 75, 8, 10, 5), "100x75x10": (100, 75, 10, 10, 5), "100x75x12": (100, 75, 12, 10, 5), "120x80x8": (120, 80, 8, 11, 5.5), "120x80x10": (120, 80, 10, 11, 5.5), "120x80x12": (120, 80, 12, 11, 5.5), "125x75x8": (125, 75, 8, 11, 5.5), "125x75x10": (125, 75, 10, 11, 5.5), "125x75x12": (125, 75, 12, 11, 5.5), "135x65x8": (135, 65, 8, 11, 5.5), "135x65x10": (135, 65, 10, 11, 5.5), "150x90x10": (150, 90, 10, 12, 6), "150x90x12": (150, 90, 12, 12, 6), "150x90x15": (150, 90, 15, 12, 6), "150x100x10": (150, 100, 10, 12, 6), "150x100x12": (150, 100, 12, 12, 6), "200x100x10": (200, 100, 10, 15, 7.5), "200x100x12": (200, 100, 12, 15, 7.5), "200x100x15": (200, 100, 15, 15, 7.5), "200x150x12": (200, 150, 12, 15, 7.5), "200x150x15": (200, 150, 15, 15, 7.5), } # material choice: (STEVE material library id, appearance colour) MATERIALS = { "steel-s235": ("steel-s235jr", "#6f7378"), # EN 10025-2 S235JR "steel-s355": ("steel-s355j2g3", "#6f7378"), # EN 10025-2 S355J2 (closest library grade S355J2G3) } a, b, t, r1, r2 = ANGLES[size] material_id, colour = MATERIALS[material] model = Model() with model.sketch("section", on="XY", name="Section") as sk: sk.line("back", (0, a), (0, 0)) sk.line("heel", (0, 0), (b, 0)) sk.line("toe_b", (b, 0), (b, t - r2)) sk.arc("toe_b_round", (b - r2, t - r2), r2, 0, 90) sk.line("inner_b", (b - r2, t), (t + r1, t)) sk.arc("root", (t + r1, t + r1), r1, 180, 270) sk.line("inner_a", (t, t + r1), (t, a - r2)) sk.arc("toe_a_round", (t - r2, a - r2), r2, 0, 90) sk.line("toe_a", (t - r2, a), (0, a)) model.extrude("angle", "section", distance=length, name="Angle") model.material(material_id, color=colour) result = model.result()