module test001() { function r_from_dia(d) = d / 2; module rotcy(rot, r, h) { rotate(90, rot) cylinder(r = r, h = h, center = true); } difference() { sphere(r = r_from_dia(size)); rotcy([0 0 0], cy_r, cy_h); rotcy([1 0 0], cy_r, cy_h); rotcy([ 0 1 0], cy_r, cy_h); } size = 50; hole = 25; cy_r = r_from_dia(hole); cy_h = r_from_dia(size * 2.5); } module test002() { intersection() { difference() { union() { cube([30 30 30], center = true); translate([0 0 -25]) cube([15 15 50], center = true); } union() { cube([50 10 10], center = true); cube([10 50 10], center = true); cube([10 10 50], center = true); } } translate([0 0 5]) cylinder(h = 50, r1 = 20, r2 = 5, center = true); } } module test003() { difference() { union() { cube([30 30 30], center = true); cube([40 15 15], center = true); cube([15 40 15], center = true); cube([15 15 40], center = true); } union() { cube([50 10 10], center = true); cube([10 50 10], center = true); cube([10 10 50], center = true); } } } module test004() { difference() { cube(30, center = true); sphere(20); } } module test005() { translate([0 0 -120]) { difference() { cylinder(h = 50, r = 100); translate([0 0 10]) cylinder(h = 50, r = 80); translate([100 0 35]) cube(50, center = true); } for (i = [0:5]) { echo(360*i/6, sin(360*i/6)*80, cos(360*i/6)*80); translate([sin(360*i/6)*80, cos(360*i/6)*80, 0 ]) cylinder(h = 200, r=10); } translate([0 0 200]) cylinder(h = 80, r1 = 120, r2 = 0); } } module test006() { module edgeprofile() { render() difference() { cube([20 20 150], center = true); translate([-10 -10 0]) cylinder(h = 150, r = 10, center = true); } } 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 -30], [-20 0], [-20 +30], [+20 -30], [+20 0], [+20 +30] ] ], [ 270, 0, [ [0 0], [-30 -30], [+30 -30], [-30 +30], [+30 +30] ] ], [ 0, 90, [ [-30 -30], [0 0], [+30 +30] ] ], [ 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); } } } test006();