X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=fairphone-case.scad;h=0b73f657e2654df6e58b460341ae5a69d2bda72f;hp=726bdc63846a8047b0b1d3edc652a6d7b5ac3b0f;hb=881387d225eb39aab986d4a605aeca9b379c309d;hpb=09a2d98e74acbb2f1d7e1d95908959d1a0985955 diff --git a/fairphone-case.scad b/fairphone-case.scad index 726bdc6..0b73f65 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -1,7 +1,7 @@ // -*- C -*- -phone_height = 146.5 - .80; -phone_width = 76.75 - .50; +phone_height = 146.5; +phone_width = 76.75; phone_cnr_rad = 6.0; @@ -21,8 +21,8 @@ case_th_side = 2; case_th_lip = 1.2; case_struts_count = 6; -case_struts_solid_below = 0.75; -case_struts_solid_above = 1.00; +case_struts_solid_below = 1.00; +case_struts_solid_above = 0.75; case_struts_width = 0.10; keeper_th_z = 0.75; @@ -47,6 +47,8 @@ $fs = 0.1; button_l_fudge = 4.5; +strut_min_at_end = 1.5; + // ---------- calculated ---------- // ----- could be changed ----- @@ -245,15 +247,33 @@ module AroundEdges(fill_zstart, fill_th, fill_downwards=0){ [phone_width, -phone_height] + [-1,+1] * phone_cnr_rad); } -module Struts(z_min, th){ +module SideButton(y,l){ + $button_l= l; + translate([0, -y, 0]) + mirror([1,0,0]) + rotate([90,0,90]) + children(); +} + +module Buttons(){ + CaseBase_rhsflip([1]) SideButton(20.6, 8.8) children(); // power +} + +module Struts(x_start, z_min, th){ + // if th is negative, starts at z_min and works towards -ve z + // and object should then be printed other way up for (i= [1 : 1 : case_struts_count]) { translate([0, - -phone_height * i / (case_struts_count+1), - z_min + case_struts_solid_below]) - linear_extrude(height= th + 0, + z_min]) + mirror([0,0, th<0 ? 1 : 0]) + translate([0, + -phone_height * i / (case_struts_count+1), + case_struts_solid_below]) + linear_extrude(height= abs(th) -(case_struts_solid_below+case_struts_solid_above)) - rectfromto([ epp2i[0], -0.5 * case_struts_width ], - [ phone_width - epp2i[0], +0.5 * case_struts_width ]); + rectfromto([ x_start, -0.5 * case_struts_width ], + [ phone_width - x_start, +0.5 * case_struts_width ]); } } @@ -302,13 +322,27 @@ module Case(){ ////toplevel rectfromto(camera_pos_tl, camera_pos_br); // struts (invisible, because they're buried in the case) - Struts(epp2i[1] - case_th_bottom, case_th_bottom); + Struts(epp2i[0], epp2i[1] - case_th_bottom, case_th_bottom); + + Buttons(){ + translate([0,0,-10]) + linear_extrude(height= 20) + ButtonPlan($button_l, 0,1); + translate([0,0, -bppR[0]]) + linear_extrude(height= 20) + ButtonPlan($button_l, 1,1); + } } } module Lid(){ ////toplevel - AroundEdges(lpp10[1], lpp13[1] - lpp10[1], 0) - LidEdgeProfile(); + difference(){ + union(){ + AroundEdges(lpp10[1], lpp13[1] - lpp10[1], 0) + LidEdgeProfile(); + } + Struts(lpp10[0] + strut_min_at_end, lpp13[1], -case_th_lid); + } } module TestLength(){ ////toplevel