X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=anke-gps-bracket.scad;h=efe34a11def9a624c26e98be9dafb70b8310307a;hb=9288de5063980428631b5f250d48f563b6aac572;hp=08b5b4f2c0f3146f724feffa543dbc6b9a551896;hpb=7d0ca6e42d4401db8ef7567d25a40dbd72312dc8;p=reprap-play.git diff --git a/anke-gps-bracket.scad b/anke-gps-bracket.scad index 08b5b4f..efe34a1 100644 --- a/anke-gps-bracket.scad +++ b/anke-gps-bracket.scad @@ -1,5 +1,9 @@ // -*- C -*- +// todo +// nestlecube does not fit +// nestlecube doveclip at wrong angle + include // Dimensions of the main GPS body @@ -8,6 +12,11 @@ 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; @@ -50,6 +59,7 @@ nestleceilmin = 4; // Adjustment for the GPS attitude gpsazimuth = 45; +gpselevation = 40; gpsrightwardoffset = 5; gpsrearwardoffset = 2; @@ -60,12 +70,24 @@ 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(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; @@ -233,8 +255,75 @@ 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([0, -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(); //NestleCubePin(); +//HolderSideL(); +//HolderSideR(); +//HolderSidePin(); +//ChassisBar(); +//Pins();