chiark / gitweb /
fairphone-case: DemoHinge: translate so default view is of hinges
[reprap-play.git] / fairphone-case.scad
index 04c4d61b93c93c6c11f5717a98d86a11bedca2a1..43e847eac2c38680a402368d6ea5008475d2db61 100644 (file)
@@ -79,12 +79,18 @@ foldover_lever_gap = 0.50;
 hingescrew_shaft_dia = 2.0 + 0.25; // M2 x 12mm machine screw
 hingescrew_shaft_len = 12;
 hingescrew_nut_thick = 1.93 + 0.20; // incl. washer
-hingescrew_nut_dia = 4.72 + 0.50; // washer, actually
+hingescrew_nut_access_dia = 4.72 + 0.50;
+// ^ washer is 4.72 dia
+//   also, want to get pliers or tiny spanner in to do up locknut
+hingescrew_nut_across = 3.92 + 0.25; // incl. slop around recess slop
+hingescrew_nut_thick_real = 1.93;
 hingescrew_head_th = 1.38 + 0.75;
 hingescrew_head_dia = 3.92;
 lever_cover_th = 0.75;
 hingemount_th = 2.5;
 
+hingescrew_nut_recess_portion = 2/3; // portion of nut in recess
+
 $fa = 5;
 $fs = 0.1;
 
@@ -194,7 +200,7 @@ bppV = lpp11;
 bppW = lpp10;
 
 // hinge plan
-hp_rn = hingescrew_nut_dia/2;
+hp_rn = hingescrew_nut_access_dia/2;
 hp_r2_min = hp_rn + lever_cover_th;
 hp_rs = hingescrew_shaft_dia/2;
 hp_r1_min = hp_rs + hingemount_th;
@@ -227,8 +233,20 @@ hex21 = hex20 + hingescrew_portion_len;
 hex22 = hex21 + hinge_x_gap;
 hex23 = hex22 + hingescrew_portion_len
   - hingescrew_nut_thick; // bodge, need to divvy this up more sensibly
+hex26 = hex23 + hingescrew_nut_thick_real * 2/3;
 hex24 = hex20 + hingescrew_shaft_len + hinge_x_postscrew_gap;
-//echo(hex20, hex21, hex22, hex23, hex24);
+
+echo(hex20, hex21, hex22, hex23, hex24);
+//  6, 10.8725, 10.9975, 13.74, 18.75
+module chk(act,exp) {
+  if (abs(act-exp) > 1e-9) echo("WRONG", act, exp);
+  else echo("ok", act);
+}
+chk(hex20, 6);
+chk(hex21, 10.8725);
+chk(hex22, 10.9975);
+chk(hex23, 13.74);
+chk(hex24, 18.75);
 //echo(hingescrew_portion_len);
 
 // catch
@@ -593,6 +611,7 @@ module HingeLeverInnerProfile(){
     c = s > 0 ? hppT : hppB;
     translate(c)
       mirror([0,0,s>0])
+      rotate(s<0 ? -40 : 0)
       hull()
       for (x=[-20,20])
        for (y=[0, s * 10])
@@ -601,10 +620,17 @@ module HingeLeverInnerProfile(){
   }
 }
 
-module Flip_hinge(){
+module HingeLeverNutProfile(){
+  for (c= [hppB, hppT]) {
+    translate(c)
+      circle($fn=6, r= 0.5 * hingescrew_nut_across / cos(30));
+  }
+}
+
+module Flip_hinge(doflip=1){
   hinge_origin = [0, -(phone_height - hppB[0]), hppB[1]];
   translate(hinge_origin)
-    rotate([180,0,0])
+    rotate([doflip*180,0,0])
     translate(-hinge_origin)
     children();
 }
@@ -890,9 +916,13 @@ module HingeLever(){ ////toplevel
       HingeLeverOuterProfile();
 
     // space for the screws
-    HingePortion(hex23, hex24)
+    HingePortion(hex26, hex24)
       HingeLeverInnerProfile();
 
+    // recesses for the nuts
+    HingePortion(hex23, hex26+1)
+      HingeLeverNutProfile();
+
     // bores for the screws
     HingeScrews();
 
@@ -903,7 +933,8 @@ module HingeLever(){ ////toplevel
 }
 
 module HingeLeverPrint(){ ////toplevel
-  rotate([90,0,0])
+  rotate([-90,0,0])
+    translate([-phone_width/2, phone_height, 0])
     HingeLever();
 }
 
@@ -1133,9 +1164,11 @@ module DemoHingedFrame(){ ///toplevel
 }
 
 module DemoHinge(){ ////toplevel
-  DemoFrame();
-  translate([0,0, -hp_k*3])
-    DemoHingedFrame();
+  translate([ -0.5*phone_width, phone_height, hp_k*3 ]) {
+    DemoFrame();
+    translate([0,0, -hp_k*3])
+      DemoHingedFrame();
+  }
 }
 
 module DemoProfiles(){ ////toplevel
@@ -1169,7 +1202,25 @@ module DemoProfiles(){ ////toplevel
     color("blue") HingeLidProfile();
     color("red")  HingeBaseProfile();
     color("black") translate([0,0,-2]) HingeLeverOuterProfile();
-    color("orange") translate([0,0,-1]) HingeLeverInnerProfile();
+  }
+
+  for (f=[0,1]) {
+    translate([-30, -60 + 30*f]) {
+      translate([0,0,-4]) EdgeProfile();
+      %translate([0,0,-10]) HingeBaseProfile();
+      translate([0,-2] * f * hp_k) {
+       translate([0,0,-4]) LidEdgeProfile();
+       %translate([0,0,-10]) %HingeLidProfile();
+      }
+      translate(+hppB) rotate([0,0,180*f]) translate(-hppB) {
+       translate([0,0,-2]) color("black") HingeLeverOuterProfile(); 
+       translate([0,0,0]) color("red") difference(){
+         HingeLeverOuterProfile();
+         HingeLeverInnerProfile();
+       }
+       translate([0,0,3]) color("yellow") HingeLeverNutProfile();
+      }
+    }
   }
 
   translate([20,-30]) {