chiark / gitweb /
fairphone-case: recesses for the hinge nuts
[reprap-play.git] / fairphone-case.scad
index 2d4269f77caf4f1f292b0b597ccbe1ed7e2849fb..392d88d28b4f0887f621c7dd4a18c0d0d160dde0 100644 (file)
@@ -80,11 +80,15 @@ 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_across = 3.92 + 0.25;
+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;
 
@@ -227,6 +231,7 @@ 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(hingescrew_portion_len);
@@ -589,19 +594,30 @@ module HingeLeverOuterProfile(){
 }
 
 module HingeLeverInnerProfile(){
-  for (c = [hppT, hppB]) {
-    hull()
+  for (s = [-1,+1]) {
+    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, c[1] - hppM[1]])
+       for (y=[0, s * 10])
          translate([x,y])
-           circleat(c, hp_rn);
+           circle(hp_rn);
+  }
+}
+
+module HingeLeverNutProfile(){
+  for (c= [hppB, hppT]) {
+    translate(c)
+      circle($fn=6, r= 0.5 * hingescrew_nut_across / cos(30));
   }
 }
 
-module Flip_hinge(){
+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();
 }
@@ -887,9 +903,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();
 
@@ -900,7 +920,8 @@ module HingeLever(){ ////toplevel
 }
 
 module HingeLeverPrint(){ ////toplevel
-  rotate([90,0,0])
+  rotate([-90,0,0])
+    translate([-phone_width/2, phone_height, 0])
     HingeLever();
 }
 
@@ -1166,7 +1187,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]) {