// -*- C -*- // Dimensions of the main GPS body outerw = 120 - 0.5; outerh = 75 - 0.5; outert = 15; // Dimensions of the bezel area round the edges bezelw = 11 - 0.5; bezelboth = 11 - 0.5; bezeltoph = 7 - 0.5; // Dimensions of the speaker at the back spkrdia = 22; spkr2bot = 19; spkr2rhs = 25; // Dimensions of the plug and wire plugw = 12; plugh = 9; plug2bot = 11; plug2lhs = 11; plugtotald = 15; pluggapd = 5; // Amount of wire protrusion to allow for plugwiremoreh = 25; // Slops and steps etc. plugslop = 0.5; plughstep = 1.5; bodylhsrhsslop = 0.5; // Dimensions for strength only screent = 1.0; plugstrutw = 4; plugstrutt = min(outert, 5); module GpsPlugPlug(slop){ effhslop = slop - plughstep; effplugw = plugw + slop*2; effplugh = plugh + effhslop*2; translate([plug2lhs-slop, plug2bot-effhslop, -1]) cube([effplugw, effplugh, outert+2]); } module GpsBody() { difference(){ union(){ difference(){ cube([outerw, outerh, outert]); translate([bezelw, bezelboth, screent]) cube([outerw-bezelw*2, outerh-bezelboth-bezeltoph, outert]); translate([outerw-spkr2rhs, spkr2bot, -1]) cylinder(r=spkrdia/2, h=outert+2); } translate([plug2lhs+plugw/2, plug2bot+plugh/2, 0.05]) cylinder(r=(plugw+plugh)/2, h=outert-0.02); for (x=[plug2lhs-plugstrutw, plug2lhs+plugw]) translate([x, 0.1, 0.05]) cube([plugstrutw, outerh-0.2, plugstrutt-0.10]); } GpsPlugPlug(0); } } module GpsPlug() { plugwireh = plug2bot + plugwiremoreh; GpsPlugPlug(-plugslop); mirror([0,0,1]) translate([plug2lhs, plug2bot, 0]) { cube([plugw, plugh, plugtotald-0.05]); translate([0, -plugwireh, pluggapd]) cube([plugw, plugwireh+0.05, plugtotald-pluggapd]); } } lhsteethu = 2; module GpsLHSMask(xslop=0){ translate([plug2lhs + plugw+plugh+plugstrutw, 0, -50]) { for (iter=[-100/lhsteethu : 100/lhsteethu]) { translate([0, iter*lhsteethu*2, 0]) { linear_extrude(height=100) { polygon([[-300, 0], [ 0, 0], [lhsteethu,lhsteethu], [ 0, lhsteethu*2], [-300, lhsteethu*2+0.1]]); } } } } } module GpsAssembled(){ ////toplevel GpsBody(); GpsPlug(); } module GpsBodyLT(){ ////toplevel intersection(){ GpsBody(); GpsLHSMask(); } } module GpsBodyRT(){ ////toplevel difference(){ GpsBody(); GpsLHSMask(bodylhsrhsslop); } } module GpsPlugT(){ ////toplevel rotate([0,-90,0]) GpsPlug(); } //GpsPlugT(); //GpsAssembled(); //GpsLHSMask(); //GpsBodyLT(); //GpsBodyRT();