}
}
+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 ],
I0 = [ E0[0], H[1] ];
I1 = [ E1[0], H[1] ];
- multmatrix([[ 1, $button_plan_shear ? 0.4 : 0, 0 ],
- [ 0,1,0 ],
- [ 0,0,1 ],
- ]){
hull(){
for (m=[0,1]) mirror([m,0])
circleat(H, r0 - epsilon);
circleat(D, r0 + epsilon);
}
}
- }
}
module CatchCatchProfile(){
module LidButtonishLeg(y, y_ref_sign, l=buttonishleg_default_l_is_fudge) {
$button_leg_only = true;
- $button_plan_shear = true;
SideButton(y, y_ref_sign, l) children();
}
}
}
+module LidAroundEdges(){
+ AroundEdges(lpp10[1], lpp13[1] - lpp10[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, -2, 0 ],
+ [ 0, 0, 1, 0 ],
+ [ 0, 0, 0, 1 ]])
+ translate(-skew_centre)
+ LidAroundEdges()
+ LidEdgeFoldClearanceProfile();
+ }
// button covers
Buttons(){
}
module DemoHingeAngles(){ ////toplevel
- angles = [ 0, 6, 12, 16, 24, 36 ];
+ angles = [ 0, 4, 8, 12 ];
echo("angles",angles);
for (i=[0 : len(angles)-1]) {
translate(i * [0, 0, 30]) {