This commit is contained in:
zhao
2023-08-19 01:16:45 -04:00
parent 8e91643506
commit fc2aa23c4d
55 changed files with 79 additions and 70 deletions

View File

@ -1,5 +1,8 @@
include <../../helper/common.scad>
include <../../config/common.scad>
include <../sharedVariables.scad>
include <../side/sideWallVariables.scad>
include <../connector/connectors.scad>
use <../mainRail.scad>
use <../yBar.scad>
use <../xBar.scad>

View File

@ -2,6 +2,8 @@ include <../../helper/common.scad>
include <../../config/common.scad>
include <../sharedVariables.scad>
connectorTopThickness = screwRadiusSlacked(rackFrameScrewType)+0.5;
module onYBarBasePlateConnectorPositive() {
translate(v=[0,0,yBarWallThickness])
intersection() {
@ -19,7 +21,7 @@ module onYBarBasePlateConnectorNegative() {
hull() {
// This has always been a pretty annoying to fit part. Increasing slack to 2*radiusXYSlack to compensate. TODO fix
translate(v = [basePlateYBarSlideNutDx, basePlateYBarSlideNutDy, plateBlockBaseConnRecession+overhangSlack])
roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType)+2*radiusXYSlack);
roundCutSlice(radius = connectorTopThickness+2*radiusXYSlack);
translate(v = [basePlateYBarSlideNutDx, basePlateYBarSlideNutDy, 0])
roundCutSlice(radius = plateBlockBaseConnY/2 + 2*radiusXYSlack);
@ -27,6 +29,40 @@ module onYBarBasePlateConnectorNegative() {
}
module onBasePlateToYBarConnectorPositive() {
union() {
translate(v=[basePlateConnPosX, basePlateConnPosY, 0])
yBarConnector();
translate(v=[basePlateConnPosX, basePlateConnPosY+xyPlateConnDy, 0])
yBarConnector();
translate(v=[basePlateConnPosX+xyPlateConnDx, basePlateConnPosY, 0])
rotate(a=[0,0,180])
yBarConnector();
translate(v=[basePlateConnPosX+xyPlateConnDx, basePlateConnPosY+xyPlateConnDy, 0])
rotate(a=[0,0,180])
yBarConnector();
}
module yBarConnector() {
difference() {
hull() {
translate(v=[0,0,plateBlockBaseConnRecession])
roundCutSlice(radius = connectorTopThickness, length=5);
roundCutSlice(radius = plateBlockBaseConnY/2, length=15);
}
mirror(v=[0,0,1])
counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10);
}
}
}
module roundCutSlice(radius, length=inf50) {
hull() {

View File

@ -52,6 +52,8 @@ module connectorPositive(on, to) {
onYBarToXBarPositive();
} else if (on == "yBar" && to == "basePlate") {
onYBarBasePlateConnectorPositive();
} else if (on == "basePlate" && to == "yBar") {
onBasePlateToYBarConnectorPositive();
} else if (on == "xBar" && to == "yBar") {
onXBarToYBarPositive();
} else if (on == "mainRail" && to == "yBar") {

View File

@ -3,7 +3,7 @@ include <../config/common.scad>
include <./sharedVariables.scad>
include <./connector/connectors.scad>
*mainRail();
mainRail();
module mainRail() {

View File

@ -3,8 +3,8 @@ use <../xBar.scad>
use <../yBar.scad>
use <../mainRail.scad>
// Evaluation print for slack config, please see slack.scad
// to configure tolerances
// Evaluation print for slack config, please see rackstack/config/slack.scad to configure tolerances
// Too tight -> increase slacks values. Too loose -> decrease values
intersection() {
yBar();

View File

@ -1,4 +1,7 @@
include <../sharedVariables.scad>
use <../stackEnds.scad>
// Oriented for 3d printing. No supports required.
rotate(a=[90-feetProtrusionAngle,0,0])
rackFeet();

View File

@ -1,5 +1,4 @@
use <../stackEnds.scad>
// Oriented for 3d printing. No supports required, but it's reccommended to print this with a brim.
// Adding a brim will require some post-processing in the form of trimming the bottom.
// Oriented for 3d printing. No supports required, but it's recommended to print this with a brim.
rackJoiner();

View File

@ -2,4 +2,5 @@ use <../side/sideWallLeft.scad>
// Oriented for 3d printing.
// Supports generally not required (? need to print to test), but a brim is recommended
// Depending on the type of filament you use, you could also print this with the outer wall side facing down.
sideWallLeft();

View File

@ -2,4 +2,5 @@ use <../side/sideWallRight.scad>
// Oriented for 3d printing.
// Supports generally not required (? need to print to test), but a brim is recommended
// Depending on the type of filament you use, you could also print this with the outer wall side facing down.
sideWallRight();

View File

@ -85,6 +85,12 @@ basePlateYBarSlideNutDy = yBarXYPlateBlockY - plateBlockInnerYFaceToScrew;
basePlateScrewMountToYBarXZFace = basePlateYBarSlideNutDy + joinCornerDepth; // Distance to the nearest YBar XZ face
basePlateScrewMountToYBarYZFace = (yBarWidth+basePlateYBarSlideNutDx) - yBarBasePlateConnectorWidth;
basePlateConnYBarCornerDx = yBarWidth; // distance from a plate body corner and the nearest yBar corner
basePlateConnYBarCornerDy = xBarY; // distance from a plate body corner and the nearest yBar corner
basePlateConnPosX = basePlateScrewMountToYBarYZFace - basePlateConnYBarCornerDx; // distance between plateBody corner at (0,0,0) and the related corner
basePlateConnPosY = basePlateScrewMountToYBarXZFace - basePlateConnYBarCornerDy;
xyPlateConnDx = xBarX + 2*basePlateYBarSlideNutDx; // X distance between connectors
xyPlateConnDy = yBarDepth - 2*basePlateScrewMountToYBarXZFace; // Y distance between connectors
plateGap = 1; // distance between edge of xy plate and other parts
@ -109,3 +115,4 @@ stackConnectorDx = rackTotalWidth - 2*(connectorXEdgeToYBarXEdge + connectorRect
stackConnectorDy = rackTotalDepth - 2*(connectorYEdgeToYBarYEdge + connectorRectDepth/2);
stackConnectorDualSpacing = 0.5;
feetProtrusionAngle = 40;

View File

@ -3,8 +3,7 @@ include <../../config/common.scad>
include <../sharedVariables.scad>
include <./sideWallVariables.scad>
translate(v=[10,20,-2 - sideWallZHingeTotalClearance])
*hingeModule();
hingeModule();
module hingeModule() {

View File

@ -3,8 +3,8 @@ include <../../config/common.scad>
include <../sharedVariables.scad>
include <./sideWallVariables.scad>
translate(v=[10,-5,-(2+sideWallZHingeTotalClearance)])
*magnetModule();
magnetModule();
module magnetModule() {

View File

@ -3,8 +3,8 @@ include <../../config/common.scad>
include <../sharedVariables.scad>
include <./sideWallMagnetMount.scad>
include <./sideWallVariables.scad>
include <./magnetModule.scad>
include <./hingeModule.scad>
use <./magnetModule.scad>
use <./hingeModule.scad>
//translate(v = [hingePoleDx ,hingePoleDy, 10])
//rotate(a=[0,0,-120])

View File

@ -1,6 +1,6 @@
include <./sideWallBase.scad>
*sideWallLeft();
sideWallLeft();
module sideWallLeft() {

View File

@ -1,6 +1,6 @@
include <./sideWallBase.scad>
*sideWallRight();
sideWallRight();
module sideWallRight() {

View File

@ -18,7 +18,6 @@ module rackFeet() {
bandThickness = 2;
height = 18;
protrusionAngle = 30;
translate(v = [stackConnectorDx/2, 0, 2])
mirror(v=[0,0,1]) {
@ -34,7 +33,6 @@ module rackFeet() {
}
module band() {
intersection() {
translate(v=[0,0,2])
difference() {
@ -44,9 +42,10 @@ module rackFeet() {
roundedCube(rackTotalWidth-6, inf50, height-6, 3, center = true);
}
halfspace(vpos=[0,1,-0.8],p=[0,-8,2]);
halfspace(vpos=[0,-1,0.75],p=[0,6,2]);
halfspace(vpos=[0,1,-tan(feetProtrusionAngle)],p=[0,-8,2]);
halfspace(vpos=[0,-1, tan(feetProtrusionAngle)],p=[0,6,2]);
// TODO make these edge deburrings more parametric
halfspace(vpos=[0,-1,0],p=[0,16,2]);
halfspace(vpos=[0,1,0],p=[0,-5,2]);
}

View File

@ -3,7 +3,7 @@ include <../config/common.scad>
include <./sharedVariables.scad>
include <./connector/connectors.scad>
*xBar();
xBar();
module xBar() {

View File

@ -1,21 +1,15 @@
include <../helper/common.scad>
include <./connector/connectors.scad>
*xyPlate();
xyPlate();
module xyPlate() {
translate(v=-[connPosX,connPosY,0]) // center around one of the YBarConnector holes
translate(v=-[basePlateConnPosX,basePlateConnPosY,0]) // center around one of the YBarConnector holes
applyVentilation()
applyYBarConnectors()
applyConnector(on="basePlate", to="yBar")
plateBody();
connYBarCornerDx = yBarWidth; // distance from a plate body corner and the nearest yBar corner
connYBarCornerDy = xBarY; // distance from a plate body corner and the nearest yBar corner
connPosX = basePlateScrewMountToYBarYZFace - connYBarCornerDx; // distance between plateBody corner at (0,0,0) and the related corner
connPosY = basePlateScrewMountToYBarXZFace - connYBarCornerDy;
module plateBody() {
plateBodyX = xBarX - 2*plateGap;
plateBodyY = (yBarDepth - 2*xBarY) - 2*plateGap;
@ -57,42 +51,4 @@ module xyPlate() {
}
}
module applyYBarConnectors() {
apply_p() {
union() {
translate(v=[connPosX, connPosY, 0])
yBarConnector();
translate(v=[connPosX, connPosY+xyPlateConnDy, 0])
yBarConnector();
translate(v=[connPosX+xyPlateConnDx, connPosY, 0])
rotate(a=[0,0,180])
yBarConnector();
translate(v=[connPosX+xyPlateConnDx, connPosY+xyPlateConnDy, 0])
rotate(a=[0,0,180])
yBarConnector();
}
children(0);
}
module yBarConnector() {
difference() {
hull() {
// TODO: we don't need to heatset insert values anymore
translate(v=[0,0,plateBlockBaseConnRecession])
roundCutSlice(radius = heatSetInsertSlotRadiusSlacked(rackFrameScrewType), length=5);
roundCutSlice(radius = plateBlockBaseConnY/2, length=15);
}
mirror(v=[0,0,1])
counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10);
}
}
}
}

View File

@ -3,7 +3,7 @@ include <../config/common.scad>
include <./connector/connectors.scad>
include <./sharedVariables.scad>
*yBar();
yBar();
module yBar() {