}
}
+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(){
- 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(){
}
// hinge arms
- HingePortion(hex20, hex21) HingeLidProfile();
+ HingePortion(hex20, hex21) {
+ LidEdgeProfile();
+ HingeLidProfile();
+ }
// catch
CatchPortion(catch_width)
DemoPropAngle(prop_angles[i]);
}
+module DemoHingeAngle(ang1,ang2){
+ hL = [0, -(phone_height - hppT[0]), hppT[1]];
+ hC = [0, -(phone_height - hppB[0]), hppB[1]];
+
+ translate(hL)
+ rotate([ang2,0,0])
+ translate(-hL)
+ translate(hC)
+ rotate([ang1,0,0])
+ translate(-hC) {
+ color("red") Lid();
+ }
+
+ color("blue") intersection(){
+ Case();
+ union(){
+ translate([bppJ[0], -400, -200])
+ mirror([1,0,0])
+ cube([400, 800, 400]);
+ translate([10, -400, -200])
+ cube([10, 800, 400]);
+ }
+ }
+}
+
+module DemoHingeAngles(){ ////toplevel
+ angles = [ 0, 4, 8, 12 ];
+ echo("angles",angles);
+ for (i=[0 : len(angles)-1]) {
+ translate(i * [0, 0, 30]) {
+ DemoHingeAngle(0,angles[i]);
+ translate([0, 200, 0])
+ DemoHingeAngle(angles[i],0);
+ }
+ }
+}
+
module DemoSelectAdhocLeftRight(right=0) {
translate([phone_width/2, -400, -100]) // , -15, -100 to cross-section
mirror([1-right, 0,0])