X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=fairphone-case.scad;h=d1181e673863c45c6c67c46845e24f853da5632e;hb=9316985fee339f62f0e5409653119e838afa7e5c;hp=67218c745eb45aea782551740100bd4031929fd4;hpb=71a6b02fd3187c5d0f3e69bb7ee3a8678612aa7c;p=reprap-play.git diff --git a/fairphone-case.scad b/fairphone-case.scad index 67218c7..d1181e6 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -62,6 +62,8 @@ lid_gap_x = 0.25; lid_gap_z = 0.25; lid_lip = 1.75; +catch_slop = 0.25; + foldover_gap = 0.50; foldover_lever_gap = 0.50; @@ -91,6 +93,15 @@ hinge_r_arms_gap = 0.55; rearspeaker_gap = [ 1.0, 1.0 ]; // each side +catch_len = 7.5; +catch_width = 15; +catch_thickness = 1.0; + +catch_depth = 1.25; +catch_height = 0.35; +catch_finger_height = 1.5; +catch_finger_depth = 2.5; + // ---------- calculated ---------- phone_width = (phone + bumper*2)[0]; @@ -182,6 +193,27 @@ hex24 = hex20 + hingescrew_shaft_len + hinge_x_postscrew_gap; echo(hex20, hex21, hex22, hex23, hex24); echo(hingescrew_portion_len); +// catch + +cppJ = [ epp4[0] + catch_thickness, lpp10[1] ]; +cppA = cppJ + [lid_gap_x, -lid_gap_z]; +cppB = [ epp0[0], cppA[1] ]; +cppP = [ epp4[0], cppJ[1] ]; + +cppS = cppJ + [0,-1] * catch_len; +cppD = [ cppA[0], cppS[1] + catch_slop ]; +cppC = [ cppB[0], cppD[1] ]; +cppT = cppS + [1,0] * catch_depth; +cppU = cppT + [0,-1] * catch_height; +cppV = [ cppS[0], cppU[1] - catch_depth ]; + +cppR = 0.5*(cppP + cppJ); + +cp_rQ = 0.5 * (cppJ[0] - cppP[0]); +cppQ = [ cppR[0], + cppV[1] - (catch_finger_height - cp_rQ) ]; +cppF = [ cppV[0] + catch_finger_depth, cppC[1] ]; + // ---------- modules ---------- module KeeperProfile(slant=0){ @@ -275,6 +307,31 @@ module ButtonPlan(l, deep, cut){ } } +module CatchCatchProfile(){ + hull(){ + for (c=[ cppR, cppQ ]) + circleat(c, cp_rQ); + } + hull(){ + circleat(lpp12, lp_r12); + circleat(lpp12 + [5,0], lp_r12); + rectfromto(cppP, cppP + [5,0.1]); + } + polygon([cppJ, cppS, cppT, cppU, cppV, cppQ, cppR]); +} + +module CatchCutProfile(){ + polygon([ cppB, + cppA, + cppD, + cppF, + cppF + [0,-10], + cppF + [-10,-10], + lpp12 + [-10,0], + lpp12 + [10,0] + ]); +} + module Flip_rhs(yn=[0,1]) { for ($rhsflip=yn) { translate([phone_width/2, 0, 0]) @@ -838,6 +895,14 @@ module DemoProfiles(){ ////toplevel color("black") translate([0,0,-2]) HingeLeverOuterProfile(); color("orange") translate([0,0,-1]) HingeLeverInnerProfile(); } + + translate([20,-30]) { + %EdgeProfile(); + %LidEdgeProfile(); + //translate([0,0,1]) CatchCutProfile(); + color("blue") CatchCatchProfile(); + color("red") difference(){ EdgeProfile(); CatchCutProfile(); } + } } //EdgeProfile();