From 07dee71795e170f7d0a6e11522e409a6d3f61bba Mon Sep 17 00:00:00 2001 From: zhao Date: Sun, 13 Aug 2023 00:55:47 -0400 Subject: [PATCH] improve rack ears --- rack-mount/boxMountA.scad | 0 rack-mount/print/tray_P.scad | 5 ++- rack-mount/rackEars.scad | 49 ++++++++++++--------- rack-mount/sideRail.scad | 3 +- rack-mount/tray.scad | 7 ++- rack/connector/basePlateYBarConnectors.scad | 5 ++- rack/sharedVariables.scad | 3 ++ rack/xyPlate.scad | 11 ++--- 8 files changed, 49 insertions(+), 34 deletions(-) delete mode 100644 rack-mount/boxMountA.scad diff --git a/rack-mount/boxMountA.scad b/rack-mount/boxMountA.scad deleted file mode 100644 index e69de29..0000000 diff --git a/rack-mount/print/tray_P.scad b/rack-mount/print/tray_P.scad index 87541dc..20c7be1 100644 --- a/rack-mount/print/tray_P.scad +++ b/rack-mount/print/tray_P.scad @@ -2,8 +2,9 @@ use <../tray.scad> // Config variables trayWidth = 140; -trayDepth = 85; +trayDepth = 88; trayThickness = 3; +trayLipThickness = 3; pointHoleRadius = screwRadiusSlacked("m3"); pointHoleThickness = 2; @@ -16,4 +17,4 @@ mountPoints = [ // [x,y,elevation,holeRadius,holeThickness] mountScrewType = "m3"; // Rack mount tray that supports screws on the bottom of the rack-mount item -bottomScrewTray(u=1, trayWidth=trayWidth, trayDepth=trayDepth, trayThickness=trayThickness, mountPoints=mountPoints, mountScrewType=mountScrewType); \ No newline at end of file +bottomScrewTray(u=1, trayWidth=trayWidth, trayDepth=trayDepth, trayThickness=trayThickness, mountPoints=mountPoints, mountScrewType=mountScrewType, lipThickness=trayLipThickness); \ No newline at end of file diff --git a/rack-mount/rackEars.scad b/rack-mount/rackEars.scad index 6196cc8..5f6add2 100644 --- a/rack-mount/rackEars.scad +++ b/rack-mount/rackEars.scad @@ -1,43 +1,52 @@ include <./common.scad> // Rack ear modules. -// To be used either by itself if the mount-item supports it, or within another module +// To be used either by itself if the item supports it, or within another module -module rackEarStandAlone(frontThickness, sideThickness, frontWidth, sideDepth, sideHoles) { - // TODO -} +rackEarModule(frontThickness=3,sideThickness=3,frontWidth=30, sideDepth=50, u=4, support=true); -module rackEarModule(frontThickness, sideThickness, frontWidth, sideDepth, u, triangular=true) { +module rackEarModule(frontThickness, sideThickness, frontWidth, sideDepth, u, backPlaneHeight=3, support=true) { earHeight = u*uDiff + 2*rackMountScrewZDist; difference() { translate(v = [-rackMountScrewXDist, 0, -rackMountScrewZDist]) { + // front cube(size = [frontWidth, frontThickness, earHeight]); - if (triangular) { - hull() { - translate(v = [frontWidth-sideThickness, 0, 0]) + // side + hull() { + translate(v = [frontWidth-sideThickness, 0, 0]) cube(size = [sideThickness, frontThickness, earHeight]); - translate(v = [frontWidth-sideThickness, sideDepth, 0]) - cube(size = [sideThickness, frontThickness, 1]); + backSegmentPlane(); + } + + if (support) { + hull() { + extraSpacing = 1; + translate(v= [rackMountScrewXDist+railScrewHoleToOuterEdge+extraSpacing,frontThickness,0]) + cube(size = [sideThickness, eps, earHeight]); + + backSegmentPlane(); } - } else { - translate(v = [frontWidth-sideThickness, 0, 0]) - cube(size = [sideThickness, sideDepth, earHeight]); } } - union() { - rotate(a=[90,0,0]) + rackMountHoles(); + } + + module backSegmentPlane() { + translate(v = [frontWidth-sideThickness, sideDepth, 0]) + cube(size = [sideThickness, eps, backPlaneHeight]); + } + + module rackMountHoles() { + rotate(a=[90,0,0]) cylinder(r=screwRadiusSlacked(mainRailScrewType), h=frontThickness*2, center=true); - translate(v=[0,0,u*uDiff]) + translate(v=[0,0,u*uDiff]) rotate(a=[90,0,0]) - cylinder(r=screwRadiusSlacked(mainRailScrewType), h=frontThickness*2, center=true); - } + cylinder(r=screwRadiusSlacked(mainRailScrewType), h=frontThickness*2, center=true); } } - -rackEarModule(frontThickness=3,sideThickness=3,frontWidth=30, sideDepth=50, u=4); \ No newline at end of file diff --git a/rack-mount/sideRail.scad b/rack-mount/sideRail.scad index 2a50236..4dd2416 100644 --- a/rack-mount/sideRail.scad +++ b/rack-mount/sideRail.scad @@ -10,6 +10,7 @@ sideRailScrewMountDist = yBarDepth - 2*(frontScrewSpacing + railFrontThickness + module sideSupportRailBase(u=2, double=true, top=true, baseThickness=2, sideThickness=2, backThickness=2, supportedZ=27.5, supportedY=101.5, supportedX=159) { + // TODO simplify this mountBlockHeight = 10; mountBlockDepth = 10; screwMountGlobalDz = screwDiff / 2.0; // vertical distance between local origin and main rail screw mount @@ -106,7 +107,7 @@ module sideSupportRailBase(u=2, double=true, top=true, baseThickness=2, sideThic } translate(v=[0,supportedY+distanceFromSeparator+r+backThickness,boxDz]) minkowski() { - cube(size = [sideThickness, 25, railSideHeight-2*boxDz]); // TODO calculate 22.5 + cube(size = [sideThickness, 25, railSideHeight-2*boxDz]); sphere(r=r); } diff --git a/rack-mount/tray.scad b/rack-mount/tray.scad index 1194231..b28f617 100644 --- a/rack-mount/tray.scad +++ b/rack-mount/tray.scad @@ -2,11 +2,10 @@ include <./common.scad> use <./rackEars.scad> -module bottomScrewTray(u, trayWidth, trayDepth, trayThickness, mountPoints, mountScrewType) { +module bottomScrewTray(u, trayWidth, trayDepth, trayThickness, mountPoints, mountScrewType, lipThickness=3) { frontLipHeight = 2; backLipHeight = 1; // also applies to sides - lipThickness = 3; rackEarSideThickness = 3; rackEarFrontThickness = 3; @@ -62,12 +61,12 @@ module bottomScrewTray(u, trayWidth, trayDepth, trayThickness, mountPoints, moun translate(v = [leftScrewGlobalX, 0, rackMountScrewZDist]) rackEarModule(frontThickness = rackEarFrontThickness, sideThickness = rackEarSideThickness, frontWidth = - leftScrewDistToTray+rackMountScrewXDist+rackEarSideThickness, sideDepth = trayDepth-lipThickness, u = u); + leftScrewDistToTray+rackMountScrewXDist+rackEarSideThickness, sideDepth = trayDepth-lipThickness, u = u, backPlaneHeight=trayThickness+backLipHeight); translate(v = [rightScrewGlobalX, 0, rackMountScrewZDist]) mirror(v = [1, 0, 0]) rackEarModule(frontThickness = rackEarFrontThickness, sideThickness = rackEarSideThickness, frontWidth = - rightScrewGlobalX-trayWidth+rackMountScrewXDist+rackEarSideThickness, sideDepth = trayDepth-lipThickness, u = u); + rightScrewGlobalX-trayWidth+rackMountScrewXDist+rackEarSideThickness, sideDepth = trayDepth-lipThickness, u = u, backPlaneHeight=trayThickness+backLipHeight); } diff --git a/rack/connector/basePlateYBarConnectors.scad b/rack/connector/basePlateYBarConnectors.scad index f4b9f13..0e5dd30 100644 --- a/rack/connector/basePlateYBarConnectors.scad +++ b/rack/connector/basePlateYBarConnectors.scad @@ -39,11 +39,12 @@ module onYBarBasePlateConnectorNegative() { hexNutPocket_N("m3", openSide=false, backSpace=5, bridgeBack=true); hull() { + // This has always been a pretty annoying to fit part. Increasing slack to 2*radiusXYSlack to compensate. TODO fix translate(v = [_heatSetX, _heatSetY, _baseConnRecession+overhangSlack]) - roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType)+radiusXYSlack); + roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType)+2*radiusXYSlack); translate(v = [_heatSetX, _heatSetY, 0]) - roundCutSlice(radius = _baseConnY/2 + radiusXYSlack); + roundCutSlice(radius = _baseConnY/2 + 2*radiusXYSlack); } } diff --git a/rack/sharedVariables.scad b/rack/sharedVariables.scad index f4e27a1..f0db526 100644 --- a/rack/sharedVariables.scad +++ b/rack/sharedVariables.scad @@ -65,3 +65,6 @@ xBarRoundness = baseRoundness; rackTotalWidth = 2*yBarWidth + xBarX; rackTotalDepth = yBarDepth; + +plateGap = 1; // distance between edge of xy plate and other parts +assert(plateGap >= xySlack); diff --git a/rack/xyPlate.scad b/rack/xyPlate.scad index 33a7a2d..eab9b58 100644 --- a/rack/xyPlate.scad +++ b/rack/xyPlate.scad @@ -20,11 +20,11 @@ module xyPlate() { connPosY = basePlateScrewMountToYBarXZFace - connYBarCornerDy; module plateBody() { - plateBodyX = xBarX - xySlack; - plateBodyY = (yBarDepth - 2*xBarY) - xySlack; + plateBodyX = xBarX - 2*plateGap; + plateBodyY = (yBarDepth - 2*xBarY) - 2*plateGap; plateBodyH = xBarWallThickness; - translate(v=[xySlack/2, xySlack/2, 0]) { + translate(v=[plateGap, plateGap, 0]) { cube(size = [plateBodyX, plateBodyY, plateBodyH]); // bracing @@ -86,12 +86,13 @@ module xyPlate() { module yBarConnector() { difference() { hull() { + // TODO: we don't need to heatset insert values anymore translate(v=[0,0,_baseConnRecession]) roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType), length=5); roundCutSlice(radius = _baseConnY/2, length=15); } - - cylinder(r=screwRadiusSlacked(rackFrameScrewType), h=inf, center=true); + mirror(v=[0,0,1]) + counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10); } }