aboutsummaryrefslogtreecommitdiff
path: root/supports/runner.scad
blob: 72a2751e8bc8a3e54de8e37e50c1b86994199043 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
This file is used in models found in this repository.
Copyright (C) 2024 Christian Hodgden

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

/*
This file can be used in an openscad file with `use`.
```OpenSCAD
	use <runner.scad>;
	runner(200, 300);
```

This file can be called directly on the command line passing specified arguments.
```shell
openscad runner.scad -D 'length=200' -D 'width=300' -o runner.stl
```

This file can also be copied, edited, and compiled with the desired arguments.
*/

// OpenSCAD's default unit is millimeter
module runner (length, width, spacing=10, thickness=1, height=0.1) {
	for (i = [0:spacing:width]) {
		translate([0, i, 0])
			cube([length+thickness, thickness, height]);
	}
	for (i = [0:spacing:length]) {
		translate([i, 0, 0])
			cube([thickness, width+thickness, height]);
	}
	translate([0, width, 0])
		cube([length+thickness, thickness, height]);
	translate([length, 0, 0])
		cube([thickness, width+thickness, height]);
}

length = 150;
width = 100;
spacing = 10;
thickness = 1;
height = 0.1;

runner(
	length = length,
	width = width,
	spacing = spacing,
	thickness = thickness,
	height = height
);