X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=fairphone-case.scad;h=98fbe56cee7b3af2d3741fc9c8be80ecfe8cdee7;hb=6a749370b5235f03c615e0328d7cfc7fe91d2ad5;hp=1d60ea04bec143cceb44df17885722c143ba69b0;hpb=ead3dbefec52532ff2bb07b9399e2592d0136ad0;p=reprap-play.git diff --git a/fairphone-case.scad b/fairphone-case.scad index 1d60ea0..98fbe56 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -121,9 +121,9 @@ prop_main_width = 3; prop_side_gap = 0.75; // each side prop_lidrecess_behind = 0.75; prop_caserecess_behind = 0.75; -prop_caserecess_taper = 0.35; // one side only +prop_caserecess_taper = 0.45; // one side only prop_prop_gap = 0.5; -prop_prong_heel_slope = 1.0; +prop_prong_heel_slope = 0.5; // ---------- calculated ---------- @@ -622,7 +622,7 @@ module CaseBase(){ EdgeProfile(); } -module PropProfile(gamma, cut=0){ ////toplevel +module PropProfile(gamma, cut=0, rot=0){ ////toplevel // https://en.wikipedia.org/wiki/Solution_of_triangles#Two_sides_and_the_included_angle_given_(SAS) k = hp_k; p = phone_height - prlp10[0] - hppB[0]; @@ -636,11 +636,12 @@ module PropProfile(gamma, cut=0){ ////toplevel theta = 90 - alpha; beta = 180 - alpha - gamma; - psi = 90 - beta + atan(prop_caserecess_taper); + psi = 90 - beta; echo("abc", a,b,c); - prpv1 = [ sin(psi), cos(psi) ]; + v1 = [ [ cos(psi), -sin(psi) ], // x + [ sin(psi), cos(psi) ] ]; // y prpp7 = [0, c + (lpp13[1] - prpp10[1]) ]; @@ -650,42 +651,45 @@ module PropProfile(gamma, cut=0){ ////toplevel prpp1 = prpp7 + [1,0] * // this is approximate, but will do (prop_main_th/2 + prop_prop_gap + prcp1[0] - epp4[0]); - prpp3 = prpp1 + [ -prp_r1, - (prcp2[1] - prcp1[1]) - prop_prop_gap ]; + prpp3 = prpp1 + + v1[0] * -prp_r1 + + v1[1] * ((prcp2[1] - prcp1[1]) - prop_prop_gap); + prpp12 = prpp3 + v1[0] * + (prop_end_dia + prop_caserecess_taper * (prpp1[1] - prpp3[1])); prp_r8 = prop_main_th; prpp4 = [ prop_main_th/2, prpp3[1] ]; prp_r5 = prp_r8; - prpp5 = [ prpp1[0] + prp_r1 - prp_r5, + prpp5 = [ prpp12[0] - prp_r5, prpp3[1] - prop_prong_h + prp_r5 ]; prpp6 = prpp4 + [0,-1] * (prop_prong_h + prop_prong_heel_slope * (prpp5[0] - prpp4[0])); prpp8 = prpp4 + [0,-1] * prp_r8; prpp9 = prpp8 + [-1,0] * prp_r8; - prpp12 = prpp3 + [1,0] * prop_end_dia; - //#circleat(prpp5,1); + //#circleat(prpp3,1); + //#circleat(prpp12,1); if (!cut) { hull(){ translate(prpp8) intersection(){ circle(prp_r8); - rectfromto([-20,-0], [20,20]); + polygon([[-20,-0], [0,0], [20,20]]); } rectfromto(prpp6, prpp9); translate(prpp5) intersection(){ circle(prp_r5); - rectfromto([-10,-10], [10,0]); + polygon([[-10,-10], [0,0], [10,0]]); } rectfromto(prpp12 + [0,-0.1], prpp3); } - %hull(){ + hull(){ circleat(prpp1, prp_r1); rectfromto(prpp12 + [0,-0.1], prpp3); } } // main shaft - rotate([0,0, cut ? -theta : 0]){ + rotate([0,0, rot*-theta]){ hull(){ extra = cut ? prop_recess_slop : 0; rectfromto(prpp6, prpp9); @@ -1105,12 +1109,12 @@ module DemoProfiles(){ ////toplevel translate([40,-30]) { difference(){ - %LidEdgeProfile(); - //translate(prlp10) - //PropProfile(10, 1); + LidEdgeProfile(); + translate(prlp10) + PropProfile(10, 1, 0); } translate(prlp10) - PropProfile(10, 0); + PropProfile(15, 0); } }