chiark / gitweb /
fairphone-case: TestLidTopAperturesPrint: make frameish
[reprap-play.git] / fairphone-case.scad
index 5db4a92a0d2a40cfaba3c5ec742ff6b296e84fcc..678ea67cea016a48739b4046521647cdbf232690 100644 (file)
@@ -40,8 +40,8 @@ camera_pos_br = [ 22.300, 37.600 ]; // tl/br as seen from back
 jack_pos = [ 13.83, 8.485 ];
 jack_dia = 10.64 + .5; // some jack I had lying around
 
-led_pos = [ 13.98, 9.18 ];
-led_aperture = 5;
+led_pos = [ 13.98, 10.00 ];
+led_aperture = 9;
 led_window_ledge = 0.75; // each side
 
 noisecancelmic_pos = [ 19.54, 7.37 ];   // from rhs
@@ -349,7 +349,7 @@ $prp_r10 = prl_r10;
 
 module AdhocMultiprintFrame(phase, z0, zs) {
   // from z0 to z0 + zs*layer
-  extra = phase * 0.65 + 5;
+  extra = phase * (initial_layer_width + multicolour_gap) + 5;
   xextra = extra + -epp4[0];
   xrange = [ 0, phone_width ] + [-1,+1] * xextra;
   yextra = extra + -epp4[0];
@@ -407,7 +407,8 @@ module LidEdgeProfile(){
 module ButtonCoverProfile(){
   intersection(){
     polygon(concat([ bppM, bppP, bppO, bppJ ],
-                  (enable_support ? [ bppU, bppV, bppW ] : []),
+                  (enable_support && !$button_suppress_over_keeper
+                   ? [ bppU, bppV, bppW ] : []),
                   [ bppL, bppK ]));
     hull(){
       EdgeProfile();
@@ -553,12 +554,13 @@ module CaseAperture(pos, dia, $fn) {
             h = 60);
 }
 
-module SideButton(y, y_ref_sign, l){
+module SideButton(y, y_ref_sign, l, suppress_over_keeper=0){
   // y_ref_sign:
   //   +1  measured from top    of actual phone to top    of button
   //   -1  measured from bottom of actual phone to bottom of button
   //    0  y is centre of button in coordinate system
   $button_l= l;
+  $button_suppress_over_keeper= suppress_over_keeper;
   eff_y = y_ref_sign > 0 ?         -bumper [1] -y -l/2 :
          y_ref_sign < 0 ? (-phone -bumper)[1] +y +l/2 :
          y;
@@ -573,9 +575,9 @@ module LidButtonishLeg(y, y_ref_sign, l=buttonishleg_default_l_is_fudge) {
 }
 
 module Buttons(){
-  Flip_rhs(1) SideButton(15.580, +1, 8.9) children(); // power
-  Flip_rhs(1) SideButton(48.700, -1, 8.920) children(); // camera
-  Flip_rhs(0) SideButton(30.800, +1, 21.96) children(); // volume
+  Flip_rhs(1) SideButton(15.580, +1, 8.9     ) children(); // power
+  Flip_rhs(1) SideButton(48.700, -1, 8.920   ) children(); // camera
+  Flip_rhs(0) SideButton(30.800, +1, 21.96, 1) children(); // volume
   Flip_rhs(   ) LidButtonishLeg(14, -1) children();
 //  Flip_rhs(0) LidButtonishLeg(20, +1, 20) children();
 }
@@ -879,7 +881,7 @@ module Case(){ ////toplevel
                translate([phone_width/2, -400, kppe[1]])
                mirror([1-abs($rhsflip - keeper_side),0,0])
                cube([400, 800, 50]);
-           if (enable_support)
+           if (enable_support && !$button_suppress_over_keeper)
              rotate([-90,90,0])
              translate([-400, -400, kppd[1]])
                mirror([0,0,1])
@@ -1019,7 +1021,7 @@ module LidWindow(){ ////toplevel
   translate([led_pos[0], -led_pos[1], lpp13[1]])
     mirror([0,0,1])
     cylinder(r= nla_r1, h=nla_t);
-  LidAdhocMultiprintFrame(0, lpp13[1], -1);
+  LidAdhocMultiprintFrame(0);
 }
 
 module LidWindowPrint(){ ////toplevel
@@ -1163,7 +1165,7 @@ module TestSelectFrame(){
 module TestSelectLidFrame(){
   TestSelectFrame();
   translate([led_pos[0], -led_pos[1], -50])
-    cylinder(r= nla_r2+2, h=100);
+    cylinder(r= nla_r2+3, h=100);
 }
 
 module TestFrameCase(){ ////toplevel
@@ -1177,12 +1179,33 @@ module TestFrameCase(){ ////toplevel
   }
 }
 
+module TestSelectTopApertures(){
+  translate([-100, -35, -100])
+    cube([400, 100, 200]);
+  LidAdhocMultiprintFrame(0);
+  LidAdhocMultiprintFrame(1);
+}
+
 module TestTopApertures(){ ////toplevel
   intersection(){
     Case();
     TestSelectFrame();
-    translate([-100, -35, -100])
-      cube([400, 100, 200]);
+    TestSelectTopApertures();
+  }
+}
+
+module TestLidTopAperturesPrint(){ ////toplevel
+  rotate([0,180,0]) intersection(){
+    Lid();
+    TestSelectLidFrame();
+    TestSelectTopApertures();
+  }
+}
+
+module TestLidWindowTopAperturesPrint(){ ////toplevel
+  rotate([0,180,0]) intersection(){
+    LidWindow();
+    TestSelectTopApertures();
   }
 }
 
@@ -1257,6 +1280,17 @@ module DemoPropAngles(){ ////toplevel
     DemoPropAngle(prop_angles[i]);
 }
 
+module DemoSelectAdhocLeftRight(right=0) {
+  translate([phone_width/2, -400, -100]) // , -15, -100  to cross-section
+    mirror([1-right, 0,0])
+    cube([400, 800, 200]);
+}
+
+module DemoLeft(){ ////toplevel
+  color("red")  intersection(){ Case(); DemoSelectAdhocLeftRight(); }
+  color("blue") intersection(){ Lid();  DemoSelectAdhocLeftRight(); }
+}
+
 module DemoFrame(){ ////toplevel
   color("red") TestFrameCase();
   color("blue") intersection(){ Lid(); TestSelectLidFrame(); }