X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=xeno-drivebay-bracket.scad;h=2073e05264da0591a43615f22469a651d20a739e;hp=66b520ea673100583460646d95865818936baced;hb=52babb66e84b372a20b0d7db544530cc66b8fac9;hpb=721af5823601915ba96703f4b2d4dd9d5c80d7ed diff --git a/xeno-drivebay-bracket.scad b/xeno-drivebay-bracket.scad index 66b520e..2073e05 100644 --- a/xeno-drivebay-bracket.scad +++ b/xeno-drivebay-bracket.scad @@ -1,47 +1,195 @@ // -*- C -*- -basel = 20; -basew = 27; +basel = 16; +basew = 24; baset = 4.0; -wallt = 4.0; +wallt = 2.5; wallh = 42; -baseholesz = 4; // fixme check -baseholeslot = 4; +baseholesz = 3.7; +baseholeslot = 6.5; +baseholeslop = -0.5; holeslop = 0.5; -walll = basel; +webt = 2.5; + +pad = false; +padw = 12; + +padt = webt; +padl = padw; +padholesz = 3.0; + wallholeh = 6+14+2; -wallholesz = 3.0; // fixme check -wallholeslot = 3.0; +wallholesz = 3.0; +wallholeslot = 4.5; -module slothole(sz, slot, thick) { +walll = basel + webt + (pad ? padl : -0.1); + +webw = min(basew, pad ? padw : padt); + +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 + holeslop, - r2=sz/2+thick + holeslop, - h=thick+0.10); + translate([0,y,-0.15]) + cylinder(r1=sz/2 + slop, + r2=sz/2 + (csunk ? thick : 0) + slop, + h=thick+0.30); } } } -difference(){ - translate([0, -basew, 0]) - cube([basel, basew, baset]); +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(){ + translate([0.1, 0.3, 0.1]) + 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/2, -(basew+wallt)/2, 0]) - slothole(baseholesz, baseholeslot, baset); + 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]]); + } + } + } + + if (pad) { + 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); + } + } + } } -difference(){ - translate([0, -wallt, 0]) - cube([walll, wallt, wallh]); +module BracketR(){ ////toplevel + rotate([-90,0,0]) Bracket(); +} - translate([basel/2, 0, wallholeh]) - rotate([90,0,0]) - slothole(wallholesz, wallholeslot, wallt); +module BracketL(){ ////toplevel + mirror([1,0,0]) BracketR(); } + +protinnerh = 47; +protinnerw = 53; +protd = 45; +protbaset = 4; +protwallt = 2; +protlidt = protwallt; +protwingd = 28; +protwingw = 23; + +module RearCableProtector(){ + for (x = [-protwallt, protinnerw]) { + translate([x, 0, 0]) { + cube([protwallt, protd, protinnerh+protlidt]); + } + } + translate([-(protwallt-0.1), 0, protinnerh]) + cube([protinnerw + (protwallt-0.1)*2, protd, protlidt]); + for (lr = [1,0]) { + translate([(lr ? -(protwingw + protwallt) : protinnerw), 0, 0]) { + difference(){ + translate([0, 0, 0]) + cube([protwingw, protwingd, protbaset]); + translate([protwingw/2, protwingd/2, 0]) + rotate([0,0, lr ? 45 : -45]) + slothole(baseholesz, baseholeslot, baset, slop=baseholeslop); + } + } + } +} + +module RearCableProtectorT(){ ////toplevel + rotate([90,0,0]) RearCableProtector(); +} + +chabd = 20; +chablidw = 40; +chabinnerh = 11; +chabwallt = 2; +chablidt = 2; +chabwebt = 2.5; +chabbaset = baset; +chabbasew = 20; +chabslot = 3; +chablidholed = 3; +chabwebh = 5; + +module ChannelBracket(){ + translate([0, -chabd, 0]) + cube([chabwallt, chabd, chabinnerh+chablidt]); + translate([-chablidw, -chabd, chabinnerh]) { + difference(){ + cube([chablidw + chabwallt - 0.1, chabd - 0.1, chablidt]); + translate([chablidw/2, chabd/2, -1]) + cylinder(r=chablidholed/2, h=chablidt+2, $fn=20); + } + } + translate([chabwallt-0.1, -chabd, 0]) { + difference(){ + cube([chabbasew, chabd-0.1, chabbaset]); + translate([chabbasew/2, (chabd-chabwebt)/2, 0]) + rotate([0,0,90]) + slothole(baseholesz, chabslot, baset, slop=baseholeslop); + } + } + rotate([90,0,0]) linear_extrude(height=chabwebt) { + polygon([[-chablidw, chabinnerh], + [-chablidw, chablidt+chabinnerh], + [-chabwebh, chablidt+chabinnerh+chabwebh], + [+chabwebh, chablidt+chabinnerh+chabwebh], + [+chabbasew, chabbaset], + [+chabbasew, 0], + [0, 0], + [0, chabinnerh]]); + } +} + +module ChannelBracketT(){ + rotate([-90,0,0]) ChannelBracket(); +} + +module Kit(){ ////toplevel + for (y=[0, -wallh-5]) { + translate([0,y,0]) { + translate([5,0,0]) BracketR(); + BracketL(); + } + } +} + +//Kit(); +//BracketR(); +//RearCableProtectorT(); +//ChannelBracketT();