X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=anke-gps-bracket.scad;h=d774efba96d397df81b9e210edd84caafa011f71;hb=ba1cd1b2716aec4a85b0bc83de780b4fa4ebbf5f;hp=b92d16eb0a12e295608ef74c8486ec7788a939b7;hpb=a5f12ec2455f5c9fe6fc40d4437fddea1f06848b;p=reprap-play.git diff --git a/anke-gps-bracket.scad b/anke-gps-bracket.scad index b92d16e..d774efb 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 @@ -39,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; @@ -50,14 +54,12 @@ nestleddf = 4.0; nestleddbl = 3.3; 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; @@ -68,6 +70,7 @@ plughstep = 1.5; bodylhsrhsslop = 0.5; holderhgap = 5; holderbezelmore = 2; +nestlebevel = 2; // Dimensions for strength only screent = 1.0; @@ -79,6 +82,11 @@ holderwallt = 2.5; holderbackt = 2.8; holderdccount = 2; holderdoveclipl = 15; +chassish = 13; +chassist = 13; +nestlefloorh = 2.0; +nestleceilh = 2.0; +nestlewallmin = 3.0; // Consequential values holderdcw = DoveClipPairSane_width(holderdccount); @@ -184,19 +192,29 @@ module GpsPlugT(){ ////toplevel module NestleCubeCutout(ca,cb,d){ dist = cb - ca; + cuth = -nestleh + nestlefloorh; mirror([0,1,0]){ + translate([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]]); + linear_extrude(height=d+2){ + polygon([[ca+nestlebevel, cuth], + [ca, cuth+nestlebevel*2], + [ca, -dist/2-nestleceilh], + [(ca+cb)/2, -nestleceilh], + [cb, -dist/2-nestleceilh], + [cb, cuth+nestlebevel*2], + [cb-nestlebevel, cuth]]); } } } } +module NestleCubeBevel(){ + translate([-nestlebevel, -100, -0.1]) + rotate([0,30,0]) + cube([nestlebevel*2, 200, nestlebevel*5]); +} + module NestleCube(){ ////toplevel midw = nestlew/2; midd = min(nestledl,nestledr); @@ -212,29 +230,34 @@ module NestleCube(){ ////toplevel 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 - [ -midw , +midd, 0], // 2 - [ -nestlew, +nestledl, 0], // 3 - [ -nestlew, +0, 0], // 4 - [-nestledwr+0 , +nestleddf +0, -nestleh], // 5 - [-nestledwr+0 , -nestleddbr+nestledr, -nestleh], // 6 - [ -midw , -midddb +midd, -nestleh], // 7 - [+nestledwl-nestlew, -nestleddbl+nestledl, -nestleh], // 8 - [+nestledwl-nestlew, +nestleddf +0, -nestleh]], // 9 - triangles=[[0,1,6],[6,5,0], - [1,2,7],[7,6,1], - [2,3,8],[8,7,2], - [3,4,9],[9,8,3], - [4,0,5],[5,9,4], - [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([-(basew0+basew1)/2, -(based0+based1)/2, 0]) { + difference(){ + polyhedron + (points=[[ +0 , +0, 0], // 0 + [ +0 , +nestledr, 0], // 1 + [ -midw , +midd, 0], // 2 + [ -nestlew, +nestledl, 0], // 3 + [ -nestlew, +0, 0], // 4 + [-nestledwr+0 , +nestleddf +0, -nestleh], // 5 + [-nestledwr+0 , -nestleddbr+nestledr, -nestleh], // 6 + [ -midw , -midddb +midd, -nestleh], // 7 + [+nestledwl-nestlew, -nestleddbl+nestledl, -nestleh], // 8 + [+nestledwl-nestlew, +nestleddf +0, -nestleh]], // 9 + triangles=[[0,1,6],[6,5,0], + [1,2,7],[7,6,1], + [2,3,8],[8,7,2], + [3,4,9],[9,8,3], + [4,0,5],[5,9,4], + [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([0,0,-nestleh]) { + translate([-nestledwr, 0, 0]) NestleCubeBevel(); + } } } @@ -249,7 +272,7 @@ module NestleCubePin(){ ////toplevel DoveClipPin(nestledoveclipw*0.4); } -module HolderSide(){ +module HolderSideL(){ ////toplevel minz = -(bezelw - holderbezelmore) - holderbackt; holdert = holder_outert + holderwallt*2; cylr = 0.5*sqrt(holderdcw*holderdcw + holderdoveclipl*holderdoveclipl); @@ -277,8 +300,47 @@ module HolderSide(){ } } +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(); //NestleCubePin(); +//HolderSideL(); +//HolderSideR(); +//HolderSidePin(); +//ChassisBar(); +//Pins();