X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=maglite-holder.scad;h=cfdafaab4558fd7cfd7047c3091fa17706d009b0;hp=25d7efaa30fd47cba669d5d9dd64a5689144a939;hb=39697becedcabae1c880a1fe3663975a0440758a;hpb=28bdfa5b52eda37b5f7169f5b1eb4e990ff381ec diff --git a/maglite-holder.scad b/maglite-holder.scad index 25d7efa..cfdafaa 100644 --- a/maglite-holder.scad +++ b/maglite-holder.scad @@ -7,14 +7,108 @@ torch_big_dia = 56.5; torch_tot_len = 256; torch_big_len = 60; +torch_clear = 30; +torch_clear_below = 10; + +stem_width = 20; +stem_thick = 8; + +torch_recess = 14; +arm_width = 10; +block_thick = 15; + +torch_out_more = 10; + +brace = [ 40, 10, 20 ]; + +hole_dia = 4 + 0.5; +hole_slot = 5; + +$fa=5; + +// calculated + +above = torch_big_len + torch_clear + torch_clear_below; + +holes = [ 172, 265 ]; + +stem_below = stem_width/2; + +stem_len = holes[1] - above + stem_below; + +torch_out = stem_thick + torch_big_dia/2 + torch_out_more; + +block_width = arm_width*2 + torch_big_dia; + +block_out = torch_out + torch_big_dia/2/sqrt(2); + module Torch(){ - hull(){ - rotate_extrude() - translate(dxf_off) - import(file="maglite-holder-torch-curve.dxf", convexity=10, center=true); + mirror([0,0,1]){ + hull(){ + rotate_extrude() + translate(dxf_off) + import(file="maglite-holder-torch-curve.dxf", + convexity=10, center=true); + } + translate([0,0, -1]) + cylinder(r=torch_lit_dia/2, h= torch_tot_len - torch_big_len + 1); } - translate([0,0, -1]) - cylinder(r=torch_lit_dia/2, h= torch_tot_len - torch_big_len + 1); } -Torch(); +module ScrewHole(y, rot) { + translate([0,0, above -y]){ + rotate([0,rot,0]){ + hull(){ + for (d= [-1,+1] * hole_slot/2) { + translate([d,0,0]) + rotate([90,0,0]) + translate([0,0,-stem_thick*2]) + cylinder(r= hole_dia/2, h= stem_thick*4); + } + } + } + } +} + +module TorchMovement(){ + // xxx needs torch increasing for slop + translate([0, -torch_out, 0]) { + translate([0, 0, -torch_recess]) + Torch(); + rotate([90,0,0]) + linear_extrude(height= block_out) + projection() rotate([-90,0,0]) Torch(); + } +} + +module Bracket(){ + difference(){ + mirror([0,1,0]) { + translate([-stem_width/2, 0, -stem_len]) + cube([stem_width, stem_thick, stem_len]); + translate([0,0, -block_thick]) hull(){ + translate([-stem_width/2, 0, -brace[2]]) + cube([stem_width, stem_thick, 1]); + translate([-brace[0]/2, 0, 0]) + cube([brace[0], brace[1], 1]); + } + } + ScrewHole(holes[0], 90); + ScrewHole(holes[1], 0); + } + difference(){ + mirror([0,1,0]) + translate([-block_width/2, 0, -block_thick]) + cube([block_width, block_out, block_thick]); + TorchMovement(); + } +} + +module Demo(){ + translate([0, -torch_out, 0]) + %Torch(); + Bracket(); +} + +Demo(); +