// -*- C -*-
+// Dimensions of the main GPS body
outerw = 140;
outerh = 80;
+outert = 10;
+
+// Dimensions of the bezel area round the edges
bezelw = 8;
bezelboth = 8;
bezeltoph = 8;
-outert = 10;
+// Dimensions of the speaker at the back
spkrdia = 40;
spkr2bot = 40;
spkr2rhs = 30;
+// Dimensions of the plug and wire
plugw = 10;
plugh = 8;
plug2bot = 30;
plug2lhs = 40;
-
plugtotald = 20;
pluggapd = 12;
-plugslop = 0.3;
+// Amount of wire protrusion to allow for
+plugwiremoreh = 30;
-screent = 1.0;
+// Slops and steps
+plugslop = 0.5;
+plughstep = 1.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() {
- effplugw = plugw + plugslop;
- effplugh = plugh + plugslop;
difference(){
union(){
difference(){
translate([outerw-spkr2rhs, spkr2bot, -1])
cylinder(r=spkrdia/2, h=outert+2);
}
- translate([plug2lhs+effplugw/2, plug2bot+effplugh/2, 0.01])
- cylinder(r=(effplugw+effplugh)/2, h=outert-0.02);
- for (x=[plug2lhs-plugstrutw, plug2lhs+effplugw])
- translate([x, 0.1, 0.01])
- cube([plugstrutw, outerh-0.2, plugstrutt-0.02]);
+ 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]);
}
- translate([plug2lhs, plug2bot, -1])
- cube([effplugw, effplugh, outert+2]);
+ GpsPlugPlug(0);
}
}
module GpsPlug() {
-// translate([plug2lhs, plug2bot, 0]) {
-// translate([
-// }
+ 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]);
+ }
+}
+
+module GpsAssembled(){ ////toplevel
+ GpsBody();
+ GpsPlug();
+}
+
+module GpsPlugT(){ ////toplevel
+ rotate([0,-90,0]) GpsPlug();
}
-GpsBody();
+//GpsPlugT();
+GpsAssembled();