steve/t-slot-extrusion
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.
| 1 | """20 x 20 V-slot aluminium extrusion, any length. |
| 2 | |
| 3 | The section, centred on the origin in the XY plane, extruded along +Z by `length`: a 20 x 20 square with 0.5 mm corner |
| 4 | radii and a V-slot in each face. Each slot: a 45 degree V from the face opening down to the lip tips, the lips' flat |
| 5 | undersides, the undercut's straight walls, 45 degree walls down to the core and the core's small V notch; a 4.2 mm |
| 6 | centre bore. All four slots are the same, turned 90 degrees. |
| 7 | |
| 8 | Geometry measured from the published FreeCAD-library model "2020x50_V_slot_profile-Part.step" (hasecilu, CC-BY-3.0); |
| 9 | there is no manufacturer drawing. See the README. |
| 10 | """ |
| 11 | import math |
| 12 | |
| 13 | from steve import Model |
| 14 | |
| 15 | length = 100 # mm Length |
| 16 | finish = "clear" # Anodising |
| 17 | |
| 18 | # mm, measured on the reference model's cross-section at mid-length (OCCT section, edges read exactly; the model's |
| 19 | # own values are given to 0.05 mm, the 45 degree walls' ends to 1e-4 mm). x across the top slot from its centre line, |
| 20 | # y up from the profile's centre. |
| 21 | SECTION = { |
| 22 | "outer": 20.0, # outside, square |
| 23 | "corner_r": 0.5, # outside corner radius |
| 24 | "opening": 9.7, # slot width at the face (x = +-4.85) |
| 25 | "tip": 6.1, # between the lip tips (x = +-3.05), 1.8 below the face: the V is 45 degrees |
| 26 | "lip_y": 8.2, # lip underside (flat, out to the undercut wall) |
| 27 | "undercut": 11.0, # undercut width (walls at x = +-5.5) |
| 28 | "wall_y": 6.5607, # where the undercut wall turns into the 45 degree wall |
| 29 | "floor": 5.6786, # core face width at y = core_y (x = +-2.8393) |
| 30 | "core_y": 3.9, # core face |
| 31 | "notch": 0.4, # V notch in the core face, 0.2 deep |
| 32 | "notch_depth": 0.2, |
| 33 | "bore": 4.2, # centre bore |
| 34 | } |
| 35 | FINISHES = {"clear": "#cfd2d6", "black": "#2b2c2e"} |
| 36 | |
| 37 | s = SECTION |
| 38 | half = s["outer"] / 2 |
| 39 | rc = s["corner_r"] |
| 40 | # one slot, the top one, left to right (the outline runs clockwise: top face, then right face, ...) |
| 41 | slot = [(-s["opening"] / 2, half), (-s["tip"] / 2, s["lip_y"]), (-s["undercut"] / 2, s["lip_y"]), |
| 42 | (-s["undercut"] / 2, s["wall_y"]), (-s["floor"] / 2, s["core_y"]), (-s["notch"] / 2, s["core_y"]), |
| 43 | (0.0, s["core_y"] - s["notch_depth"]), (s["notch"] / 2, s["core_y"]), (s["floor"] / 2, s["core_y"]), |
| 44 | (s["undercut"] / 2, s["wall_y"]), (s["undercut"] / 2, s["lip_y"]), (s["tip"] / 2, s["lip_y"]), |
| 45 | (s["opening"] / 2, half)] |
| 46 | |
| 47 | |
| 48 | def turn(points, quarter): |
| 49 | a = -math.pi / 2 * quarter |
| 50 | return [(x * math.cos(a) - y * math.sin(a), x * math.sin(a) + y * math.cos(a)) for x, y in points] |
| 51 | |
| 52 | |
| 53 | model = Model() |
| 54 | with model.sketch("section", on="XY", name="Section") as sk: |
| 55 | for q in range(4): # top, right, bottom, left side: the top one turned 90 degrees clockwise each time |
| 56 | pts = turn([(-half + rc, half)] + slot + [(half - rc, half)], q) |
| 57 | sk.polyline(f"side_{q}", pts, closed=False) |
| 58 | cx, cy = turn([(half - rc, half - rc)], q)[0] |
| 59 | start = 90 - 90 * q - 90 |
| 60 | sk.arc(f"corner_{q}", (cx, cy), rc, start, start + 90) |
| 61 | sk.circle("bore", (0, 0), s["bore"] / 2) |
| 62 | model.extrude("profile", "section", distance=length, name="Profile") |
| 63 | model.material("aluminum-generic", color=FINISHES[finish]) # 6063-T5 typical (no STEVE entry for 6063) |
| 64 | result = model.result() |
| 65 |
| 1 | name = "steve/v-slot-extrusion" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "20 x 20 V-slot aluminium extrusion, any length, measured from the published FreeCAD-library model." |
| 6 | description = """A 20 x 20 mm V-slot aluminium extrusion: a V-slot in each face (45 degree V down to the lips, flat lip \ |
| 7 | undersides, the undercut, 45 degree walls to the core), 0.5 mm outside corner radii and a 4.2 mm centre bore, \ |
| 8 | extruded to any length. The section was measured from the FreeCAD-library model 2020x50_V_slot_profile (CC-BY-3.0, \ |
| 9 | by hasecilu); there is no manufacturer drawing. |
| 10 | |
| 11 | Centred on the origin in the XY plane, extruded along +Z. Dimensions and attribution: see the README.""" |
| 12 | tags = ["profile", "extrusion", "aluminium", "v-slot", "2020", "frame", "metric"] |
| 13 | |
| 14 | [parameters.length] |
| 15 | type = "number" |
| 16 | default = 100 |
| 17 | min = 5 |
| 18 | max = 3000 |
| 19 | unit = "mm" |
| 20 | label = "Length" |
| 21 | |
| 22 | [parameters.finish] |
| 23 | type = "choice" |
| 24 | default = "clear" |
| 25 | choices = ["clear", "black"] |
| 26 | label = "Anodising" |
| 27 | |
| 28 | [[presets]] |
| 29 | id = "V2020-50" |
| 30 | title = "V-slot 20 × 20, 50 mm" |
| 31 | params = { length = 50 } |
| 32 | aliases = ["2020 V-slot 50 mm", "V-slot 2020 50 mm", "20x20 V-slot 50", "2020 extrusion 50 mm", "V-slot 20x20x50", "2020 x 50 mm extrusion"] |
| 33 | standard = "FreeCAD-library 2020 V-slot" |
| 34 | |
| 35 | [[presets]] |
| 36 | id = "V2020-100" |
| 37 | title = "V-slot 20 × 20, 100 mm" |
| 38 | params = { length = 100 } |
| 39 | aliases = ["2020 V-slot 100 mm", "V-slot 2020 100 mm", "20x20 V-slot 100", "2020 extrusion 100 mm", "V-slot 20x20x100"] |
| 40 | standard = "FreeCAD-library 2020 V-slot" |
| 41 | |
| 42 | [[presets]] |
| 43 | id = "V2020-150" |
| 44 | title = "V-slot 20 × 20, 150 mm" |
| 45 | params = { length = 150 } |
| 46 | aliases = ["2020 V-slot 150 mm", "V-slot 2020 150 mm", "20x20 V-slot 150", "2020 extrusion 150 mm", "V-slot 20x20x150"] |
| 47 | standard = "FreeCAD-library 2020 V-slot" |
| 48 | |
| 49 | [[presets]] |
| 50 | id = "V2020-200" |
| 51 | title = "V-slot 20 × 20, 200 mm" |
| 52 | params = { length = 200 } |
| 53 | aliases = ["2020 V-slot 200 mm", "V-slot 2020 200 mm", "20x20 V-slot 200", "2020 extrusion 200 mm", "V-slot 20x20x200"] |
| 54 | standard = "FreeCAD-library 2020 V-slot" |
| 55 | |
| 56 | [[presets]] |
| 57 | id = "V2020-250" |
| 58 | title = "V-slot 20 × 20, 250 mm" |
| 59 | params = { length = 250 } |
| 60 | aliases = ["2020 V-slot 250 mm", "V-slot 2020 250 mm", "20x20 V-slot 250", "2020 extrusion 250 mm", "V-slot 20x20x250"] |
| 61 | standard = "FreeCAD-library 2020 V-slot" |
| 62 | |
| 63 | [[presets]] |
| 64 | id = "V2020-300" |
| 65 | title = "V-slot 20 × 20, 300 mm" |
| 66 | params = { length = 300 } |
| 67 | aliases = ["2020 V-slot 300 mm", "V-slot 2020 300 mm", "20x20 V-slot 300", "2020 extrusion 300 mm", "V-slot 20x20x300"] |
| 68 | standard = "FreeCAD-library 2020 V-slot" |
| 69 | |
| 70 | [[presets]] |
| 71 | id = "V2020-400" |
| 72 | title = "V-slot 20 × 20, 400 mm" |
| 73 | params = { length = 400 } |
| 74 | aliases = ["2020 V-slot 400 mm", "V-slot 2020 400 mm", "20x20 V-slot 400", "2020 extrusion 400 mm", "V-slot 20x20x400"] |
| 75 | standard = "FreeCAD-library 2020 V-slot" |
| 76 | |
| 77 | [[presets]] |
| 78 | id = "V2020-500" |
| 79 | title = "V-slot 20 × 20, 500 mm" |
| 80 | params = { length = 500 } |
| 81 | aliases = ["2020 V-slot 500 mm", "V-slot 2020 500 mm", "20x20 V-slot 500", "2020 extrusion 500 mm", "V-slot 20x20x500"] |
| 82 | standard = "FreeCAD-library 2020 V-slot" |
| 83 | |
| 84 | [[presets]] |
| 85 | id = "V2020-600" |
| 86 | title = "V-slot 20 × 20, 600 mm" |
| 87 | params = { length = 600 } |
| 88 | aliases = ["2020 V-slot 600 mm", "V-slot 2020 600 mm", "20x20 V-slot 600", "2020 extrusion 600 mm", "V-slot 20x20x600"] |
| 89 | standard = "FreeCAD-library 2020 V-slot" |
| 90 | |
| 91 | [[presets]] |
| 92 | id = "V2020-750" |
| 93 | title = "V-slot 20 × 20, 750 mm" |
| 94 | params = { length = 750 } |
| 95 | aliases = ["2020 V-slot 750 mm", "V-slot 2020 750 mm", "20x20 V-slot 750", "2020 extrusion 750 mm", "V-slot 20x20x750"] |
| 96 | standard = "FreeCAD-library 2020 V-slot" |
| 97 | |
| 98 | [[presets]] |
| 99 | id = "V2020-1000" |
| 100 | title = "V-slot 20 × 20, 1000 mm" |
| 101 | params = { length = 1000 } |
| 102 | aliases = ["2020 V-slot 1000 mm", "V-slot 2020 1000 mm", "20x20 V-slot 1000", "2020 extrusion 1000 mm", "V-slot 20x20x1000"] |
| 103 | standard = "FreeCAD-library 2020 V-slot" |
| 104 | |
| 105 | [[presets]] |
| 106 | id = "V2020-1500" |
| 107 | title = "V-slot 20 × 20, 1500 mm" |
| 108 | params = { length = 1500 } |
| 109 | aliases = ["2020 V-slot 1500 mm", "V-slot 2020 1500 mm", "20x20 V-slot 1500", "2020 extrusion 1500 mm", "V-slot 20x20x1500"] |
| 110 | standard = "FreeCAD-library 2020 V-slot" |
| 111 |
A 20 × 20 mm V-slot aluminium extrusion, any length: a V-slot in each face, 0.5 mm outside corner radii and a 4.2 mm centre bore.
The section is centred on the origin in the XY plane and extruded along +Z by length. Each of the four slots (the
same, turned 90°), from the face inwards:
| Feature | mm |
|---|---|
| Outside, square | 20 |
| Outside corner radius | 0.5 |
| Slot width at the face | 9.7 |
| Width between the lip tips (45° V, 1.8 below the face) | 6.1 |
| Lip underside, from the centre (flat out to the undercut wall) | 8.2 |
| Undercut width | 11.0 |
| Undercut wall ends, from the centre (then 45° to the core) | 6.5607 |
| Core face width / from the centre | 5.6786 / 3.9 |
| V notch in the core face, width × depth | 0.4 × 0.2 |
| Centre bore | Ø 4.2 |
Section area 168.01 mm² (0.454 kg/m in 6063).
| Parameter | Meaning |
|---|---|
length |
mm |
finish |
anodising colour, clear or black (appearance only) |
There is no manufacturer drawing behind this part: the geometry was measured from the published reference model below, on its cross-section at mid-length (exact OCCT section edges), and the recipe re-draws that section in its own code. Each preset is checked against the model: bounding box within 0.05 mm, volume within 2 %, section area within 2 % and the section outline within 0.1 mm of the model's.
Mechanical Parts/Mountings/2020_V-slot_Al_extrusion/2020x50_V_slot_profile-Part.step
(commit 2e36ae32), by hasecilu; https://github.com/FreeCAD/FreeCAD-library; licensed under
CC-BY-3.0 (the library's licence for all its parts). Distributed by
step.parts as 2020x50_v_slot_profile (https://www.step.parts/parts/2020x50_v_slot_profile), identical geometry.
No endorsement by the author or the FreeCAD project is implied.Simplifications: none beyond the reference model's own (it has no fillets inside the slots and no end threads). The model is a generic 20 × 20 V-slot; check a specific maker's section (OpenBuilds and others differ slightly) where it matters.
Presets: the 50 mm reference sample and the catalogue's V-slot lengths (100 to 1500 mm). The catalogue's own models
at those lengths, and its 20 × 40 to 20 × 80 entries, are step.parts' simplified stand-ins (a rectangle with one
rectangular groove per face), not V-slot sections: they are not used, and the length presets are checked against the
reference model's section (area and outline as above, volume = its section area × length). Preset list: from the
step.parts catalogue (MIT), see library/NOTICE.md.
| 1 | # V-slot extrusion 20 × 20 |
| 2 | |
| 3 | A 20 × 20 mm V-slot aluminium extrusion, any length: a V-slot in each face, 0.5 mm outside corner radii and a 4.2 mm |
| 4 | centre bore. |
| 5 | |
| 6 | ## Geometry |
| 7 | |
| 8 | The section is centred on the origin in the XY plane and extruded along +Z by `length`. Each of the four slots (the |
| 9 | same, turned 90°), from the face inwards: |
| 10 | |
| 11 | | Feature | mm | |
| 12 | |---|---| |
| 13 | | Outside, square | 20 | |
| 14 | | Outside corner radius | 0.5 | |
| 15 | | Slot width at the face | 9.7 | |
| 16 | | Width between the lip tips (45° V, 1.8 below the face) | 6.1 | |
| 17 | | Lip underside, from the centre (flat out to the undercut wall) | 8.2 | |
| 18 | | Undercut width | 11.0 | |
| 19 | | Undercut wall ends, from the centre (then 45° to the core) | 6.5607 | |
| 20 | | Core face width / from the centre | 5.6786 / 3.9 | |
| 21 | | V notch in the core face, width × depth | 0.4 × 0.2 | |
| 22 | | Centre bore | Ø 4.2 | |
| 23 | |
| 24 | Section area 168.01 mm² (0.454 kg/m in 6063). |
| 25 | |
| 26 | ## Parameters |
| 27 | |
| 28 | | Parameter | Meaning | |
| 29 | |---|---| |
| 30 | | `length` | mm | |
| 31 | | `finish` | anodising colour, `clear` or `black` (appearance only) | |
| 32 | |
| 33 | ## Sources |
| 34 | |
| 35 | There is no manufacturer drawing behind this part: **the geometry was measured from the published reference model** |
| 36 | below, on its cross-section at mid-length (exact OCCT section edges), and the recipe re-draws that section in its own |
| 37 | code. Each preset is checked against the model: bounding box within 0.05 mm, volume within 2 %, section area within 2 % |
| 38 | and the section outline within 0.1 mm of the model's. |
| 39 | |
| 40 | - **FreeCAD-library**, `Mechanical Parts/Mountings/2020_V-slot_Al_extrusion/2020x50_V_slot_profile-Part.step` |
| 41 | (commit 2e36ae32), by **hasecilu**; https://github.com/FreeCAD/FreeCAD-library; licensed under |
| 42 | [CC-BY-3.0](https://creativecommons.org/licenses/by/3.0/) (the library's licence for all its parts). Distributed by |
| 43 | step.parts as `2020x50_v_slot_profile` (https://www.step.parts/parts/2020x50_v_slot_profile), identical geometry. |
| 44 | No endorsement by the author or the FreeCAD project is implied. |
| 45 | |
| 46 | Simplifications: none beyond the reference model's own (it has no fillets inside the slots and no end threads). The |
| 47 | model is a generic 20 × 20 V-slot; check a specific maker's section (OpenBuilds and others differ slightly) where it |
| 48 | matters. |
| 49 | |
| 50 | Presets: the 50 mm reference sample and the catalogue's V-slot lengths (100 to 1500 mm). The catalogue's own models |
| 51 | at those lengths, and its 20 × 40 to 20 × 80 entries, are step.parts' simplified stand-ins (a rectangle with one |
| 52 | rectangular groove per face), not V-slot sections: they are not used, and the length presets are checked against the |
| 53 | reference model's section (area and outline as above, volume = its section area × length). Preset list: from the |
| 54 | step.parts catalogue (MIT), see `library/NOTICE.md`. |
| 55 |
A 20 x 20 mm V-slot aluminium extrusion: a V-slot in each face (45 degree V down to the lips, flat lip undersides, the undercut, 45 degree walls to the core), 0.5 mm outside corner radii and a 4.2 mm centre bore, extruded to any length. The section was measured from the FreeCAD-library model 2020x50_V_slot_profile (CC-BY-3.0, by hasecilu); there is no manufacturer drawing. Centred on the origin in the XY plane, extruded along +Z. Dimensions and attribution: see the README.
A 20 × 20 mm V-slot aluminium extrusion, any length: a V-slot in each face, 0.5 mm outside corner radii and a 4.2 mm centre bore.
The section is centred on the origin in the XY plane and extruded along +Z by length. Each of the four slots (the
same, turned 90°), from the face inwards:
| Feature | mm |
|---|---|
| Outside, square | 20 |
| Outside corner radius | 0.5 |
| Slot width at the face | 9.7 |
| Width between the lip tips (45° V, 1.8 below the face) | 6.1 |
| Lip underside, from the centre (flat out to the undercut wall) | 8.2 |
| Undercut width | 11.0 |
| Undercut wall ends, from the centre (then 45° to the core) | 6.5607 |
| Core face width / from the centre | 5.6786 / 3.9 |
| V notch in the core face, width × depth | 0.4 × 0.2 |
| Centre bore | Ø 4.2 |
Section area 168.01 mm² (0.454 kg/m in 6063).
| Parameter | Meaning |
|---|---|
length |
mm |
finish |
anodising colour, clear or black (appearance only) |
There is no manufacturer drawing behind this part: the geometry was measured from the published reference model below, on its cross-section at mid-length (exact OCCT section edges), and the recipe re-draws that section in its own code. Each preset is checked against the model: bounding box within 0.05 mm, volume within 2 %, section area within 2 % and the section outline within 0.1 mm of the model's.
Mechanical Parts/Mountings/2020_V-slot_Al_extrusion/2020x50_V_slot_profile-Part.step
(commit 2e36ae32), by hasecilu; https://github.com/FreeCAD/FreeCAD-library; licensed under
CC-BY-3.0 (the library's licence for all its parts). Distributed by
step.parts as 2020x50_v_slot_profile (https://www.step.parts/parts/2020x50_v_slot_profile), identical geometry.
No endorsement by the author or the FreeCAD project is implied.Simplifications: none beyond the reference model's own (it has no fillets inside the slots and no end threads). The model is a generic 20 × 20 V-slot; check a specific maker's section (OpenBuilds and others differ slightly) where it matters.
Presets: the 50 mm reference sample and the catalogue's V-slot lengths (100 to 1500 mm). The catalogue's own models
at those lengths, and its 20 × 40 to 20 × 80 entries, are step.parts' simplified stand-ins (a rectangle with one
rectangular groove per face), not V-slot sections: they are not used, and the length presets are checked against the
reference model's section (area and outline as above, volume = its section area × length). 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.
Corner bracket envelope for 2020, 3030 and 4040 extrusions: two flat legs at a right angle (simplified, no holes).
T-slot extrusion accessories (end cap, cover strip, anchor fastener, inside corner connector), 20/30/40 series: simplified.