lid_gap_x = 0.25;
lid_gap_z = 0.25;
lid_lip = 1.75;
+lid_edgepart_width = 5.0;
catch_slop = 0.50;
prop_prop_gap = 0.5;
prop_prong_heel_slope = 0.5;
+lid_fold_clearance_antislop = 0.5;
+
// ---------- calculated ----------
phone_width = (phone + bumper*2)[0];
lpp10 = [ epp5[0] + lid_gap_x, kppc[1] + lid_gap_z ];
lpp11 = [ lpp10[0], epp5[1] + lid_gap_z ];
-lpp14 = lpp10 + [1,0] * keeper_inner_width;
+lpp14 = lpp10 + [1,0] * max(keeper_inner_width, lid_edgepart_width);
// exact x posn not very important; must extend past end of keeper
lpp15 = [ lpp14[0],
chk(hex23, 13.74);
chk(hex24, 18.75);
+lid_fold_clearance_skew =
+ (lpp10[1] - hppB[1]) /
+ (lpp10[0] - hppB[0]);
+
+echo("SK",lid_fold_clearance_skew);
+
// catch
cppJ = [ epp4[0] + catch_thickness, lpp10[1] ];
}
}
+module LidEdgeFoldClearanceProfile(){
+ translate([-lid_fold_clearance_antislop, 0])
+ polygon([ lpp10,
+ lpp11,
+ lpp11 + [-20, 0],
+ lpp11 + [-20, 20],
+ lpp11 + [+20, 20],
+ lpp10 + [+20, 0] ]);
+}
+
module ButtonCoverProfile(){
intersection(){
polygon(concat([ bppM, bppP, bppO, bppJ ],
mirror([1,0,0])
rotate([90,0,-90])
linear_extrude(height=x1-x0)
- children(0);
+ children();
}
module CatchPortion(width){
}
}
+module LidAroundEdges(){
+ AroundEdges(lpp15[1], lpp13[1] - lpp15[1], 0)
+ children();
+}
+
module Lid(){ ////toplevel
+ skew_centre = [0, lpp11[0], lpp11[1]];
difference(){
union(){
- AroundEdges(lpp10[1], lpp13[1] - lpp10[1], 0)
- LidEdgeProfile();
+ intersection(){
+ LidAroundEdges()
+ LidEdgeProfile();
+
+ translate(skew_centre)
+ multmatrix([[ 1, 0, 0, 0 ],
+ [ 0, 1, -lid_fold_clearance_skew, 0 ],
+ [ 0, 0, 1, 0 ],
+ [ 0, 0, 0, 1 ]])
+ translate(-skew_centre)
+ LidAroundEdges()
+ LidEdgeFoldClearanceProfile();
+ }
// button covers
Buttons(){
}
// hinge arms
- HingePortion(hex20, hex21) HingeLidProfile();
+ HingePortion(hex20, hex21) {
+ LidEdgeProfile();
+ HingeLidProfile();
+ }
// catch
CatchPortion(catch_width)