steve/t-slot-extrusion
T-slot aluminium extrusions with real cross-sections (2020, 2040, 3030, 3060, 4040, 4080; slot 5, 6, 8), any length.
T-slot extrusion accessories (end cap, cover strip, anchor fastener, inside corner connector), 20/30/40 series: simplified.
| 1 | """Accessories for 20, 30 and 40 mm T-slot extrusions, simplified as step.parts' published models draw them: end cap, |
| 2 | slot cover strip, anchor fastener and inside corner connector. |
| 3 | |
| 4 | - end-cap: a square plate the size of the profile (centred on the origin, z = -1.5 to 1.5) with one round plug peg |
| 5 | standing on it; |
| 6 | - cover-strip: a flat strip along X, centred, `length` long; |
| 7 | - anchor: a block along X with a round pin through it along Z, both centred; |
| 8 | - inside-corner: an L of square bar in the XY plane, its arms along +X and +Y from the corner at the origin, centred |
| 9 | on z = 0, its outer corner square-cut. |
| 10 | See the README. |
| 11 | """ |
| 12 | from steve import Model |
| 13 | |
| 14 | kind = "end-cap" # Kind: end-cap, cover-strip, anchor, inside-corner |
| 15 | series = "20" # Profile series (20, 30, 40 mm) |
| 16 | length = 100 # mm Length (cover strip only) |
| 17 | material = "unspecified" # Material |
| 18 | |
| 19 | # mm, measured on step.parts' models extrusion_<profile>_<accessory>_simple (every face read; the 2040, 2060, 2080 |
| 20 | # models are the 2020 ones, 3060 the 3030 ones, 4080 the 4040 ones). Per series: |
| 21 | # end cap: plate side, plate thickness, peg diameter, peg centre (x = y), peg height above the plate |
| 22 | # cover strip: width, thickness; anchor: block length (X), block width (Y), block height (Z), pin diameter, pin length |
| 23 | # inside corner: bar section (square), arm length from the corner |
| 24 | SERIES = { |
| 25 | "20": {"cap": (20.0, 3.0, 3.6, 5.0, 4.0), "strip": (5.6, 2.0), "anchor": (14.0, 7.0, 7.0, 5.0, 16.0), "corner": (7.0, 20.0)}, |
| 26 | "30": {"cap": (30.0, 3.0, 5.4, 7.5, 4.0), "strip": (8.4, 2.0), "anchor": (21.0, 10.5, 10.5, 7.5, 24.0), "corner": (10.5, 30.0)}, |
| 27 | "40": {"cap": (40.0, 3.0, 7.2, 10.0, 4.0), "strip": (11.2, 2.0), "anchor": (28.0, 14.0, 14.0, 10.0, 32.0), "corner": (14.0, 40.0)}, |
| 28 | } |
| 29 | # material choice: (STEVE material library id, appearance colour); the models name no material |
| 30 | MATERIALS = {"unspecified": (None, None), "nylon": ("pa6", "#2b2c2e"), "aluminum": ("aluminum-generic", "#cfd2d6"), |
| 31 | "steel": ("steel-generic", "#9da2a8")} |
| 32 | |
| 33 | s = SERIES[series] |
| 34 | material_id, colour = MATERIALS[material] |
| 35 | model = Model() |
| 36 | if kind == "end-cap": |
| 37 | side, t, peg_d, peg_at, peg_h = s["cap"] |
| 38 | model.box("plate", side, side, t, name="Cap plate") |
| 39 | model.cylinder("peg", peg_d / 2, peg_h, at=(peg_at, peg_at, t / 2), op="join", name="Plug peg") |
| 40 | elif kind == "cover-strip": |
| 41 | w, t = s["strip"] |
| 42 | model.box("strip", length, w, t, name="Cover strip") |
| 43 | elif kind == "anchor": |
| 44 | bl, bw, bh, pin_d, pin_l = s["anchor"] |
| 45 | model.box("block", bl, bw, bh, name="Anchor block") |
| 46 | model.cylinder("pin", pin_d / 2, pin_l, at=(0, 0, -pin_l / 2), op="join", name="Pin") |
| 47 | else: |
| 48 | bar, arm = s["corner"] |
| 49 | a = bar / 2 |
| 50 | with model.sketch("corner_sketch", on="XY", name="Corner connector") as sk: |
| 51 | sk.polyline("outline", [(0, -a), (arm, -a), (arm, a), (a, a), (a, arm), (-a, arm), (-a, 0), (0, 0)]) |
| 52 | model.extrude("corner", "corner_sketch", distance=bar, both=True, name="Corner connector") |
| 53 | if material_id: |
| 54 | model.material(material_id, color=colour) |
| 55 | result = model.result() |
| 56 |
| 1 | name = "steve/extrusion-accessory" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "T-slot extrusion accessories (end cap, cover strip, anchor fastener, inside corner connector), 20/30/40 series: simplified." |
| 6 | description = """Simplified accessories for 20, 30 and 40 mm T-slot extrusions, for assemblies: a square end cap with \ |
| 7 | a plug peg, a flat slot cover strip (any length), an anchor fastener (block and pin) and an inside corner connector \ |
| 8 | (an L of square bar). Measured from step.parts' published models (MIT); no standard or maker drawing covers these \ |
| 9 | generic accessories. Envelopes only: see the README.""" |
| 10 | tags = ["extrusion", "t-slot", "accessory", "end-cap", "cover-strip", "corner-connector", "frame", "metric"] |
| 11 | |
| 12 | [parameters.kind] |
| 13 | type = "choice" |
| 14 | default = "end-cap" |
| 15 | choices = ["end-cap", "cover-strip", "anchor", "inside-corner"] |
| 16 | label = "Kind" |
| 17 | |
| 18 | [parameters.series] |
| 19 | type = "choice" |
| 20 | default = "20" |
| 21 | choices = ["20", "30", "40"] |
| 22 | label = "Profile series" |
| 23 | description = "20 (2020, 2040 ...), 30 (3030, 3060) or 40 (4040, 4080) mm profiles; the end cap fits the square profile." |
| 24 | |
| 25 | [parameters.length] |
| 26 | type = "number" |
| 27 | default = 100 |
| 28 | min = 5 |
| 29 | max = 3000 |
| 30 | unit = "mm" |
| 31 | label = "Length (cover strip)" |
| 32 | |
| 33 | [parameters.material] |
| 34 | type = "choice" |
| 35 | default = "unspecified" |
| 36 | choices = ["unspecified", "nylon", "aluminum", "steel"] |
| 37 | label = "Material" |
| 38 | description = "unspecified (no material assigned), nylon (PA6), aluminium or steel." |
| 39 | |
| 40 | [[presets]] |
| 41 | id = "end-cap-20" |
| 42 | title = "20 series end cap (simplified)" |
| 43 | params = { kind = "end-cap", series = "20" } |
| 44 | aliases = ["2020 end cap", "20x20 extrusion end cap", "T-slot end cap 2020"] |
| 45 | standard = "step.parts extrusion accessory model" |
| 46 | |
| 47 | [[presets]] |
| 48 | id = "end-cap-30" |
| 49 | title = "30 series end cap (simplified)" |
| 50 | params = { kind = "end-cap", series = "30" } |
| 51 | aliases = ["3030 end cap", "30x30 extrusion end cap", "T-slot end cap 3030"] |
| 52 | standard = "step.parts extrusion accessory model" |
| 53 | |
| 54 | [[presets]] |
| 55 | id = "end-cap-40" |
| 56 | title = "40 series end cap (simplified)" |
| 57 | params = { kind = "end-cap", series = "40" } |
| 58 | aliases = ["4040 end cap", "40x40 extrusion end cap", "T-slot end cap 4040"] |
| 59 | standard = "step.parts extrusion accessory model" |
| 60 | |
| 61 | [[presets]] |
| 62 | id = "cover-strip-20" |
| 63 | title = "20 series slot cover strip, 100 mm (simplified)" |
| 64 | params = { kind = "cover-strip", series = "20", length = 100 } |
| 65 | aliases = ["2020 slot cover strip", "20x20 extrusion slot cover strip", "T-slot slot cover strip 2020", "20 series slot cover strip, 100 mm (simplified)", "2040 slot cover strip", "T-slot slot cover strip 2040", "2060 slot cover strip", "T-slot slot cover strip 2060", "2080 slot cover strip", "T-slot slot cover strip 2080"] |
| 66 | standard = "step.parts extrusion accessory model" |
| 67 | |
| 68 | [[presets]] |
| 69 | id = "cover-strip-30" |
| 70 | title = "30 series slot cover strip, 100 mm (simplified)" |
| 71 | params = { kind = "cover-strip", series = "30", length = 100 } |
| 72 | aliases = ["3030 slot cover strip", "30x30 extrusion slot cover strip", "T-slot slot cover strip 3030", "30 series slot cover strip, 100 mm (simplified)", "3060 slot cover strip", "T-slot slot cover strip 3060"] |
| 73 | standard = "step.parts extrusion accessory model" |
| 74 | |
| 75 | [[presets]] |
| 76 | id = "cover-strip-40" |
| 77 | title = "40 series slot cover strip, 100 mm (simplified)" |
| 78 | params = { kind = "cover-strip", series = "40", length = 100 } |
| 79 | aliases = ["4040 slot cover strip", "40x40 extrusion slot cover strip", "T-slot slot cover strip 4040", "40 series slot cover strip, 100 mm (simplified)", "4080 slot cover strip", "T-slot slot cover strip 4080"] |
| 80 | standard = "step.parts extrusion accessory model" |
| 81 | |
| 82 | [[presets]] |
| 83 | id = "anchor-20" |
| 84 | title = "20 series anchor fastener (simplified)" |
| 85 | params = { kind = "anchor", series = "20" } |
| 86 | aliases = ["2020 anchor fastener", "20x20 extrusion anchor fastener", "T-slot anchor fastener 2020", "20 series anchor fastener (simplified)", "2040 anchor fastener", "T-slot anchor fastener 2040", "2060 anchor fastener", "T-slot anchor fastener 2060", "2080 anchor fastener", "T-slot anchor fastener 2080"] |
| 87 | standard = "step.parts extrusion accessory model" |
| 88 | |
| 89 | [[presets]] |
| 90 | id = "anchor-30" |
| 91 | title = "30 series anchor fastener (simplified)" |
| 92 | params = { kind = "anchor", series = "30" } |
| 93 | aliases = ["3030 anchor fastener", "30x30 extrusion anchor fastener", "T-slot anchor fastener 3030", "30 series anchor fastener (simplified)", "3060 anchor fastener", "T-slot anchor fastener 3060"] |
| 94 | standard = "step.parts extrusion accessory model" |
| 95 | |
| 96 | [[presets]] |
| 97 | id = "anchor-40" |
| 98 | title = "40 series anchor fastener (simplified)" |
| 99 | params = { kind = "anchor", series = "40" } |
| 100 | aliases = ["4040 anchor fastener", "40x40 extrusion anchor fastener", "T-slot anchor fastener 4040", "40 series anchor fastener (simplified)", "4080 anchor fastener", "T-slot anchor fastener 4080"] |
| 101 | standard = "step.parts extrusion accessory model" |
| 102 | |
| 103 | [[presets]] |
| 104 | id = "inside-corner-20" |
| 105 | title = "20 series inside corner connector (simplified)" |
| 106 | params = { kind = "inside-corner", series = "20" } |
| 107 | aliases = ["2020 inside corner connector", "20x20 extrusion inside corner connector", "T-slot inside corner connector 2020", "20 series inside corner connector (simplified)", "2040 inside corner connector", "T-slot inside corner connector 2040", "2060 inside corner connector", "T-slot inside corner connector 2060", "2080 inside corner connector", "T-slot inside corner connector 2080"] |
| 108 | standard = "step.parts extrusion accessory model" |
| 109 | |
| 110 | [[presets]] |
| 111 | id = "inside-corner-30" |
| 112 | title = "30 series inside corner connector (simplified)" |
| 113 | params = { kind = "inside-corner", series = "30" } |
| 114 | aliases = ["3030 inside corner connector", "30x30 extrusion inside corner connector", "T-slot inside corner connector 3030", "30 series inside corner connector (simplified)", "3060 inside corner connector", "T-slot inside corner connector 3060"] |
| 115 | standard = "step.parts extrusion accessory model" |
| 116 | |
| 117 | [[presets]] |
| 118 | id = "inside-corner-40" |
| 119 | title = "40 series inside corner connector (simplified)" |
| 120 | params = { kind = "inside-corner", series = "40" } |
| 121 | aliases = ["4040 inside corner connector", "40x40 extrusion inside corner connector", "T-slot inside corner connector 4040", "40 series inside corner connector (simplified)", "4080 inside corner connector", "T-slot inside corner connector 4080"] |
| 122 | standard = "step.parts extrusion accessory model" |
| 123 |
Simplified accessories for 20, 30 and 40 mm T-slot extrusions, for assemblies: end cap, slot cover strip, anchor fastener and inside corner connector.
kind |
Shape |
|---|---|
end-cap |
a square plate the size of the profile, 3 mm thick (z = −1.5 to 1.5, centred), with one round plug peg 4 mm high standing on it at (+p, +p) |
cover-strip |
a flat strip along X, centred, length long |
anchor |
a block along X with a round pin through it along Z, both centred |
inside-corner |
an L of square bar in the XY plane, arms along +X and +Y from the origin, centred on z = 0, its outer corner square-cut |
| Series | Cap side / peg Ø / peg at p | Strip w × t | Anchor block (X × Y × Z) / pin Ø × l | Corner bar / arm |
|---|---|---|---|---|
| 20 | 20 / 3.6 / 5 | 5.6 × 2 | 14 × 7 × 7 / 5 × 16 | 7 / 20 |
| 30 | 30 / 5.4 / 7.5 | 8.4 × 2 | 21 × 10.5 × 10.5 / 7.5 × 24 | 10.5 / 30 |
| 40 | 40 / 7.2 / 10 | 11.2 × 2 | 28 × 14 × 14 / 10 × 32 | 14 / 40 |
| Parameter | Meaning |
|---|---|
kind |
end-cap, cover-strip, anchor, inside-corner |
series |
20 (2020, 2040, ...), 30 (3030, 3060), 40 (4040, 4080) |
length |
cover strip length, mm |
material |
unspecified (no material assigned), nylon (PA6), aluminum, steel |
No standard covers these generic accessories and they name no maker. The geometry was measured from the published reference models below (every face read: plate, block and bar faces, the peg's and pin's cylinders), and every preset is checked against its own models: bounding box within 0.05 mm and volume within 2 %.
extrusion_<profile>_plastic_end_cap_simple, …_profile_cover_strip_simple,
…_anchor_fastener_simple, …_inside_corner_connector_simple for profiles 2020 to 4080
(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".The models of the 2040, 2060 and 2080 cover strips, anchors and corner connectors are the 2020 ones (3060: 3030; 4080: 4040), as the slot is the same: those entries share the series' preset. Their end caps are the square 20, 30 and 40 caps, not caps of those sections, and are not presets.
Simplifications (the models'): envelopes only. The cap has one off-centre peg instead of the slot clips, the anchor is a block with a straight pin, the corner connector a plain L with no screws or teeth, the strip a flat bar.
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
| 1 | # T-slot extrusion accessories (simplified) |
| 2 | |
| 3 | Simplified accessories for 20, 30 and 40 mm T-slot extrusions, for assemblies: end cap, slot cover strip, anchor |
| 4 | fastener and inside corner connector. |
| 5 | |
| 6 | ## Geometry |
| 7 | |
| 8 | | `kind` | Shape | |
| 9 | |---|---| |
| 10 | | `end-cap` | a square plate the size of the profile, 3 mm thick (z = −1.5 to 1.5, centred), with one round plug peg 4 mm high standing on it at (+p, +p) | |
| 11 | | `cover-strip` | a flat strip along X, centred, `length` long | |
| 12 | | `anchor` | a block along X with a round pin through it along Z, both centred | |
| 13 | | `inside-corner` | an L of square bar in the XY plane, arms along +X and +Y from the origin, centred on z = 0, its outer corner square-cut | |
| 14 | |
| 15 | | Series | Cap side / peg Ø / peg at p | Strip w × t | Anchor block (X × Y × Z) / pin Ø × l | Corner bar / arm | |
| 16 | |---|---|---|---|---| |
| 17 | | 20 | 20 / 3.6 / 5 | 5.6 × 2 | 14 × 7 × 7 / 5 × 16 | 7 / 20 | |
| 18 | | 30 | 30 / 5.4 / 7.5 | 8.4 × 2 | 21 × 10.5 × 10.5 / 7.5 × 24 | 10.5 / 30 | |
| 19 | | 40 | 40 / 7.2 / 10 | 11.2 × 2 | 28 × 14 × 14 / 10 × 32 | 14 / 40 | |
| 20 | |
| 21 | ## Parameters |
| 22 | |
| 23 | | Parameter | Meaning | |
| 24 | |---|---| |
| 25 | | `kind` | `end-cap`, `cover-strip`, `anchor`, `inside-corner` | |
| 26 | | `series` | `20` (2020, 2040, ...), `30` (3030, 3060), `40` (4040, 4080) | |
| 27 | | `length` | cover strip length, mm | |
| 28 | | `material` | `unspecified` (no material assigned), `nylon` (PA6), `aluminum`, `steel` | |
| 29 | |
| 30 | ## Sources |
| 31 | |
| 32 | No standard covers these generic accessories and they name no maker. **The geometry was measured from the published |
| 33 | reference models** below (every face read: plate, block and bar faces, the peg's and pin's cylinders), and every |
| 34 | preset is checked against its own models: bounding box within 0.05 mm and volume within 2 %. |
| 35 | |
| 36 | - **step.parts**, `extrusion_<profile>_plastic_end_cap_simple`, `…_profile_cover_strip_simple`, |
| 37 | `…_anchor_fastener_simple`, `…_inside_corner_connector_simple` for profiles 2020 to 4080 |
| 38 | (https://www.step.parts, repository https://github.com/earthtojake/step.parts, commit c6113328, `catalog/step/`): |
| 39 | step.parts' own "analytic simplified" models, original project material under the repository's **MIT** licence |
| 40 | (© 2026 earthtojake). They name no material, so the presets have `material = "unspecified"`. |
| 41 | |
| 42 | The models of the 2040, 2060 and 2080 cover strips, anchors and corner connectors are the 2020 ones (3060: 3030; |
| 43 | 4080: 4040), as the slot is the same: those entries share the series' preset. Their end caps are the square 20, 30 |
| 44 | and 40 caps, not caps of those sections, and are not presets. |
| 45 | |
| 46 | Simplifications (the models'): envelopes only. The cap has one off-centre peg instead of the slot clips, the anchor is |
| 47 | a block with a straight pin, the corner connector a plain L with no screws or teeth, the strip a flat bar. |
| 48 | |
| 49 | Preset list: from the step.parts catalogue (MIT), see `library/NOTICE.md`. |
| 50 |
Simplified accessories for 20, 30 and 40 mm T-slot extrusions, for assemblies: a square end cap with a plug peg, a flat slot cover strip (any length), an anchor fastener (block and pin) and an inside corner connector (an L of square bar). Measured from step.parts' published models (MIT); no standard or maker drawing covers these generic accessories. Envelopes only: see the README.
Simplified accessories for 20, 30 and 40 mm T-slot extrusions, for assemblies: end cap, slot cover strip, anchor fastener and inside corner connector.
kind |
Shape |
|---|---|
end-cap |
a square plate the size of the profile, 3 mm thick (z = −1.5 to 1.5, centred), with one round plug peg 4 mm high standing on it at (+p, +p) |
cover-strip |
a flat strip along X, centred, length long |
anchor |
a block along X with a round pin through it along Z, both centred |
inside-corner |
an L of square bar in the XY plane, arms along +X and +Y from the origin, centred on z = 0, its outer corner square-cut |
| Series | Cap side / peg Ø / peg at p | Strip w × t | Anchor block (X × Y × Z) / pin Ø × l | Corner bar / arm |
|---|---|---|---|---|
| 20 | 20 / 3.6 / 5 | 5.6 × 2 | 14 × 7 × 7 / 5 × 16 | 7 / 20 |
| 30 | 30 / 5.4 / 7.5 | 8.4 × 2 | 21 × 10.5 × 10.5 / 7.5 × 24 | 10.5 / 30 |
| 40 | 40 / 7.2 / 10 | 11.2 × 2 | 28 × 14 × 14 / 10 × 32 | 14 / 40 |
| Parameter | Meaning |
|---|---|
kind |
end-cap, cover-strip, anchor, inside-corner |
series |
20 (2020, 2040, ...), 30 (3030, 3060), 40 (4040, 4080) |
length |
cover strip length, mm |
material |
unspecified (no material assigned), nylon (PA6), aluminum, steel |
No standard covers these generic accessories and they name no maker. The geometry was measured from the published reference models below (every face read: plate, block and bar faces, the peg's and pin's cylinders), and every preset is checked against its own models: bounding box within 0.05 mm and volume within 2 %.
extrusion_<profile>_plastic_end_cap_simple, …_profile_cover_strip_simple,
…_anchor_fastener_simple, …_inside_corner_connector_simple for profiles 2020 to 4080
(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".The models of the 2040, 2060 and 2080 cover strips, anchors and corner connectors are the 2020 ones (3060: 3030; 4080: 4040), as the slot is the same: those entries share the series' preset. Their end caps are the square 20, 30 and 40 caps, not caps of those sections, and are not presets.
Simplifications (the models'): envelopes only. The cap has one off-centre peg instead of the slot clips, the anchor is a block with a straight pin, the corner connector a plain L with no screws or teeth, the strip a flat bar.
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.
MakerBeam 10 x 10 mm aluminium profile, any length, from MakerBeam's own drawing.
20 x 20 V-slot aluminium extrusion, any length, measured from the published FreeCAD-library model.
Corner bracket envelope for 2020, 3030 and 4040 extrusions: two flat legs at a right angle (simplified, no holes).