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 - Start working on actual cases
- Figure out why sidewall build is so slow - Figure out why sidewall build is so slow
- Tidy up imports - Tidy up imports
- Standardize meaning of `U`
### Ideas ### Ideas
- Clean up `sharedVariables.scad`!!! - Clean up `sharedVariables.scad`!!!

View File

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

View File

@ -1,7 +1,7 @@
// Some misc math-y utils // Some misc math-y utils
$fn=64; $fn=64;
eps=0.0001; eps=0.001;
inf10 = 10; inf10 = 10;
inf50 = 50; inf50 = 50;
inf1000 = 1000; 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); 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(floor(U) == U && U > 0)
assert(plateThickness > 0); assert(plateThickness > 0);
@ -14,11 +14,12 @@ module plateBase(U, plateThickness, screwType, screwToXEdge=4, screwToYEdge=4, f
plateLength = screwDx + 2*screwToXEdge; plateLength = screwDx + 2*screwToXEdge;
plateHeight = screwDy + 2*screwToYEdge; plateHeight = screwDy + 2*screwToYEdge;
translate(v=[0,0,-plateThickness]) // easier to work with translate(v=[-screwToXEdge,-screwToYEdge,-plateThickness]) // easier to work with
difference() { difference() {
base(); base();
mirror4XY(p=[screwToXEdge, screwToYEdge], dx=screwDx, dy=screwDy) mirror4XY(p=[screwToXEdge, screwToYEdge], dx=screwDx, dy=screwDy)
translate(v=[0,0,plateThickness])
cylinder(r=screwRadiusSlacked(screwType), h=plateThickness*2, center=true); cylinder(r=screwRadiusSlacked(screwType), h=plateThickness*2, center=true);
} }
@ -26,7 +27,6 @@ module plateBase(U, plateThickness, screwType, screwToXEdge=4, screwToYEdge=4, f
minkowski() { minkowski() {
translate(v=[filletR, filletR, 0]) translate(v=[filletR, filletR, 0])
cube(size = [plateLength-2*filletR, plateHeight-2*filletR, plateThickness]); cube(size = [plateLength-2*filletR, plateHeight-2*filletR, plateThickness]);
cylinder(r=filletR, h=eps); 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 // distance between front and back main rail screw mounts
sideRailScrewMountDist = yBarDepth - 2*(frontScrewSpacing + railFrontThickness + railSlotToXZ); 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; mountBlockHeight = 10;
mountBlockDepth = 10; mountBlockDepth = 10;

View File

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