chiark / gitweb /
fairphone4-case: test frame horizontal struts
[reprap-play.git] / fairphone4-case.scad
index 3abf91f23febe9344e3189e5447d713c0a0d8e95..75ff79edb7b41c780d335d12cb5aecc85144a670 100644 (file)
@@ -149,35 +149,38 @@ button_cutout_depth = 9;
 
 phone_edge_thick = 11.25;
 
-// xxx this is all wrong
-camera_pos_tl = [  6.450, 12.750 ]; // measured from tl corner
-camera_pos_br = [ 22.300, 37.600 ]; // tl/br as seen from back
+camera_pos_tl = [  6.600,  6.750 ]; // from tl corner (as seen from back)
+camera_edge_rad = 9.750;
+camera_sz = 32.920 + .750;
 
 // this is disabled, FP4 doesn't have one
 jack_pos = [ 13.83, 8.485 ];
 jack_dia = 10.64 + .5; // some jack I had lying around
 
 // this led stuff, is irrelevant, we have disabled it as it doesn't have one
-led_pos = [ 13.98, 10.00 ];
+led_pos = []; // [ 13.98, 10.00 ];
 led_aperture = 9;
 led_window_ledge = 0.75; // each side
 
-noisecancelmic_pos = [ 15.08, 4.35 ];   // from rhs, from top edge
+noisecancelmic_pos = [ 15.08 + .720, 4.35 ];   // from rhs, from top edge
 noisecancelmic_dia = 4.00;
 
-lhshole_pos = [ phone[1]/2, 4.35 ];
+mainmic_pos = [ 21.5, 3.45 ];   // from lhs, from top edge
+mainmic_dia = 4.00;
 
-// fingerpushhole_dias = []; xxx what was this
-fingerpushhole_dias = [ 15, 18 ];
+lhshole_pos = [ phone[1]/2 - 0.80, 4.35 ];
+
+// fingerpushhole_dias = [];
+fingerpushhole_dias = [ 15, 18 ]; // this is for testing
 
 lanyard_half_dia = 1.15;
 lanyard_entry_rel_breadth = 2;
 lanyard_channel_len = 8;
-rearspeaker_pos_bl = [ 12.64, 18.72 ];
-rearspeaker_size   = [  3.76,  7.36 ];
+//rearspeaker_pos_bl = [ 12.64, 18.72 ];
+//rearspeaker_size   = [  3.76,  7.36 ];
 
-bottomspeaker_size = [ 11.35, 1.40 ] + [1,1] * 1.0;
-bottomspeaker_pos = [ 19.45, 4.82 ];
+bottomspeaker_size = [ 12.35, 1.40 ] + [1,1] * 0.5;
+bottomspeaker_pos = [ 18.05, 5.52 ]; // from rhs, from top
 
 microusb_above = 1.64 - 0.25;
 microusb_below = 2.42;
@@ -220,8 +223,6 @@ lid_buttoncover_reinf = 0.65;
 foldover_gap = 0.50;
 foldover_lever_gap = 0.50;
 
-// xxx replace hinge screw with nail plan
-
 // properties of the hinge fasteners
 hingescrew_shaft_dia = 2.0 + 0.25; // M2 x 12mm machine screw
 hingescrew_shaft_len = 12;
@@ -258,8 +259,8 @@ hinge_x_arms_gap = 0.35;
 hinge_r_arms_gap = 0.55;
 hinge_over_nut_plate = 1.0;
 
-// xxx there isn't one of these, speaker is by hinge
-rearspeaker_gap    = [ 2.0, 2.0 ]; // each side
+// there isn't one of these, speaker is by hinge
+// rearspeaker_gap    = [ 2.0, 2.0 ]; // each side
 
 thumbrecess_depth = 1.3;
 thumbrecess_width = 16.5;
@@ -308,9 +309,6 @@ lid_buttoncover_overlap = case_th_lip + keeper_gap_z_top;
 //prop_recess_width = prop_main_th / cos(prop_max_angle) + prop_backfwd_gap;
 
 
-//lid_lip_overlap_width xxx bad name = ;
-//lid_lip_inner_slope = [ 5, 5 ]; // xxx
-
 epp0 = [0,0];
 epp1 = [0, -phone_edge_thick];
 epp2i = epp1; // conflated for FP4
@@ -411,17 +409,17 @@ hex23 = hex27 - (hingescrew_nut_thick*2
                 + hingescrew_fasteners_extra_thick);
 hex26 = hex23 + hingescrew_nut_thick * 2/3;
 
-echo(hex20, hex21, hex22, hex23, hex24);
-//  6, 10.8725, 10.9975, 13.74, 18.75
-module chk(act,exp) {
-  if (abs(act-exp) > 1e-9) echo("WRONG", act, exp);
-  else echo("ok", act);
-}
-chk(hex20, 6);
-chk(hex21, 10.8725);
-chk(hex22, 10.9975);
-chk(hex23, 13.74);
-chk(hex24, 18.75);
+//echo(hex20, hex21, hex22, hex23, hex24);
+////  6, 10.8725, 10.9975, 13.74, 18.75
+//module chk(act,exp) {
+//  if (abs(act-exp) > 1e-9) echo("WRONG", act, exp);
+//  else echo("ok", act);
+//}
+//chk(hex20, 6);
+//chk(hex21, 10.8725);
+//chk(hex22, 10.9975);
+//chk(hex23, 13.74);
+//chk(hex24, 18.75);
 
 lid_fold_clearance_skew =
   (lpp10[1] - hppB[1]) /
@@ -832,7 +830,6 @@ module Buttons(){
   Flip_rhs(1) LidButtonishLeg(14, -1) children();
   Flip_rhs(0) LidButtonishLeg(21, -1) children();
   Flip_rhs(0) LidButtonishLeg(14, +1) children();
-  // xxx need hole for whatever that hole is on lhs
 }
 
 module Struts(x_start, z_min, th){
@@ -873,6 +870,9 @@ module MicroUSBEtc(){
 }
 
 module OrdinaryBottomEdgeApertures(){
+  Flip_bot(1)
+    CaseAperture(mainmic_pos, mainmic_dia, 8);
+
   Flip_bot(1) Flip_rhs(1) {
     linextr_y_xz(-epp2i[0], 60)
       hull()
@@ -888,13 +888,15 @@ module OrdinaryBottomEdgeApertures(){
 
 module OrdinaryRearApertures(){
   // rear speaker
-  OrdinaryRearAperture(1,1, rearspeaker_pos_bl)
-    rectfromto(-rearspeaker_gap,
-              rearspeaker_size + rearspeaker_gap);
+  //  OrdinaryRearAperture(1,1, rearspeaker_pos_bl)
+  //    rectfromto(-rearspeaker_gap,
+  //          rearspeaker_size + rearspeaker_gap);
+}
 
+module NotInTestFrameRearApertures(){
   // finger hole to remove phone
   if (len(fingerpushhole_dias))
-    OrdinaryRearAperture(1,0, [ fingerpushhole_dias[0]/2 + epp2i[0],
+    OrdinaryRearAperture(0,0, [ fingerpushhole_dias[0] + epp2i[0],
                                phone[1]/2 ])
     scale(fingerpushhole_dias)
     circle(r= 0.5 );
@@ -903,10 +905,19 @@ module OrdinaryRearApertures(){
 module RearCameraAperture(){
   Flip_rhs(1)
     mirror([0, 0, 1])
+    translate([0,0,0])
+    hull() // there is some kind of bug if hull() is done in 2D here!
     linear_extrude(height = 20)
     mirror([0, 1, 0])
     translate(bumper)
-    rectfromto(camera_pos_tl, camera_pos_br);
+    translate(camera_pos_tl)
+    for (xy = [ [0,0], [0,1], [1,0] ]) {
+      translate(
+         camera_edge_rad * [1,1] +
+         xy * (camera_sz - camera_edge_rad * 2)
+               )
+       circle(r = camera_edge_rad);
+    }
 }
 
 module HingeLidProfile(){
@@ -1189,6 +1200,7 @@ module Case(){ ////toplevel
     OrdinaryBottomEdgeApertures();
 
     OrdinaryRearApertures();
+    NotInTestFrameRearApertures();
 
     MicroUSBEtc();
 
@@ -1501,11 +1513,17 @@ module TestSelectFrame(){
       linear_extrude(height=200)
       rectfromto(include,  inside_br - include);
   }
+
+  for (i= [1,2]) {
+    translate([ 0, -phone[1] * i/3, 0 ])
+      cube(center=true, [1000, 4, 100]);
+  }
 }
 
 module TestSelectLidFrame(){
   TestSelectFrame();
-  translate([led_pos[0], -led_pos[1], -50])
+  if (len(led_pos))
+    translate([led_pos[0], -led_pos[1], -50])
     cylinder(r= nla_r2+3, h=100);
 }