outside_radius = 21.4/2; thickness = 1; height = 5; step_size = 1; $fn = 100; module ring(){ linear_extrude(height) difference(){ circle(outside_radius); circle(outside_radius-thickness); } } module myshape(){ horizontal = 6; depth = 3; my_height = 5; rotate([-45,0,0]) translate([0,0,-my_height/2]) linear_extrude(my_height) polygon([[-horizontal, 0],[horizontal,0],[0,depth]]); } pattern_size = 1.75; offs = 0.2; cube_height = 20; count = 4; difference(){ ring(); for(step=[0:step_size:360]){ h = cos(step*count) * pattern_size; rotate(step) translate( [0, outside_radius-thickness/2, h+height-pattern_size+cube_height/2+offs]) cube(size=[1,thickness+0.5,cube_height], center=true); } } // difference(){ // ring(); // steps = 4; // for(step=[0:steps]){ // rotate(step*360/steps){ // translate([0,8,5.5]){ // myshape(); // } // } // } // } // translate([0,8,5.5]) // myshape();