chiark / gitweb /
fairphone-case: prop: add recess to lid
[reprap-play.git] / fairphone-case.scad
index a4fc59fab1efa35304efbc36f758338cef5873db..5ee522e930b6db14b3591d6f8f2a5c94d094c5da 100644 (file)
@@ -121,7 +121,7 @@ prop_main_width = 3;
 prop_side_gap = 0.75; // each side
 prop_lidrecess_behind = 0.75;
 prop_caserecess_behind = 0.75;
-prop_caserecess_taper = 0.35; // one side only
+prop_caserecess_taper = 0.45; // one side only
 prop_prop_gap = 0.5;
 prop_prong_heel_slope = 0.5;
 
@@ -622,7 +622,7 @@ module CaseBase(){
     EdgeProfile();
 }
 
-module PropProfile(gamma, cut=0){ ////toplevel
+module PropProfile(gamma, cut=0, rot=0){ ////toplevel
   // https://en.wikipedia.org/wiki/Solution_of_triangles#Two_sides_and_the_included_angle_given_(SAS)
   k = hp_k;
   p = phone_height - prlp10[0] - hppB[0];
@@ -636,7 +636,7 @@ module PropProfile(gamma, cut=0){ ////toplevel
 
   theta = 90 - alpha;
   beta = 180 - alpha - gamma;
-  psi = 90 - beta + atan(prop_caserecess_taper);
+  psi = 90 - beta;
 
   echo("abc", a,b,c);
 
@@ -683,13 +683,13 @@ module PropProfile(gamma, cut=0){ ////toplevel
       }
       rectfromto(prpp12 + [0,-0.1], prpp3);
     }
-    %hull(){
+    hull(){
       circleat(prpp1, prp_r1);
       rectfromto(prpp12 + [0,-0.1], prpp3);
     }
   }
   // main shaft
-  rotate([0,0, cut ? -theta : 0]){
+  rotate([0,0, rot*-theta]){
     hull(){
       extra = cut ? prop_recess_slop : 0;
       rectfromto(prpp6, prpp9);
@@ -699,6 +699,11 @@ module PropProfile(gamma, cut=0){ ////toplevel
   }
 }
 
+module PropAggregateProfile(){
+  for (angle = prop_angles)
+    PropProfile(angle, 0,0);
+}
+
 module Case(){ ////toplevel
   difference(){
     union(){
@@ -844,6 +849,15 @@ module Lid(){ ////toplevel
 
     // screw holes in the hinge arms
     HingeScrews();
+
+    // prop recess
+    translate([prop_x_pos, -prlp10[0], prlp10[1]])
+      rotate([90,0,90])
+      linextr(-prop_recess_hw, +prop_recess_hw)
+      mirror([1,0])
+      hull()
+      for (pa = prop_angles)
+       PropProfile(pa, 1,1);
   }
 }
 
@@ -1109,12 +1123,15 @@ module DemoProfiles(){ ////toplevel
 
   translate([40,-30]) {
     difference(){
-      %LidEdgeProfile();
-      //translate(prlp10)
-       //PropProfile(10, 1);
+      LidEdgeProfile();
+      translate(prlp10)
+       PropProfile(10, 1, 0);
     }
     translate(prlp10)
-      PropProfile(60, 0);
+      PropProfile(15, 0);
+  }
+  translate([60,-30]) {
+    PropAggregateProfile();
   }
 }