X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=fairphone-case.scad;h=f2352316e3dcae6783ec837d71d6e2edc4912372;hb=2e25482dba1d814c556ec9dd0aff575b53f32f11;hp=5df180bf1efc96ea346c6491ccb69db9b15c6313;hpb=c2f1c867edb4dbeae5775faafde63e3a1c015ffd;p=reprap-play.git diff --git a/fairphone-case.scad b/fairphone-case.scad index 5df180b..f235231 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -2,7 +2,7 @@ phone = [ 75.0, 145.0 ]; -bumper = [ 0.250, 0.250 ]; +bumper = [ 0.250, -0.025 ]; // ^ One side. Overall size is increased by twice this. // If no bumpers, is the gap around the phone. @@ -24,6 +24,8 @@ jack_dia = 9.1 + .5; // some jack I had lying around noisecancelmic_pos = [ 19.54, 7.37 ]; // from rhs noisecancelmic_dia = 1.75; +fingerpushhole_dias = [ 14, 17 ]; + rearspeaker_pos_bl = [ 14.92, 18.72 ]; rearspeaker_size = [ 3.76, 7.36 ]; @@ -54,6 +56,12 @@ lid_gap_x = 0.25; lid_gap_z = 0.25; lid_lip = 1.75; +foldover_gap = 0.50; +foldover_hinger_gap = 0.50; + +hingescrew_nut_dia = 4.72 + 0.50; // washer, actually +hinger_th = 2; + $fa = 5; $fs = 0.1; @@ -118,6 +126,19 @@ bppL = lpp10 + [5,0]; bppK = [ bppL[0], bppN[1] ]; bppJ = [ bppN[0], bppL[1] ]; +// hinge plan +hp_rn = hingescrew_nut_dia; +hp_r2 = hp_rn + hinger_th; + +hppU = lpp13; +hppS = epp2o[1] + [0,-1] * case_th_bottom; +hp_k = 0.5 * (hppU[1] - hppS[1] + foldover_gap); + +hppM = [ epp4[0] - foldover_hinger_gap - hp_r2, + 0.5 * (hppU + hppS)[1] ]; +hppT = hppM + 0.5 * [0,+1] * hp_k; +hppB = hppM + 0.5 * [0,-1] * hp_k; + module rectfromto(a,b) { ab = b - a; translate([min(a[0], b[0]), min(a[1], b[1])]) @@ -332,13 +353,25 @@ module Struts(x_start, z_min, th){ } } -module RearSpeakerAperture(){ - CaseBase_rhsflip([1]) CaseBase_botflip([1]) +module OrdinaryRearAperture(rhs,bot, pos){ + CaseBase_rhsflip(rhs) CaseBase_botflip(bot) linextr(-20, 20) mirror([0,1]) - translate(rearspeaker_pos_bl + bumper) + translate(pos + bumper) + children(); +} + +module OrdinaryRearApertures(){ + // rear speaker + OrdinaryRearAperture(1,1, rearspeaker_pos_bl) rectfromto(-rearspeaker_gap, rearspeaker_size + rearspeaker_gap); + + // finger hole to remove phone + OrdinaryRearAperture(1,0, [ fingerpushhole_dias[0]/2 + epp2i[0], + phone[1]/2 ]) + scale(fingerpushhole_dias) + circle(r= 0.5 ); } module RearCameraAperture(){ @@ -416,7 +449,7 @@ module Case(){ ////toplevel CaseBase_rhsflip([1]) CaseAperture(noisecancelmic_pos, noisecancelmic_dia, 20); - RearSpeakerAperture(); + OrdinaryRearApertures(); } } @@ -444,11 +477,15 @@ module Lid(){ ////toplevel } } +module TestSelectLength(){ + translate([-30, -200, -20]) + cube([30 + 15, 250, 40]); +} + module TestLength(){ ////toplevel intersection(){ Case(); - translate([-30, -200, -20]) - cube([30 + 15, 250, 40]); + TestSelectLength(); } } @@ -481,13 +518,16 @@ module TestSelectRearAperture(){ } module TestSelectCamera(){ - TestSelectRearAperture() - RearCameraAperture(); + minkowski(){ + TestSelectRearAperture() + RearCameraAperture(); + cube([0.1, 50, 0.1]); + } } -module TestSelectRearSpeaker(){ +module TestSelectOrdinaryRearApertures(){ TestSelectRearAperture() - RearSpeakerAperture(); + OrdinaryRearApertures(); } module TestCamera(){ ////toplevel @@ -547,7 +587,7 @@ module TestFrameCase(){ ////toplevel union(){ TestSelectFrame(); TestSelectCamera(); - TestSelectRearSpeaker(); + TestSelectOrdinaryRearApertures(); } } }