X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=fairphone-case.scad;h=1dd97a0c0bbd6a3387a19efe03e72ea946729cc8;hb=b034c3c4e0e84cb229dd969132c225545194d28c;hp=ddf57918fac04a4189845b384d6bbbddfe39727f;hpb=b19986a1f5fa4d4ecd95405e472f05fdbad09305;p=reprap-play.git diff --git a/fairphone-case.scad b/fairphone-case.scad index ddf5791..1dd97a0 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -29,6 +29,10 @@ keeper_gap_x_holes = 0.75; case_lip = 1.25; +lid_gap_x = 0.25; +lid_gap_z = 0.25; +lid_lip = 1.75; + $fa = 5; $fs = 0.1; @@ -53,6 +57,11 @@ kppb = [ kppe[0] - keeper_th_x, kppc[1] ]; kppf = kppe - [0,1] * keeper_inner_height; kppa = [ kppb[0], kppf[1] ]; +lpp10 = [ epp5[0] + lid_gap_x, kppc[1] + lid_gap_z ]; +lpp11 = [ lpp10[0], epp5[1] + lid_gap_z ]; +lpp12 = [ epp4[0] + lid_lip, lpp11[1] ]; +lpp13 = [ lpp12[0], lpp12[1] + lid_lip ]; + module rectfromto(a,b) { ab = b - a; translate([min(a[0], b[0]), min(a[1], b[1])]) @@ -67,7 +76,7 @@ module KeeperProfile(){ module EdgeProfile(){ difference(){ hull(){ - circleat(epp3, r=case_th_bottom); + translate(epp3) square(case_th_bottom*2, center=true); circleat(epp2, r=case_th_bottom); circleat(epp1, r=case_th_side); rectfromto(epp0, epp4); @@ -79,6 +88,21 @@ module EdgeProfile(){ } } +module LidEdgeProfile(){ + polygon([ lpp10, + lpp11, + lpp12, + lpp13, + lpp13 + [10, 0], + lpp10 + [10, 0] + ]); + intersection(){ + circleat(lpp12, r=lid_lip); + rectfromto( lpp12 + [-10, 0], + lpp12 + [+10, +10] ); + } +} + module CaseBase_rhsflip(yn=[0,1]) { for (rhs=yn) { translate([phone_width/2, 0, 0]) @@ -97,13 +121,13 @@ module CaseBase_botflip() { } } -module CaseBase(){ +module AroundEdges(fill_zstart, fill_th, fill_downwards=0){ // sides CaseBase_rhsflip(){ translate([0, -phone_cnr_rad, 0]) rotate([90,0,0]) linear_extrude(height = phone_height - phone_cnr_rad*2) - EdgeProfile(); + children(0); } // corners CaseBase_rhsflip() CaseBase_botflip() { @@ -113,7 +137,7 @@ module CaseBase(){ intersection(){ mirror([1,0,0]) translate([-1,0] * phone_cnr_rad) - EdgeProfile(); + children(0); rectfromto([0,-20],[10,20]); } translate([-10, 0, -20] + 0.01 * [+1,-1, 0] ) @@ -125,16 +149,21 @@ module CaseBase(){ translate([ phone_width - phone_cnr_rad, 0,0 ]) rotate([90,0,-90]) linear_extrude(height = phone_width - phone_cnr_rad*2) - EdgeProfile(); + children(0); } // fill - translate([0,0, epp3[1]]) - mirror([0,0, 1]) - linear_extrude(height = case_th_bottom) + translate([0,0, fill_zstart]) + mirror([0,0, fill_downwards]) + linear_extrude(height = fill_th) rectfromto([+1,-1] * phone_cnr_rad, [phone_width, -phone_height] + [-1,+1] * phone_cnr_rad); } +module CaseBase(){ + AroundEdges(epp3[1], case_th_bottom, 1) + EdgeProfile(); +} + module Case(){ ////toplevel difference(){ CaseBase(); @@ -205,8 +234,17 @@ module Keeper(){ ////toplevel OneKeeper(); } +module DemoProfiles(){ ////toplevel + LidEdgeProfile(); + %EdgeProfile(); + KeeperProfile(); +} + //EdgeProfile(); //KeeperProfile(); //CaseBase(); //%Case(); //Keeper(); +//LidEdgeProfile(); +//KeeperProfile(); +//DemoProfiles();