improve rack ears
This commit is contained in:
@ -2,8 +2,9 @@ use <../tray.scad>
|
|||||||
|
|
||||||
// Config variables
|
// Config variables
|
||||||
trayWidth = 140;
|
trayWidth = 140;
|
||||||
trayDepth = 85;
|
trayDepth = 88;
|
||||||
trayThickness = 3;
|
trayThickness = 3;
|
||||||
|
trayLipThickness = 3;
|
||||||
|
|
||||||
pointHoleRadius = screwRadiusSlacked("m3");
|
pointHoleRadius = screwRadiusSlacked("m3");
|
||||||
pointHoleThickness = 2;
|
pointHoleThickness = 2;
|
||||||
@ -16,4 +17,4 @@ mountPoints = [ // [x,y,elevation,holeRadius,holeThickness]
|
|||||||
mountScrewType = "m3";
|
mountScrewType = "m3";
|
||||||
|
|
||||||
// Rack mount tray that supports screws on the bottom of the rack-mount item
|
// 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);
|
bottomScrewTray(u=1, trayWidth=trayWidth, trayDepth=trayDepth, trayThickness=trayThickness, mountPoints=mountPoints, mountScrewType=mountScrewType, lipThickness=trayLipThickness);
|
||||||
@ -1,43 +1,52 @@
|
|||||||
include <./common.scad>
|
include <./common.scad>
|
||||||
|
|
||||||
// Rack ear modules.
|
// 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) {
|
rackEarModule(frontThickness=3,sideThickness=3,frontWidth=30, sideDepth=50, u=4, support=true);
|
||||||
// TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
earHeight = u*uDiff + 2*rackMountScrewZDist;
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
translate(v = [-rackMountScrewXDist, 0, -rackMountScrewZDist]) {
|
translate(v = [-rackMountScrewXDist, 0, -rackMountScrewZDist]) {
|
||||||
|
// front
|
||||||
cube(size = [frontWidth, frontThickness, earHeight]);
|
cube(size = [frontWidth, frontThickness, earHeight]);
|
||||||
|
|
||||||
if (triangular) {
|
// side
|
||||||
hull() {
|
hull() {
|
||||||
translate(v = [frontWidth-sideThickness, 0, 0])
|
translate(v = [frontWidth-sideThickness, 0, 0])
|
||||||
cube(size = [sideThickness, frontThickness, earHeight]);
|
cube(size = [sideThickness, frontThickness, earHeight]);
|
||||||
|
|
||||||
translate(v = [frontWidth-sideThickness, sideDepth, 0])
|
backSegmentPlane();
|
||||||
cube(size = [sideThickness, frontThickness, 1]);
|
}
|
||||||
|
|
||||||
|
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() {
|
rackMountHoles();
|
||||||
rotate(a=[90,0,0])
|
}
|
||||||
|
|
||||||
|
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);
|
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])
|
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);
|
|
||||||
@ -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) {
|
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;
|
mountBlockHeight = 10;
|
||||||
mountBlockDepth = 10;
|
mountBlockDepth = 10;
|
||||||
screwMountGlobalDz = screwDiff / 2.0; // vertical distance between local origin and main rail screw mount
|
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])
|
translate(v=[0,supportedY+distanceFromSeparator+r+backThickness,boxDz])
|
||||||
minkowski() {
|
minkowski() {
|
||||||
cube(size = [sideThickness, 25, railSideHeight-2*boxDz]); // TODO calculate 22.5
|
cube(size = [sideThickness, 25, railSideHeight-2*boxDz]);
|
||||||
sphere(r=r);
|
sphere(r=r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -2,11 +2,10 @@ include <./common.scad>
|
|||||||
use <./rackEars.scad>
|
use <./rackEars.scad>
|
||||||
|
|
||||||
|
|
||||||
module bottomScrewTray(u, trayWidth, trayDepth, trayThickness, mountPoints, mountScrewType) {
|
module bottomScrewTray(u, trayWidth, trayDepth, trayThickness, mountPoints, mountScrewType, lipThickness=3) {
|
||||||
|
|
||||||
frontLipHeight = 2;
|
frontLipHeight = 2;
|
||||||
backLipHeight = 1; // also applies to sides
|
backLipHeight = 1; // also applies to sides
|
||||||
lipThickness = 3;
|
|
||||||
|
|
||||||
rackEarSideThickness = 3;
|
rackEarSideThickness = 3;
|
||||||
rackEarFrontThickness = 3;
|
rackEarFrontThickness = 3;
|
||||||
@ -62,12 +61,12 @@ module bottomScrewTray(u, trayWidth, trayDepth, trayThickness, mountPoints, moun
|
|||||||
|
|
||||||
translate(v = [leftScrewGlobalX, 0, rackMountScrewZDist])
|
translate(v = [leftScrewGlobalX, 0, rackMountScrewZDist])
|
||||||
rackEarModule(frontThickness = rackEarFrontThickness, sideThickness = rackEarSideThickness, frontWidth =
|
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])
|
translate(v = [rightScrewGlobalX, 0, rackMountScrewZDist])
|
||||||
mirror(v = [1, 0, 0])
|
mirror(v = [1, 0, 0])
|
||||||
rackEarModule(frontThickness = rackEarFrontThickness, sideThickness = rackEarSideThickness, frontWidth =
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -39,11 +39,12 @@ module onYBarBasePlateConnectorNegative() {
|
|||||||
hexNutPocket_N("m3", openSide=false, backSpace=5, bridgeBack=true);
|
hexNutPocket_N("m3", openSide=false, backSpace=5, bridgeBack=true);
|
||||||
|
|
||||||
hull() {
|
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])
|
translate(v = [_heatSetX, _heatSetY, _baseConnRecession+overhangSlack])
|
||||||
roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType)+radiusXYSlack);
|
roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType)+2*radiusXYSlack);
|
||||||
|
|
||||||
translate(v = [_heatSetX, _heatSetY, 0])
|
translate(v = [_heatSetX, _heatSetY, 0])
|
||||||
roundCutSlice(radius = _baseConnY/2 + radiusXYSlack);
|
roundCutSlice(radius = _baseConnY/2 + 2*radiusXYSlack);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -65,3 +65,6 @@ xBarRoundness = baseRoundness;
|
|||||||
|
|
||||||
rackTotalWidth = 2*yBarWidth + xBarX;
|
rackTotalWidth = 2*yBarWidth + xBarX;
|
||||||
rackTotalDepth = yBarDepth;
|
rackTotalDepth = yBarDepth;
|
||||||
|
|
||||||
|
plateGap = 1; // distance between edge of xy plate and other parts
|
||||||
|
assert(plateGap >= xySlack);
|
||||||
|
|||||||
@ -20,11 +20,11 @@ module xyPlate() {
|
|||||||
connPosY = basePlateScrewMountToYBarXZFace - connYBarCornerDy;
|
connPosY = basePlateScrewMountToYBarXZFace - connYBarCornerDy;
|
||||||
|
|
||||||
module plateBody() {
|
module plateBody() {
|
||||||
plateBodyX = xBarX - xySlack;
|
plateBodyX = xBarX - 2*plateGap;
|
||||||
plateBodyY = (yBarDepth - 2*xBarY) - xySlack;
|
plateBodyY = (yBarDepth - 2*xBarY) - 2*plateGap;
|
||||||
plateBodyH = xBarWallThickness;
|
plateBodyH = xBarWallThickness;
|
||||||
|
|
||||||
translate(v=[xySlack/2, xySlack/2, 0]) {
|
translate(v=[plateGap, plateGap, 0]) {
|
||||||
cube(size = [plateBodyX, plateBodyY, plateBodyH]);
|
cube(size = [plateBodyX, plateBodyY, plateBodyH]);
|
||||||
|
|
||||||
// bracing
|
// bracing
|
||||||
@ -86,12 +86,13 @@ module xyPlate() {
|
|||||||
module yBarConnector() {
|
module yBarConnector() {
|
||||||
difference() {
|
difference() {
|
||||||
hull() {
|
hull() {
|
||||||
|
// TODO: we don't need to heatset insert values anymore
|
||||||
translate(v=[0,0,_baseConnRecession])
|
translate(v=[0,0,_baseConnRecession])
|
||||||
roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType), length=5);
|
roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType), length=5);
|
||||||
roundCutSlice(radius = _baseConnY/2, length=15);
|
roundCutSlice(radius = _baseConnY/2, length=15);
|
||||||
}
|
}
|
||||||
|
mirror(v=[0,0,1])
|
||||||
cylinder(r=screwRadiusSlacked(rackFrameScrewType), h=inf, center=true);
|
counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user