X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=fairphone-case.scad;h=43e847eac2c38680a402368d6ea5008475d2db61;hb=4db33c215acada6e73e6124f73716fc9bf064671;hp=35ffc96b9f1673ba47d39159298eab37ace3f291;hpb=1d7ee4585cc01e847229d7ebd5868a95ae33652f;p=reprap-play.git diff --git a/fairphone-case.scad b/fairphone-case.scad index 35ffc96..43e847e 100644 --- a/fairphone-case.scad +++ b/fairphone-case.scad @@ -79,12 +79,18 @@ foldover_lever_gap = 0.50; hingescrew_shaft_dia = 2.0 + 0.25; // M2 x 12mm machine screw hingescrew_shaft_len = 12; hingescrew_nut_thick = 1.93 + 0.20; // incl. washer -hingescrew_nut_dia = 4.72 + 0.50; // washer, actually +hingescrew_nut_access_dia = 4.72 + 0.50; +// ^ washer is 4.72 dia +// also, want to get pliers or tiny spanner in to do up locknut +hingescrew_nut_across = 3.92 + 0.25; // incl. slop around recess slop +hingescrew_nut_thick_real = 1.93; hingescrew_head_th = 1.38 + 0.75; hingescrew_head_dia = 3.92; lever_cover_th = 0.75; hingemount_th = 2.5; +hingescrew_nut_recess_portion = 2/3; // portion of nut in recess + $fa = 5; $fs = 0.1; @@ -194,7 +200,7 @@ bppV = lpp11; bppW = lpp10; // hinge plan -hp_rn = hingescrew_nut_dia/2; +hp_rn = hingescrew_nut_access_dia/2; hp_r2_min = hp_rn + lever_cover_th; hp_rs = hingescrew_shaft_dia/2; hp_r1_min = hp_rs + hingemount_th; @@ -227,8 +233,20 @@ hex21 = hex20 + hingescrew_portion_len; hex22 = hex21 + hinge_x_gap; hex23 = hex22 + hingescrew_portion_len - hingescrew_nut_thick; // bodge, need to divvy this up more sensibly +hex26 = hex23 + hingescrew_nut_thick_real * 2/3; hex24 = hex20 + hingescrew_shaft_len + hinge_x_postscrew_gap; -//echo(hex20, hex21, hex22, hex23, hex24); + +echo(hex20, hex21, hex22, hex23, hex24); +// 6, 10.8725, 10.9975, 13.74, 18.75 +module chk(act,exp) { + if (abs(act-exp) > 1e-9) echo("WRONG", act, exp); + else echo("ok", act); +} +chk(hex20, 6); +chk(hex21, 10.8725); +chk(hex22, 10.9975); +chk(hex23, 13.74); +chk(hex24, 18.75); //echo(hingescrew_portion_len); // catch @@ -593,7 +611,7 @@ module HingeLeverInnerProfile(){ c = s > 0 ? hppT : hppB; translate(c) mirror([0,0,s>0]) - rotate(-s * 45) + rotate(s<0 ? -40 : 0) hull() for (x=[-20,20]) for (y=[0, s * 10]) @@ -602,6 +620,13 @@ module HingeLeverInnerProfile(){ } } +module HingeLeverNutProfile(){ + for (c= [hppB, hppT]) { + translate(c) + circle($fn=6, r= 0.5 * hingescrew_nut_across / cos(30)); + } +} + module Flip_hinge(doflip=1){ hinge_origin = [0, -(phone_height - hppB[0]), hppB[1]]; translate(hinge_origin) @@ -891,9 +916,13 @@ module HingeLever(){ ////toplevel HingeLeverOuterProfile(); // space for the screws - HingePortion(hex23, hex24) + HingePortion(hex26, hex24) HingeLeverInnerProfile(); + // recesses for the nuts + HingePortion(hex23, hex26+1) + HingeLeverNutProfile(); + // bores for the screws HingeScrews(); @@ -904,7 +933,8 @@ module HingeLever(){ ////toplevel } module HingeLeverPrint(){ ////toplevel - rotate([90,0,0]) + rotate([-90,0,0]) + translate([-phone_width/2, phone_height, 0]) HingeLever(); } @@ -1134,9 +1164,11 @@ module DemoHingedFrame(){ ///toplevel } module DemoHinge(){ ////toplevel - DemoFrame(); - translate([0,0, -hp_k*3]) - DemoHingedFrame(); + translate([ -0.5*phone_width, phone_height, hp_k*3 ]) { + DemoFrame(); + translate([0,0, -hp_k*3]) + DemoHingedFrame(); + } } module DemoProfiles(){ ////toplevel @@ -1170,7 +1202,25 @@ module DemoProfiles(){ ////toplevel color("blue") HingeLidProfile(); color("red") HingeBaseProfile(); color("black") translate([0,0,-2]) HingeLeverOuterProfile(); - color("orange") translate([0,0,-1]) HingeLeverInnerProfile(); + } + + for (f=[0,1]) { + translate([-30, -60 + 30*f]) { + translate([0,0,-4]) EdgeProfile(); + %translate([0,0,-10]) HingeBaseProfile(); + translate([0,-2] * f * hp_k) { + translate([0,0,-4]) LidEdgeProfile(); + %translate([0,0,-10]) %HingeLidProfile(); + } + translate(+hppB) rotate([0,0,180*f]) translate(-hppB) { + translate([0,0,-2]) color("black") HingeLeverOuterProfile(); + translate([0,0,0]) color("red") difference(){ + HingeLeverOuterProfile(); + HingeLeverInnerProfile(); + } + translate([0,0,3]) color("yellow") HingeLeverNutProfile(); + } + } } translate([20,-30]) {