// -*- C -*-
-phone_height = 146.5;
+phone_height = 146.5 - .80;
phone_width = 76.75;
phone_cnr_rad = 4.0;
phone_total_thick = 12.0;
phone_backside_slope = 1.0; // larger means shallower
-camera_pos_tl = [ 7.5, 13.5 ]; // measured from tl corner
+camera_pos_tl = [ 7.0, 13.0 ]; // measured from tl corner
camera_pos_br = [ 24.0, 39.5 ]; // tl/br as seen from back
case_th_bottom = 2;
keeper_inner_height = 1.75;
keeper_gap_z_top = 0.25;
-keeper_gap_z_bot = 0.25;
+keeper_gap_z_bot = 0.75;
keeper_gap_x = 0.25;
keeper_gap_x_holes = 0.75;
module EdgeProfile(){
difference(){
hull(){
- circleat(epp3, r=case_th_bottom);
+ translate(epp3) square(case_th_bottom*2, center=true);
circleat(epp2, r=case_th_bottom);
circleat(epp1, r=case_th_side);
rectfromto(epp0, epp4);
}
}
-module CaseBase(){
+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)
- EdgeProfile();
+ children(0);
}
// corners
CaseBase_rhsflip() CaseBase_botflip() {
intersection(){
mirror([1,0,0])
translate([-1,0] * phone_cnr_rad)
- EdgeProfile();
+ children(0);
rectfromto([0,-20],[10,20]);
}
translate([-10, 0, -20] + 0.01 * [+1,-1, 0] )
translate([ phone_width - phone_cnr_rad, 0,0 ])
rotate([90,0,-90])
linear_extrude(height = phone_width - phone_cnr_rad*2)
- EdgeProfile();
+ children(0);
}
// fill
- translate([0,0, epp3[1]])
- mirror([0,0, 1])
- linear_extrude(height = case_th_bottom)
+ 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 CaseBase(){
+ AroundEdges(epp3[1], case_th_bottom, 1)
+ EdgeProfile();
+}
+
module Case(){ ////toplevel
difference(){
- CaseBase();
+ union(){
+ CaseBase();
+ intersection(){
+ rotate([90, 0, 0])
+ linear_extrude(height = phone_height + phone_cnr_rad * 2)
+ KeeperProfile();
+ hull()
+ CaseBase();
+ }
+ }
- // slots for keeper
- CaseBase_rhsflip()
+ // slot for keeper
+ CaseBase_rhsflip(1)
translate([0, -phone_cnr_rad, 0])
rotate([90, 0, 0])
linear_extrude(height = phone_height + phone_cnr_rad * 2)
}
}
+module Lid(){ ////toplevel
+ AroundEdges(lpp10[1], lpp13[1] - lpp10[1], 0)
+ LidEdgeProfile();
+}
+
module TestLength(){ ////toplevel
intersection(){
Case();