Files
rackstack/rack/yBar.scad

53 lines
1.6 KiB
OpenSCAD

include <../helper/common.scad>
include <../config/common.scad>
include <./connector/connectors.scad>
include <./sharedVariables.scad>
yBar();
module yBar() {
applyOnYBarBothCorners(to="basePlate", trans=yBarBasePlateConnectorTrans)
applyOnYBarBothCorners(to="stackConnector", trans=yBarStackConnectorTrans)
applySideModules()
applyOnYBarBothCorners(to="mainRail", trans=yBarMainRailConnectorTrans)
applyOnYBarBothCorners(to="xBar", trans=yBarXBarConnectorTrans)
yBarBase();
module yBarBase() {
intersection() {
difference() {
sphericalFiletEdge(yBarWidth, yBarDepth, yBarHeight, yBarRoundness);
translate(v = [yBarWallThickness, joinCornerDepth, yBarWallThickness])
cylindricalFiletEdge(yBarWidth, yBarDepth-2*joinCornerDepth, yBarHeight, yBarRoundness-yBarWallThickness);
}
halfspace(vpos=[-1, 0, 1], p=[yBarWidth-1, 0,0]);
}
}
// Helper module to apply connectors to both corners
module applyOnYBarBothCorners(to, trans) {
applyConnector(on="yBar", to=to, trans=trans)
applyConnector(on="yBar", to=to, trans=yBarMirrorOtherCornerTrans * trans)
children(0);
}
module applySideModules() {
if (!fixedSideModules) {
applyOnYBarBothCorners(to="sideModule", trans=yBarSideModuleConnectorTrans)
children(0);
} else {
applyConnector(on="yBar", to="magnetModule", trans=yBarSideModuleConnectorTrans)
applyConnector(on="yBar", to="hingeModule", trans=yBarMirrorOtherCornerTrans * yBarSideModuleConnectorTrans)
children(0);
}
}
}