From: Ian Jackson Date: Thu, 25 Jan 2018 13:51:19 +0000 (+0000) Subject: fairphone-case: prop recesses in lid X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=78cdfdaf9ade12996cc372032dff1dc3a7ac53f2;p=reprap-play.git fairphone-case: prop recesses in lid Signed-off-by: Ian Jackson --- diff --git a/fairphone-case.scad b/fairphone-case.scad index 394da79..1ee3885 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -4,6 +4,8 @@ include phone = [ 75.0, 145.0 ]; +prop_lid_posns = [ 58, 140 ]; // measured from bottom of phone + bumper = [ 0.250, -0.025 ]; // ^ One side. Overall size is increased by twice this. // If no bumpers, is the gap around the phone. @@ -108,6 +110,17 @@ catch_height = 0.35; catch_finger_height = 1.5; catch_finger_depth = 2.5; +prop_main_width = 3; +prop_main_th = 3; +prop_wing_len = 3; +prop_nose_slope = 1.5; // bigger means pointier +prop_side_gap = 0.75; // each side +prop_fin_height = 1.5; +prop_fin_width = 0.75; +prop_max_angle = 45; // bigger means at worse angle +prop_recess_under = 0.30; +prop_backfwd_gap = 1.0; // total + // ---------- calculated ---------- phone_width = (phone + bumper*2)[0]; @@ -124,6 +137,11 @@ lid_buttoncover_overlap = case_th_lip + keeper_gap_z_top; phone_backside_slope_thick = phone_total_thick - phone_edge_thick; +prop_nose_len = case_th_lid - prop_recess_under; +prop_recess_slope = tan(prop_max_angle); // bigger means steeper +prop_recess_depth = case_th_lid - prop_recess_under; +prop_recess_width = prop_main_th / cos(prop_max_angle) + prop_backfwd_gap; + //lid_lip_overlap_width xxx bad name = ; //lid_lip_inner_slope = [ 5, 5 ]; // xxx @@ -221,6 +239,14 @@ cppQ = [ cppR[0], cppV[1] - (catch_finger_height - cp_rQ) ]; cppF = [ cppV[0] + catch_finger_depth, cppC[1] ]; +// prop recess + +prp1 = [0,0]; // by definition +prp2 = prp1 + [ -prop_recess_slope, -1 ] * prop_recess_depth; +prp4 = prp1 + [1,0] * prop_recess_width; +prp3 = [ prp4[0], prp2[1] ]; +prp5 = prp4 + [1,0] * prop_recess_depth; + // ---------- modules ---------- module KeeperProfile(slant=0){ @@ -556,6 +582,27 @@ module CatchPortion(width){ children(0); } +module PropRecess(){ + // origin and orientation are nonstandard + hwd345 = 0.5*prop_main_width + prop_side_gap; + hwd35 = 0.5*prop_fin_width + prop_side_gap; + linextr(-hwd345, +hwd345) + polygon([ prp1, + prp2, + prp3, + prp4, + prp4 + [0,10], + prp1 + [0,10], + ]); + linextr(-hwd35, +hwd35) + polygon([ prp1, + prp3, + prp5, + prp5 + [0,10], + prp1 + [0,10], + ]); +} + module CaseBase(){ AroundEdges(epp3[1], case_th_bottom, 1) EdgeProfile(); @@ -683,6 +730,13 @@ module Lid(){ ////toplevel // screw holes in the hinge arms HingeScrews(); + + // prop recesses + Flip_bot(1) + for (y = prop_lid_posns) + translate([ phone_width/2, -y, lpp13[1] ]) + rotate([90,0,90]) + PropRecess(); } } @@ -937,3 +991,4 @@ module DemoProfiles(){ ////toplevel //LidEdgeProfile(); //KeeperProfile(); //DemoProfiles(); +//PropRecess();