Files
rackstack/rack/xBar.scad
2023-03-16 14:46:40 -04:00

64 lines
1.4 KiB
OpenSCAD

include <../helper/cylindricalFilet.scad>
include <../helper/screws.scad>
include <./config.scad>
include <./xyBarConnector.scad>
// Temporary
include <./yBar.scad>
// It's actually the railSlotToInnerYEdge of the yBar, it'll be nice to be able to refer to it like yBar.railSlotToInnerYEdge
xBarX = maxUnitWidth - 2*railSlotToInnerYEdge;
xBarY = 32;
xBarHeight = 15;
xBarWallThickness = 2;
xBarRoundness = baseRoundness;
*xBar();
module xBar() {
applyYBarConnector()
xBarBase();
module xBarBase() {
intersection() {
difference() {
cylindricalFiletEdge(xBarY, xBarX, xBarHeight, xBarRoundness);
translate(v = [xBarWallThickness, xBarWallThickness, xBarWallThickness])
cylindricalFiletEdge(xBarY, xBarX-2*xBarWallThickness, xBarHeight, xBarRoundness);
}
// Shave off bottom corners to reduce elephant's foot at where xBar and YBar join
halfspace(vpos = [0, 1, 1], p = [0, 0.6, 0]);
halfspace(vpos = [0, -1, 1], p = [0, xBarX-0.6, 0]);
}
}
module mirrorOtherCorner() {
children(0);
translate(v = [0, xBarX, 0])
mirror(v = [0, 1, 0]) {
children(0);
}
}
module applyYBarConnector() {
apply_pn() {
mirrorOtherCorner()
rotate(a=[0,0,-90])
yBarConnectorFromXLug();
mirrorOtherCorner()
rotate(a=[0,0,-90])
yBarConnectorFromX_N();
children(0);
}
}
}