summaryrefslogtreecommitdiff
path: root/examples/example006.scad
blob: 26143a1a6d3e39adefc60cc6059387b554704c2f (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

module example006()
{
	module edgeprofile()
	{
		render(convexity = 2) difference() {
			cube([20 20 150], center = true);
			translate([-10 -10 0])
				cylinder(h = 80, r = 10, center = true);
			translate([-10 -10 +40])
				sphere(r = 10);
			translate([-10 -10 -40])
				sphere(r = 10);
		}
	}

	difference()
	{
		cube(100, center = true);
		for (rot = [ [0 0 0], [1 0 0], [0 1 0] ]) {
			rotate(90, rot)
				for (p = [[+1 +1 0], [-1 +1 90], [-1 -1 180], [+1 -1 270]]) {
					translate([ p[0]*50, p[1]*50, 0 ])
						rotate(p[2], [0 0 1])
							edgeprofile();
				}
		}
		for (i = [
			[ 0, 0, [ [0 0] ] ],
			[ 90, 0, [ [-20 -20], [+20 +20] ] ],
			[ 180, 0, [ [-20 -25], [-20 0], [-20 +25], [+20 -25], [+20 0], [+20 +25] ] ],
			[ 270, 0, [ [0 0], [-25 -25], [+25 -25], [-25 +25], [+25 +25] ] ],
			[ 0, 90, [ [-25 -25], [0 0], [+25 +25] ] ],
			[ 0, -90, [ [-25 -25], [+25 -25], [-25 +25], [+25 +25] ] ]
		]) {
			rotate(i[0], [0 0 1]) rotate(i[1], [1 0 0]) translate([0 -50 0])
				for (j = i[2])
					translate([j[0], 0, j[1]]) sphere(10);
		}
	}
}

example006();

contact: Jan Huwald // Impressum