chiark / gitweb /
scaffold-clamp: wip straphook
[reprap-play.git] / fairphone-case.scad
index 76cb859175f1e150787b2b7d62701a2d43948cac..2998b54d82d5b98df037a769a11706f42e0b1018 100644 (file)
@@ -252,21 +252,9 @@ hinge_r_arms_gap = 0.55;
 
 rearspeaker_gap    = [ 2.0, 2.0 ]; // each side
 
-catch_slop = -0.75;
-
-catch_len = 4.5;
-catch_width = 15;
-catch_thickness = 1.3;
-catch_side_gap = 0.75; // each side
-
-catch_depth = 0.75;
-catch_height = 0.35;
-catch_finger_height = 1.5;
-catch_finger_depth = 2.5;
-catch_catch_slope = 2.00;
-catch_close_slope = 3.00;
-
-catch_topcurve_r = 5.0;
+thumbrecess_depth = 1.3;
+thumbrecess_width = 16.5;
+thumbrecess_topcurve_r = 5.0;
 
 prop_recess_under = 0.50;
 prop_recess_slop = 0.200; // each side
@@ -283,6 +271,9 @@ prop_prong_heel_slope = 0.5;
 
 lid_fold_clearance_antislop = 0.5;
 
+$button_leg_only = false;
+$suppress_forward_holes = false;
+
 // ---------- calculated ----------
 
 phone_width =  (phone + bumper*2)[0];
@@ -429,26 +420,10 @@ lid_fold_clearance_skew =
 
 echo("SK",lid_fold_clearance_skew);
 
-// catch
-
-cppJ = [ epp4[0] + catch_thickness, lpp10[1] ];
-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, -catch_catch_slope] * catch_depth;
-cppU = cppT + [0,-1] * catch_height;
-cppV = [ cppS[0], cppU[1] - catch_depth * catch_close_slope ];
+// thumb recess (used to be "catch" hence cpp*
 
-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] ];
+cppA = epp4 + [thumbrecess_depth, 0];
+cppB = [ cppA[0], epp1[1] ];
 
 // lanyard
 
@@ -746,16 +721,14 @@ module ButtonCoverReinf(){ ////toplevel
   }
 }
 
-module CatchCutProfile(){
-  polygon([ cppB,
-           cppA,
-           cppD,
-           cppF,
-           cppF + [0,-10],
-           cppF + [-10,-10],
-           lpp12 + [-10,0],
-           lpp12 + [10,0]
-           ]);
+module ThumbRecessCutProfile(){
+  difference(){
+    polygon([ cppA + [-10,0],
+             cppB + [-10,0],
+             cppB,
+             cppA ]);
+    circleat(epp1, r=case_th_side);
+  }
 }
 
 module Flip_rhs(yn=[0,1]) {
@@ -980,9 +953,9 @@ module HingePortion(x0,x1){
     children();
 }
 
-module CatchPortion(xwidth, ztop){
-  width = catch_width + xwidth;
-  w = width + catch_topcurve_r*2 + 1;
+module ThumbRecessApply(ztop){
+  width = thumbrecess_width;
+  w = width + thumbrecess_topcurve_r*2 + 1;
   translate([phone_width/2, 0,0]){
     difference(){
       rotate([90,0,-90])
@@ -993,10 +966,10 @@ module CatchPortion(xwidth, ztop){
        linear_extrude(height=100){
        for (m=[0,1]) mirror([m,0,0]) {
          hull(){
-           translate([w/2, ztop - catch_topcurve_r])
-             circle(catch_topcurve_r);
+           translate([w/2, ztop - thumbrecess_topcurve_r])
+             circle(thumbrecess_topcurve_r);
            translate([w/2, -50])
-             square(catch_topcurve_r*2, center=true);
+             square(thumbrecess_topcurve_r*2, center=true);
          }
        }
       }
@@ -1182,9 +1155,11 @@ module Case(){ ////toplevel
     }
 
     // apertures along top edge
-    CaseAperture(jack_pos, jack_dia, 8);
-    Flip_rhs(1)
-      CaseAperture(noisecancelmic_pos, noisecancelmic_dia, 8);
+    if (!$suppress_forward_holes) {
+      CaseAperture(jack_pos, jack_dia, 8);
+      Flip_rhs(1)
+       CaseAperture(noisecancelmic_pos, noisecancelmic_dia, 8);
+    }
 
     OrdinaryRearApertures();
 
@@ -1201,9 +1176,9 @@ module Case(){ ////toplevel
     // screw holes in the hinge arms
     HingeScrews();
 
-    // catch striker
-    CatchPortion(catch_side_gap*2, epp4[1])
-      CatchCutProfile();
+    // thumb recess
+    ThumbRecessApply(epp4[1])
+      ThumbRecessCutProfile();
 
     // lanyard
     Flip_bot(1)
@@ -1750,9 +1725,9 @@ module DemoProfiles(){ ////toplevel
   translate([20,-30]) {
     %EdgeProfile();
     %LidEdgeProfile();
-    //translate([0,0,1]) CatchCutProfile();
+    //translate([0,0,1]) ThumbRecessCutProfile();
     translate([0,0,+1]) color("red")
-      difference(){ EdgeProfile(); CatchCutProfile(); }
+      difference(){ EdgeProfile(); ThumbRecessCutProfile(); }
   }
 
   translate([40,-30]) {