wall = 1.6; radius = 55; height = 20; bottom = 2; saucer(); for (i = [1:1:6]) { spacer(i * 60); } module saucer() { difference() { cylinder(height, radius, radius + height/4, $fn=500); translate([0, 0, bottom]) cylinder(height, radius - wall/2, radius + height/4 - wall/2, $fn=500); } } module spacer(x_rotate=0) { difference() { rotate([x_rotate, 90, 0]) translate([-bottom, 0, 8]) cylinder(radius - 8 - radius/8, wall, wall, $fn=100); // cut spacers in half cylinder(wall, radius - wall/2, radius - wall/2); } }