X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=anke-gps-bracket.scad;h=08b5b4f2c0f3146f724feffa543dbc6b9a551896;hb=7d0ca6e42d4401db8ef7567d25a40dbd72312dc8;hp=6190296223fb71fbb63e76c66ff44df7da696ae5;hpb=d129de758df29b6c209bdfb33d61f62a0499c620;p=reprap-play.git diff --git a/anke-gps-bracket.scad b/anke-gps-bracket.scad index 6190296..08b5b4f 100644 --- a/anke-gps-bracket.scad +++ b/anke-gps-bracket.scad @@ -1,11 +1,18 @@ // -*- C -*- +include + // Dimensions of the main GPS body -outerw = 120 + 2.5; -outerh = 75 - 0.2; -outert = 15 - 1.0; +outerw = 120; +outerh = 75; +outert = 15; outerbackbevel = 3; +// Dimensions for the model +model_outerw = outerw + 2.5; +model_outerh = outerh - 0.2; +model_outert = outert - 1.0; + // Dimensions of the bezel area round the edges bezelw = 11 - 0.5; bezelboth = 11 - 0.5; @@ -38,7 +45,13 @@ nestleddf = 4.0; nestleddbl = 3.3; nestleddbr = 3.6; -nestlewallmin = 5; +nestlewallmin = 4; +nestleceilmin = 4; + +// Adjustment for the GPS attitude +gpsazimuth = 45; +gpsrightwardoffset = 5; +gpsrearwardoffset = 2; // Amount of wire protrusion to allow for plugwiremoreh = 25; @@ -51,14 +64,15 @@ bodylhsrhsslop = 0.5; // Dimensions for strength only screent = 1.0; plugstrutw = 4; -plugstrutt = min(outert, 5); +plugstrutt = min(model_outert, 5); +nestledoveclipw = 20; 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]); + cube([effplugw, effplugh, model_outert+2]); } module GpsBodyOuterBevel(len){ @@ -78,22 +92,24 @@ module GpsBody() { ////toplevel difference(){ union(){ difference(){ - cube([outerw, outerh, outert]); + cube([model_outerw, model_outerh, model_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); + cube([model_outerw-bezelw*2, + model_outerh-bezelboth-bezeltoph, + model_outert]); + translate([model_outerw-spkr2rhs, spkr2bot, -1]) + cylinder(r=spkrdia/2, h=model_outert+2); } translate([plug2lhs+plugw/2, plug2bot+plugh/2, 0]) - cylinder(r=(plugw+plugh)/2, h=outert); + cylinder(r=(plugw+plugh)/2, h=model_outert); for (x=[plug2lhs-plugstrutw, plug2lhs+plugw]) translate([x, 0.1, 0]) - cube([plugstrutw, outerh-0.2, plugstrutt-0.10]); + cube([plugstrutw, model_outerh-0.2, plugstrutt-0.10]); } GpsPlugPlug(0); - for (x=[0,outerw]) translate([x,0,0]) GpsBodyOuterBevel(outerh); - for (y=[0,outerh]) translate([0,y,0]) - rotate([0,0,-90]) GpsBodyOuterBevel(outerw); + for (x=[0,model_outerw]) translate([x,0,0]) GpsBodyOuterBevel(model_outerh); + for (y=[0,model_outerh]) translate([0,y,0]) + rotate([0,0,-90]) GpsBodyOuterBevel(model_outerw); } } @@ -150,7 +166,22 @@ module GpsPlugT(){ ////toplevel rotate([0,-90,0]) GpsPlug(); } -module NestleCube(){ +module NestleCubeCutout(ca,cb,d){ + dist = cb - ca; + mirror([0,1,0]){ + rotate([90,0,0]){ + linear_extrude(height=d){ + polygon([[ca, -nestleh-1], + [ca, -dist/2], + [(ca+cb)/2, 0], + [cb, -dist/2], + [cb, -nestleh-1]]); + } + } + } +} + +module NestleCube(){ ////toplevel midw = nestlew/2; midd = min(nestledl,nestledr); midddb = max(nestleddbl,nestleddbr); @@ -160,7 +191,12 @@ module NestleCube(){ basew0 = -nestledwr; basew1 = +nestledwl-nestlew; - difference(){ + cutd0 = based0 + nestlewallmin; + cutd1 = based1 - nestlewallmin; + cutw0 = basew0 - nestlewallmin; + cutw1 = basew1 + nestlewallmin; + + translate([-(basew0+basew1)/2, -(based0+based1)/2, 0]) difference(){ polyhedron (points=[[ +0 , +0, 0], // 0 [ +0 , +nestledr, 0], // 1 @@ -180,11 +216,25 @@ module NestleCube(){ [4,3,2],[2,1,0],[0,4,2], [7,8,9],[5,6,7],[7,9,5]], convexity=3); + intersection(){ + NestleCubeCutout(cutw1, cutw0, max(nestledl,nestledr)); + rotate([0,0,90]) NestleCubeCutout(cutd0, cutd1, nestlew); + } } + + translate([gpsrightwardoffset,-gpsrearwardoffset,0]) + rotate([0,0,gpsazimuth]) + translate([nestledoveclipw/2,0,DoveClip_depth()-0.5]) + rotate([0,-90,0]) + DoveClipPairSane(count=3, h=nestledoveclipw); +} + +module NestleCubePin(){ ////toplevel + DoveClipPin(nestledoveclipw*0.4); } //GpsPlugT(); //GpsAssembled(); //GpsBody(); - -NestleCube(); +//NestleCube(); +//NestleCubePin();