update sidewalls

This commit is contained in:
zhao
2023-07-15 12:41:42 -04:00
parent 95020a2117
commit ab08f6392c
23 changed files with 57 additions and 34 deletions

View File

@ -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

View File

@ -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;

View File

@ -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);
} }

Binary file not shown.

View File

@ -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() {

View File

@ -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;

View File

@ -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);
} }

View File

@ -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);
} }

View File

@ -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.