chiark / gitweb /
scaffold-clamp: wip straphook
[reprap-play.git] / fairphone-case.scad
index d83c53474f4b548972d672539cecb5210bf28c8b..2998b54d82d5b98df037a769a11706f42e0b1018 100644 (file)
@@ -210,8 +210,7 @@ lid_gap_z = 0.25;
 lid_lip = 1.75;
 lid_edgepart_width = 5.0;
 lid_buttoncover_thick = 1.3;
-
-catch_slop = 0.50;
+lid_buttoncover_reinf = 0.65;
 
 foldover_gap = 0.50;
 foldover_lever_gap = 0.50;
@@ -253,18 +252,9 @@ hinge_r_arms_gap = 0.55;
 
 rearspeaker_gap    = [ 2.0, 2.0 ]; // each side
 
-catch_len = 7.5;
-catch_width = 15;
-catch_thickness = 1.3;
-catch_side_gap = 0.75; // each side
-
-catch_depth = 1.25;
-catch_height = 0.35;
-catch_finger_height = 1.5;
-catch_finger_depth = 2.5;
-catch_catch_slope = 0.25;
-
-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
@@ -281,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];
@@ -427,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 ];
+// 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
 
@@ -728,29 +705,30 @@ module ButtonPlan(l, deep, cut){
   }
 }
 
-module CatchCatchProfile(){
-  hull(){
-    for (c=[ cppR, cppQ ])
-      circleat(c, cp_rQ);
+module ButtonCoverReinf(){ ////toplevel
+  minkowski(){
+    rotate([90,0,0])
+      linear_extrude(height=0.01)
+      intersection(){
+        ButtonCoverProfile();
+       translate([bppJ[0] + 0.1, -50]) mirror([1,0])
+         square([100,100]);
+    }
+    mirror([0,0,1]) linear_extrude(height=0.01) intersection(){
+      circle(r= lid_buttoncover_reinf);
+      translate([-20,0]) square(40, center=true);
+    }
   }
-  hull(){
-    circleat(lpp12, lp_r12);
-    circleat(lpp12 + [5,0], lp_r12);
-    rectfromto(cppP, cppP + [5,0.1]);
+}
+
+module ThumbRecessCutProfile(){
+  difference(){
+    polygon([ cppA + [-10,0],
+             cppB + [-10,0],
+             cppB,
+             cppA ]);
+    circleat(epp1, r=case_th_side);
   }
-  polygon([cppJ, cppS, cppT, cppU, cppV, cppQ, cppR]);
-}
-
-module CatchCutProfile(){
-  polygon([ cppB,
-           cppA,
-           cppD,
-           cppF,
-           cppF + [0,-10],
-           cppF + [-10,-10],
-           lpp12 + [-10,0],
-           lpp12 + [10,0]
-           ]);
 }
 
 module Flip_rhs(yn=[0,1]) {
@@ -975,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])
@@ -988,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);
          }
        }
       }
@@ -1177,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();
 
@@ -1196,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)
@@ -1257,10 +1237,17 @@ module Lid(){ ////toplevel
            translate([0,0,-10])
            linear_extrude(height= 20)
            ButtonPlan($button_l, 1,0);
-         rotate([90,0,0])
-            translate([0,0,-100])
-           linear_extrude(height= 200)
-           ButtonCoverProfile();
+         union(){
+           rotate([90,0,0])
+             translate([0,0,-100])
+             linear_extrude(height= 200)
+             ButtonCoverProfile();
+           hull()
+             for (y= [-1,+1] * (($button_l + button_l_fudge)/2
+                                - lid_buttoncover_reinf))
+               translate([0,y,0])
+                 ButtonCoverReinf();
+         }
        }
       }
 
@@ -1269,10 +1256,6 @@ module Lid(){ ////toplevel
        LidEdgeProfile();
        HingeLidProfile();
       }
-
-      // catch
-      CatchPortion(0, lpp12[1])
-       CatchCatchProfile();
     }
     Struts(lpp10[0] + strut_min_at_end, lpp13[1], -case_th_lid);
 
@@ -1742,9 +1725,9 @@ module DemoProfiles(){ ////toplevel
   translate([20,-30]) {
     %EdgeProfile();
     %LidEdgeProfile();
-    //translate([0,0,1]) CatchCutProfile();
-    color("blue") CatchCatchProfile();
-    color("red") difference(){ EdgeProfile(); CatchCutProfile(); }
+    //translate([0,0,1]) ThumbRecessCutProfile();
+    translate([0,0,+1]) color("red")
+      difference(){ EdgeProfile(); ThumbRecessCutProfile(); }
   }
 
   translate([40,-30]) {