update rack-mount items

This commit is contained in:
zhao
2023-08-08 20:23:27 -04:00
parent cb7a5e559b
commit 28ec3b9ae8
25 changed files with 80 additions and 29 deletions

View File

@ -7,6 +7,7 @@
- Start working on actual cases
- Figure out why sidewall build is so slow
- Tidy up imports
- Standardize meaning of `U`
### Ideas
- Clean up `sharedVariables.scad`!!!

View File

@ -1,4 +1,6 @@
include <../config/slack.scad>
// rj45 slot-to-slot keystone jack model and negative
keystoneMainBodyWidth = 15.0;
keystoneMainBodyHeight = 16.90;
@ -17,28 +19,29 @@ frontToSideLugFront = 10.63;
module rj45Keystone() {
// main keystone body (no hooks or lugs)
cube(size=[keystoneMainBodyWidth, keystoneMainBodyDepth, keystoneMainBodyHeight]);
cube(size=[keystoneMainBodyWidth + xySlack, keystoneMainBodyDepth + xySlack, keystoneMainBodyHeight]);
// slot for top hook
translate(v=[0,frontToHookCatch,0])
cube(size=[keystoneMainBodyWidth, keystoneMainBodyDepth -frontToHookCatch, heightWithHookBody]);
cube(size=[keystoneMainBodyWidth, frontToHookCatch, heightWithHookCatch]);
cube(size=[keystoneMainBodyWidth + xySlack, keystoneMainBodyDepth-frontToHookCatch + xySlack, heightWithHookBody]);
cube(size=[keystoneMainBodyWidth + xySlack, frontToHookCatch + xySlack, heightWithHookCatch]);
// slots for side lugs
translate(v=[-sideLugWidth, frontToSideLugFront,0])
cube(size=[widthWithSideLugs, keystoneMainBodyDepth-frontToSideLugFront, keystoneMainBodyHeight]);
cube(size=[widthWithSideLugs + xySlack, keystoneMainBodyDepth-frontToSideLugFront + xySlack, keystoneMainBodyHeight]);
// slots for bottom lugs
translate(v=[0,0,-(heightWithBottomLug-keystoneMainBodyHeight)])
cube(size=[keystoneMainBodyWidth, frontToBottomLugBack, keystoneMainBodyHeight]);
cube(size=[keystoneMainBodyWidth + xySlack, frontToBottomLugBack + xySlack, keystoneMainBodyHeight]);
}
module rj45KeystoneJack_N() {
translate(v=[0,-4,0.5]) // why?
intersection() {
translate(v=[-2.5,4,-4])
cube(size=[20,6,28]);
rj45Keystone();
}
intersection() {
translate(v=[-2.5,4,-4])
cube(size=[20,6,28]);
rj45Keystone();
}
}

View File

@ -1,7 +1,7 @@
// Some misc math-y utils
$fn=64;
eps=0.0001;
eps=0.001;
inf10 = 10;
inf50 = 50;
inf1000 = 1000;

View File

@ -0,0 +1,10 @@
// To be used with closed sideRails to fully encapsulate a box
include <../config/common.scad>
include <../helper/common.scad>
use <./plateBase.scad>
module frontBoxHolder(plateThickness=3, plate) {
}

View File

@ -0,0 +1,35 @@
include <../config/common.scad>
include <../helper/common.scad>
include <../rack/sharedVariables.scad>
use <./plateBase.scad>
patchPanel(slots=2);
module patchPanel (slots=8) {
difference() {
plateThickness = 3;
keystoneSpacing = 19;
supportPlateThickness = 5.9;
supportPlateHeight = 29;
supportPlateEdgeSpacing = 3;
supportPlateWidth = slots * keystoneSpacing + supportPlateEdgeSpacing;
leftRailScrewToSupportDx = railScrewHoleToInnerEdge+4;
railScrewToEdge = 4.5;
union() {
plateBase(U = 2, plateThickness = plateThickness, screwType = mainRailScrewType, screwToXEdge=railScrewToEdge, screwToYEdge=railScrewToEdge, filletR = 2);
translate(v = [leftRailScrewToSupportDx, - railScrewToEdge, - supportPlateThickness])
cube(size = [supportPlateWidth, supportPlateHeight, supportPlateThickness]);
}
union() {
for (i = [0:slots-1]) {
translate(v = [leftRailScrewToSupportDx+supportPlateEdgeSpacing + i*keystoneSpacing, 0, eps])
rotate(a = [-90, 0, 0])
rj45KeystoneJack_N();
}
}
}
}

View File

@ -3,7 +3,7 @@ include <./common.scad>
plateBase(U=2, plateThickness=3, screwType="m4", filletR=2);
module plateBase(U, plateThickness, screwType, screwToXEdge=4, screwToYEdge=4, filletR=2) {
module plateBase(U, plateThickness, screwType, screwToXEdge=4.5, screwToYEdge=4.5, filletR=2) {
assert(floor(U) == U && U > 0)
assert(plateThickness > 0);
@ -14,11 +14,12 @@ module plateBase(U, plateThickness, screwType, screwToXEdge=4, screwToYEdge=4, f
plateLength = screwDx + 2*screwToXEdge;
plateHeight = screwDy + 2*screwToYEdge;
translate(v=[0,0,-plateThickness]) // easier to work with
translate(v=[-screwToXEdge,-screwToYEdge,-plateThickness]) // easier to work with
difference() {
base();
mirror4XY(p=[screwToXEdge, screwToYEdge], dx=screwDx, dy=screwDy)
translate(v=[0,0,plateThickness])
cylinder(r=screwRadiusSlacked(screwType), h=plateThickness*2, center=true);
}
@ -26,7 +27,6 @@ module plateBase(U, plateThickness, screwType, screwToXEdge=4, screwToYEdge=4, f
minkowski() {
translate(v=[filletR, filletR, 0])
cube(size = [plateLength-2*filletR, plateHeight-2*filletR, plateThickness]);
cylinder(r=filletR, h=eps);
}
}

View File

@ -0,0 +1,3 @@
use <../patchPanel.scad>
patchPanel(slots=8);

View File

@ -8,7 +8,7 @@ sideSupportRailBase(u=2, double=true, top=true, baseThickness=1.5, sideThickness
// distance between front and back main rail screw mounts
sideRailScrewMountDist = yBarDepth - 2*(frontScrewSpacing + railFrontThickness + railSlotToXZ);
module sideSupportRailBase(u=2, double=true, top=true, baseThickness=2, sideThickness=2, backThickness=2, supportedZ=26.5, supportedY=101.5, supportedX=159) {
module sideSupportRailBase(u=2, double=true, top=true, baseThickness=2, sideThickness=2, backThickness=2, supportedZ=27.5, supportedY=101.5, supportedX=159) {
mountBlockHeight = 10;
mountBlockDepth = 10;

View File

@ -3,8 +3,9 @@
import argparse
import subprocess
import os
import sys
PATH_TO_OPENSCAD = '/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD'
PATH_TO_OPENSCAD_NIGHTLY = 'path/to/nightly/build'
# For actual dimensions, please see profiles.scad.
class BuildSizeConfig:
@ -23,9 +24,9 @@ RACK_MOUNT_BUILD_TARGET_SUB_DIR = 'rack-mount'
def main():
if not assert_os():
print("Linux Required for OpenSCAD CLI")
return
if not assertOpenscadExists():
print("Could not find OpenSCAD binary. Please make sure it's configured in rbuild.py. Currently only Darwin and Linux have been tested to work.")
parser = argparse.ArgumentParser(
prog='rbuild',
@ -75,6 +76,10 @@ def main():
def run_build(args):
build_var = args.b
if build_var is None:
print("Please provide the build (-b) variable") # TODO redundant
config_var = args.c
target_var = args.t
dz = args.dz
@ -166,9 +171,9 @@ def find_scad_file(directory, filename):
def run_openscad(options, nightly):
if nightly:
command = ['openscad-nightly', '--enable', 'all']
command = [PATH_TO_OPENSCAD_NIGHTLY, '--enable', 'all']
else:
command = ['openscad']
command = [PATH_TO_OPENSCAD]
command += ['--export-format', 'binstl'] + options
try:
@ -178,14 +183,8 @@ def run_openscad(options, nightly):
print('OpenSCAD command not found! '
'Please make sure that you have OpenSCAD installed and can run OpenSCAD CLI commands. '
'(Currently needs Linux for this)')
def assert_os():
if sys.platform == 'linux':
return True
else:
return False
def assertOpenscadExists():
return os.path.exists(PATH_TO_OPENSCAD)
if __name__ == '__main__':
main()

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.