X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=fairphone-case.scad;h=64c0fa20d4ce4b91052c8363a7c95cab9249b59f;hb=24bd1f90746c20560d369a4658da6f20fa0e70fd;hp=62048c83d3b7af673b9167177f03f10c64fe7436;hpb=1203669b3a354dc244289e17656a9fcb396d53d3;p=reprap-play.git diff --git a/fairphone-case.scad b/fairphone-case.scad index 62048c8..64c0fa2 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -59,10 +59,12 @@ lid_gap_z = 0.25; lid_lip = 1.75; foldover_gap = 0.50; -foldover_hinger_gap = 0.50; +foldover_lever_gap = 0.50; +hingescrew_shaft_dia = 2.0 + 0.25; // M2 x 12mm machine screw hingescrew_nut_dia = 4.72 + 0.50; // washer, actually -hinger_th = 2; +lever_cover_th = 0.75; +hingemount_th = 2.5; $fa = 5; $fs = 0.1; @@ -129,14 +131,16 @@ bppK = [ bppL[0], bppN[1] ]; bppJ = [ bppN[0], bppL[1] ]; // hinge plan -hp_rn = hingescrew_nut_dia; -hp_r2 = hp_rn + hinger_th; +hp_rn = hingescrew_nut_dia/2; +hp_r2 = hp_rn + lever_cover_th; +hp_rs = hingescrew_shaft_dia/2; +hp_r1 = hp_rs + hingemount_th; hppU = lpp13; -hppS = epp2o[1] + [0,-1] * case_th_bottom; +hppS = epp2o + [0,-1] * case_th_bottom; hp_k = 0.5 * (hppU[1] - hppS[1] + foldover_gap); -hppM = [ epp4[0] - foldover_hinger_gap - hp_r2, +hppM = [ epp4[0] - foldover_lever_gap - hp_r2, 0.5 * (hppU + hppS)[1] ]; hppT = hppM + 0.5 * [0,+1] * hp_k; hppB = hppM + 0.5 * [0,-1] * hp_k; @@ -375,6 +379,49 @@ module RearCameraAperture(){ rectfromto(camera_pos_tl, camera_pos_br); } +module HingeLidProfile(){ + hull(){ + circleat(hppT, hp_r1); + circleat(lpp12, lp_r12); + polygon([lpp10, + lpp13 + [2,0], + lpp12, + hppT]); + } +} + +module HingeBaseProfile(){ + difference(){ + hull(){ + circleat(hppB, hp_r1); + circleat(epp2o, case_th_bottom); + circleat(hppB + [10,0], hp_r1); + } + polygon([epp5, epp1, epp2i, epp3, bppL]); + } +} + +module HingeLeverOuterProfile(){ + hull(){ + circleat(hppT, hp_r2); + circleat(hppB, hp_r2); + } +} + +module HingeLeverInnerProfile(){ + for (c = [hppT, hppB]) { + hull() + for (x=[0,20]) + translate([x,0]) + circleat(c, hp_rn); + circleat(hppB, hp_rn); + } +} + +module HingePortion(){ + CaseBase_rhsflip(); +} + module CaseBase(){ AroundEdges(epp3[1], case_th_bottom, 1) EdgeProfile(); @@ -399,6 +446,9 @@ module Case(){ ////toplevel CaseBase_botflip() circleat([+1,-1] * phone_cnr_rad, phone_cnr_rad + case_th_side/2); } + + // hinge + // HingePortion(hex20, hex21) HingerBaseProfile(); } // slot for keeper @@ -633,6 +683,15 @@ module DemoProfiles(){ ////toplevel color("red" ) ButtonPlanForDemo(-4, 1,1); color("blue") ButtonPlanForDemo(-6, 1,0); } + + translate([0, -30]) { + %LidEdgeProfile(); + %EdgeProfile(); + color("blue") HingeLidProfile(); + color("red") HingeBaseProfile(); + color("black") translate([0,0,-2]) HingeLeverOuterProfile(); + color("orange") translate([0,0,-1]) HingeLeverInnerProfile(); + } } //EdgeProfile();