foldover_lever_gap = 0.50;
hingescrew_shaft_dia = 2.0 + 0.25; // M2 x 12mm machine screw
+hingescrew_shaft_len = 12;
+hingescrew_nut_thick = 1.93 + 0.20; // incl. washer
hingescrew_nut_dia = 4.72 + 0.50; // washer, actually
+hingescrew_head_th = 1.38 + 0.75;
lever_cover_th = 0.75;
hingemount_th = 2.5;
strut_min_at_end = 1.5;
+hinge_x_gap = 0.125;
+hinge_x_postscrew_gap = 0.75;
+hinge_x_arms_gap = 0.35;
+hinge_r_arms_gap = 0.55;
+
rearspeaker_gap = [ 1.0, 1.0 ]; // each side
// ---------- calculated ----------
hppT = hppM + 0.5 * [0,+1] * hp_k;
hppB = hppM + 0.5 * [0,-1] * hp_k;
+// hinge elevation x coords
+
+hingescrew_portion_len =
+ 0.5* (hingescrew_shaft_len - hingescrew_nut_thick - hinge_x_gap);
+
+hex20 = max(epp2o[0],
+ phone_cnr_rad,
+ kppd[0] + hingescrew_head_th + keeper_gap_x_holes);
+hex21 = hex20 + hingescrew_portion_len;
+hex22 = hex21 - hinge_x_gap;
+hex23 = hex22 + hingescrew_portion_len;
+hex24 = hex23 + hinge_x_postscrew_gap;
+
// ---------- modules ----------
module KeeperProfile(slant=0){
eff_y = y_ref_sign > 0 ? -bumper [1] -y -l/2 :
y_ref_sign < 0 ? (-phone -bumper)[1] +y +l/2 :
y;
- echo(eff_y);
+ //echo(eff_y);
translate([0, eff_y, 0])
children();
}
}
}
-module HingePortion(){
- Flip_rhs();
+module HingePortion(x0,x1){
+ Flip_rhs() Flip_bot(1)
+ translate([x0,0,0])
+ mirror([1,0,0])
+ rotate([90,0,-90])
+ linear_extrude(height=x1-x0)
+ children(0);
}
module CaseBase(){
}
// hinge
- // HingePortion(hex20, hex21) HingerBaseProfile();
+ HingePortion(hex20, hex21) HingeBaseProfile();
}
// slot for keeper
CaseAperture(noisecancelmic_pos, noisecancelmic_dia, 20);
OrdinaryRearApertures();
+
+ // gaps for the lid's hinge arms
+ HingePortion(hex20 - hinge_x_arms_gap,
+ hex21 + hinge_x_arms_gap)
+ minkowski(){
+ HingeLidProfile();
+ circle(r= hinge_r_arms_gap, $fn= 8);
+ }
}
}
ButtonCoverProfile();
}
}
+
+ // hinge arms
+ HingePortion(hex20, hex21) HingeLidProfile();
}
Struts(lpp10[0] + strut_min_at_end, lpp13[1], -case_th_lid);
}
ButtonPlan(8, deep, cut);
}
+module DemoFrame(){ ////toplevel
+ color("red") TestFrameCase();
+ color("blue") intersection(){ Lid(); TestSelectFrame(); }
+}
+
module DemoProfiles(){ ////toplevel
LidEdgeProfile();
%EdgeProfile();