// -*- C -*- post_dia = 23.0; th = 4; nom_hole = 22; min_r = 15 + nom_hole/2; maj_r = 22 + nom_hole/2; //$fa=1; //$fs=1; module Profile(r) { prof_r = th/(1-cos(45)); prof_R = r - prof_r * cos(45); intersection(){ hull(){ translate([0, th-prof_r]){ translate([1,0]) square(center=true, 2*[1,prof_r]); translate([prof_R, 0]) circle(prof_r); } } square([r, th]); } } module Body(){ hull(){ for (x= [-1,+1] * (maj_r-min_r)) translate([x,0,0]) rotate_extrude() Profile(min_r); } } Body();