side wall improvements: add option to not include ventilation holes for side walls, and add horizontal bracing
This commit is contained in:
@ -1,5 +1,8 @@
|
|||||||
// Config aggregator file
|
// Config aggregator file + some extra configs
|
||||||
include <./dowel.scad>
|
include <./dowel.scad>
|
||||||
include <./magnet.scad>
|
include <./magnet.scad>
|
||||||
include <./rackFrame.scad>
|
include <./rackFrame.scad>
|
||||||
include <./print.scad>
|
include <./print.scad>
|
||||||
|
|
||||||
|
|
||||||
|
sideWallVentilation = true;
|
||||||
@ -14,6 +14,7 @@ use <./hingeModule.scad>
|
|||||||
module sideWallBase() {
|
module sideWallBase() {
|
||||||
|
|
||||||
applyHingeConnector()
|
applyHingeConnector()
|
||||||
|
applySideWallBracing(numVerticalRibs=2)
|
||||||
applyMagnetConnector()
|
applyMagnetConnector()
|
||||||
applyHandle()
|
applyHandle()
|
||||||
sideWallBase();
|
sideWallBase();
|
||||||
@ -135,13 +136,18 @@ module applySideWallDefaultVentilation(numVents) {
|
|||||||
|
|
||||||
r = 2; // vent roundness
|
r = 2; // vent roundness
|
||||||
ventLength = sideWallY - 2*sideWallDefaultVentilationToZEdge;
|
ventLength = sideWallY - 2*sideWallDefaultVentilationToZEdge;
|
||||||
ventZDiff = (sideWallZ - 2*sideWallDefaultVentilationToYEdge)/(numVents-1);
|
ventZDiff = numVents == 1
|
||||||
|
? 0 // TODO kinda ugly
|
||||||
|
: (sideWallZ - 2*sideWallDefaultVentilationToYEdge)/(numVents-1);
|
||||||
|
|
||||||
apply_n() {
|
apply_n() {
|
||||||
for (i = [0:numVents-1]) {
|
if (numVents > 0) {
|
||||||
translate(v = [0, sideWallDefaultVentilationToZEdge, i * ventZDiff + sideWallDefaultVentilationToYEdge])
|
for (i = [0:numVents-1]) {
|
||||||
vent();
|
translate(v = [0, sideWallDefaultVentilationToZEdge, i*ventZDiff+sideWallDefaultVentilationToYEdge])
|
||||||
|
vent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
children(0);
|
children(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,52 +161,67 @@ module applySideWallDefaultVentilation(numVents) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module applySideWallBracing(numRibs) {
|
module applySideWallBracing(numVerticalRibs) {
|
||||||
|
|
||||||
apply_p() {
|
apply_p() {
|
||||||
// TODO add horizontal bracing
|
// TODO add horizontal bracing
|
||||||
sideWallVerticalBracing(numRibs = numRibs);
|
union() {
|
||||||
|
sideWallVerticalBracing(numRibs = numVerticalRibs);
|
||||||
|
sideWallHorizontalBracing();
|
||||||
|
}
|
||||||
children(0);
|
children(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
module sideWallVerticalBracing(numRibs, ribZ, ribExtrusion=1) {
|
module sideWallVerticalBracing(numRibs) {
|
||||||
|
|
||||||
ribRampLength = 5;
|
|
||||||
ribWidth = 2;
|
|
||||||
ribZ = sideWallZ;
|
|
||||||
ribYDiff = sideWallY - 2*sideWallDefaultVerticalBracingToZEdge;
|
ribYDiff = sideWallY - 2*sideWallDefaultVerticalBracingToZEdge;
|
||||||
|
|
||||||
translate(v=[0,sideWallDefaultVerticalBracingToZEdge,0])
|
translate(v=[0,sideWallDefaultVerticalBracingToZEdge,0])
|
||||||
intersection() {
|
intersection() {
|
||||||
for (i = [0:numRibs-1]) {
|
for (i = [0:numRibs-1]) {
|
||||||
|
translate(v = [0, i*ribYDiff, 0])
|
||||||
translate(v = [sideWallThickness, i*ribYDiff, (sideWallZ-ribZ)/2])
|
verticalRib();
|
||||||
translate(v = [ribExtrusion-ribWidth, 0, 0])
|
|
||||||
verticalRib(ribExtend=4, ribWidth=ribWidth);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
halfspace(vpos=[1,0,0], p=[0,0,0]);
|
halfspace(vpos=[1,0,0], p=[0,0,0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
module verticalRib(ribExtend, ribWidth) {
|
module verticalRib(height=4, thickness=3, rampLength=0) {
|
||||||
|
|
||||||
roundness = 0.5;
|
translate(v=[sideWallThickness-eps,-thickness/2,0])
|
||||||
translate(v=[0,-ribWidth/2,0])
|
hull() {
|
||||||
minkowski() {
|
cube(size = [eps, thickness, eps]);
|
||||||
hull() {
|
|
||||||
translate(v=[0,0,roundness])
|
|
||||||
cube(size = [eps, ribWidth, eps]);
|
|
||||||
|
|
||||||
translate(v = [0, 0, ribRampLength])
|
translate(v = [0, 0, rampLength])
|
||||||
cube(size = [ribExtend, ribWidth, ribZ-2*(ribRampLength+roundness)]);
|
cube(size = [height, thickness, sideWallZ-2*rampLength]);
|
||||||
|
|
||||||
translate(v = [0, 0, ribZ-roundness])
|
translate(v = [0, 0, sideWallZ])
|
||||||
cube(size = [eps, ribWidth, eps]);
|
cube(size = [eps, thickness, eps]);
|
||||||
}
|
|
||||||
|
|
||||||
sphere(r=roundness);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module sideWallHorizontalBracing() {
|
||||||
|
|
||||||
|
ribThickness = 2.5;
|
||||||
|
|
||||||
|
horizontalRib(thickness=ribThickness);
|
||||||
|
|
||||||
|
translate(v=[0,0,sideWallZ-ribThickness])
|
||||||
|
horizontalRib(thickness=ribThickness);
|
||||||
|
|
||||||
|
module horizontalRib(height=4, thickness=3, rampLength=5) {
|
||||||
|
|
||||||
|
ribLength = sideWallY + rampLength - sideWallDefaultHorizontalBracingToZEdge;
|
||||||
|
|
||||||
|
translate(v = [sideWallThickness-eps, sideWallY-ribLength, 0])
|
||||||
|
hull() {
|
||||||
|
cube(size = [height, ribLength, thickness]);
|
||||||
|
|
||||||
|
translate(v=[0,-rampLength,0])
|
||||||
|
cube(size=[eps, eps, thickness]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -4,9 +4,8 @@ sideWallLeft();
|
|||||||
|
|
||||||
module sideWallLeft() {
|
module sideWallLeft() {
|
||||||
|
|
||||||
numVentsCustom = ceil((sideWallZ - 2*sideWallDefaultVentilationToYEdge)/10);
|
numVentsCustom = sideWallVentilation? ceil((sideWallZ - 2*sideWallDefaultVentilationToYEdge)/10): 0;
|
||||||
|
|
||||||
applySideWallBracing(numRibs=2)
|
|
||||||
applySideWallDefaultVentilation(numVents=numVentsCustom)
|
applySideWallDefaultVentilation(numVents=numVentsCustom)
|
||||||
sideWallBase();
|
sideWallBase();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,10 +4,9 @@ sideWallRight();
|
|||||||
|
|
||||||
module sideWallRight() {
|
module sideWallRight() {
|
||||||
|
|
||||||
numVentsCustom = ceil((sideWallZ - 2*sideWallDefaultVentilationToYEdge)/10);
|
numVentsCustom = sideWallVentilation? ceil((sideWallZ - 2*sideWallDefaultVentilationToYEdge)/10): 0;
|
||||||
|
|
||||||
mirror(v=[1,0,0])
|
mirror(v=[1,0,0])
|
||||||
applySideWallBracing(numRibs=2)
|
|
||||||
applySideWallDefaultVentilation(numVents=numVentsCustom)
|
applySideWallDefaultVentilation(numVents=numVentsCustom)
|
||||||
sideWallBase();
|
sideWallBase();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,7 @@ hingePoleDx = sideWallSlotToOuterYEdge + sideWallConnW/2.0;
|
|||||||
hingePoleDy = sideWallY - (sideWallSlotToOuterXEdge + (hingePoleR+radiusXYSlack));
|
hingePoleDy = sideWallY - (sideWallSlotToOuterXEdge + (hingePoleR+radiusXYSlack));
|
||||||
|
|
||||||
sideWallDefaultVerticalBracingToZEdge = 30;
|
sideWallDefaultVerticalBracingToZEdge = 30;
|
||||||
|
sideWallDefaultHorizontalBracingToZEdge = sideWallDefaultVerticalBracingToZEdge;
|
||||||
sideWallDefaultVentilationToZEdge = 40;
|
sideWallDefaultVentilationToZEdge = 40;
|
||||||
sideWallDefaultVentilationToYEdge = 25;
|
sideWallDefaultVentilationToYEdge = 25;
|
||||||
sideWallDefaultVentilationWidth = 6;
|
sideWallDefaultVentilationWidth = 6;
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user