chiark / gitweb /
maglite-holder: compute scaling and centre translation factor from fig
[reprap-play.git] / maglite-holder.scad
index 6fc7977de1399af065e14c652ae57917a605b74e..459b1df45adc21ced05c43d05f08d160aff3ad92 100644 (file)
@@ -13,7 +13,7 @@ torch_clear_below = 10;
 stem_width = 20;
 stem_thick = 8;
 
-torch_recess = 14;
+torch_recess = 11;
 arm_width = 10;
 block_thick = 15;
 
@@ -26,10 +26,21 @@ hole_slot = 5;
 
 slop = 2; // total, not each side
 
-$fa=5;
+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
+
+//$fa=5;
 
 // calculated
 
+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 ];
@@ -48,7 +59,10 @@ 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);
     }
@@ -112,7 +126,12 @@ module Bracket(){
 }
 
 module Demo(){
-    %TorchOrig();
+  color("red")
+    translate([0, -torch_out, 0])
+    TorchOrig();
+  color("blue")
+    translate([0, -torch_out, above])
+    cylinder(r=torch_big_dia/2, h=1);
   Bracket();
 }