$fn = 64; h = 15; w = 7; module notchesSphere (HowMany){ for(i = [0:HowMany]){ rotate(i*360/HowMany) translate([15,-4,0]) square([h, w]); } } module sphere(){ difference(){ circle(30); notchesSphere(4); circle(5); } } module rectangle(){ module notchesRectangle(HowMany){ for(i=[0:HowMany]){ rotate ([i*360/HowMany]) translate([46.5,10,0]) square([w, h]); } } difference(){ translate([40,-25,0]) square([20, 50]); notchesRectangle(2); } } module L(){ translate([150,0,0]) difference(){ circle(15); circle(5); } difference(){ translate([140,10,0]) square([20, 40]); translate([146.5,35.5,0]) square([w, h]); } difference(){ translate([100,-10,0]) square([40, 20]); translate([100,-3.5,0]) square([h, w]); } } module hexagon(){ difference(){ circle(30,$fn=8); rotate([0, 0, 24.5]) notchesSphere(4); } } translate([170, 0, 0]) hexagon(); translate([-30,0,0]) L(); sphere(); rectangle();