X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=maglite-holder.scad;h=8e9658628a9dac2875aa4ef0619b2c800d473a06;hp=bf78cd1296f70606bc501ffeae809581b5fa92a2;hb=72c35c0236348bc504f6490e2bf9e5f67c1fd522;hpb=f87918d4ca17011d8c946672a5b58d8786f1bc62 diff --git a/maglite-holder.scad b/maglite-holder.scad index bf78cd1..8e96586 100644 --- a/maglite-holder.scad +++ b/maglite-holder.scad @@ -11,16 +11,40 @@ torch_clear = 30; torch_clear_below = 10; stem_width = 20; -stem_thick = 4; +stem_thick = 8; -torch_recess = 15; +torch_recess = 11; arm_width = 10; -block_thick = 30; +block_thick = 15; -//$fa=5; +torch_out_more = 10; + +brace = [ 40, 20, 20 ]; + +hole_dia = 4 + 0.5; +hole_slot = 5; + +slop = 4; // total, not each side + +torch_min_xcoord_fig_cm = -2.7; // coordinates of bottom left of curve +torch_min_ycoord_fig_cm = -5.9; // & big part in fig file. mid top is origin +torch_smm_xcoord_fig_cm = -1.9; // x coord of lhs of narrow part + +miniature = 2; // can adjust this to get commitid size right and rescale *Print + +$fa=5; // calculated +include + +torch_dxf_scale = + [ (torch_big_dia - torch_lit_dia) / + (-(torch_min_xcoord_fig_cm - torch_smm_xcoord_fig_cm) * 10 * 2), + torch_big_len / (-torch_min_ycoord_fig_cm * 10) ]; + +echo(torch_dxf_scale); + above = torch_big_len + torch_clear + torch_clear_below; holes = [ 172, 265 ]; @@ -29,17 +53,20 @@ stem_below = stem_width/2; stem_len = holes[1] - above + stem_below; -torch_out = stem_thick + torch_big_dia/2; +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/sqrt(2); +block_out = torch_out + torch_big_dia/2/sqrt(2); -module Torch(){ +module TorchOrig(){ mirror([0,0,1]){ hull(){ rotate_extrude() + translate([-torch_lit_dia/2, 0]) + scale(torch_dxf_scale) translate(dxf_off) + translate([-torch_smm_xcoord_fig_cm * 10, 0]) import(file="maglite-holder-torch-curve.dxf", convexity=10, center=true); } @@ -48,26 +75,94 @@ module Torch(){ } } -module Bracket(){ +module Torch(){ + scale(slop/torch_lit_dia + 1.0) + TorchOrig(); +} + +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(){ + 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(){ ////toplevel + cid_w = stem_width * .75; + hole_near = hole_slot + hole_dia; + difference(){ - mirror([0,1,0]) + mirror([0,1,0]) { translate([-stem_width/2, 0, -stem_len]) - cube([stem_width, stem_thick, 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); + translate([-cid_w/2, 0, above - holes[0] - hole_near]) + rotate([-90,0,0]) + scale([miniature, miniature, 1]) + Commitid_BestCount([cid_w, holes[1]-holes[0] - hole_near*2] + / miniature); } difference(){ mirror([0,1,0]) translate([-block_width/2, 0, -block_thick]) cube([block_width, block_out, block_thick]); + TorchMovement(); } - for (out=[ torch_out, torch_out + block_out*2 ]) - translate([ 0, -out, -torch_recess ]) +} + +module BracketPrint(){ ////toplevel + scale(1/miniature) + rotate([-90,0,0]) + Bracket(); +} + +module TestTorchPrint(){ ////toplevel + scale(1/miniature) + intersection(){ + translate([0,0, torch_lit_dia / 2 / sqrt(2)]) + rotate([-90,0,0]) Torch(); + translate([-100, -torch_tot_len*2, 0]) + cube([200, torch_tot_len*4, 200]); + } } -module Demo(){ - translate([0, -torch_out, 0]) - %Torch(); +module Demo(){ ////toplevel + color("red") + translate([0, -torch_out, 0]) + TorchOrig(); + color("blue") + translate([0, -torch_out, above]) + cylinder(r=torch_big_dia/2, h=1); Bracket(); } -Demo(); +//Demo(); +//BracketPrint(); +//TestTorchPrint();