X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=fairphone-case.scad;h=39966dfb9fccf1874ebadd18c5d8d01f123c9523;hb=7e4915bf94bb98b9dd475a4c26a976a1757f6a74;hp=70b9a71fde807225bd5fd879c83563436cc3a103;hpb=8e714c046cabc5b0b6dd2235615bfb6abf88afd5;p=reprap-play.git diff --git a/fairphone-case.scad b/fairphone-case.scad index 70b9a71..39966df 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -169,7 +169,7 @@ noisecancelmic_dia = 4.00; fingerpushhole_dias = []; lanyard_half_dia = 1.15; - +lanyard_entry_rel_breadth = 2; rearspeaker_pos_bl = [ 12.64, 18.72 ]; rearspeaker_size = [ 3.76, 7.36 ]; @@ -449,7 +449,8 @@ cppF = [ cppV[0] + catch_finger_depth, cppC[1] ]; // lanyard ly_r = lanyard_half_dia / 2; -ly_rc = ly_r * 2 * 5; +ly_rc = ly_r * 2; +ly_re = 10; // xxx // prop recess in case @@ -528,7 +529,7 @@ module EdgeProfile(){ module LanyardLanyardProfile(entry=false){ hull(){ - for (xs=[-1,+1] * (entry ? 2 : 1)) + for (xs=[-1,+1] * (entry ? lanyard_entry_rel_breadth : 1)) translate(xs * 0.5 * lanyard_half_dia * [1,0]) circle(r= lanyard_half_dia/2); } @@ -553,10 +554,16 @@ module LanyardMainChannelProfile(){ } } +module LanyardEntryOuterProfile(){ + circleat([ly_re + ly_r, 0], ly_re); +} + module LanyardEntry(){ q_z = -(ly_rc + ly_r); d_x = -ly_rc; + oec_y = lanyard_entry_rel_breadth * ly_r; + translate([d_x, 0, q_z]) { intersection(){ rotate([90,0,0]) @@ -574,6 +581,39 @@ module LanyardEntry(){ linear_extrude(height=20) rotate(-90) LanyardEntryChannelProfile(); + + translate([0, ly_r*2, 0]) + rotate([90,0,0]) + linear_extrude(height = ly_r*4){ + difference(){ + rectfromto([d_x, q_z], [ly_r, 0]); + circleat([d_x, q_z], ly_rc); + } + } + + translate([0,0,q_z]){ + for (my=[0,1]) + mirror([0,my,0]){ + translate([0, oec_y, 0]){ + difference(){ + translate(ly_re * [-1,0,-2]) + cube(ly_re * [2,1,2]); + rotate_extrude(convexity=10) + LanyardEntryOuterProfile(); + } + } + } + difference(){ + translate([-ly_re, -(oec_y + 0.01), -2*ly_re]) + cube([ly_re*2, 2*(oec_y + 0.01), 2*ly_re]); + for (mx=[0,1]) + mirror([mx,0,0]) + rotate([90,0,0]) + translate([0,0,-10]) + linear_extrude(height=20) + LanyardEntryOuterProfile(); + } + } } module LanyardCutout(l){