steve/plate
Rectangular plate blank, any width, length and thickness, in common plate and sheet materials.
Light C channel (U channel), constant thickness, square corners, any size and length.
| 1 | """C channel (U channel) of constant thickness with square corners, any size, thickness and length: the light channel |
| 2 | as step.parts' published models draw it. |
| 3 | |
| 4 | Section: web `width` along X at the bottom, flanges `height` along Y (overall), thickness `thickness` throughout, |
| 5 | centred on the origin and extruded along +Z by `length`; the opening faces +Y. |
| 6 | """ |
| 7 | from steve import Model |
| 8 | |
| 9 | width = 30 # mm Overall width (web) |
| 10 | height = 15 # mm Overall height (flanges) |
| 11 | thickness = 1.5 # mm Thickness |
| 12 | length = 1000 # mm Length |
| 13 | material = "unspecified" # Material |
| 14 | |
| 15 | # material choice: (STEVE material library id, appearance colour); the generic channels' models name no material |
| 16 | MATERIALS = { |
| 17 | "unspecified": (None, None), |
| 18 | "aluminum": ("aluminum-generic", "#cfd2d6"), |
| 19 | "steel": ("steel-generic", "#7d8085"), |
| 20 | "stainless-304": ("stainless-304", "#c9ccd0"), |
| 21 | } |
| 22 | |
| 23 | if not (2 * thickness < width and thickness < height): |
| 24 | raise ValueError("The thickness must leave an opening: 2 x thickness < width and thickness < height.") |
| 25 | x, y, t = width / 2, height / 2, thickness |
| 26 | material_id, colour = MATERIALS[material] |
| 27 | |
| 28 | model = Model() |
| 29 | with model.sketch("section", on="XY", name="Section") as sk: |
| 30 | sk.polyline("outline", [(-x, y), (-x, -y), (x, -y), (x, y), (x - t, y), (x - t, -y + t), (-x + t, -y + t), |
| 31 | (-x + t, y)]) |
| 32 | model.extrude("channel", "section", distance=length, name="Channel") |
| 33 | if material_id: |
| 34 | model.material(material_id, color=colour) |
| 35 | result = model.result() |
| 36 |
| 1 | name = "steve/channel" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "Light C channel (U channel), constant thickness, square corners, any size and length." |
| 6 | description = """A light C (U) channel of constant thickness with square corners: web width, flange height, thickness \ |
| 7 | and length free. Presets: the catalogue's generic channels 20 x 10 x 1.5, 30 x 15 x 1.5 and 40 x 20 x 2, measured from \ |
| 8 | step.parts' published models (MIT); no standard covers them (DIN 1026 channels are tapered). |
| 9 | |
| 10 | Web along X at the bottom, flanges up (+Y), centred on the origin, extruded along +Z.""" |
| 11 | tags = ["stock", "channel", "c-channel", "u-channel", "profile", "metric"] |
| 12 | |
| 13 | [parameters.width] |
| 14 | type = "number" |
| 15 | default = 30 |
| 16 | min = 3 |
| 17 | max = 1000 |
| 18 | unit = "mm" |
| 19 | label = "Width (web)" |
| 20 | |
| 21 | [parameters.height] |
| 22 | type = "number" |
| 23 | default = 15 |
| 24 | min = 2 |
| 25 | max = 1000 |
| 26 | unit = "mm" |
| 27 | label = "Height (flanges)" |
| 28 | |
| 29 | [parameters.thickness] |
| 30 | type = "number" |
| 31 | default = 1.5 |
| 32 | min = 0.3 |
| 33 | max = 50 |
| 34 | unit = "mm" |
| 35 | label = "Thickness" |
| 36 | description = "Web and flanges; must leave an opening: 2 x thickness < width, thickness < height." |
| 37 | |
| 38 | [parameters.length] |
| 39 | type = "number" |
| 40 | default = 1000 |
| 41 | min = 1 |
| 42 | max = 12000 |
| 43 | unit = "mm" |
| 44 | label = "Length" |
| 45 | |
| 46 | [parameters.material] |
| 47 | type = "choice" |
| 48 | default = "unspecified" |
| 49 | choices = ["unspecified", "aluminum", "steel", "stainless-304"] |
| 50 | label = "Material" |
| 51 | description = "unspecified (no material assigned), aluminium, steel or 1.4301 stainless." |
| 52 | |
| 53 | [[presets]] |
| 54 | id = "C20x10x1.5-100" |
| 55 | title = "C channel 20 × 10 × 1.5, 100 mm" |
| 56 | params = { width = 20, height = 10, thickness = 1.5, length = 100 } |
| 57 | aliases = ["U channel 20x10x1.5 100 mm", "C channel 20x10 100 mm", "20x10 channel 100"] |
| 58 | standard = "step.parts generic channel model" |
| 59 | |
| 60 | [[presets]] |
| 61 | id = "C20x10x1.5-150" |
| 62 | title = "C channel 20 × 10 × 1.5, 150 mm" |
| 63 | params = { width = 20, height = 10, thickness = 1.5, length = 150 } |
| 64 | aliases = ["U channel 20x10x1.5 150 mm", "C channel 20x10 150 mm", "20x10 channel 150"] |
| 65 | standard = "step.parts generic channel model" |
| 66 | |
| 67 | [[presets]] |
| 68 | id = "C20x10x1.5-200" |
| 69 | title = "C channel 20 × 10 × 1.5, 200 mm" |
| 70 | params = { width = 20, height = 10, thickness = 1.5, length = 200 } |
| 71 | aliases = ["U channel 20x10x1.5 200 mm", "C channel 20x10 200 mm", "20x10 channel 200"] |
| 72 | standard = "step.parts generic channel model" |
| 73 | |
| 74 | [[presets]] |
| 75 | id = "C20x10x1.5-250" |
| 76 | title = "C channel 20 × 10 × 1.5, 250 mm" |
| 77 | params = { width = 20, height = 10, thickness = 1.5, length = 250 } |
| 78 | aliases = ["U channel 20x10x1.5 250 mm", "C channel 20x10 250 mm", "20x10 channel 250"] |
| 79 | standard = "step.parts generic channel model" |
| 80 | |
| 81 | [[presets]] |
| 82 | id = "C20x10x1.5-300" |
| 83 | title = "C channel 20 × 10 × 1.5, 300 mm" |
| 84 | params = { width = 20, height = 10, thickness = 1.5, length = 300 } |
| 85 | aliases = ["U channel 20x10x1.5 300 mm", "C channel 20x10 300 mm", "20x10 channel 300"] |
| 86 | standard = "step.parts generic channel model" |
| 87 | |
| 88 | [[presets]] |
| 89 | id = "C20x10x1.5-400" |
| 90 | title = "C channel 20 × 10 × 1.5, 400 mm" |
| 91 | params = { width = 20, height = 10, thickness = 1.5, length = 400 } |
| 92 | aliases = ["U channel 20x10x1.5 400 mm", "C channel 20x10 400 mm", "20x10 channel 400"] |
| 93 | standard = "step.parts generic channel model" |
| 94 | |
| 95 | [[presets]] |
| 96 | id = "C20x10x1.5-500" |
| 97 | title = "C channel 20 × 10 × 1.5, 500 mm" |
| 98 | params = { width = 20, height = 10, thickness = 1.5, length = 500 } |
| 99 | aliases = ["U channel 20x10x1.5 500 mm", "C channel 20x10 500 mm", "20x10 channel 500"] |
| 100 | standard = "step.parts generic channel model" |
| 101 | |
| 102 | [[presets]] |
| 103 | id = "C20x10x1.5-600" |
| 104 | title = "C channel 20 × 10 × 1.5, 600 mm" |
| 105 | params = { width = 20, height = 10, thickness = 1.5, length = 600 } |
| 106 | aliases = ["U channel 20x10x1.5 600 mm", "C channel 20x10 600 mm", "20x10 channel 600"] |
| 107 | standard = "step.parts generic channel model" |
| 108 | |
| 109 | [[presets]] |
| 110 | id = "C20x10x1.5-750" |
| 111 | title = "C channel 20 × 10 × 1.5, 750 mm" |
| 112 | params = { width = 20, height = 10, thickness = 1.5, length = 750 } |
| 113 | aliases = ["U channel 20x10x1.5 750 mm", "C channel 20x10 750 mm", "20x10 channel 750"] |
| 114 | standard = "step.parts generic channel model" |
| 115 | |
| 116 | [[presets]] |
| 117 | id = "C20x10x1.5-1000" |
| 118 | title = "C channel 20 × 10 × 1.5, 1000 mm" |
| 119 | params = { width = 20, height = 10, thickness = 1.5, length = 1000 } |
| 120 | aliases = ["U channel 20x10x1.5 1000 mm", "C channel 20x10 1000 mm", "20x10 channel 1000"] |
| 121 | standard = "step.parts generic channel model" |
| 122 | |
| 123 | [[presets]] |
| 124 | id = "C30x15x1.5-100" |
| 125 | title = "C channel 30 × 15 × 1.5, 100 mm" |
| 126 | params = { width = 30, height = 15, thickness = 1.5, length = 100 } |
| 127 | aliases = ["U channel 30x15x1.5 100 mm", "C channel 30x15 100 mm", "30x15 channel 100"] |
| 128 | standard = "step.parts generic channel model" |
| 129 | |
| 130 | [[presets]] |
| 131 | id = "C30x15x1.5-150" |
| 132 | title = "C channel 30 × 15 × 1.5, 150 mm" |
| 133 | params = { width = 30, height = 15, thickness = 1.5, length = 150 } |
| 134 | aliases = ["U channel 30x15x1.5 150 mm", "C channel 30x15 150 mm", "30x15 channel 150"] |
| 135 | standard = "step.parts generic channel model" |
| 136 | |
| 137 | [[presets]] |
| 138 | id = "C30x15x1.5-200" |
| 139 | title = "C channel 30 × 15 × 1.5, 200 mm" |
| 140 | params = { width = 30, height = 15, thickness = 1.5, length = 200 } |
| 141 | aliases = ["U channel 30x15x1.5 200 mm", "C channel 30x15 200 mm", "30x15 channel 200"] |
| 142 | standard = "step.parts generic channel model" |
| 143 | |
| 144 | [[presets]] |
| 145 | id = "C30x15x1.5-250" |
| 146 | title = "C channel 30 × 15 × 1.5, 250 mm" |
| 147 | params = { width = 30, height = 15, thickness = 1.5, length = 250 } |
| 148 | aliases = ["U channel 30x15x1.5 250 mm", "C channel 30x15 250 mm", "30x15 channel 250"] |
| 149 | standard = "step.parts generic channel model" |
| 150 | |
| 151 | [[presets]] |
| 152 | id = "C30x15x1.5-300" |
| 153 | title = "C channel 30 × 15 × 1.5, 300 mm" |
| 154 | params = { width = 30, height = 15, thickness = 1.5, length = 300 } |
| 155 | aliases = ["U channel 30x15x1.5 300 mm", "C channel 30x15 300 mm", "30x15 channel 300"] |
| 156 | standard = "step.parts generic channel model" |
| 157 | |
| 158 | [[presets]] |
| 159 | id = "C30x15x1.5-400" |
| 160 | title = "C channel 30 × 15 × 1.5, 400 mm" |
| 161 | params = { width = 30, height = 15, thickness = 1.5, length = 400 } |
| 162 | aliases = ["U channel 30x15x1.5 400 mm", "C channel 30x15 400 mm", "30x15 channel 400"] |
| 163 | standard = "step.parts generic channel model" |
| 164 | |
| 165 | [[presets]] |
| 166 | id = "C30x15x1.5-500" |
| 167 | title = "C channel 30 × 15 × 1.5, 500 mm" |
| 168 | params = { width = 30, height = 15, thickness = 1.5, length = 500 } |
| 169 | aliases = ["U channel 30x15x1.5 500 mm", "C channel 30x15 500 mm", "30x15 channel 500"] |
| 170 | standard = "step.parts generic channel model" |
| 171 | |
| 172 | [[presets]] |
| 173 | id = "C30x15x1.5-600" |
| 174 | title = "C channel 30 × 15 × 1.5, 600 mm" |
| 175 | params = { width = 30, height = 15, thickness = 1.5, length = 600 } |
| 176 | aliases = ["U channel 30x15x1.5 600 mm", "C channel 30x15 600 mm", "30x15 channel 600"] |
| 177 | standard = "step.parts generic channel model" |
| 178 | |
| 179 | [[presets]] |
| 180 | id = "C30x15x1.5-750" |
| 181 | title = "C channel 30 × 15 × 1.5, 750 mm" |
| 182 | params = { width = 30, height = 15, thickness = 1.5, length = 750 } |
| 183 | aliases = ["U channel 30x15x1.5 750 mm", "C channel 30x15 750 mm", "30x15 channel 750"] |
| 184 | standard = "step.parts generic channel model" |
| 185 | |
| 186 | [[presets]] |
| 187 | id = "C30x15x1.5-1000" |
| 188 | title = "C channel 30 × 15 × 1.5, 1000 mm" |
| 189 | params = { width = 30, height = 15, thickness = 1.5, length = 1000 } |
| 190 | aliases = ["U channel 30x15x1.5 1000 mm", "C channel 30x15 1000 mm", "30x15 channel 1000"] |
| 191 | standard = "step.parts generic channel model" |
| 192 | |
| 193 | [[presets]] |
| 194 | id = "C40x20x2.0-100" |
| 195 | title = "C channel 40 × 20 × 2.0, 100 mm" |
| 196 | params = { width = 40, height = 20, thickness = 2, length = 100 } |
| 197 | aliases = ["U channel 40x20x2.0 100 mm", "C channel 40x20 100 mm", "40x20 channel 100"] |
| 198 | standard = "step.parts generic channel model" |
| 199 | |
| 200 | [[presets]] |
| 201 | id = "C40x20x2.0-150" |
| 202 | title = "C channel 40 × 20 × 2.0, 150 mm" |
| 203 | params = { width = 40, height = 20, thickness = 2, length = 150 } |
| 204 | aliases = ["U channel 40x20x2.0 150 mm", "C channel 40x20 150 mm", "40x20 channel 150"] |
| 205 | standard = "step.parts generic channel model" |
| 206 | |
| 207 | [[presets]] |
| 208 | id = "C40x20x2.0-200" |
| 209 | title = "C channel 40 × 20 × 2.0, 200 mm" |
| 210 | params = { width = 40, height = 20, thickness = 2, length = 200 } |
| 211 | aliases = ["U channel 40x20x2.0 200 mm", "C channel 40x20 200 mm", "40x20 channel 200"] |
| 212 | standard = "step.parts generic channel model" |
| 213 | |
| 214 | [[presets]] |
| 215 | id = "C40x20x2.0-250" |
| 216 | title = "C channel 40 × 20 × 2.0, 250 mm" |
| 217 | params = { width = 40, height = 20, thickness = 2, length = 250 } |
| 218 | aliases = ["U channel 40x20x2.0 250 mm", "C channel 40x20 250 mm", "40x20 channel 250"] |
| 219 | standard = "step.parts generic channel model" |
| 220 | |
| 221 | [[presets]] |
| 222 | id = "C40x20x2.0-300" |
| 223 | title = "C channel 40 × 20 × 2.0, 300 mm" |
| 224 | params = { width = 40, height = 20, thickness = 2, length = 300 } |
| 225 | aliases = ["U channel 40x20x2.0 300 mm", "C channel 40x20 300 mm", "40x20 channel 300"] |
| 226 | standard = "step.parts generic channel model" |
| 227 | |
| 228 | [[presets]] |
| 229 | id = "C40x20x2.0-400" |
| 230 | title = "C channel 40 × 20 × 2.0, 400 mm" |
| 231 | params = { width = 40, height = 20, thickness = 2, length = 400 } |
| 232 | aliases = ["U channel 40x20x2.0 400 mm", "C channel 40x20 400 mm", "40x20 channel 400"] |
| 233 | standard = "step.parts generic channel model" |
| 234 | |
| 235 | [[presets]] |
| 236 | id = "C40x20x2.0-500" |
| 237 | title = "C channel 40 × 20 × 2.0, 500 mm" |
| 238 | params = { width = 40, height = 20, thickness = 2, length = 500 } |
| 239 | aliases = ["U channel 40x20x2.0 500 mm", "C channel 40x20 500 mm", "40x20 channel 500"] |
| 240 | standard = "step.parts generic channel model" |
| 241 | |
| 242 | [[presets]] |
| 243 | id = "C40x20x2.0-600" |
| 244 | title = "C channel 40 × 20 × 2.0, 600 mm" |
| 245 | params = { width = 40, height = 20, thickness = 2, length = 600 } |
| 246 | aliases = ["U channel 40x20x2.0 600 mm", "C channel 40x20 600 mm", "40x20 channel 600"] |
| 247 | standard = "step.parts generic channel model" |
| 248 | |
| 249 | [[presets]] |
| 250 | id = "C40x20x2.0-750" |
| 251 | title = "C channel 40 × 20 × 2.0, 750 mm" |
| 252 | params = { width = 40, height = 20, thickness = 2, length = 750 } |
| 253 | aliases = ["U channel 40x20x2.0 750 mm", "C channel 40x20 750 mm", "40x20 channel 750"] |
| 254 | standard = "step.parts generic channel model" |
| 255 | |
| 256 | [[presets]] |
| 257 | id = "C40x20x2.0-1000" |
| 258 | title = "C channel 40 × 20 × 2.0, 1000 mm" |
| 259 | params = { width = 40, height = 20, thickness = 2, length = 1000 } |
| 260 | aliases = ["U channel 40x20x2.0 1000 mm", "C channel 40x20 1000 mm", "40x20 channel 1000"] |
| 261 | standard = "step.parts generic channel model" |
| 262 |
A light C (U) channel of constant thickness with square corners, at any width, height, thickness and length.
Web width along X at the bottom, flanges height along Y (overall), web and flanges thickness thick, centred on
the origin and extruded along +Z by length; the opening faces +Y. Section area = width × height − (width − 2t) ×
(height − t).
| Parameter | Meaning |
|---|---|
width |
overall width (web), mm |
height |
overall height (flanges), mm |
thickness |
web and flange thickness, mm |
length |
mm |
material |
unspecified (no material assigned), aluminum, steel, stainless-304 |
No standard covers these light channels (EN 755-9 and DIN 9714 give tolerances only; DIN 1026 channels are tapered) and they name no maker. The presets' geometry was measured from the published reference models below: each model's mid-length section (overall width and height, web and flange thickness; constant, square corners), and every preset is checked against its own model: bounding box within 0.05 mm (0.5 % over 100 mm), volume within 2 %, section area within 2 % and section outline within 0.1 mm.
| Channel | Thickness |
|---|---|
| 20 × 10 | 1.5 |
| 30 × 15 | 1.5 |
| 40 × 20 | 2.0 |
c_channel_size<w>x<h>_l<length> (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'): square corners inside and out.
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
| 1 | # C channel (light, square corners) |
| 2 | |
| 3 | A light C (U) channel of constant thickness with square corners, at any width, height, thickness and length. |
| 4 | |
| 5 | ## Geometry |
| 6 | |
| 7 | Web `width` along X at the bottom, flanges `height` along Y (overall), web and flanges `thickness` thick, centred on |
| 8 | the origin and extruded along +Z by `length`; the opening faces +Y. Section area = width × height − (width − 2t) × |
| 9 | (height − t). |
| 10 | |
| 11 | ## Parameters |
| 12 | |
| 13 | | Parameter | Meaning | |
| 14 | |---|---| |
| 15 | | `width` | overall width (web), mm | |
| 16 | | `height` | overall height (flanges), mm | |
| 17 | | `thickness` | web and flange thickness, mm | |
| 18 | | `length` | mm | |
| 19 | | `material` | `unspecified` (no material assigned), `aluminum`, `steel`, `stainless-304` | |
| 20 | |
| 21 | ## Sources |
| 22 | |
| 23 | No standard covers these light channels (EN 755-9 and DIN 9714 give tolerances only; DIN 1026 channels are tapered) |
| 24 | and they name no maker. **The presets' geometry was measured from the published reference models** below: each |
| 25 | model's mid-length section (overall width and height, web and flange thickness; constant, square corners), and every |
| 26 | preset is checked against its own model: bounding box within 0.05 mm (0.5 % over 100 mm), volume within 2 %, section |
| 27 | area within 2 % and section outline within 0.1 mm. |
| 28 | |
| 29 | | Channel | Thickness | |
| 30 | |---|---| |
| 31 | | 20 × 10 | 1.5 | |
| 32 | | 30 × 15 | 1.5 | |
| 33 | | 40 × 20 | 2.0 | |
| 34 | |
| 35 | - **step.parts**, `c_channel_size<w>x<h>_l<length>` (https://www.step.parts, repository |
| 36 | https://github.com/earthtojake/step.parts, commit c6113328, `catalog/step/`): step.parts' own "analytic simplified" |
| 37 | models, original project material under the repository's **MIT** licence (© 2026 earthtojake). They name no |
| 38 | material, so the presets have `material = "unspecified"`. |
| 39 | |
| 40 | Simplifications (the models'): square corners inside and out. |
| 41 | |
| 42 | Preset list: from the step.parts catalogue (MIT), see `library/NOTICE.md`. |
| 43 |
A light C (U) channel of constant thickness with square corners: web width, flange height, thickness and length free. Presets: the catalogue's generic channels 20 x 10 x 1.5, 30 x 15 x 1.5 and 40 x 20 x 2, measured from step.parts' published models (MIT); no standard covers them (DIN 1026 channels are tapered). Web along X at the bottom, flanges up (+Y), centred on the origin, extruded along +Z.
A light C (U) channel of constant thickness with square corners, at any width, height, thickness and length.
Web width along X at the bottom, flanges height along Y (overall), web and flanges thickness thick, centred on
the origin and extruded along +Z by length; the opening faces +Y. Section area = width × height − (width − 2t) ×
(height − t).
| Parameter | Meaning |
|---|---|
width |
overall width (web), mm |
height |
overall height (flanges), mm |
thickness |
web and flange thickness, mm |
length |
mm |
material |
unspecified (no material assigned), aluminum, steel, stainless-304 |
No standard covers these light channels (EN 755-9 and DIN 9714 give tolerances only; DIN 1026 channels are tapered) and they name no maker. The presets' geometry was measured from the published reference models below: each model's mid-length section (overall width and height, web and flange thickness; constant, square corners), and every preset is checked against its own model: bounding box within 0.05 mm (0.5 % over 100 mm), volume within 2 %, section area within 2 % and section outline within 0.1 mm.
| Channel | Thickness |
|---|---|
| 20 × 10 | 1.5 |
| 30 × 15 | 1.5 |
| 40 × 20 | 2.0 |
c_channel_size<w>x<h>_l<length> (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'): square corners inside and out.
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md.
Rectangular plate blank, any width, length and thickness, in common plate and sheet materials.
Square bar, EN 10059 sizes and plain square stock, any side and length.
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.