// -*- C -*-
-phone_height = 146.5 - .80;
-phone_width = 76.75 - .50;
+phone_height = 146.5;
+phone_width = 76.75;
phone_cnr_rad = 6.0;
case_th_lip = 1.2;
case_struts_count = 6;
-case_struts_solid_below = 0.75;
-case_struts_solid_above = 1.00;
+case_struts_solid_below = 1.00;
+case_struts_solid_above = 0.75;
case_struts_width = 0.10;
keeper_th_z = 0.75;
button_l_fudge = 4.5;
+strut_min_at_end = 1.5;
+
// ---------- calculated ----------
// ----- could be changed -----
lpp10 = [ epp5[0] + lid_gap_x, kppc[1] + lid_gap_z ];
lpp11 = [ lpp10[0], epp5[1] + lid_gap_z ];
-lpp12 = [ epp4[0] + lid_lip, lpp11[1] ];
-lpp13 = [ lpp12[0], lpp12[1] + lid_lip ];
+
+lp_r12 = case_th_lid - (lpp11[1] - lpp10[1]);
+
+lpp12 = [ epp4[0] + lp_r12, lpp11[1] ];
+lpp13 = [ lpp12[0], lpp12[1] + lp_r12 ];
+
+echo(lpp13 - lpp10);
// button profile
bppM = epp4 + [0,5];
lpp10 + [10, 0]
]);
intersection(){
- circleat(lpp12, r=lid_lip);
+ circleat(lpp12, r=lp_r12);
rectfromto( lpp12 + [-10, 0],
lpp12 + [+10, +10] );
}
[phone_width, -phone_height] + [-1,+1] * phone_cnr_rad);
}
-module Struts(z_min, th){
+module SideButton(y,l){
+ $button_l= l;
+ translate([0, -y, 0])
+ mirror([1,0,0])
+ rotate([90,0,90])
+ children();
+}
+
+module Buttons(){
+ CaseBase_rhsflip([1]) SideButton(20.6, 8.8) children(); // power
+}
+
+module Struts(x_start, z_min, th){
+ // if th is negative, starts at z_min and works towards -ve z
+ // and object should then be printed other way up
for (i= [1 : 1 : case_struts_count]) {
translate([0,
- -phone_height * i / (case_struts_count+1),
- z_min + case_struts_solid_below])
- linear_extrude(height= th
+ 0,
+ z_min])
+ mirror([0,0, th<0 ? 1 : 0])
+ translate([0,
+ -phone_height * i / (case_struts_count+1),
+ case_struts_solid_below])
+ linear_extrude(height= abs(th)
-(case_struts_solid_below+case_struts_solid_above))
- rectfromto([ epp2i[0], -0.5 * case_struts_width ],
- [ phone_width - epp2i[0], +0.5 * case_struts_width ]);
+ rectfromto([ x_start, -0.5 * case_struts_width ],
+ [ phone_width - x_start, +0.5 * case_struts_width ]);
}
}
rectfromto(camera_pos_tl, camera_pos_br);
// struts (invisible, because they're buried in the case)
- Struts(epp2i[1] - case_th_bottom, case_th_bottom);
+ Struts(epp2i[0], epp2i[1] - case_th_bottom, case_th_bottom);
+
+ Buttons(){
+ translate([0,0,-10])
+ linear_extrude(height= 20)
+ ButtonPlan($button_l, 0,1);
+ translate([0,0, -bppR[0]])
+ linear_extrude(height= 20)
+ ButtonPlan($button_l, 1,1);
+ }
}
}
module Lid(){ ////toplevel
- AroundEdges(lpp10[1], lpp13[1] - lpp10[1], 0)
- LidEdgeProfile();
+ difference(){
+ union(){
+ AroundEdges(lpp10[1], lpp13[1] - lpp10[1], 0)
+ LidEdgeProfile();
+ }
+ Struts(lpp10[0] + strut_min_at_end, lpp13[1], -case_th_lid);
+ }
}
module TestLength(){ ////toplevel