case_bottom_z = epp2o[1] - case_th_bottom;
+lid_close_clearance_skew = 1.3;
+
// button profile
bppM = epp4 + [0,5];
bppN = [ 0.5 * (epp0[0] + epp4[0]), bppM[1] ];
}
}
+module LidEdgeFoldClearanceProfile(){
+ 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(lpp10[1], lpp13[1] - lpp10[1], 0)
+ children();
+}
+
module Lid(){ ////toplevel
skew_centre = [0, lpp11[0], lpp11[1]];
difference(){
union(){
- intersection_for(skew=[0,1]){
+ intersection(){
+ LidAroundEdges()
+ LidEdgeProfile();
+
translate(skew_centre)
multmatrix([[ 1, 0, 0, 0 ],
- [ 0, 1, 0, 0 ],
+ [ 0, 1, -lid_close_clearance_skew, 0 ],
[ 0, 0, 1, 0 ],
[ 0, 0, 0, 1 ]])
translate(-skew_centre)
- AroundEdges(lpp10[1], lpp13[1] - lpp10[1], 0)
- LidEdgeProfile();
+ LidAroundEdges()
+ LidEdgeFoldClearanceProfile();
}
// button covers
}
// hinge arms
- HingePortion(hex20, hex21) HingeLidProfile();
+ HingePortion(hex20, hex21) {
+ LidEdgeProfile();
+ HingeLidProfile();
+ }
// catch
CatchPortion(catch_width)