+module AroundEdges(fill_zstart, fill_th, fill_downwards=0){
+ // sides
+ CaseBase_rhsflip(){
+ translate([0, -phone_cnr_rad, 0])
+ rotate([90,0,0])
+ linear_extrude(height = phone_height - phone_cnr_rad*2)
+ children(0);
+ }
+ // corners
+ CaseBase_rhsflip() CaseBase_botflip() {
+ translate([+1,-1] * phone_cnr_rad)
+ intersection(){
+ rotate_extrude()
+ intersection(){
+ mirror([1,0,0])
+ translate([-1,0] * phone_cnr_rad)
+ children(0);
+ rectfromto([0,-20],[10,20]);
+ }
+ translate([-10, 0, -20] + 0.01 * [+1,-1, 0] )
+ cube([10,10,40]);
+ }
+ }
+ // top and bottom
+ CaseBase_botflip(){
+ translate([ phone_width - phone_cnr_rad, 0,0 ])
+ rotate([90,0,-90])
+ linear_extrude(height = phone_width - phone_cnr_rad*2)
+ children(0);
+ }
+ // fill
+ translate([0,0, fill_zstart])
+ mirror([0,0, fill_downwards])
+ linear_extrude(height = fill_th)
+ rectfromto([+1,-1] * phone_cnr_rad,
+ [phone_width, -phone_height] + [-1,+1] * phone_cnr_rad);
+}
+
+module SideButton(y,l){
+ $button_l= l;
+ translate([0, -y, 0])
+ 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,
+ 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([ x_start, -0.5 * case_struts_width ],
+ [ phone_width - x_start, +0.5 * case_struts_width ]);
+ }
+}
+