Improve rack-mount. Individual rack-mount systems are now organized in their own directories, with a standard entry.scad file.
This commit is contained in:
11
README.md
11
README.md
@ -12,7 +12,7 @@
|
|||||||
## Assembly
|
## Assembly
|
||||||
|
|
||||||
Pre-generated STLs for roughly 200mm^3 (mini), 180mm^3 (micro), and 100mm^3 (nano) rack frames can be found in the [stl](stl) dir.
|
Pre-generated STLs for roughly 200mm^3 (mini), 180mm^3 (micro), and 100mm^3 (nano) rack frames can be found in the [stl](stl) dir.
|
||||||
These STLs are generated from the files in [rack/print](rack/print), and [rack-mount/print](rack-mount/print) - further information about printing these parts
|
These STLs are generated from the files in [rack/print](rack/print) - further information about printing these parts
|
||||||
(supports, orientation) can be found in these files.
|
(supports, orientation) can be found in these files.
|
||||||
|
|
||||||
### Assembly Instructions
|
### Assembly Instructions
|
||||||
@ -63,9 +63,12 @@ but beware of PLA's thermal limits. Higher infill is recommended for all parts.
|
|||||||
|
|
||||||
## Trays, Boxes, etc
|
## Trays, Boxes, etc
|
||||||
|
|
||||||
Some parametric trays and support rails for your rack can be found in [rack-mount/print](./rack-mount/print).
|
Some parametric rack mount items can be found in [rack-mount](./rack-mount). The following rack-mount systems
|
||||||
These files are currently pretty rough around the edges. However, they still make a great jumping off point for designing
|
are currently supported:
|
||||||
rack-mount items.
|
- [Enclosed Box](./rack-mount/enclosed-box/entry.scad): For mounting box-shaped objects, without the need for any mounting holes on the box.
|
||||||
|
- [Tray](./rack-mount/tray/entry.scad): Simple tray mounted using only the front rails. Can be configured to have screw mounts at the bottom of the tray.
|
||||||
|
- [Patch Panel](./rack-mount/patch-panel/entry.scad): Linear patch panel array. Number of keystone slots can be configured.
|
||||||
|
|
||||||
|
|
||||||
## Configuring + Generating STLs
|
## Configuring + Generating STLs
|
||||||
A python script: [rbuild.py](./rbuild.py) is provided to generate different project stls. **Before running the script**, please
|
A python script: [rbuild.py](./rbuild.py) is provided to generate different project stls. **Before running the script**, please
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
basePlateConnYBarCornerDx = yBarWidth; // distance from a plate body corner and the nearest yBar corner
|
|
||||||
basePlateConnYBarCornerDy = xBarY; // distance from a plate body corner and the nearest yBar corner
|
|
||||||
|
|
||||||
basePlateConnPosX = basePlateScrewMountToYBarYZFace - basePlateConnYBarCornerDx; // distance between plateBody corner at (0,0,0) and the related corner
|
|
||||||
basePlateConnPosY = basePlateScrewMountToYBarXZFace - basePlateConnYBarCornerDy;
|
|
||||||
@ -1,53 +0,0 @@
|
|||||||
include <../../rack/sharedVariables.scad>
|
|
||||||
include <../common.scad>
|
|
||||||
|
|
||||||
use <../sideRail.scad>
|
|
||||||
use <../frontBoxHolder.scad>
|
|
||||||
|
|
||||||
/*
|
|
||||||
(WIP) Enclosed box mounting system:
|
|
||||||
Helper file to use semi-enclosed side rails and a front plate to mount a box.
|
|
||||||
This system does not require any mounting holes for the enclosed box.
|
|
||||||
|
|
||||||
!!! Please also make sure that the correct rack frame preset is set in rackFrame.scad !!!
|
|
||||||
*/
|
|
||||||
|
|
||||||
// begin config ////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
boxWidth = 160;
|
|
||||||
boxHeight = 27;
|
|
||||||
boxDepth = 100;
|
|
||||||
|
|
||||||
|
|
||||||
railDefaultThickness = 1.2;
|
|
||||||
|
|
||||||
zOrientation = "middle";
|
|
||||||
|
|
||||||
// Does not affect any part dimensions. Set this to true to visualize how a box wound be mounted.
|
|
||||||
visualize = true;
|
|
||||||
|
|
||||||
// end config //////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#cube(size=[boxWidth, boxDepth, boxHeight]);
|
|
||||||
|
|
||||||
sideSupportRailBase(top=true, defaultThickness=railDefaultThickness, supportedZ=boxHeight, supportedY=boxDepth, supportedX=boxWidth, zOrientation=zOrientation);
|
|
||||||
|
|
||||||
translate(v=[boxWidth,0,0])
|
|
||||||
mirror(v=[1,0,0])
|
|
||||||
sideSupportRailBase(top=true, defaultThickness=railDefaultThickness, supportedZ=boxHeight, supportedY=boxDepth, supportedX=boxWidth, zOrientation=zOrientation);
|
|
||||||
|
|
||||||
translate(v=[0,0,10])
|
|
||||||
rotate(a=[-90,0,0])
|
|
||||||
*frontBoxHolder(
|
|
||||||
u=2,
|
|
||||||
plateThickness=3,
|
|
||||||
cutoutOffsetX=(rackMountScrewWidth-147)/2,
|
|
||||||
cutoutOffsetY=4.25,
|
|
||||||
cutoutX=147,
|
|
||||||
cutoutY=21.5,
|
|
||||||
support=true,
|
|
||||||
supportedZ=boxHeight,
|
|
||||||
supportWidth=120,
|
|
||||||
supportDepth=5,
|
|
||||||
supportRailBaseThickness=1.75
|
|
||||||
);
|
|
||||||
65
rack-mount/enclosed-box/entry.scad
Normal file
65
rack-mount/enclosed-box/entry.scad
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
include <../../rack/sharedVariables.scad>
|
||||||
|
include <../common.scad>
|
||||||
|
include <./helper.scad>
|
||||||
|
|
||||||
|
use <./sideRail.scad>
|
||||||
|
use <./frontBoxHolder.scad>
|
||||||
|
|
||||||
|
/*
|
||||||
|
Enclosed box mounting system:
|
||||||
|
Helper file to use semi-enclosed side rails and a front plate to mount a box.
|
||||||
|
This system does not require any mounting holes on the enclosed box.
|
||||||
|
|
||||||
|
!!! Please also make sure that the correct rack frame preset is set in rackFrame.scad !!!
|
||||||
|
|
||||||
|
TODO support full box (so for the micro profile it would be 180) this may require widening the main rail
|
||||||
|
*/
|
||||||
|
|
||||||
|
// begin config ////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Does not affect any part dimensions. Set this to true to visualize how a box would be mounted.
|
||||||
|
visualize = false;
|
||||||
|
|
||||||
|
boxWidth = 170;
|
||||||
|
boxHeight = 27.0;
|
||||||
|
boxDepth = 100;
|
||||||
|
|
||||||
|
railDefaultThickness = 1.5;
|
||||||
|
railSideThickness = 3;
|
||||||
|
|
||||||
|
frontPlateThickness = 3;
|
||||||
|
frontPlateCutoutYSpace = 3;
|
||||||
|
frontPlateCutoutXSpace = 5;
|
||||||
|
|
||||||
|
zOrientation = "middle"; // or "bottom"
|
||||||
|
|
||||||
|
// end config //////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
leftRailTrans = identity;
|
||||||
|
rightRailTrans = visualize
|
||||||
|
? translate(v=[boxWidth,0,0]) * mirror(v=[1,0,0])
|
||||||
|
: translate(v=[sideRailBaseWidth*2,0,0]) * mirror(v=[1,0,0]);
|
||||||
|
|
||||||
|
u = findU(boxHeight, railDefaultThickness);
|
||||||
|
railBottomThickness = railBottomThickness(u, boxHeight, railDefaultThickness, zOrientation);
|
||||||
|
frontBoxHolderTrans = visualize
|
||||||
|
? translate(v=[railSideThickness-(railSupportsDx-boxWidth)/2,0, sideRailLowerMountPointToBottom-railBottomThickness]) * mirror(v=[0,1,0]) * rotate(a=[90,0,0])
|
||||||
|
: mirror(v=[0,1,0]) * translate(v=[0,uDiff,frontPlateThickness - railBottomThickness]);
|
||||||
|
|
||||||
|
if (visualize) {
|
||||||
|
%cube(size = [boxWidth, boxDepth, boxHeight]);
|
||||||
|
}
|
||||||
|
|
||||||
|
multmatrix(leftRailTrans)
|
||||||
|
sideSupportRailBase(top=true, defaultThickness=railDefaultThickness, supportedZ=boxHeight, supportedY=boxDepth, supportedX=boxWidth, zOrientation=zOrientation, railSideThickness=railSideThickness);
|
||||||
|
|
||||||
|
multmatrix(rightRailTrans)
|
||||||
|
sideSupportRailBase(top=true, defaultThickness=railDefaultThickness, supportedZ=boxHeight, supportedY=boxDepth, supportedX=boxWidth, zOrientation=zOrientation, railSideThickness=railSideThickness);
|
||||||
|
|
||||||
|
multmatrix(frontBoxHolderTrans)
|
||||||
|
frontBoxHolder(
|
||||||
|
cutoutOffsetX=(rackMountScrewWidth-(boxWidth-2*frontPlateCutoutXSpace))/2, cutoutOffsetY=railBottomThickness+frontPlateCutoutYSpace,
|
||||||
|
cutoutX=boxWidth-2*frontPlateCutoutXSpace, cutoutY=boxHeight-2*frontPlateCutoutYSpace,
|
||||||
|
zOrientation = zOrientation, supportedZ=boxHeight, supportWidth=max(10, boxWidth-(sideRailBaseWidth+10)), supportRailDefaultThickness = railDefaultThickness, plateThickness=frontPlateThickness
|
||||||
|
);
|
||||||
40
rack-mount/enclosed-box/frontBoxHolder.scad
Normal file
40
rack-mount/enclosed-box/frontBoxHolder.scad
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
include <../common.scad>
|
||||||
|
include <./helper.scad>
|
||||||
|
use <../plateBase.scad>
|
||||||
|
|
||||||
|
// To be used with closed sideRails to fully encapsulate a box
|
||||||
|
|
||||||
|
module frontBoxHolder(plateThickness=3, cutoutOffsetX, cutoutOffsetY, cutoutX, cutoutY, supportedZ, supportWidth, supportDepth=5, supportRailDefaultThickness, zOrientation) {
|
||||||
|
|
||||||
|
//assert(supportedZ + 2*supportThickness <= boxPlateScrewToYEdge*2 + u*uDiff);
|
||||||
|
//assert(supportWidth < rackMountScrewWidth); // not tight, need to include screw radii
|
||||||
|
|
||||||
|
u = findU(supportedZ, supportRailDefaultThickness);
|
||||||
|
supportRailBottomThickness = railBottomThickness(u, supportedZ, supportRailDefaultThickness, zOrientation);
|
||||||
|
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
plateBase(U=u, plateThickness=plateThickness, screwToXEdge=boxPlateScrewToXEdge, screwToYEdge=boxPlateScrewToYEdge, screwType=mainRailScrewType, filletR=2);
|
||||||
|
|
||||||
|
// bottom support
|
||||||
|
translate(v=[(rackMountScrewWidth-supportWidth)/2, -boxPlateScrewToYEdge,0])
|
||||||
|
cube(size=[supportWidth, supportRailBottomThickness, supportDepth]);
|
||||||
|
|
||||||
|
// top support
|
||||||
|
translate(v=[(rackMountScrewWidth-supportWidth)/2, -boxPlateScrewToYEdge+supportRailBottomThickness+supportedZ,0])
|
||||||
|
cube(size=[supportWidth, supportRailDefaultThickness, supportDepth]);
|
||||||
|
}
|
||||||
|
|
||||||
|
union() {
|
||||||
|
translate(v=[cutoutOffsetX, cutoutOffsetY-boxPlateScrewToYEdge,-inf/2])
|
||||||
|
minkowski() {
|
||||||
|
r=2;
|
||||||
|
cylinder(r=r,h=inf);
|
||||||
|
translate(v=[r, r, 0])
|
||||||
|
cube(size = [cutoutX-2*r, cutoutY-2*r, inf]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
21
rack-mount/enclosed-box/helper.scad
Normal file
21
rack-mount/enclosed-box/helper.scad
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
include <../common.scad>
|
||||||
|
|
||||||
|
// Some utility functions, as well as global functions to make code cleaner
|
||||||
|
|
||||||
|
sideRailLowerMountPointToBottom = uDiff/2;
|
||||||
|
sideRailBaseWidth = 15;
|
||||||
|
// distance between front and back main rail screw mounts
|
||||||
|
sideRailScrewMountDist = yBarDepth - 2*(frontScrewSpacing + railFrontThickness + railSlotToXZ);
|
||||||
|
|
||||||
|
boxPlateScrewToXEdge = 4.5; // wow these are named poorly
|
||||||
|
boxPlateScrewToYEdge = 5;
|
||||||
|
|
||||||
|
|
||||||
|
function findU(boxHeight, minRailThickness) = max(1, ceil((boxHeight + 2*minRailThickness)/uDiff) - 1);
|
||||||
|
|
||||||
|
function railBottomThickness(u, boxHeight, minRailThickness, zOrientation) =
|
||||||
|
(zOrientation == "middle")
|
||||||
|
? (((u+1) * uDiff) - boxHeight)/2
|
||||||
|
: (zOrientation == "bottom")
|
||||||
|
? minRailThickness
|
||||||
|
: minRailThickness;
|
||||||
@ -1,33 +1,20 @@
|
|||||||
include <../helper/common.scad>
|
include <../common.scad>
|
||||||
include <../config/common.scad>
|
include <./helper.scad>
|
||||||
include <../rack/sharedVariables.scad>
|
|
||||||
include <./common.scad>
|
|
||||||
|
|
||||||
//sideSupportRailBase(top=true, defaultThickness=1.5, supportedZ=27.2, supportedY=101.5, supportedX=159);
|
//sideSupportRailBase(top=true, defaultThickness=1.5, supportedZ=27.2, supportedY=101.5, supportedX=159);
|
||||||
|
|
||||||
// distance between front and back main rail screw mounts
|
|
||||||
sideRailScrewMountDist = yBarDepth - 2*(frontScrewSpacing + railFrontThickness + railSlotToXZ);
|
|
||||||
|
|
||||||
module sideSupportRailBase(top=true, supportedZ, supportedY, supportedX, zOrientation="middle", defaultThickness=2) {
|
module sideSupportRailBase(top=true, supportedZ, supportedY, supportedX, zOrientation="middle", defaultThickness=2, railSideThickness=4) {
|
||||||
|
|
||||||
mountBlockHeight = 10;
|
|
||||||
mountBlockDepth = 10;
|
mountBlockDepth = 10;
|
||||||
screwMountGlobalDz = screwDiff / 2.0; // vertical distance between local origin and main rail screw mount
|
screwMountGlobalDz = screwDiff / 2.0; // vertical distance between local origin and main rail screw mount
|
||||||
sideRailScrewToMainRailFrontDx = frontScrewSpacing+railFrontThickness;
|
sideRailScrewToMainRailFrontDx = frontScrewSpacing+railFrontThickness;
|
||||||
railLength = max(sideRailScrewMountDist + sideRailScrewToMainRailFrontDx + mountBlockDepth/2, supportedY+defaultThickness);
|
railLength = max(sideRailScrewMountDist + sideRailScrewToMainRailFrontDx + mountBlockDepth/2, supportedY+defaultThickness);
|
||||||
railBaseThickness = defaultThickness; // default thickness value
|
railBaseThickness = defaultThickness; // default thickness value
|
||||||
railSideThickness = 4;
|
|
||||||
railBackThickness = 3;
|
railBackThickness = 3;
|
||||||
railBaseWidth = 15;
|
|
||||||
// Minimum U to enclose box, while also have a minimum defaultThickness for top and bottom.
|
// Minimum U to enclose box, while also have a minimum defaultThickness for top and bottom.
|
||||||
minU = max(1, ceil((supportedZ + 2*railBaseThickness) / uDiff)-1);
|
u = findU(supportedZ, railBaseThickness);
|
||||||
|
railBottomThickness = railBottomThickness(u, supportedZ, railBaseThickness, zOrientation);
|
||||||
railBottomThickness =
|
|
||||||
(zOrientation == "middle")
|
|
||||||
? (((minU+1) * uDiff) - supportedZ)/2
|
|
||||||
: (zOrientation == "bottom")
|
|
||||||
? railBaseThickness
|
|
||||||
: railBaseThickness;
|
|
||||||
|
|
||||||
assert(supportedX <= maxUnitWidth);
|
assert(supportedX <= maxUnitWidth);
|
||||||
assert (zOrientation == "middle" || zOrientation == "bottom", "Z-Orientation not supported");
|
assert (zOrientation == "middle" || zOrientation == "bottom", "Z-Orientation not supported");
|
||||||
@ -43,7 +30,7 @@ module sideSupportRailBase(top=true, supportedZ, supportedY, supportedX, zOrient
|
|||||||
module applyMainRailMounts() {
|
module applyMainRailMounts() {
|
||||||
|
|
||||||
mountBlockExtension = (railSupportsDx - supportedX)/2 - railSideThickness;
|
mountBlockExtension = (railSupportsDx - supportedX)/2 - railSideThickness;
|
||||||
minHexNutPocketToXYDist = mountBlockHeight/2;
|
minHexNutPocketToXYDist = sideRailLowerMountPointToBottom;
|
||||||
minHexNutPocketToXZDist = mountBlockDepth/2;
|
minHexNutPocketToXZDist = mountBlockDepth/2;
|
||||||
minHexNutPocketToYZDist = 4;
|
minHexNutPocketToYZDist = 4;
|
||||||
screwU = floor((railSideHeight) / uDiff)-1;
|
screwU = floor((railSideHeight) / uDiff)-1;
|
||||||
@ -92,22 +79,22 @@ module sideSupportRailBase(top=true, supportedZ, supportedY, supportedX, zOrient
|
|||||||
|
|
||||||
difference () {
|
difference () {
|
||||||
union() {
|
union() {
|
||||||
cube(size = [railBaseWidth, railLength, railBottomThickness]);
|
cube(size = [sideRailBaseWidth, railLength, railBottomThickness]);
|
||||||
|
|
||||||
cube(size = [railSideThickness, railLength, railSideHeight]);
|
cube(size = [railSideThickness, railLength, railSideHeight]);
|
||||||
|
|
||||||
// back support
|
// back support
|
||||||
translate(v = [0, max(railLength-railBackThickness, supportedY), 0])
|
translate(v = [0, max(railLength-railBackThickness, supportedY), 0])
|
||||||
cube(size = [railBaseWidth, railBackThickness, railSideHeight]);
|
cube(size = [sideRailBaseWidth, railBackThickness, railSideHeight]);
|
||||||
|
|
||||||
// back support for box
|
// back support for box
|
||||||
translate(v = [0, supportedY, 0])
|
translate(v = [0, supportedY, 0])
|
||||||
cube(size = [railBaseWidth, railBackThickness, railSideHeight]);
|
cube(size = [sideRailBaseWidth, railBackThickness, railSideHeight]);
|
||||||
|
|
||||||
// top support
|
// top support
|
||||||
if (top) {
|
if (top) {
|
||||||
translate(v = [0, 0, railSideHeight-railBaseThickness])
|
translate(v = [0, 0, railSideHeight-railBaseThickness])
|
||||||
cube(size = [railBaseWidth, railLength, railBaseThickness]);
|
cube(size = [sideRailBaseWidth, railLength, railBaseThickness]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +127,7 @@ module sideSupportRailBase(top=true, supportedZ, supportedY, supportedX, zOrient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cylindricalFiletNegative(p0=[railBaseWidth,0,0],p1=[railBaseWidth,0,inf], n=[1,-1,0],r=r);
|
cylindricalFiletNegative(p0=[sideRailBaseWidth,0,0],p1=[sideRailBaseWidth,0,inf], n=[1,-1,0],r=r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,55 +0,0 @@
|
|||||||
// To be used with closed sideRails to fully encapsulate a box
|
|
||||||
|
|
||||||
include <../config/common.scad>
|
|
||||||
include <../helper/common.scad>
|
|
||||||
include <./common.scad>
|
|
||||||
use <./plateBase.scad>
|
|
||||||
|
|
||||||
|
|
||||||
frontBoxHolder(u=2, plateThickness=3, cutoutOffsetX=20, cutoutOffsetY=2, cutoutX=147, cutoutY=26,
|
|
||||||
support=true, supportedZ = 27.5, supportWidth=120, supportDepth=5, supportRailBaseThickness=1.25);
|
|
||||||
|
|
||||||
|
|
||||||
module frontBoxHolder(u, plateThickness=3, cutoutOffsetX, cutoutOffsetY, cutoutX, cutoutY, support=false, supportedZ, supportWidth, supportDepth, bottomSupportThickness = 2, supportRailBaseThickness = 2) {
|
|
||||||
|
|
||||||
plateScrewToXEdge = 4.5; // wow these are named poorly
|
|
||||||
plateScrewToYEdge = 5;
|
|
||||||
|
|
||||||
if (support) {
|
|
||||||
//assert(supportedZ + 2*supportThickness <= plateScrewToYEdge*2 + u*uDiff);
|
|
||||||
//assert(supportWidth < rackMountScrewWidth); // not tight, need to include screw radii
|
|
||||||
}
|
|
||||||
|
|
||||||
difference() {
|
|
||||||
union() {
|
|
||||||
plateBase(U=u, plateThickness=plateThickness, screwToXEdge=plateScrewToXEdge, screwToYEdge=plateScrewToYEdge, screwType=mainRailScrewType, filletR=2);
|
|
||||||
|
|
||||||
if (support) {
|
|
||||||
|
|
||||||
bottomSuportThickness = supportRailBaseThickness;
|
|
||||||
|
|
||||||
translate(v=[(rackMountScrewWidth-supportWidth)/2, -plateScrewToYEdge,0])
|
|
||||||
cube(size=[supportWidth, bottomSuportThickness, supportDepth]);
|
|
||||||
|
|
||||||
translate(v=[(rackMountScrewWidth-supportWidth)/2, (-plateScrewToYEdge+bottomSuportThickness) + supportedZ,0])
|
|
||||||
cube(size=[supportWidth, bottomSuportThickness, supportDepth]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
union() {
|
|
||||||
translate(v=[cutoutOffsetX, cutoutOffsetY-plateScrewToYEdge,-inf/2])
|
|
||||||
minkowski() {
|
|
||||||
r=2;
|
|
||||||
cylinder(r=r,h=inf);
|
|
||||||
translate(v=[r, r, 0])
|
|
||||||
cube(size = [cutoutX-2*r, cutoutY-2*r, inf]);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
18
rack-mount/patch-panel/entry.scad
Normal file
18
rack-mount/patch-panel/entry.scad
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
use <./patchPanel.scad>
|
||||||
|
|
||||||
|
/*
|
||||||
|
Parametric patch panel -
|
||||||
|
|
||||||
|
Please also make sure that the correct rack frame preset is set in rackFrame.scad.
|
||||||
|
|
||||||
|
TODO add support for 2d arrays
|
||||||
|
*/
|
||||||
|
|
||||||
|
// begin config ////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
numSlots = 8;
|
||||||
|
|
||||||
|
// end config //////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
mirror(v=[0,0,1])
|
||||||
|
patchPanel(slots=numSlots);
|
||||||
@ -1,9 +1,12 @@
|
|||||||
include <../config/common.scad>
|
include <../common.scad>
|
||||||
include <../helper/common.scad>
|
use <../plateBase.scad>
|
||||||
include <../rack/sharedVariables.scad>
|
|
||||||
use <./plateBase.scad>
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Parametric patch panel -
|
||||||
|
Please see ./entry.scad for configuring/printing
|
||||||
|
|
||||||
|
Please also make sure that the correct rack frame preset is set in rackFrame.scad.
|
||||||
|
*/
|
||||||
*patchPanel(slots=2);
|
*patchPanel(slots=2);
|
||||||
|
|
||||||
module patchPanel (slots=8) {
|
module patchPanel (slots=8) {
|
||||||
@ -1,16 +0,0 @@
|
|||||||
include <../../rack/sharedVariables.scad>
|
|
||||||
use <../frontBoxHolder.scad>
|
|
||||||
|
|
||||||
frontBoxHolder(
|
|
||||||
u=2,
|
|
||||||
plateThickness=3,
|
|
||||||
cutoutOffsetX=(rackMountScrewWidth-147)/2,
|
|
||||||
cutoutOffsetY=4.25,
|
|
||||||
cutoutX=147,
|
|
||||||
cutoutY=21.5,
|
|
||||||
support=true,
|
|
||||||
supportedZ = 26.5,
|
|
||||||
supportWidth=120,
|
|
||||||
supportDepth=5,
|
|
||||||
supportRailBaseThickness=1.75
|
|
||||||
);
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
use <../patchPanel.scad>
|
|
||||||
|
|
||||||
|
|
||||||
mirror(v=[0,0,1])
|
|
||||||
patchPanel(slots=8);
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
use <../sideRail.scad>
|
|
||||||
|
|
||||||
sideSupportRailBase(top=true, defaultThickness=1.4, supportedZ=27.2, supportedY=101.5, supportedX=159);
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
use <../sideRail.scad>
|
|
||||||
|
|
||||||
mirror(v=[1,0,0])
|
|
||||||
sideSupportRailBase(top=true, defaultThickness=1.4, supportedZ=27.2, supportedY=101.5, supportedX=159);
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
use <../tray.scad>
|
use <./tray.scad>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Parametric rack-mount tray:
|
Parametric rack-mount tray:
|
||||||
@ -1,9 +1,9 @@
|
|||||||
include <./common.scad>
|
include <../common.scad>
|
||||||
use <./rackEars.scad>
|
use <../rackEars.scad>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Parametric rack-mount tray -
|
Parametric rack-mount tray -
|
||||||
Please see print/tray_P.scad for configuring/printing
|
Please see ./entry.scad for configuring/printing
|
||||||
|
|
||||||
Please also make sure that the correct rack frame preset is set in rackFrame.scad.
|
Please also make sure that the correct rack frame preset is set in rackFrame.scad.
|
||||||
*/
|
*/
|
||||||
@ -17,7 +17,6 @@ screwMask = false;
|
|||||||
plasticMask = false;
|
plasticMask = false;
|
||||||
sideSupportRailMask = true;
|
sideSupportRailMask = true;
|
||||||
|
|
||||||
|
|
||||||
xBarSpaceToYBarSpace =
|
xBarSpaceToYBarSpace =
|
||||||
yBarXBarConnectorTrans *
|
yBarXBarConnectorTrans *
|
||||||
xBarConnectorToYBarConnectorTrans *
|
xBarConnectorToYBarConnectorTrans *
|
||||||
|
|||||||
26
rbuild.py
26
rbuild.py
@ -128,36 +128,36 @@ def run_build(args):
|
|||||||
final_target_directory_name = config_var
|
final_target_directory_name = config_var
|
||||||
|
|
||||||
rackBuildDirFull = os.path.join(BUILD_PARENT_DIR, final_target_directory_name, RACK_BUILD_TARGET_SUB_DIR)
|
rackBuildDirFull = os.path.join(BUILD_PARENT_DIR, final_target_directory_name, RACK_BUILD_TARGET_SUB_DIR)
|
||||||
rackMountBuildDirFull = os.path.join(BUILD_PARENT_DIR, final_target_directory_name,
|
#rackMountBuildDirFull = os.path.join(BUILD_PARENT_DIR, final_target_directory_name,
|
||||||
RACK_MOUNT_BUILD_TARGET_SUB_DIR)
|
# RACK_MOUNT_BUILD_TARGET_SUB_DIR)
|
||||||
|
|
||||||
if not os.path.exists(rackBuildDirFull):
|
if not os.path.exists(rackBuildDirFull):
|
||||||
os.makedirs(rackBuildDirFull)
|
os.makedirs(rackBuildDirFull)
|
||||||
|
|
||||||
if not os.path.exists(rackMountBuildDirFull):
|
#if not os.path.exists(rackMountBuildDirFull):
|
||||||
os.makedirs(rackMountBuildDirFull)
|
# os.makedirs(rackMountBuildDirFull)
|
||||||
|
|
||||||
if build_var == 'all':
|
if build_var == 'all':
|
||||||
for dir_file in os.listdir(RACK_BUILD_DIR):
|
for dir_file in os.listdir(RACK_BUILD_DIR):
|
||||||
build_single(RACK_BUILD_DIR, rackBuildDirFull, dir_file, config_var, dz, nightly)
|
build_single(RACK_BUILD_DIR, rackBuildDirFull, dir_file, config_var, dz, nightly)
|
||||||
|
|
||||||
for dir_file in os.listdir(RACK_MOUNT_BUILD_DIR):
|
#for dir_file in os.listdir(RACK_MOUNT_BUILD_DIR):
|
||||||
build_single(RACK_MOUNT_BUILD_DIR, rackMountBuildDirFull, dir_file, config_var, dz,
|
# build_single(RACK_MOUNT_BUILD_DIR, rackMountBuildDirFull, dir_file, config_var, dz,
|
||||||
nightly)
|
# nightly)
|
||||||
return
|
return
|
||||||
|
|
||||||
filename_rack = find_rack(build_var)
|
filename_rack = find_rack(build_var)
|
||||||
filename_rack_mount = find_rack_mount(build_var)
|
#filename_rack_mount = find_rack_mount(build_var)
|
||||||
|
|
||||||
if not (filename_rack or filename_rack_mount):
|
if not (filename_rack): #or filename_rack_mount):
|
||||||
print('File:', build_var, 'not found!')
|
print('File:', build_var, 'not found!')
|
||||||
return
|
return
|
||||||
|
|
||||||
if filename_rack:
|
if filename_rack:
|
||||||
build_single(RACK_BUILD_DIR, rackBuildDirFull, filename_rack, config_var, dz, nightly)
|
build_single(RACK_BUILD_DIR, rackBuildDirFull, filename_rack, config_var, dz, nightly)
|
||||||
|
|
||||||
if filename_rack_mount:
|
#if filename_rack_mount:
|
||||||
build_single(RACK_MOUNT_BUILD_DIR, rackMountBuildDirFull, filename_rack_mount, config_var, dz, nightly)
|
# build_single(RACK_MOUNT_BUILD_DIR, rackMountBuildDirFull, filename_rack_mount, 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):
|
||||||
@ -224,8 +224,8 @@ def find_rack(filename):
|
|||||||
return find_scad_file(RACK_BUILD_DIR, filename)
|
return find_scad_file(RACK_BUILD_DIR, filename)
|
||||||
|
|
||||||
|
|
||||||
def find_rack_mount(filename):
|
#def find_rack_mount(filename):
|
||||||
return find_scad_file(RACK_MOUNT_BUILD_DIR, filename)
|
# return find_scad_file(RACK_MOUNT_BUILD_DIR, filename)
|
||||||
|
|
||||||
|
|
||||||
def find_scad_file(directory, filename):
|
def find_scad_file(directory, filename):
|
||||||
|
|||||||
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.
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