X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=anke-gps-bracket.scad;h=8d7c5428d3b4857ccb533470a52ff90b59cdcfa6;hb=dde145a866894d0d4b0ecc6bec7f81118d26cd8b;hp=5409c5e25f1be6b829affe282d045a8c568b22cd;hpb=81c9d59882fbf9f9f7a337c233d24383c4836c33;p=reprap-play.git diff --git a/anke-gps-bracket.scad b/anke-gps-bracket.scad index 5409c5e..8d7c542 100644 --- a/anke-gps-bracket.scad +++ b/anke-gps-bracket.scad @@ -1,13 +1,27 @@ // -*- C -*- +// todo +// nestlecube does not fit +// nestlecube doveclip at wrong angle + 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 holder +holder_outerw = outerw - 0.0; +holder_outerh = outerh + 0.0; +holder_outert = outert + 0.0; + +// 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; @@ -29,10 +43,10 @@ pluggapd = 5; // Dimensions of the hole in the tray // width and height (vertical) at the top nestleh = 53; -nestlew = 55.4 - 0.5; +nestlew = 60.9; // depths (back to front distance): -nestledl = 38.8 - 0.5; -nestledr = 42.7 - 0.5; +nestledl = 38.3 + 1.9; +nestledr = 42.2 + 1.7; // differences in width, depth, at bottom: nestledwl = 3.0; nestledwr = 2.4; @@ -43,10 +57,12 @@ nestleddbr = 3.6; nestlewallmin = 4; nestleceilmin = 4; -// Adjustment for the GPS attitude +// Adjustment for the GPS attitude and position gpsazimuth = 45; +gpselevation = 40; gpsrightwardoffset = 5; gpsrearwardoffset = 2; +gpsrightwardoffsetonbar = 0; // Amount of wire protrusion to allow for plugwiremoreh = 25; @@ -55,19 +71,31 @@ plugwiremoreh = 25; plugslop = 0.5; plughstep = 1.5; bodylhsrhsslop = 0.5; +holderhgap = 5; +holderbezelmore = 2; // Dimensions for strength only screent = 1.0; plugstrutw = 4; -plugstrutt = min(outert, 5); +plugstrutt = min(model_outert, 5); nestledoveclipw = 20; +holderh = model_outerh * 0.5; +holderwallt = 2.5; +holderbackt = 2.8; +holderdccount = 2; +holderdoveclipl = 15; +chassish = 13; +chassist = 13; + +// Consequential values +holderdcw = DoveClipPairSane_width(holderdccount); 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){ @@ -87,22 +115,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); } } @@ -174,7 +204,7 @@ module NestleCubeCutout(ca,cb,d){ } } -module NestleCube(){ +module NestleCube(){ ////toplevel midw = nestlew/2; midd = min(nestledl,nestledr); midddb = max(nestleddbl,nestleddbr); @@ -222,8 +252,79 @@ module NestleCube(){ DoveClipPairSane(count=3, h=nestledoveclipw); } +module NestleCubePin(){ ////toplevel + DoveClipPin(nestledoveclipw*0.4); +} + +module HolderSideL(){ ////toplevel + minz = -(bezelw - holderbezelmore) - holderbackt; + holdert = holder_outert + holderwallt*2; + cylr = 0.5*sqrt(holderdcw*holderdcw + holderdoveclipl*holderdoveclipl); + difference(){ + translate([-holderh, + -holderwallt, + minz]) { + cube([holderh + holderhgap + cylr, + holdert, + -minz]); + translate([holderh + holderhgap + cylr, holdert/2, 0]) { + cylinder(r=cylr, h=-minz); + rotate([0,0,gpselevation]) + translate([0, -holderdoveclipl/2, -minz + DoveClip_depth()]) + rotate([0,-90,-90]) + DoveClipPairSane(count=holderdccount, h=holderdoveclipl); + } + } + translate([-holderh-1, + 0, + minz + holderbackt]) + cube([holderh+1, + holder_outert, + bezelw]); + } +} + +module HolderSideR(){ ////toplevel + mirror([0,1,0]) HolderSideL(); +} + +module ChassisBar(){ ////toplevel + dist = holder_outerw - 2*((bezelw - holderbezelmore) + DoveClip_depth()); + cliph = holderdcw; + for (mir=[0,1]) { + mirror([mir,0,0]) { + translate([dist/2, cliph/2, 0]) + DoveClipPairSane(h=holderdoveclipl, count=holderdccount); + translate([-1, 0, 0]) + cube([dist/2 - DoveClip_depth() + 1.1, chassish, chassist]); + } + } + translate([-gpsrightwardoffsetonbar, -DoveClip_depth(), 0]) + rotate([0,0,-90]) + DoveClipPairSane(h=nestledoveclipw, count=3, + baseextend=chassist/2); +} + +module HolderSidePin(){ ////toplevel + DoveClipPin(holderdoveclipl*0.5); +} + +module Pins(){ ///toplevel + for (i=[1:4*holderdccount]) { + translate([i*10, 0, 0]) HolderSidePin(); + } + for (i=[1:6]) { + translate([i*10, 20, 0]) NestleCubePin(); + } +} + //GpsPlugT(); //GpsAssembled(); //GpsBody(); - -NestleCube(); +//NestleCube(); +//NestleCubePin(); +//HolderSideL(); +//HolderSideR(); +//HolderSidePin(); +//ChassisBar(); +//Pins();