// -*- C -*- holedist = 64; tonguewidth = 10; tongue2width = 15; totaldepth = 26; tongue2depth = 35; thick = 4; tabover = 7; tabunder = 15; tabside = 7; tonguethick = 4; tongue2thick = 5; strapthick = 2; strapwidth = 5; ridgewidth = 2; holedia = 3.5; tongue2x = tongue2width - holedist; module Tongue(tw,tt,ad,slots=2){ y0=thick+0.1; yn=ad-ridgewidth-strapwidth; difference(){ translate([-tw, 0, 0]) cube([tw, ad, tt+strapthick]); for (yi=[0:slots-1]) translate([-tw-1, y0 + (yn-y0)*yi/(slots-1), tt]) cube([tw+2, strapwidth, strapthick+1]); } } module Object(){ difference(){ translate([-holedist-tabside, 0, 0]) cube([tabside*2+holedist, thick, tabunder+tabover]); for (x=[-holedist,0]) translate([x, -1, tabunder]) rotate([-90,0,0]) cylinder(r= holedia/2+0.5, h=thick+2, $fn=20); } Tongue(tonguewidth,tonguethick,totaldepth,3); translate([tongue2x,0,0]) Tongue(tongue2width,tongue2thick,tongue2depth+thick,4); } Object();