commit f30413ec510ba467f4338ef7726933b7e1474034 Author: Michael Sippel Date: Sat Apr 6 16:30:44 2024 +0200 initial commit diff --git a/main.scad b/main.scad new file mode 100644 index 0000000..e3c9403 --- /dev/null +++ b/main.scad @@ -0,0 +1,146 @@ + +module puzzle_line(a=20, b=15, z=40, h=10) { + render() + difference() { + union() { + cube([1, z, h]); + + hull() { + translate([0,(z-a)/2,0]) + cube([0.5, a, h]); + translate([1.5,(z-b)/2,0]) + cube([0.5, b, h]); + } + } + + hull() { + translate([-0.5,(z-(a-1))/2,0]) + cube([0.5, (a-1), h]); + translate([0.5,(z-(b-1))/2,0]) + cube([0.5, (b-1), h]); + } + } +} + +module contour(h=70) { + for(r = [0:5]) { + rotate([0,0,(r+0.5)*60]) + translate([10.95,-6.88,0]) + { + if( r%2 == 0 ) { + mirror([1,0,0]) + translate([-1,0,0]) + puzzle_line(5.7, 3.2, z=6.88*2, h=h); + } else { + puzzle_line(4.5, 2.2, z=6.88*2, h=h); + } + } + } +} + +module contour_hull(h=1, a=5.7, b=3.2, z=6.88*2, a0=4.5,b0=2.2,z0=6.88*2) { + render() + difference() { + union() { + cylinder(d=27, h=h, $fn=6); + + for(r = [0:2]) { + rotate([0,0,r*120-30]) + translate([10.95,-6.88,0]) { + hull() { + translate([-0.5,(z0-(a0-1))/2,0]) + cube([0.5, (a0-1), h]); + translate([0.5,(z0-(b0-1))/2,0]) + cube([0.5, (b0-1), h]); + } + } + } + } + + for(r = [0:2]) { + rotate([0,0,30+r*120]) + translate([10.95,-6.88,0]) + mirror([1,0,0]) + translate([-1,0,0]) + { + + hull() { + translate([-0.5,(z-(a-1))/2,0]) + cube([0.5, (a-1), h]); + translate([0.5,(z-(b-1))/2,0]) + cube([0.5, (b-1), h]); + } + } + } + } +} + +module inner_contour(h=70) { + for(r = [0:5]) { + rotate([0,0,(r+0.5)*60]) + translate([10.8-1,-6.25,0]) + { + if( r%2 == 0 ) { + mirror([1,0,0]) + translate([-1,0,0]) + puzzle_line(6, 4.4, z=6.25*2, h=h); + } else { + puzzle_line(4.5, 1, z=6.25*2, h=h); + } + } + } +} + +module inner_contour_hull(h=1, a=5.7, b=3.2, z=6.88*2, a0=4.4,b0=2.1,z0=6.88*2) { + render() + union() { + cylinder(d=22.6, h=h, $fn=6); + inner_contour(h=h); + } +} + +module inner(h=70) { + { + render() + difference() + { + inner_contour(h=h); + + translate([-20,4,0]) + cube([40, 15,h]); + } + + inner_contour_hull(); + translate([0,0,h]) + render() + difference() { + cylinder(d=26, h=4, $fn=6); + + translate([0,-8,2]) + cylinder(d=16, h=3, $fn=6); + + translate([0,-3,1]) + cylinder(d=20, h=2, $fn=6); + } + } +} + + +module outer(h=70) { + translate([0,0,-8]) + cylinder(d=15, h=8, $fn=6); + + contour(h=h); + + translate([0,0,0]) + contour_hull(); +} + + +color([1,1,0]) +translate([0,0,10]) +inner(h=70); + +color([0.7, 0.4, 0.4]) +outer(h=70); +