// -*- C -*- dxf_off = [ -40, -85 ]; torch_lit_dia = 37.5; 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 = 4; torch_recess = 15; arm_width = 10; block_thick = 30; //$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; block_width = arm_width*2 + torch_big_dia; block_out = torch_out + torch_big_dia/sqrt(2); module Torch(){ 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); } } module Bracket(){ difference(){ mirror([0,1,0]) translate([-stem_width/2, 0, -stem_len]) cube([stem_width, stem_thick, stem_len]); } difference(){ mirror([0,1,0]) translate([-block_width/2, 0, -block_thick]) cube([block_width, block_out, block_thick]); } for (out=[ torch_out, torch_out + block_out*2 ]) translate([ 0, -out, -torch_recess ]) Torch(); } module Demo(){ translate([0, -torch_out, 0]) %Torch(); Bracket(); } Demo();