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 = 86.5;
+vol_xtop = 107.5;
+vol_depth = 1.0;
+vol_zsz = 9;
+vol_zoff = 0;
+
rail_ysz = 2.5;
rail_zsz = 2.5;
+stay_height = 1.49;
+
case_x_less = 0; //case_x_less = 10;
-inner_cnr_rad = 3.0;
+inner_cnr_rad = 4.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 ])
}
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 Stay(xbot, xtop, width, midgap_width) {
+ translate([ (xbot+xtop)/2, psz[1]/2, psz[2] ]){
+ difference(){
+ cube([ xtop-xbot, width, stay_height*2 ], center=true);
+ if (midgap_width > 0)
+ cube([ 200, midgap_width, 10 ], center=true);
+ }
}
}
+module Stays(){
+ Stay( 76, 82, 10, 0);
+ Stay(-0.1, 55, 10, 0);
+ Stay( 113,125, 70, 15);
+}
+
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);
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 ])
- cube(concat(screen_sz, [ thick[2]+2 ]));
+ psz[2]-3 ])
+ cube(concat(screen_sz, [ thick[2]+6 ]));
hull(){
for (x=[ thumb_xbot+thumb_dia/2, psz[0]+10 ])
$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(){
RoundedCube(psz + [1,0,0],
inner_cnr_rad);
+ Stays();
+
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])
}
}
+module TestLoop(){
+ intersection(){
+ Case($screen=false);
+ translate([ -vol_xbot, 0,0 ])
+ cube([ 4, 200,200 ], center=true);
+ }
+}
+
Case();
+//TestLoop();
//RoundedCube(psz, inner_cnr_rad);