// this case will meet your needs.
include <utils.scad>
+include <funcs.scad>
phone = [ 75.0, 145.0 ];
//fingerpushhole_dias = [ 15, 18 ];
fingerpushhole_dias = [];
+lanyard_half_dia = 1.15;
+
rearspeaker_pos_bl = [ 12.64, 18.72 ];
rearspeaker_size = [ 3.76, 7.36 ];
catch_finger_height = 1.5;
catch_finger_depth = 2.5;
+catch_topcurve_r = 5.0;
+
prop_recess_under = 0.50;
prop_recess_slop = 0.200; // each side
prop_end_dia = 0.5;
}
}
+module LanyardLanyardProfile(){
+ hull(){
+ for (xs=[-1,+1])
+ translate(xs * 0.5 * lanyard_half_dia * [1,0])
+ circle(r= lanyard_half_dia/2);
+ }
+}
+
module LidEdgeProfile(){
polygon([ lpp10,
lpp11,
module CatchPortion(xwidth, ztop){
width = catch_width + xwidth;
+ w = width + catch_topcurve_r*2 + 1;
translate([phone_width/2, 0,0]){
difference(){
rotate([90,0,-90])
- linextr(-width/2, width/2)
+ linextr(-w/2, w/2)
children(0);
+ translate([0, 50, 0])
+ rotate([90,0,0])
+ linear_extrude(height=100){
+ for (m=[0,1]) mirror([m,0,0]) {
+ hull(){
+ translate([w/2, ztop - catch_topcurve_r])
+ circle(catch_topcurve_r);
+ translate([w/2, -50])
+ square(catch_topcurve_r*2, center=true);
+ }
+ }
+ }
}
}
}
%EdgeProfile();
KeeperProfile();
translate([0,0,-1]) color("black") KeeperProfile(1);
+ translate(epp2i)
+ rotate(atan2vector(epp2i - epp1))
+ translate(lanyard_half_dia * 0.5 * [-3,-1])
+ color("purple") LanyardLanyardProfile();
translate([20,0]) {
LidEdgeProfile();