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=0f18a3b5ba7a1558c72d5669c141f38099ffd31b;hb=b5d196171acdb4887099393effc16ccd4db69bf7;hpb=ec53b971a6cea6a7c4bb35f312f01dd907a52563 diff --git a/xeno-drivebay-bracket.scad b/xeno-drivebay-bracket.scad index 0f18a3b..2073e05 100644 --- a/xeno-drivebay-bracket.scad +++ b/xeno-drivebay-bracket.scad @@ -1,39 +1,43 @@ // -*- C -*- -basel = 23; -basew = 27; +basel = 16; +basew = 24; baset = 4.0; -wallt = 4.0; +wallt = 2.5; wallh = 42; -baseholesz = 4; // fixme check -baseholeslot = 4; - -topl = 20; +baseholesz = 3.7; +baseholeslot = 6.5; +baseholeslop = -0.5; holeslop = 0.5; -webt = 3; +webt = 2.5; + +pad = false; +padw = 12; -padt = 3; -padw = 20; +padt = webt; padl = padw; -padholesz = 5.0; +padholesz = 3.0; -walll = basel; wallholeh = 6+14+2; -wallholesz = 3.0; // fixme check +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); } } } @@ -44,28 +48,148 @@ module Bracket(){ cube([basel, basew, baset]); translate([basel/2, -(basew+wallt)/2, 0]) - slothole(baseholesz, baseholeslot, baset); + slothole(baseholesz, baseholeslot, baset, slop=baseholeslop); } difference(){ - translate([0, -wallt, 0]) - cube([walll, wallt, wallh]); + 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); + slothole(wallholesz, wallholeslot, wallt, csunk=false); } - translate([basel-0.01, -basew, 0]) - cube([webt+0.02, basew, wallh]); + 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]) { + 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); + } + } + } +} + +module BracketR(){ ////toplevel + rotate([-90,0,0]) Bracket(); +} + +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([padl, padw, padt]); - translate([padl/2, padw/2, -1]) - cylinder(r=padholesz/2 + holeslop, h=padt+2); + 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(); } } } -Bracket(); +//Kit(); +//BracketR(); +//RearCableProtectorT(); +//ChannelBracketT();