openscad/examples/example006.scad

45 lines
1.0 KiB
OpenSCAD

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();