chiark / gitweb /
simplephone-case: fix btn wrong adjusts
[reprap-play.git] / simplephone-case.scad
index b1a126bccc8623312a7989b94997a34495d4a65a..f57a30eced1fe1c7a7438caf9008a1924cbe09d5 100644 (file)
@@ -2,29 +2,35 @@
 
 psz = [
        120,
-       56 + 5,
+       56 + 5 - 3.75,
        15 + 3,
        ];
 
 thick = [
         2,
         2,
-        2.5,
+        1.5,
         ];
 
-btn_x = 58;
+btn_x = 59.6;
 btn_dia = 13;
-btn_yprop = 0.23;
+btn_y = 14.03;
 
-abtn_x = 45;
+abtn_x = 46.85;
 abtn_sz = [ 11, 13 ];
 
-screen_xbot = 67;
-screen_sz = [ 45, 46 ];
+screen_xbot = 79;
+screen_sz = [ 35, 46 ];
 
 thumb_xbot = 90;
 thumb_dia = 25;
 
+vol_xbot = 87.4;
+vol_xtop = 106.7;
+vol_depth = 1.0;
+vol_zsz = 9;
+vol_zoff = 0;
+
 rail_ysz = 2.5;
 rail_zsz = 2.5;
 
@@ -34,9 +40,16 @@ inner_cnr_rad = 3.0;
 
 // calculated
 
+btn_yprop = btn_y / psz[1];
+echo(btn_yprop);
+
 ym = psz[1]/2;
 outer_cnr_rad = inner_cnr_rad + thick[2];
 
+x_sliced = outer_cnr_rad * (1-sin(45));
+
+$screen = true;
+
 module RoundedProfile(sz, cnr_rad){
   hull(){
     for (x=[ cnr_rad, sz[0]-cnr_rad ])
@@ -47,22 +60,26 @@ module RoundedProfile(sz, cnr_rad){
 }
 
 module RoundedCube(sz, cnr_rad){
-  hull(){
+  if ($test)
+    cube(sz);
+  else hull(){
     for (x=[ cnr_rad, sz[0]-cnr_rad ])
       for (y=[ cnr_rad, sz[1]-cnr_rad ])
        for (z=[ cnr_rad, sz[2]-cnr_rad ])
          translate([x,y,z])
-           sphere(r= cnr_rad, $fn=20);
+           sphere(r= cnr_rad, $fn=40);
   }
 }
 
 module Case(){
   difference(){
     mirror([1,0,0])
-      translate(-thick)
+      translate(-thick +
+               - [1,0,0] * x_sliced)
       RoundedCube(psz
                  + 2*thick
                  - [1,0,0] * (thick[0])
+                 + [1,0,0] * (x_sliced)
                  - [case_x_less, 0, 0],
                  outer_cnr_rad);
 
@@ -77,7 +94,8 @@ module Case(){
                psz[2] ])
       cube(concat(abtn_sz, [ thick[2]*3 ]), center=true);
 
-    mirror([1,0,0])
+    if ($screen)
+      mirror([1,0,0])
       translate([ screen_xbot,
                  (psz[1] - screen_sz[1])/2,
                  psz[2]-1 ])
@@ -93,8 +111,14 @@ module Case(){
                   $fn= 20);
     }
 
-    //translate([ thick[0] - 
-    //cube([
+    mirror([1,0,0])
+      translate([ (vol_xbot+vol_xtop)/2, 0, psz[2]/2 + vol_zoff ])
+      cube([ vol_xtop-vol_xbot, vol_depth*2, vol_zsz ], center=true);
+
+    translate([ thick[0], -10, -10 ])
+      cube([ 10, psz[1]+20, psz[2]+20 ]);
+
+    //translate([-50,-50,10]) cube([100,100,100]);
 
     mirror([1,0,0])
       difference(){
@@ -110,5 +134,14 @@ module Case(){
   }
 }
 
+module TestLoop(){
+  intersection(){
+    Case($screen=false);
+    translate([ -vol_xbot, 0,0 ])
+      cube([ 4, 200,200 ], center=true);
+  }
+}
+
 Case();
+//TestLoop();
 //RoundedCube(psz, inner_cnr_rad);