X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=light-bracket.scad;h=0e3bee66da5b30e6114bda563d6b8eea650c4ffa;hb=733dc6e94378d1fba45064e3a2c4203128dd76b7;hp=2c591dc46f75455fc0325a0a754660834a3714f6;hpb=c52d022a1f237b5df7e78d76f290aea55198b8bc;p=reprap-play.git diff --git a/light-bracket.scad b/light-bracket.scad index 2c591dc..0e3bee6 100644 --- a/light-bracket.scad +++ b/light-bracket.scad @@ -2,11 +2,16 @@ remote_width=56.2; remote_height=124.7; remote_thick=6.8; mainhole_thick=remote_thick+1; -hook_width=1.5; -hook_height=1.5; -hook_thick=1.5; -hook_hook=2.5; -base_thick=10; +hook_hook_thick=1.5; +hook_stem_thick=1.5; +hook_hook_len=1.5; +base_thick=6; +base_margin=4.0; +base_width=remote_width-base_margin*2; +base_height=remote_height-base_margin*2; +base_edgewidth=4; + +// origin is base of mainhole module mainhole() { translate([ -remote_width/2, 0, 0 ]) @@ -15,21 +20,85 @@ module mainhole() { } module hhook(extent) { - translate([ -remote_width/2 - hook_thick, 0, -base_thick*2 ]) - cube(center=false, size=[ hook_thick+hook_hook, extent, - base_thick*2 + mainhole_thick + hook_height ]); + difference() { + translate([ -hook_stem_thick, 0, -base_thick*2 ]) + cube(center=false, + size=[ + hook_stem_thick+base_margin+base_edgewidth-1, + extent, + base_thick*2 + mainhole_thick + hook_hook_thick + ]); + translate([hook_hook_len, -5, 0]) + cube(center=false, size=[ 20, extent+10, 30 ]); + } +} + +module hhookside(extent) { + translate([ -remote_width/2, 0, 0 ]) + hhook(extent); +} + +module hhookbot(extent) { + rotate(a=90, v=[0,0,1]) hhook(extent); +} + +module hstuff() { + translate([0,70,0]) hhookside(15); + translate([0,10,0]) hhookside(15); + translate([-10,0,0]) hhookbot(15); +} + +module slashes() { + for (y=[-35 : 35 : +40]) + translate([0,y,0]) + rotate(v=[0,0,1],a=45) + cube(center=true, [ 5,200,200 ]); } +module base() { + translate([ 0, base_height/2 + base_margin, -base_thick/2 ]) + intersection() { + cube(center=true, + [ base_width, base_height, base_thick+10 ]); + union() { + difference() { + cube(center=true, [ 200,200,200 ]); + cube(center=true, + [ base_width - base_edgewidth*2, + base_height - base_edgewidth*2, + base_thick + 15 ]); + + } + slashes(); + mirror([1,0,0]) slashes(); + } + } +// translate([-base_width/2, base_margin, -base_thick*2]) +// cube(center=false, [base_width,base_height,base_thick+10]); +} + +screw_ys=[ 20, remote_height-30 ]; + module stuff() { - translate([0,50,0]) hhook(10); + hstuff(); + mirror([1,0,0]) hstuff(); + base(); + for (y=screw_ys) translate([0, y, -20]) + cylinder(r=7.5, h=21); } -// mirror([1,0,0]){ -// hobject(); -//} -//} +module screwhole(holedia, csdia) { + // screw goes along z axis downwards + // origin is base of countersink + // results are positive, so this should be subtracted + translate([0,0,-100]) cylinder(h=200, r=holedia/2); + cylinder(h=100, r=csdia/2); +} difference() { stuff(); - # mainhole(); + mainhole(); + for (y=screw_ys) translate([0, y, -base_thick+2]) screwhole(4,10); + translate([0,0,-50 - base_thick]) + cube(center=true,[300,300,100]); // print bed }