update sidewalls
This commit is contained in:
10
README.md
10
README.md
@ -56,19 +56,19 @@ Requirements:
|
|||||||
### Examples:
|
### Examples:
|
||||||
Generate all project files for the `micro` profile:
|
Generate all project files for the `micro` profile:
|
||||||
|
|
||||||
`python3 rbuild.py -b all --nightly -c micro`
|
`python3 rbuild.py -b all -c micro`
|
||||||
|
|
||||||
This will build all the required STLs for a micro rack in the `stl/custom/` directory. The `--nightly` is optional and
|
This will build all the required STLs for a micro rack in the `stl/custom/` directory.
|
||||||
means the build script will use the `openscad-nightly` command, instead of `openscad`. This usually results in much
|
|
||||||
faster build times and is generally recommended.
|
|
||||||
|
|
||||||
For generating a specific part:
|
For generating a specific part:
|
||||||
|
|
||||||
`python3 rbuild.py -b yBar --nightly -c micro -t custom`
|
`python3 rbuild.py -b yBar -c micro -t custom`
|
||||||
|
|
||||||
Generated stls are put into the `stl/` directories. The actual variable values for different profiles can be found in
|
Generated stls are put into the `stl/` directories. The actual variable values for different profiles can be found in
|
||||||
[rack/profiles.scad](config/rackFrame.scad).
|
[rack/profiles.scad](config/rackFrame.scad).
|
||||||
|
|
||||||
|
`rbuild.py` also support an optional `--nightly` flag, which means the build script will use the `openscad-nightly` command, instead of `openscad`.
|
||||||
|
|
||||||
We recommend you start by printing the `eval_P.stl` file first, just to determine if the default slack/layer height
|
We recommend you start by printing the `eval_P.stl` file first, just to determine if the default slack/layer height
|
||||||
configurations work for you. If parts are too tight/loose please take a look at
|
configurations work for you. If parts are too tight/loose please take a look at
|
||||||
[config/slack.scad](config/slack.scad). Please also adjust [config/printing.scad](config/printing.scad) to match your
|
[config/slack.scad](config/slack.scad). Please also adjust [config/printing.scad](config/printing.scad) to match your
|
||||||
|
|||||||
@ -13,15 +13,15 @@
|
|||||||
- These values depend on print orientation and it's assumed parts are printed in their recommended orientations.
|
- These values depend on print orientation and it's assumed parts are printed in their recommended orientations.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
xySlack = 0.3;
|
xySlack = 0.4;
|
||||||
|
|
||||||
radiusXYSlack = xySlack/2;
|
radiusXYSlack = xySlack/2;
|
||||||
|
|
||||||
zSlack = 0.2;
|
zSlack = 0.0;
|
||||||
|
|
||||||
overhangSlack = 0.4;
|
overhangSlack = 0.7;
|
||||||
|
|
||||||
supportedOverhangSlack = 0.4;
|
supportedOverhangSlack = 0.7;
|
||||||
|
|
||||||
// special slack cases, change if neccessary
|
// special slack cases, change if neccessary
|
||||||
xBarYBarDovetailSlack = xySlack;
|
xBarYBarDovetailSlack = xySlack;
|
||||||
@ -5,7 +5,7 @@ use <./rackEars.scad>
|
|||||||
|
|
||||||
// Config variables
|
// Config variables
|
||||||
//trayAlignment = "middle"; // middle, right, left
|
//trayAlignment = "middle"; // middle, right, left
|
||||||
trayWidth = 150;
|
trayWidth = 110;
|
||||||
trayDepth = 100;
|
trayDepth = 100;
|
||||||
trayThickness = 3;
|
trayThickness = 3;
|
||||||
|
|
||||||
@ -17,26 +17,47 @@ bottomScrewTray(u=5);
|
|||||||
|
|
||||||
module bottomScrewTray(u) {
|
module bottomScrewTray(u) {
|
||||||
|
|
||||||
screwDx = rackMountScrewWidth;
|
|
||||||
echo(screwDx);
|
frontLipHeight = 5;
|
||||||
|
backLipHeight = 5; // also applies to sides
|
||||||
|
lipThickness = 3;
|
||||||
|
|
||||||
|
rackEarSideThickness = 3;
|
||||||
|
rackEarFrontThickness = 3;
|
||||||
|
|
||||||
|
screwDx = rackMountScrewWidth; // x dist between the mount holes
|
||||||
screwDz = uDiff * u;
|
screwDz = uDiff * u;
|
||||||
|
|
||||||
plateLength = screwDx + 2*rackMountScrewXDist;
|
plateLength = screwDx + 2*rackMountScrewXDist;
|
||||||
plateHeight = screwDz + 2*rackMountScrewZDist;
|
plateHeight = screwDz + 2*rackMountScrewZDist;
|
||||||
|
|
||||||
leftScrewDistToTray = 10+4+3;
|
minScrewToTraySpacing = 8;
|
||||||
assert(leftScrewDistToTray >= 5);
|
|
||||||
|
// TODO: toggle this based on left/right/middle alignment
|
||||||
|
leftScrewDistToTray = minScrewToTraySpacing + 2 +5;
|
||||||
|
|
||||||
leftScrewGlobalX = -leftScrewDistToTray;
|
leftScrewGlobalX = -leftScrewDistToTray;
|
||||||
rightScrewGlobalX = screwDx + leftScrewGlobalX;
|
rightScrewGlobalX = screwDx + leftScrewGlobalX;
|
||||||
|
|
||||||
cube(size=[trayWidth, trayDepth, trayThickness]);
|
cube(size=[trayWidth, trayDepth, trayThickness]);
|
||||||
|
|
||||||
translate(v=[rackMountScrewXDist+leftScrewGlobalX+3,0,rackMountScrewZDist])
|
translate(v=[0,0,trayThickness])
|
||||||
rackEarModule(frontThickness=3,sideThickness=3,frontWidth=leftScrewDistToTray, sideDepth=trayDepth-3, u=5);
|
cube(size=[trayWidth, lipThickness, frontLipHeight]);
|
||||||
|
|
||||||
|
translate(v=[0,trayDepth-lipThickness,trayThickness])
|
||||||
|
cube(size=[trayWidth, lipThickness, backLipHeight]);
|
||||||
|
|
||||||
|
translate(v=[0,0,trayThickness])
|
||||||
|
cube(size=[lipThickness, trayDepth, backLipHeight]);
|
||||||
|
|
||||||
|
translate(v=[trayWidth-lipThickness,0,trayThickness])
|
||||||
|
cube(size=[lipThickness, trayDepth, backLipHeight]);
|
||||||
|
|
||||||
|
translate(v=[leftScrewGlobalX,0,rackMountScrewZDist])
|
||||||
|
rackEarModule(frontThickness=rackEarFrontThickness,sideThickness=rackEarSideThickness,frontWidth=leftScrewDistToTray+rackMountScrewXDist+rackEarSideThickness, sideDepth=trayDepth-lipThickness, u=u);
|
||||||
|
|
||||||
translate(v=[rightScrewGlobalX,0,rackMountScrewZDist])
|
translate(v=[rightScrewGlobalX,0,rackMountScrewZDist])
|
||||||
mirror(v=[1,0,0])
|
mirror(v=[1,0,0])
|
||||||
rackEarModule(frontThickness=3,sideThickness=3,frontWidth=30, sideDepth=trayDepth-3, u=5);
|
rackEarModule(frontThickness=rackEarFrontThickness,sideThickness=rackEarSideThickness,frontWidth=rightScrewGlobalX-trayWidth+rackMountScrewXDist+rackEarSideThickness, sideDepth=trayDepth-lipThickness, u=u);
|
||||||
|
|
||||||
}
|
}
|
||||||
BIN
rack-mount/bottomScrewTray.stl
Normal file
BIN
rack-mount/bottomScrewTray.stl
Normal file
Binary file not shown.
@ -4,7 +4,7 @@ include <../sharedVariables.scad>
|
|||||||
include <./sideWallVariables.scad>
|
include <./sideWallVariables.scad>
|
||||||
|
|
||||||
translate(v=[10,20,-2 - sideWallZHingeTotalClearance])
|
translate(v=[10,20,-2 - sideWallZHingeTotalClearance])
|
||||||
hingeModule();
|
*hingeModule();
|
||||||
|
|
||||||
module hingeModule() {
|
module hingeModule() {
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ include <../sharedVariables.scad>
|
|||||||
include <./sideWallVariables.scad>
|
include <./sideWallVariables.scad>
|
||||||
|
|
||||||
translate(v=[10,-5,-(2+sideWallZHingeTotalClearance)])
|
translate(v=[10,-5,-(2+sideWallZHingeTotalClearance)])
|
||||||
magnetModule();
|
*magnetModule();
|
||||||
|
|
||||||
magnetModuleMagnetMountDy = magnetMountToYBarFront - sideWallSlotToXZ;
|
magnetModuleMagnetMountDy = magnetMountToYBarFront - sideWallSlotToXZ;
|
||||||
magnetModuleMagnetMountDz = magnetMountToYBarTop + sideWallConnLugDepression;
|
magnetModuleMagnetMountDz = magnetMountToYBarTop + sideWallConnLugDepression;
|
||||||
|
|||||||
@ -5,13 +5,13 @@ sideWallLeft();
|
|||||||
module sideWallLeft() {
|
module sideWallLeft() {
|
||||||
|
|
||||||
applySideWallVerticalRibs()
|
applySideWallVerticalRibs()
|
||||||
//applyEpicVentilation()
|
applyEpicVentilation()
|
||||||
sideWallBase();
|
sideWallBase();
|
||||||
|
|
||||||
module applyEpicVentilation() {
|
module applyEpicVentilation() {
|
||||||
apply_n() {
|
apply_n() {
|
||||||
for (i = [1:8]) {
|
for (i = [1:8]) {
|
||||||
translate(v = [0, 41, i * 18 + 10])
|
translate(v = [0, 41, i * 12 + 10])
|
||||||
vent();
|
vent();
|
||||||
}
|
}
|
||||||
children(0);
|
children(0);
|
||||||
@ -20,17 +20,18 @@ module sideWallLeft() {
|
|||||||
module vent() {
|
module vent() {
|
||||||
minkowski() {
|
minkowski() {
|
||||||
rotate(a=[0,90,0])
|
rotate(a=[0,90,0])
|
||||||
cylinder(r=1,h=1);
|
cylinder(r=2,h=1);
|
||||||
|
|
||||||
cube(size = [10, 80, 5]);
|
cube(size = [10, 100, 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module applySideWallVerticalRibs() {
|
module applySideWallVerticalRibs() {
|
||||||
|
echo("sideWallZ", sideWallZ);
|
||||||
apply_p() {
|
apply_p() {
|
||||||
translate(v = [0, 20, 0])
|
translate(v = [0, 30, 0])
|
||||||
sideWallVerticalRibs(numRibs = 9, ribZ = sideWallZ, ribYDiff = 20, ribExtrusion = 1.5);
|
sideWallVerticalRibs(numRibs = 2, ribZ = sideWallZ, ribYDiff = 120, ribExtrusion = 1.5);
|
||||||
|
|
||||||
children(0);
|
children(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,17 +4,17 @@ sideWallRight();
|
|||||||
|
|
||||||
module sideWallRight() {
|
module sideWallRight() {
|
||||||
|
|
||||||
//applyEpicVentilation()
|
applyEpicVentilation()
|
||||||
mirror(v=[1,0,0])
|
mirror(v=[1,0,0])
|
||||||
applySideWallVerticalRibs()
|
applySideWallVerticalRibs()
|
||||||
//render()
|
|
||||||
sideWallBase();
|
sideWallBase();
|
||||||
|
|
||||||
module applyEpicVentilation() {
|
module applyEpicVentilation() {
|
||||||
|
|
||||||
apply_n() {
|
apply_n() {
|
||||||
|
translate(v=[-10,0,0])
|
||||||
for (i = [1:8]) {
|
for (i = [1:8]) {
|
||||||
translate(v = [0, 41, i * 18 + 10])
|
translate(v = [0, 41, i * 12 + 10])
|
||||||
vent();
|
vent();
|
||||||
}
|
}
|
||||||
children(0);
|
children(0);
|
||||||
@ -22,8 +22,10 @@ module sideWallRight() {
|
|||||||
|
|
||||||
module vent() {
|
module vent() {
|
||||||
minkowski() {
|
minkowski() {
|
||||||
sphere(r=1);
|
rotate(a=[0,90,0])
|
||||||
cube(size = [10, 40, 3]);
|
cylinder(r=2,h=1);
|
||||||
|
|
||||||
|
cube(size = [10, 100, 1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,8 +33,8 @@ module sideWallRight() {
|
|||||||
|
|
||||||
module applySideWallVerticalRibs() {
|
module applySideWallVerticalRibs() {
|
||||||
apply_p() {
|
apply_p() {
|
||||||
translate(v = [0, 20, 0])
|
translate(v = [0, 30, 0])
|
||||||
sideWallVerticalRibs(numRibs = 9, ribZ = sideWallZ, ribYDiff = 20, ribExtrusion = 1.5);
|
sideWallVerticalRibs(numRibs = 2, ribZ = sideWallZ, ribYDiff = 120, ribExtrusion = 1.5);
|
||||||
|
|
||||||
children(0);
|
children(0);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -115,7 +115,6 @@ def run_build(args):
|
|||||||
if filename_rack_mount:
|
if filename_rack_mount:
|
||||||
build_single(RACK_MOUNT_BUILD_DIR, rackMountBuildDirFull, filename_rack, config_var, dz, nightly)
|
build_single(RACK_MOUNT_BUILD_DIR, rackMountBuildDirFull, filename_rack, config_var, dz, nightly)
|
||||||
|
|
||||||
|
|
||||||
def build_single(build_dir, target_dir, filename, config, dz, nightly):
|
def build_single(build_dir, target_dir, filename, config, dz, nightly):
|
||||||
print('Building:', filename, 'from', build_dir, 'to', target_dir)
|
print('Building:', filename, 'from', build_dir, 'to', target_dir)
|
||||||
openscad_args = construct_openscad_args(build_dir, target_dir, filename, config, dz)
|
openscad_args = construct_openscad_args(build_dir, target_dir, filename, config, dz)
|
||||||
@ -171,7 +170,7 @@ def run_openscad(options, nightly):
|
|||||||
else:
|
else:
|
||||||
command = ['openscad']
|
command = ['openscad']
|
||||||
|
|
||||||
command += ['-q', '--export-format', 'binstl'] + options
|
command += ['--export-format', 'binstl'] + options
|
||||||
try:
|
try:
|
||||||
subprocess.check_output(command, universal_newlines=True, stderr=subprocess.DEVNULL)
|
subprocess.check_output(command, universal_newlines=True, stderr=subprocess.DEVNULL)
|
||||||
|
|
||||||
|
|||||||
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