From: Ian Jackson Date: Sat, 20 Jan 2018 21:03:14 +0000 (+0000) Subject: fairphone-case: wip ButtonPlan, needs new approach X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=commitdiff_plain;h=e74ae676c2f556d01000c7c05f1bbc4bfec2838c fairphone-case: wip ButtonPlan, needs new approach Signed-off-by: Ian Jackson --- diff --git a/fairphone-case.scad b/fairphone-case.scad index 401f9fc..14db4f8 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -44,9 +44,9 @@ lid_lip = 1.75; $fa = 5; $fs = 0.1; -// calculated +// ---------- calculated ---------- -// could be changed +// ----- could be changed ----- lid_buttoncover_gap = lid_gap_x; lid_buttoncover_overlap = case_th_lip + keeper_gap_z_top; @@ -75,6 +75,7 @@ lpp11 = [ lpp10[0], epp5[1] + lid_gap_z ]; lpp12 = [ epp4[0] + lid_lip, lpp11[1] ]; lpp13 = [ lpp12[0], lpp12[1] + lid_lip ]; +// button profile bppM = epp4 + [0,5]; bppN = [ 0.5 * (epp0[0] + epp4[0]), bppM[1] ]; bppR = [ bppN[0] + lid_buttoncover_gap, -button_cutout_depth ]; @@ -137,7 +138,38 @@ module ButtonCoverProfile(){ } } -module ButtonPlan(){ +module ButtonPlan(l, bigger){ + C = [0,0]; // by definition + T = [ 0, epp4[1] ]; + G = T + [0,10]; + B0 = T + [0,-1] * button_cutout_depth; + r0 = 0.5 * (T[1] - B0[1]); + A = [ -l/2 + r0, 0.5 * (T[1] + B0[1]) ]; + r1 = r0 + bigger; + // | D1 - A | = r1 * 2 + // D1_y = T_y - r1 + // => 4 * r1^2 = (r1-r0)^2 + (D1_x - A_x)^2 + // => D1_x = A_x + v/~ [ 4 * r1^2 - (r1-r0)^2 ] + D1 = [ A[0] + sqrt( 4*r1*r1 - bigger*bigger ), T[1] - r1 ]; + E1 = 0.5 * (D1 + A); + F1 = D1 + [0,10]; + + hull(){ + for (m=[0,1]) mirror([m,0]) + circleat(A, r1); + } + for (m=[0,1]) mirror([m,0]) { + difference(){ + polygon([ E1, + A, + B0, + G, + F1, + D1 + ]); + circleat(D1, r1); + } + } } module CaseBase_rhsflip(yn=[0,1]) { @@ -314,6 +346,14 @@ module Keeper(){ ////toplevel OneKeeper(); } +module ButtonPlanForDemo(colour, z, gap, overlap){ + color(colour) + translate([0,0,z]) + ButtonPlan(8, + lid_buttoncover_gap * gap + + lid_buttoncover_overlap * overlap); +} + module DemoProfiles(){ ////toplevel LidEdgeProfile(); %EdgeProfile(); @@ -331,6 +371,13 @@ module DemoProfiles(){ ////toplevel rectfromto(bppR, demopoint_QR); } } + + translate([-40,0]) { + ButtonPlanForDemo("blue", 0, 0,0); + ButtonPlanForDemo("red", -1, 1,0); + ButtonPlanForDemo("yellow", -2, 0,1); + ButtonPlanForDemo("blue", -3, 1,1); + } } //EdgeProfile();