// -*- C -*- basel = 16; basew = 24; baset = 4.0; wallt = 2.5; wallh = 42; baseholesz = 3.7; baseholeslot = 6.5; baseholeslop = -0.5; topl = 20; holeslop = 0.5; webt = 2.5; padt = webt; padw = 12; padl = padw; padholesz = 3.0; wallholeh = 6+14+2; wallholesz = 3.0; wallholeslot = 4.5; walll = basel + webt + padl;; webw = min(basew, padw); module slothole(sz, slot, thick, csunk=true, slop=holeslop) { hull(){ for (y = [-slot/2,slot/2]) { translate([0,y,-0.05]) cylinder(r1=sz/2 + slop, r2=sz/2 + (csunk ? thick : 0) + slop, h=thick+0.10); } } } module Bracket(){ difference(){ translate([0, -basew, 0]) cube([basel, basew, baset]); translate([basel/2, -(basew+wallt)/2, 0]) slothole(baseholesz, baseholeslot, baset, slop=baseholeslop); } difference(){ rotate([90,0,0]) { linear_extrude(height=wallt){ polygon([[0,0], [0, wallh/2 + wallholesz/2 + wallt + wallt], [basel, wallh], [walll, wallh], [walll, wallh - padt - padt], [basel + webt, 0]]); } } translate([basel/2, 0, wallholeh]) rotate([90,90,0]) slothole(wallholesz, wallholeslot, wallt, csunk=false); } translate([basel-0.01, 0, 0]) { rotate([90,0,90]) { linear_extrude(height=webt+0.02) { polygon([[-basew, 0], [-basew, baset], [-webw, wallh], [0, wallh], [0, 0]]); } } } translate([basel+webt, -padw, wallh-padt]) { difference(){ cube([padl, padw, padt]); translate([padl/2, padw/2, -1]) cylinder(r=padholesz/2 + holeslop, h=padt+2); } } } module BracketR(){ ////toplevel rotate([-90,0,0]) Bracket(); } module BracketL(){ ////toplevel mirror([1,0,0]) BracketR(); } module Kit(){ ////toplevel for (y=[0, -wallh-5]) { translate([0,y,0]) { translate([5,0,0]) BracketR(); BracketL(); } } } //Kit(); //BracketR();