23 screen_sz = [ 35, 46 ];
39 case_x_less = 0; //case_x_less = 10;
45 btn_yprop = btn_y / psz[1];
49 outer_cnr_rad = inner_cnr_rad + thick[2];
51 x_sliced = outer_cnr_rad * (1-sin(45));
55 module RoundedProfile(sz, cnr_rad){
57 for (x=[ cnr_rad, sz[0]-cnr_rad ])
58 for (y=[ cnr_rad, sz[1]-cnr_rad ])
60 circle(r= cnr_rad, $fn=20);
64 module RoundedCube(sz, cnr_rad){
68 for (x=[ cnr_rad, sz[0]-cnr_rad ])
69 for (y=[ cnr_rad, sz[1]-cnr_rad ])
70 for (z=[ cnr_rad, sz[2]-cnr_rad ])
72 sphere(r= cnr_rad, $fn=40);
76 module Stay(xbot, xtop, width, midgap_width) {
77 translate([ (xbot+xtop)/2, psz[1]/2, psz[2] ]){
79 cube([ xtop-xbot, width, stay_height*2 ], center=true);
81 cube([ 200, midgap_width, 10 ], center=true);
88 Stay(-0.1, 55, 10, 0);
89 Stay( 113,125, 70, 15);
99 - [1,0,0] * (thick[0])
100 + [1,0,0] * (x_sliced)
101 - [case_x_less, 0, 0],
104 for (yp= [ btn_yprop, 1-btn_yprop ])
108 cylinder(r= btn_dia/2, h=20);
113 cube(concat(abtn_sz, [ thick[2]*3 ]), center=true);
117 translate([ screen_xbot,
118 (psz[1] - screen_sz[1])/2,
120 cube(concat(screen_sz, [ thick[2]+6 ]));
123 for (x=[ thumb_xbot+thumb_dia/2, psz[0]+10 ])
127 cylinder(r= thumb_dia/2,
133 translate([ (vol_xbot+vol_xtop)/2, 0, psz[2]/2 + vol_zoff ])
134 cube([ vol_xtop-vol_xbot, vol_depth*2, vol_zsz ], center=true);
136 translate([ thick[0], -10, -10 ])
137 cube([ 10, psz[1]+20, psz[2]+20 ]);
139 //translate([-50,-50,10]) cube([100,100,100]);
143 RoundedCube(psz + [1,0,0],
148 if (0) for (m=[0,1]) {
149 translate([0,ym,0]) mirror([0,m,0]) translate([0,-ym,0])
150 translate([-1,-1, psz[2]-rail_zsz])
151 cube([psz[0]+1, rail_ysz+1, rail_zsz+1]);
160 translate([ -vol_xbot, 0,0 ])
161 cube([ 4, 200,200 ], center=true);
167 //RoundedCube(psz, inner_cnr_rad);