chiark / gitweb /
simplephone-case: thinner, done
[reprap-play.git] / simplephone-case.scad
index 46609d53dc287030a60f8a6c611fa3c009e46897..95593388de4bb6fdd04dcdcdc7e0333e834dcdf0 100644 (file)
@@ -8,8 +8,8 @@ psz = [
 
 thick = [
         2,
-        3,
-        2.5,
+        2,
+        1.5,
         ];
 
 btn_x = 58;
@@ -22,23 +22,53 @@ abtn_sz = [ 11, 13 ];
 screen_xbot = 67;
 screen_sz = [ 45, 46 ];
 
+thumb_xbot = 90;
+thumb_dia = 25;
+
 rail_ysz = 2.5;
 rail_zsz = 2.5;
 
 case_x_less = 0; //case_x_less = 10;
 
+inner_cnr_rad = 3.0;
+
 // calculated
 
 ym = psz[1]/2;
+outer_cnr_rad = inner_cnr_rad + thick[2];
+
+x_sliced = outer_cnr_rad * (1-sin(45));
+
+module RoundedProfile(sz, cnr_rad){
+  hull(){
+    for (x=[ cnr_rad, sz[0]-cnr_rad ])
+      for (y=[ cnr_rad, sz[1]-cnr_rad ])
+       translate([x,y])
+         circle(r= cnr_rad, $fn=20);
+  }
+}
+
+module RoundedCube(sz, cnr_rad){
+  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);
+  }
+}
 
 module Case(){
   difference(){
     mirror([1,0,0])
-      translate(-thick)
-      cube(psz
-          + 2*thick
-          - [1,0,0] * (thick[0])
-          - [case_x_less, 0, 0]);
+      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);
 
     for (yp= [ btn_yprop, 1-btn_yprop ])
       translate([ -btn_x,
@@ -57,11 +87,27 @@ module Case(){
                  psz[2]-1 ])
       cube(concat(screen_sz, [ thick[2]+2 ]));
 
+    hull(){
+      for (x=[ thumb_xbot+thumb_dia/2, psz[0]+10 ])
+       translate([ -x,
+                   ym,
+                   -thick[2]-1 ])
+         cylinder(r= thumb_dia/2,
+                  h= thick[2] + 2,
+                  $fn= 20);
+    }
+
+    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(){
-       cube(psz + [1,0,0]);
+       RoundedCube(psz + [1,0,0],
+                   inner_cnr_rad);
 
-       for (m=[0,1]) {
+       if (0) for (m=[0,1]) {
          translate([0,ym,0]) mirror([0,m,0]) translate([0,-ym,0])
            translate([-1,-1, psz[2]-rail_zsz])
            cube([psz[0]+1, rail_ysz+1, rail_zsz+1]);
@@ -71,3 +117,4 @@ module Case(){
 }
 
 Case();
+//RoundedCube(psz, inner_cnr_rad);