Files
rackstack/rack/sideWall.scad
2023-01-29 01:56:15 -05:00

104 lines
2.4 KiB
OpenSCAD

include <../helper/math.scad>
include <../helper/halfspace.scad>
include <../misc/magnet.scad>
include <./config.scad>
include <./yBar.scad>
include <./sideWallConnector.scad>
include <./sharedVariables.scad>
sideWallZ = 110;
sideWallY = 110;
sideWallX = 12;
sideWallZGapClearance = 0.2;
// make these global
hingePoleToInnerSideWallX = (hingePoleToConnectorOuterYZFace + sideWallSlotToOuterYEdge) - sideWallThickness;
hingePoleToInnerSideWallY = (hingePoleToConnectorOuterXZFace + sideWallSlotToOuterXEdge) - sideWallThickness;
module sideWall() {
applyHingeConnector()
applyMagnetConnector()
sideWallBase();
module sideWallBase() {
module roundThingHelper(x,y,z,r) {
translate(v=[r, r, 0])
minkowski() {
cube(size = [x-r, y - 2*r, z]);
sphere(r = r);
}
}
intersection() {
difference() {
roundThingHelper(sideWallX,sideWallY,sideWallZ, baseRoundness);
translate(v=[sideWallThickness, sideWallThickness,0])
roundThingHelper(sideWallX,sideWallY - 2*sideWallThickness,sideWallZ, baseRoundness);
}
halfspace(vpos=[-1,0,0], p=[sideWallX,0,0]);
halfspace(vpos=[0,0,-1], p=[0,0,sideWallZ]);
halfspace(vpos=[0,0,1], p=[0,0,0]);
}
}
module applyHingeConnector() {
hingeHolePositiveRad = hingeHoleR+1;
module hingeProjectConstructionPlane() {
translate(v=[sideWallX-(sideWallThickness+hingePoleToInnerSideWallX) - hingeHolePositiveRad,sideWallY,0])
cube(size=[2*hingeHolePositiveRad, eps, sideWallZ]);
}
apply_pn() {
hull() {
translate(v = [sideWallX-(sideWallThickness+hingePoleToInnerSideWallX), sideWallY-(sideWallThickness+
hingePoleToInnerSideWallY), 0])
cylinder(r = hingeHoleR+1, h = sideWallZ);
hingeProjectConstructionPlane();
}
union() {
translate(v = [sideWallX-(sideWallThickness+hingePoleToInnerSideWallX), sideWallY-(sideWallThickness+
hingePoleToInnerSideWallY), 0])
cylinder(r = hingeHoleR, h = sideWallZ);
// TODO annoying constant
halfspace(p=[sideWallX-3.3, sideWallY, 0], vpos=[1,1,0]);
}
children(0);
}
}
module applyMagnetConnector() {
apply_p() {
translate(v=[sideWallThickness,10,10])
rotate(a=[0,90,0])
sideWallConnectorMagnetSide();
children(0);
}
}
module applyEpicVentilation() {
}
}
sideWall();