X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=simplephone-case.scad;h=95593388de4bb6fdd04dcdcdc7e0333e834dcdf0;hb=d7c194afb634ed8f3dfaa22dd6f7f9ae791843cf;hp=bc2cebf9da7637fd7ed998f087d7b9c6a0525e46;hpb=8d29013bdc7e0cd3f7afa7647404e387b6011d11;p=reprap-play.git diff --git a/simplephone-case.scad b/simplephone-case.scad index bc2cebf..9559338 100644 --- a/simplephone-case.scad +++ b/simplephone-case.scad @@ -8,19 +8,67 @@ psz = [ thick = [ 2, - 3, - 2.5, + 2, + 1.5, ]; btn_x = 58; -btn_dia = 14; +btn_dia = 13; btn_yprop = 0.23; +abtn_x = 45; +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])); + 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, @@ -28,9 +76,45 @@ module Case(){ 0.5 * psz[2] ]) cylinder(r= btn_dia/2, h=20); - #mirror([1,0,0]) - cube(psz + [1,0,0]); + translate([ -abtn_x, + btn_yprop * psz[1], + psz[2] ]) + cube(concat(abtn_sz, [ thick[2]*3 ]), center=true); + + mirror([1,0,0]) + translate([ screen_xbot, + (psz[1] - screen_sz[1])/2, + 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(){ + RoundedCube(psz + [1,0,0], + inner_cnr_rad); + + 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]); + } + } } } Case(); +//RoundedCube(psz, inner_cnr_rad);