"""Hot-rolled I and H beams: IPE (DIN 1025-5), HEA / IPBl (DIN 1025-3) and HEB / IPB (DIN 1025-2), any length. Section: depth h along Y, flange width b along X, web thickness tw, flange thickness tf, root radius r between web and flanges (parallel flanges, square flange edges), centred on the origin and extruded along +Z by `length`. """ from steve import Model profile = "IPE 200" # Profile length = 1000 # mm Length material = "steel-s235" # Material # profile: (h, b, tw, tf, r) in mm. IPE: DIN 1025-5:1994 Table 1; HEA: DIN 1025-3:1994 Table 1; # HEB: DIN 1025-2:1995 Table 1 (the same dimensions as EN 10365:2017). Checked against ArcelorMittal # https://home.agh.edu.pl/~blajer/wpages/cad/tablice.pdf (pp. 18-32) and https://constructalia.arcelormittal.com/files/V2026_3_Sales%20programme_FR_EN_DE--123b7234b68e0b1b5576b03bb791a537.pdf (pp. 56-68). PROFILES = { "IPE 80": (80, 46, 3.8, 5.2, 5), "IPE 100": (100, 55, 4.1, 5.7, 7), "IPE 120": (120, 64, 4.4, 6.3, 7), "IPE 140": (140, 73, 4.7, 6.9, 7), "IPE 160": (160, 82, 5.0, 7.4, 9), "IPE 180": (180, 91, 5.3, 8.0, 9), "IPE 200": (200, 100, 5.6, 8.5, 12), "IPE 220": (220, 110, 5.9, 9.2, 12), "IPE 240": (240, 120, 6.2, 9.8, 15), "IPE 270": (270, 135, 6.6, 10.2, 15), "IPE 300": (300, 150, 7.1, 10.7, 15), "IPE 330": (330, 160, 7.5, 11.5, 18), "IPE 360": (360, 170, 8.0, 12.7, 18), "IPE 400": (400, 180, 8.6, 13.5, 21), "IPE 450": (450, 190, 9.4, 14.6, 21), "IPE 500": (500, 200, 10.2, 16.0, 21), "IPE 550": (550, 210, 11.1, 17.2, 24), "IPE 600": (600, 220, 12.0, 19.0, 24), "HEA 100": (96, 100, 5.0, 8.0, 12), "HEA 120": (114, 120, 5.0, 8.0, 12), "HEA 140": (133, 140, 5.5, 8.5, 12), "HEA 160": (152, 160, 6.0, 9.0, 15), "HEA 180": (171, 180, 6.0, 9.5, 15), "HEA 200": (190, 200, 6.5, 10.0, 18), "HEA 220": (210, 220, 7.0, 11.0, 18), "HEA 240": (230, 240, 7.5, 12.0, 21), "HEA 260": (250, 260, 7.5, 12.5, 24), "HEA 280": (270, 280, 8.0, 13.0, 24), "HEA 300": (290, 300, 8.5, 14.0, 27), "HEA 320": (310, 300, 9.0, 15.5, 27), "HEA 340": (330, 300, 9.5, 16.5, 27), "HEA 360": (350, 300, 10.0, 17.5, 27), "HEA 400": (390, 300, 11.0, 19.0, 27), "HEA 450": (440, 300, 11.5, 21.0, 27), "HEA 500": (490, 300, 12.0, 23.0, 27), "HEA 550": (540, 300, 12.5, 24.0, 27), "HEA 600": (590, 300, 13.0, 25.0, 27), "HEA 650": (640, 300, 13.5, 26.0, 27), "HEA 700": (690, 300, 14.5, 27.0, 27), "HEA 800": (790, 300, 15.0, 28.0, 30), "HEA 900": (890, 300, 16.0, 30.0, 30), "HEA 1000": (990, 300, 16.5, 31.0, 30), "HEB 100": (100, 100, 6.0, 10.0, 12), "HEB 120": (120, 120, 6.5, 11.0, 12), "HEB 140": (140, 140, 7.0, 12.0, 12), "HEB 160": (160, 160, 8.0, 13.0, 15), "HEB 180": (180, 180, 8.5, 14.0, 15), "HEB 200": (200, 200, 9.0, 15.0, 18), "HEB 220": (220, 220, 9.5, 16.0, 18), "HEB 240": (240, 240, 10.0, 17.0, 21), "HEB 260": (260, 260, 10.0, 17.5, 24), "HEB 280": (280, 280, 10.5, 18.0, 24), "HEB 300": (300, 300, 11.0, 19.0, 27), "HEB 320": (320, 300, 11.5, 20.5, 27), "HEB 340": (340, 300, 12.0, 21.5, 27), "HEB 360": (360, 300, 12.5, 22.5, 27), "HEB 400": (400, 300, 13.5, 24.0, 27), "HEB 450": (450, 300, 14.0, 26.0, 27), "HEB 500": (500, 300, 14.5, 28.0, 27), "HEB 550": (550, 300, 15.0, 29.0, 27), "HEB 600": (600, 300, 15.5, 30.0, 27), "HEB 650": (650, 300, 16.0, 31.0, 27), "HEB 700": (700, 300, 17.0, 32.0, 27), "HEB 800": (800, 300, 17.5, 33.0, 30), "HEB 900": (900, 300, 18.5, 35.0, 30), "HEB 1000": (1000, 300, 19.0, 36.0, 30), } # 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) } h, b, tw, tf, r = PROFILES[profile] material_id, colour = MATERIALS[material] x0, y0 = tw / 2, h / 2 - tf # web face, inner flange face model = Model() with model.sketch("section", on="XY", name="Section") as sk: sk.line("bottom", (-b / 2, -h / 2), (b / 2, -h / 2)) sk.line("bottom_right_edge", (b / 2, -h / 2), (b / 2, -y0)) sk.line("bottom_right_inner", (b / 2, -y0), (x0 + r, -y0)) sk.arc("root_bottom_right", (x0 + r, -y0 + r), r, 180, 270) sk.line("web_right", (x0, -y0 + r), (x0, y0 - r)) sk.arc("root_top_right", (x0 + r, y0 - r), r, 90, 180) sk.line("top_right_inner", (x0 + r, y0), (b / 2, y0)) sk.line("top_right_edge", (b / 2, y0), (b / 2, h / 2)) sk.line("top", (b / 2, h / 2), (-b / 2, h / 2)) sk.line("top_left_edge", (-b / 2, h / 2), (-b / 2, y0)) sk.line("top_left_inner", (-b / 2, y0), (-x0 - r, y0)) sk.arc("root_top_left", (-x0 - r, y0 - r), r, 0, 90) sk.line("web_left", (-x0, y0 - r), (-x0, -y0 + r)) sk.arc("root_bottom_left", (-x0 - r, -y0 + r), r, 270, 360) sk.line("bottom_left_inner", (-x0 - r, -y0), (-b / 2, -y0)) sk.line("bottom_left_edge", (-b / 2, -y0), (-b / 2, -h / 2)) model.extrude("beam", "section", distance=length, name="Beam") model.material(material_id, color=colour) result = model.result()