steve/t-slot-extrusion
T-slot aluminium extrusions with real cross-sections (2020, 2040, 3030, 3060, 4040, 4080; slot 5, 6, 8), any length.
Corner bracket envelope for 2020, 3030 and 4040 extrusions: two flat legs at a right angle (simplified, no holes).
| 1 | """Corner bracket for 20, 30 and 40 mm aluminium extrusions, simplified as step.parts' published models draw it: two |
| 2 | flat legs at a right angle, no holes. |
| 3 | |
| 4 | The legs stand on the XY plane and rise along +Z by the bracket's height (the extrusion size). One leg runs along +X, |
| 5 | the other along +Y, each `t` thick and centred on its axis, `leg` long from the origin; the small square at the |
| 6 | outside of the corner (-t/2..0, -t/2..0) is open, as in the models. |
| 7 | """ |
| 8 | from steve import Model |
| 9 | |
| 10 | series = "2020" # Extrusion series |
| 11 | variant = "single" # Leg length: single or double |
| 12 | material = "unspecified" # Material |
| 13 | |
| 14 | # mm, measured on step.parts' models corner_bracket_<series>_<variant>_simple (their outline, a polygon read edge by |
| 15 | # edge at mid-height, and their height): {series: (height, thickness t, {variant: leg length})} |
| 16 | BRACKETS = { |
| 17 | "2020": (20.0, 3.0, {"single": 30.0, "double": 40.0}), |
| 18 | "3030": (30.0, 4.5, {"single": 45.0, "double": 60.0}), |
| 19 | "4040": (40.0, 6.0, {"single": 60.0, "double": 80.0}), |
| 20 | } |
| 21 | MATERIALS = { |
| 22 | "unspecified": (None, None), # the models name no material |
| 23 | "aluminum": ("aluminum-generic", "#cfd2d6"), |
| 24 | "steel": ("steel-generic", "#7d8085"), |
| 25 | } |
| 26 | |
| 27 | height, t, legs = BRACKETS[series] |
| 28 | leg = legs[variant] |
| 29 | h = t / 2 |
| 30 | material_id, colour = MATERIALS[material] |
| 31 | |
| 32 | model = Model() |
| 33 | with model.sketch("outline_sketch", on="XY", name="Outline") as sk: |
| 34 | sk.polyline("outline", [(0, 0), (0, -h), (leg, -h), (leg, h), (h, h), (h, leg), (-h, leg), (-h, 0)]) |
| 35 | model.extrude("bracket", "outline_sketch", distance=height, name="Bracket") |
| 36 | if material_id: |
| 37 | model.material(material_id, color=colour) |
| 38 | result = model.result() |
| 39 |
| 1 | name = "steve/extrusion-corner-bracket" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "Corner bracket envelope for 2020, 3030 and 4040 extrusions: two flat legs at a right angle (simplified, no holes)." |
| 6 | description = """A simplified corner bracket for 20, 30 and 40 mm aluminium extrusions: two flat legs at a right angle, \ |
| 7 | as tall as the extrusion, in two leg lengths, without holes. Measured from step.parts' published models (MIT); no maker \ |
| 8 | or standard is behind them, so use it as an envelope in assemblies. |
| 9 | |
| 10 | Legs along +X and +Y from the origin, rising along +Z. Dimensions and attribution: see the README.""" |
| 11 | tags = ["bracket", "corner-bracket", "extrusion", "t-slot", "2020", "3030", "4040", "frame"] |
| 12 | |
| 13 | [parameters.series] |
| 14 | type = "choice" |
| 15 | default = "2020" |
| 16 | choices = ["2020", "3030", "4040"] |
| 17 | label = "Extrusion series" |
| 18 | |
| 19 | [parameters.variant] |
| 20 | type = "choice" |
| 21 | default = "single" |
| 22 | choices = ["single", "double"] |
| 23 | label = "Leg length" |
| 24 | description = "single: the shorter legs (1.5 x the series size); double: the longer ones (2 x)." |
| 25 | |
| 26 | [parameters.material] |
| 27 | type = "choice" |
| 28 | default = "unspecified" |
| 29 | choices = ["unspecified", "aluminum", "steel"] |
| 30 | label = "Material" |
| 31 | |
| 32 | [[presets]] |
| 33 | id = "corner-2020-double" |
| 34 | title = "Corner bracket 2020 (double, simplified)" |
| 35 | params = { series = "2020", variant = "double" } |
| 36 | aliases = ["2020 corner bracket", "2020 angle bracket", "L bracket 2020", "2020 extrusion bracket double"] |
| 37 | standard = "step.parts corner bracket model" |
| 38 | |
| 39 | [[presets]] |
| 40 | id = "corner-2020-single" |
| 41 | title = "Corner bracket 2020 (single, simplified)" |
| 42 | params = { series = "2020", variant = "single" } |
| 43 | aliases = ["2020 corner bracket", "2020 angle bracket", "L bracket 2020", "2020 extrusion bracket single"] |
| 44 | standard = "step.parts corner bracket model" |
| 45 | |
| 46 | [[presets]] |
| 47 | id = "corner-3030-double" |
| 48 | title = "Corner bracket 3030 (double, simplified)" |
| 49 | params = { series = "3030", variant = "double" } |
| 50 | aliases = ["3030 corner bracket", "3030 angle bracket", "L bracket 3030", "3030 extrusion bracket double"] |
| 51 | standard = "step.parts corner bracket model" |
| 52 | |
| 53 | [[presets]] |
| 54 | id = "corner-3030-single" |
| 55 | title = "Corner bracket 3030 (single, simplified)" |
| 56 | params = { series = "3030", variant = "single" } |
| 57 | aliases = ["3030 corner bracket", "3030 angle bracket", "L bracket 3030", "3030 extrusion bracket single"] |
| 58 | standard = "step.parts corner bracket model" |
| 59 | |
| 60 | [[presets]] |
| 61 | id = "corner-4040-double" |
| 62 | title = "Corner bracket 4040 (double, simplified)" |
| 63 | params = { series = "4040", variant = "double" } |
| 64 | aliases = ["4040 corner bracket", "4040 angle bracket", "L bracket 4040", "4040 extrusion bracket double"] |
| 65 | standard = "step.parts corner bracket model" |
| 66 | |
| 67 | [[presets]] |
| 68 | id = "corner-4040-single" |
| 69 | title = "Corner bracket 4040 (single, simplified)" |
| 70 | params = { series = "4040", variant = "single" } |
| 71 | aliases = ["4040 corner bracket", "4040 angle bracket", "L bracket 4040", "4040 extrusion bracket single"] |
| 72 | standard = "step.parts corner bracket model" |
| 73 |
A simplified corner bracket for 20, 30 and 40 mm aluminium extrusions: two flat legs at a right angle, as tall as the extrusion, without holes. For assemblies (envelope and position), not for the bracket's hole pattern.
The legs stand on the XY plane and rise along +Z by the height. One leg runs along +X, the other along +Y, each t
thick and centred on its axis, leg long from the origin; the small square outside the corner (−t/2..0, −t/2..0) is
open, as in the models.
| Series | Height | t | Leg, single | Leg, double |
|---|---|---|---|---|
| 2020 | 20 | 3 | 30 | 40 |
| 3030 | 30 | 4.5 | 45 | 60 |
| 4040 | 40 | 6 | 60 | 80 |
| Parameter | Meaning |
|---|---|
series |
2020, 3030, 4040 |
variant |
single (shorter legs) or double (longer legs) |
material |
unspecified (no material assigned), aluminum, steel |
These generic brackets name no maker and no standard covers them. The geometry was measured from the published reference models below (each model's outline, a polygon read edge by edge at mid-height, and its height), and every preset is checked against its own model: bounding box within 0.05 mm and volume within 2 %.
corner_bracket_<series>_<variant>_simple (https://www.step.parts, repository
https://github.com/earthtojake/step.parts, commit c6113328, catalog/step/): step.parts' own "analytic simplified"
models, original project material under the repository's MIT licence (© 2026 earthtojake). They name no
material, so the presets have material = "unspecified".Simplifications (the models'): no holes, no slot keys, no gusset. The catalogue's gusseted brackets (a bar across one leg, not joining the legs) and its joining plates and motor plates (all the same plain 50 × 30 × 3 block) are not presets.
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
| 1 | # Extrusion corner bracket (simplified) |
| 2 | |
| 3 | A simplified corner bracket for 20, 30 and 40 mm aluminium extrusions: two flat legs at a right angle, as tall as the |
| 4 | extrusion, without holes. For assemblies (envelope and position), not for the bracket's hole pattern. |
| 5 | |
| 6 | ## Geometry |
| 7 | |
| 8 | The legs stand on the XY plane and rise along +Z by the height. One leg runs along +X, the other along +Y, each t |
| 9 | thick and centred on its axis, `leg` long from the origin; the small square outside the corner (−t/2..0, −t/2..0) is |
| 10 | open, as in the models. |
| 11 | |
| 12 | | Series | Height | t | Leg, single | Leg, double | |
| 13 | |---|---|---|---|---| |
| 14 | | 2020 | 20 | 3 | 30 | 40 | |
| 15 | | 3030 | 30 | 4.5 | 45 | 60 | |
| 16 | | 4040 | 40 | 6 | 60 | 80 | |
| 17 | |
| 18 | ## Parameters |
| 19 | |
| 20 | | Parameter | Meaning | |
| 21 | |---|---| |
| 22 | | `series` | `2020`, `3030`, `4040` | |
| 23 | | `variant` | `single` (shorter legs) or `double` (longer legs) | |
| 24 | | `material` | `unspecified` (no material assigned), `aluminum`, `steel` | |
| 25 | |
| 26 | ## Sources |
| 27 | |
| 28 | These generic brackets name no maker and no standard covers them. **The geometry was measured from the published |
| 29 | reference models** below (each model's outline, a polygon read edge by edge at mid-height, and its height), and |
| 30 | every preset is checked against its own model: bounding box within 0.05 mm and volume within 2 %. |
| 31 | |
| 32 | - **step.parts**, `corner_bracket_<series>_<variant>_simple` (https://www.step.parts, repository |
| 33 | https://github.com/earthtojake/step.parts, commit c6113328, `catalog/step/`): step.parts' own "analytic simplified" |
| 34 | models, original project material under the repository's **MIT** licence (© 2026 earthtojake). They name no |
| 35 | material, so the presets have `material = "unspecified"`. |
| 36 | |
| 37 | Simplifications (the models'): no holes, no slot keys, no gusset. The catalogue's gusseted brackets (a bar across one |
| 38 | leg, not joining the legs) and its joining plates and motor plates (all the same plain 50 × 30 × 3 block) are not |
| 39 | presets. |
| 40 | |
| 41 | Preset list: from the step.parts catalogue (MIT), see `library/NOTICE.md`. |
| 42 |
A simplified corner bracket for 20, 30 and 40 mm aluminium extrusions: two flat legs at a right angle, as tall as the extrusion, in two leg lengths, without holes. Measured from step.parts' published models (MIT); no maker or standard is behind them, so use it as an envelope in assemblies. Legs along +X and +Y from the origin, rising along +Z. Dimensions and attribution: see the README.
A simplified corner bracket for 20, 30 and 40 mm aluminium extrusions: two flat legs at a right angle, as tall as the extrusion, without holes. For assemblies (envelope and position), not for the bracket's hole pattern.
The legs stand on the XY plane and rise along +Z by the height. One leg runs along +X, the other along +Y, each t
thick and centred on its axis, leg long from the origin; the small square outside the corner (−t/2..0, −t/2..0) is
open, as in the models.
| Series | Height | t | Leg, single | Leg, double |
|---|---|---|---|---|
| 2020 | 20 | 3 | 30 | 40 |
| 3030 | 30 | 4.5 | 45 | 60 |
| 4040 | 40 | 6 | 60 | 80 |
| Parameter | Meaning |
|---|---|
series |
2020, 3030, 4040 |
variant |
single (shorter legs) or double (longer legs) |
material |
unspecified (no material assigned), aluminum, steel |
These generic brackets name no maker and no standard covers them. The geometry was measured from the published reference models below (each model's outline, a polygon read edge by edge at mid-height, and its height), and every preset is checked against its own model: bounding box within 0.05 mm and volume within 2 %.
corner_bracket_<series>_<variant>_simple (https://www.step.parts, repository
https://github.com/earthtojake/step.parts, commit c6113328, catalog/step/): step.parts' own "analytic simplified"
models, original project material under the repository's MIT licence (© 2026 earthtojake). They name no
material, so the presets have material = "unspecified".Simplifications (the models'): no holes, no slot keys, no gusset. The catalogue's gusseted brackets (a bar across one leg, not joining the legs) and its joining plates and motor plates (all the same plain 50 × 30 × 3 block) are not presets.
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
T-slot aluminium extrusions with real cross-sections (2020, 2040, 3030, 3060, 4040, 4080; slot 5, 6, 8), any length.
20 x 20 V-slot aluminium extrusion, any length, measured from the published FreeCAD-library model.
T-slot extrusion accessories (end cap, cover strip, anchor fastener, inside corner connector), 20/30/40 series: simplified.
MakerBeam 10 x 10 mm aluminium profile, any length, from MakerBeam's own drawing.