height = 25; sides = 5; kerf = 0.15; fit = 2.5; length = 10; totallength = length * 2; points = [ for (i = [0:sides]) point(height, 360 * i / sides)]; function point(rad, angle) = [height * cos(angle), height * sin(angle)]; difference(){ polygon(points); r = height; // pattern radius n = sides; // number of holes step = 360/n; for (i=[0:step:360]) { angle = i; dx = r*cos(angle); dy = r*sin(angle); translate([dx,dy,0]) rotate([0,0,angle]) square([totallength,fit-kerf],center = true); } }