chiark / gitweb /
fairphone-case: wip catch
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Jan 2018 23:36:38 +0000 (23:36 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Jan 2018 23:36:38 +0000 (23:36 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
fairphone-case.scad

index 67218c745eb45aea782551740100bd4031929fd4..3d73027f64ac493c586c9bf99dc75bd48d564587 100644 (file)
@@ -62,6 +62,8 @@ lid_gap_x = 0.25;
 lid_gap_z = 0.25;
 lid_lip = 1.75;
 
+catch_slop = 0.25;
+
 foldover_gap = 0.50;
 foldover_lever_gap = 0.50;
 
@@ -91,6 +93,13 @@ hinge_r_arms_gap = 0.55;
 
 rearspeaker_gap    = [ 1.0, 1.0 ]; // each side
 
+catch_len = 9;
+
+catch_depth = 0.75;
+catch_height = 0.35;
+catch_finger_height = 1.5;
+catch_finger_depth = 5.5;
+
 // ---------- calculated ----------
 
 phone_width =  (phone + bumper*2)[0];
@@ -182,6 +191,27 @@ hex24 = hex20 + hingescrew_shaft_len + hinge_x_postscrew_gap;
 echo(hex20, hex21, hex22, hex23, hex24);
 echo(hingescrew_portion_len);
 
+// catch
+
+cppJ = bppJ;
+cppA = cppJ + [lid_gap_x, -lid_gap_z];
+cppB = [ epp0[0], cppA[1] ];
+cppP = [ epp4[0], cppJ[1] ];
+
+cppS = cppJ + [0,-1] * catch_len;
+cppD = [ cppA[0], cppS[1] + catch_slop ];
+cppC = [ cppB[0], cppD[1] ];
+cppT = cppS + [1,0] * catch_depth;
+cppU = cppT + [0,-1] * catch_height;
+cppV = [ cppS[0], cppU[1] - catch_height ];
+
+cppR = 0.5*(cppP + cppJ);
+
+cp_rQ = 0.5 * (cppJ[0] - cppP[0]);
+cppQ = [ cppR[0],
+        cppV[1] - (catch_finger_height - cp_rQ) ];
+cppF = [ cppV[0] + catch_finger_depth, cppC[1] ];
+
 // ---------- modules ----------
 
 module KeeperProfile(slant=0){
@@ -275,6 +305,19 @@ module ButtonPlan(l, deep, cut){
   }
 }
 
+module CatchCatchProfile(){
+  hull(){
+    for (c=[ cppR, cppQ ])
+      circleat(c, cp_rQ);
+  }
+  hull(){
+    circleat(lpp12, lp_r12);
+    circleat(lpp12 + [5,0], lp_r12);
+    rectfromto(cppP, cppP + [5,0.1]);
+  }
+  polygon([cppJ, cppS, cppT, cppU, cppV, cppQ, cppR]);
+}
+
 module Flip_rhs(yn=[0,1]) {
   for ($rhsflip=yn) {
     translate([phone_width/2, 0, 0])
@@ -838,6 +881,12 @@ module DemoProfiles(){ ////toplevel
     color("black") translate([0,0,-2]) HingeLeverOuterProfile();
     color("orange") translate([0,0,-1]) HingeLeverInnerProfile();
   }
+
+  translate([20,-30]) {
+    %EdgeProfile();
+    %LidEdgeProfile();
+    color("blue") CatchCatchProfile();
+  }
 }
 
 //EdgeProfile();