// -*- C -*- holedist = 64; tonguewidth = 10; tongue2width = 15; totaldepth = 26; tongue2depth = 35; thick = 4; tabover = 7; tabunder = 15; tabsidel = 7; tabsider = 7+9.5; tonguethick = 4; tongue2thick = 5; strapthick = 2; strapwidth = 5; ridgewidth = 2; hstrengthick = 2.5; hstrengdepth = strapwidth; 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=[1:slots-1]) translate([-tw-1, y0 + (yn-y0)*yi/(slots-1), tt]) cube([tw+2, strapwidth, strapthick+1]); } } module Object(){ difference(){ translate([-holedist-tabsider, 0, 0]) { cube([tabsidel+tabsider+holedist, thick, tabunder+tabover]); cube([tabsidel+tabsider+holedist, thick+hstrengdepth, hstrengthick]); } for (x=[-holedist,0]) translate([x, 0, tabunder]) { translate([0, -1, 0]) { rotate([-90,0,0]) { cylinder(r= holedia/2+0.5, h=thick+2, $fn=20); } } translate([0, 19.95 + thick, 0]) cube(center=true,[10,40,10]); } } Tongue(tonguewidth,tonguethick,totaldepth,3); translate([tongue2x,0,0]) Tongue(tongue2width,tongue2thick,tongue2depth+thick,5); } Object();