add instructions and renders
This commit is contained in:
45
README.md
45
README.md
@ -1,34 +1,39 @@
|
|||||||
# rackstack
|
# rackstack
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
A parametric 3d-printable (mini) rack system.
|
### A parametric 3d-printable mini rack system
|
||||||
|
- ***Mount Anything:*** Perfect for organizing SBCs, mini PCs, small switches, power hubs, etc.
|
||||||
- ***Not just STLs:*** Fully written in OpenSCAD. Everything, from the dimensions of the rack, to the roundness of the corners, can be modified with a simple code change.
|
- ***Fully customizable:*** Fully written in OpenSCAD. Everything, from the dimensions of the rack, to the roundness of the corners, can be modified with a simple code change.
|
||||||
- ***Printable from home:*** Designed to be printed with conventional FDM printers. Requires minimal supports when printing, and final assembly needs only a few easy-to-source parts.
|
- ***Printable from home:*** Designed to be printed with conventional FDM printers. Requires minimal supports when printing, and final assembly needs only a few easy-to-source parts.
|
||||||
- ***No cage nuts!***
|
- ***No cage nuts!*** Sliding hex nut design for the front rails allows one to easily mount items without dealing with cage nuts.
|
||||||
- ***Stackable:*** Individual racks can be easily stacked together. Mix and match different color and design combinations!
|
- ***Stackable:*** Individual racks can be easily stacked and fastened together. Mix and match different color and design combinations!
|
||||||
|
|
||||||
### Renders
|
### Renders
|
||||||
See the [renders for difference parametric profiles here](media/renders)
|
See the [renders for difference parametric profiles here](media/renders)
|
||||||
|
|
||||||
## Features
|
|
||||||
|
|
||||||
Sliding nut design for the front rails allows one to easily mount items without dealing with cage nuts.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Individual racks can be stacked and fastened together.
|
|
||||||

|
|
||||||
|
|
||||||
There's also cool magnetic side doors.
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
## Assembly
|
## Assembly
|
||||||
|
|
||||||
|
Pre-generated STLs for roughly 200mm^3, and 100mm^3 rack frames can be found in [stl/rack](stl/rack).
|
||||||
|
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
|
||||||
|
(supports, orientation) can be found in their respective `.scad` files.
|
||||||
|
|
||||||
|
### Assembly Instructions
|
||||||
|
|
||||||
### BOM
|
### BOM
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|
||||||
|
- A bunch of m3 screws for constructing the actual rack.
|
||||||
|
- A bunch of m4 screws for the main rails
|
||||||
|
- Some heatset inserts
|
||||||
|
- A bunch of m3 hex nuts
|
||||||
|
- m3 allen key (preferably with a rounded end)
|
||||||
|
- m4 allen key
|
||||||
|
- 2 dowel pins
|
||||||
|
- 8 magnets
|
||||||
|
|
||||||
|
|
||||||
## Configuring + Generating STLs
|
## Configuring + Generating STLs
|
||||||
|
|
||||||
|
TODO
|
||||||
|
|||||||
BIN
media/features/slideOpt.gif
Normal file
BIN
media/features/slideOpt.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 100 KiB |
BIN
media/features/stackConnectorOpt.gif
Normal file
BIN
media/features/stackConnectorOpt.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 151 KiB |
BIN
media/features/swivelOpt.gif
Normal file
BIN
media/features/swivelOpt.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 140 KiB |
BIN
media/renders/rackDisplay.png
Normal file
BIN
media/renders/rackDisplay.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 MiB |
@ -2,26 +2,29 @@ include <../../helper/common.scad>
|
|||||||
include <../../helper/math.scad>
|
include <../../helper/math.scad>
|
||||||
include <../../helper/screws.scad>
|
include <../../helper/screws.scad>
|
||||||
include <../../rack/config.scad>
|
include <../../rack/config.scad>
|
||||||
|
include <../../rack/sharedVariables.scad>
|
||||||
|
|
||||||
*sideSupportRailBase("lBracket");
|
*sideSupportRailBase("lBracket");
|
||||||
|
// TODO: make this parametric
|
||||||
|
|
||||||
|
// distance between front and back main rail screw mounts
|
||||||
|
sideRailScrewMountDist = yBarDepth - 2*(frontScrewSpacing + railFrontThickness + railSlotToXZ); // TODO use transformation matrices
|
||||||
|
|
||||||
module sideSupportRailBase(type) {
|
module sideSupportRailBase(type) {
|
||||||
|
|
||||||
railLength = 100;
|
|
||||||
railBaseThickness = 2;
|
|
||||||
railBaseWidth = 18;
|
|
||||||
railSideThickness = 2;
|
|
||||||
railSideHeight = 12;
|
|
||||||
sideDy = -2;
|
|
||||||
|
|
||||||
frontMountPad = 10; // depends on y of box to be mounted TODO calculate this
|
|
||||||
sideMountPad = 10; // depends on x of box TODO calculate this
|
|
||||||
// distance between front and back main rail screw mounts
|
|
||||||
screwMountDist = 62; // TODO calculate this instead of hardcode
|
|
||||||
// vertical distance between local origin and main rail screw mount
|
// vertical distance between local origin and main rail screw mount
|
||||||
screwMountGlobalDz = screwDiff / 2.0;
|
screwMountGlobalDz = screwDiff / 2.0;
|
||||||
|
|
||||||
|
railLength = sideRailScrewMountDist + 30; // TODO calculate this
|
||||||
|
railBaseThickness = 2;
|
||||||
|
railBaseWidth = 18;
|
||||||
|
railSideThickness = 2;
|
||||||
|
railSideHeight = 15;
|
||||||
|
sideDy = -2;
|
||||||
|
frontMountPad = 10; // depends on y of box to be mounted TODO calculate this
|
||||||
|
sideMountPad = 10; // depends on x of box TODO calculate this
|
||||||
|
|
||||||
|
translate(v=[sideMountPad,-(frontMountPad + 5),-5])
|
||||||
applyMainRailMounts()
|
applyMainRailMounts()
|
||||||
sideSupportRailBaseHolder();
|
sideSupportRailBaseHolder();
|
||||||
|
|
||||||
@ -41,7 +44,7 @@ module sideSupportRailBase(type) {
|
|||||||
union() {
|
union() {
|
||||||
dualMount();
|
dualMount();
|
||||||
|
|
||||||
translate(v=[0,screwMountDist,0])
|
translate(v=[0,sideRailScrewMountDist,0])
|
||||||
dualMount();
|
dualMount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,10 +10,16 @@ include <./side/sideWallLeft.scad>
|
|||||||
include <./stackEnds.scad>
|
include <./stackEnds.scad>
|
||||||
include <./xyPlate.scad>
|
include <./xyPlate.scad>
|
||||||
|
|
||||||
|
include <../rack-mount/side-rail/dualMount.scad>
|
||||||
|
|
||||||
assemblyInstructions();
|
assemblyInstructions();
|
||||||
|
|
||||||
module assemblyInstructions () {
|
module assemblyInstructions () {
|
||||||
|
|
||||||
|
screwMask = false;
|
||||||
|
plasticMask = true;
|
||||||
|
sideSupportRailMask = true;
|
||||||
|
|
||||||
// Instruction List (in order)
|
// Instruction List (in order)
|
||||||
// render()
|
// render()
|
||||||
// addHeatSetInsertsYBar(at=$t);
|
// addHeatSetInsertsYBar(at=$t);
|
||||||
@ -37,7 +43,6 @@ module assemblyInstructions () {
|
|||||||
finalSingle();
|
finalSingle();
|
||||||
// finalDouble();
|
// finalDouble();
|
||||||
|
|
||||||
|
|
||||||
// Features:
|
// Features:
|
||||||
// render()
|
// render()
|
||||||
// slideInNuts(at=$t);
|
// slideInNuts(at=$t);
|
||||||
@ -48,7 +53,9 @@ module assemblyInstructions () {
|
|||||||
module addHeatSetInsertsYBar(at=0) {
|
module addHeatSetInsertsYBar(at=0) {
|
||||||
t = lerp(a=10,b=0.35,t=at); // non zero b for exposing the heatset gears for diagramming
|
t = lerp(a=10,b=0.35,t=at); // non zero b for exposing the heatset gears for diagramming
|
||||||
|
|
||||||
yBar();
|
if (!plasticMask) {
|
||||||
|
yBar();
|
||||||
|
}
|
||||||
|
|
||||||
heatSetHeight = heatSetInsertSlotHeightSlacked(rackFrameScrewType) * 0.95;
|
heatSetHeight = heatSetInsertSlotHeightSlacked(rackFrameScrewType) * 0.95;
|
||||||
|
|
||||||
@ -76,17 +83,21 @@ module assemblyInstructions () {
|
|||||||
heatSetInsert(rackFrameScrewType);
|
heatSetInsert(rackFrameScrewType);
|
||||||
}
|
}
|
||||||
|
|
||||||
heatSetInsertsOneCorner(t=t);
|
if (!screwMask) {
|
||||||
|
heatSetInsertsOneCorner(t = t);
|
||||||
|
|
||||||
multmatrix(yBarMirrorOtherCornerTrans)
|
multmatrix(yBarMirrorOtherCornerTrans)
|
||||||
heatSetInsertsOneCorner(t=t);
|
heatSetInsertsOneCorner(t = t);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module addMagnetsToMagnetModules(at=0) {
|
module addMagnetsToMagnetModules(at=0) {
|
||||||
t = lerp(a=8,b=0,t=at);
|
t = lerp(a=8,b=0,t=at);
|
||||||
|
|
||||||
magnetModule();
|
if (!plasticMask) {
|
||||||
|
magnetModule();
|
||||||
|
}
|
||||||
|
|
||||||
function insertMagnetTrans(t=0) =
|
function insertMagnetTrans(t=0) =
|
||||||
translate(v=[sideWallConnW-(magnetFaceToSideWallConnOuterYEdge+magnetHSlacked) + t,
|
translate(v=[sideWallConnW-(magnetFaceToSideWallConnOuterYEdge+magnetHSlacked) + t,
|
||||||
@ -101,7 +112,9 @@ module assemblyInstructions () {
|
|||||||
module addMagnetsToSideWall(at=0) {
|
module addMagnetsToSideWall(at=0) {
|
||||||
t = lerp(a=8,b=0,t=at);
|
t = lerp(a=8,b=0,t=at);
|
||||||
|
|
||||||
sideWallLeft();
|
if (!plasticMask) {
|
||||||
|
sideWallLeft();
|
||||||
|
}
|
||||||
|
|
||||||
function insertMagnetTrans(t=0) =
|
function insertMagnetTrans(t=0) =
|
||||||
translate(v=[sideWallThickness+t, magnetMountToYBarFront, magnetMountToYBarTop-sideWallZHingeTotalClearance]) *
|
translate(v=[sideWallThickness+t, magnetMountToYBarFront, magnetMountToYBarTop-sideWallZHingeTotalClearance]) *
|
||||||
@ -125,11 +138,13 @@ module assemblyInstructions () {
|
|||||||
multmatrix(translate(v = [0, 0, t])*xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace)
|
multmatrix(translate(v = [0, 0, t])*xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace)
|
||||||
addHeatSetInsertsYBar(at=1);
|
addHeatSetInsertsYBar(at=1);
|
||||||
|
|
||||||
multmatrix(xBarSpaceToYBarSpace)
|
if (!plasticMask) {
|
||||||
xBar();
|
multmatrix(xBarSpaceToYBarSpace)
|
||||||
|
xBar();
|
||||||
|
|
||||||
multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace)
|
multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace)
|
||||||
xBar();
|
xBar();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module screwXBarAndYBar(at=0) {
|
module screwXBarAndYBar(at=0) {
|
||||||
@ -147,7 +162,8 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
multmatrix(xBarSpaceToYBarSpace)
|
multmatrix(xBarSpaceToYBarSpace)
|
||||||
union() {
|
union() {
|
||||||
xBar();
|
|
||||||
|
if (!plasticMask) { xBar(); }
|
||||||
|
|
||||||
multmatrix(xBarYBarScrewTrans(screwExtension))
|
multmatrix(xBarYBarScrewTrans(screwExtension))
|
||||||
caseScrewB();
|
caseScrewB();
|
||||||
@ -158,7 +174,7 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace)
|
multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace)
|
||||||
union() {
|
union() {
|
||||||
xBar();
|
if (!plasticMask) { xBar(); }
|
||||||
|
|
||||||
multmatrix(xBarYBarScrewTrans(screwExtension))
|
multmatrix(xBarYBarScrewTrans(screwExtension))
|
||||||
caseScrewB();
|
caseScrewB();
|
||||||
@ -197,7 +213,10 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
|
multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
|
||||||
union() {
|
union() {
|
||||||
hingeModule();
|
|
||||||
|
if (!plasticMask) {
|
||||||
|
hingeModule();
|
||||||
|
}
|
||||||
|
|
||||||
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
|
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
|
||||||
caseScrewA();
|
caseScrewA();
|
||||||
@ -205,7 +224,9 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
|
multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
|
||||||
union() {
|
union() {
|
||||||
hingeModule();
|
if (!plasticMask) {
|
||||||
|
hingeModule();
|
||||||
|
}
|
||||||
|
|
||||||
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
|
translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
|
||||||
caseScrewA();
|
caseScrewA();
|
||||||
@ -221,7 +242,10 @@ module assemblyInstructions () {
|
|||||||
function mainRailTrans(elevation) = translate(v=[0,0,elevation]) * yBarMainRailConnectorTrans;
|
function mainRailTrans(elevation) = translate(v=[0,0,elevation]) * yBarMainRailConnectorTrans;
|
||||||
|
|
||||||
module railAndScrew(elevation) {
|
module railAndScrew(elevation) {
|
||||||
mainRail();
|
|
||||||
|
if (!plasticMask) {
|
||||||
|
mainRail();
|
||||||
|
}
|
||||||
|
|
||||||
translate(v=[railSideMountThickness + 5, railFrontThickness + 4,railFootThickness + 2*elevation])
|
translate(v=[railSideMountThickness + 5, railFrontThickness + 4,railFootThickness + 2*elevation])
|
||||||
caseScrewA();
|
caseScrewA();
|
||||||
@ -322,8 +346,10 @@ module assemblyInstructions () {
|
|||||||
caseScrewA();
|
caseScrewA();
|
||||||
}
|
}
|
||||||
|
|
||||||
translate(v=[0,0,-t])
|
if (!plasticMask) {
|
||||||
xyPlate();
|
translate(v = [0, 0, -t])
|
||||||
|
xyPlate();
|
||||||
|
}
|
||||||
|
|
||||||
screw(t=2*t);
|
screw(t=2*t);
|
||||||
|
|
||||||
@ -343,9 +369,11 @@ module assemblyInstructions () {
|
|||||||
t = lerp(a=8, b=0, t=at);
|
t = lerp(a=8, b=0, t=at);
|
||||||
|
|
||||||
module slideNut() {
|
module slideNut() {
|
||||||
rotate(a = [0, 0, 90])
|
if (!screwMask) {
|
||||||
rotate(a = [90, 0, 0])
|
rotate(a = [0, 0, 90])
|
||||||
hexNut(rackFrameScrewType);
|
rotate(a = [90, 0, 0])
|
||||||
|
hexNut(rackFrameScrewType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
translate(v=[0,t,connectorBottomToScrew + 0.5]) // where does this come from again? slack?
|
translate(v=[0,t,connectorBottomToScrew + 0.5]) // where does this come from again? slack?
|
||||||
@ -354,7 +382,9 @@ module assemblyInstructions () {
|
|||||||
translate(v=[stackConnectorDx,t,connectorBottomToScrew + 0.5]) // where does this come from again? slack?
|
translate(v=[stackConnectorDx,t,connectorBottomToScrew + 0.5]) // where does this come from again? slack?
|
||||||
slideNut();
|
slideNut();
|
||||||
|
|
||||||
stackConnectorFeet();
|
if (!plasticMask) {
|
||||||
|
stackConnectorFeet();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module insertFeet(at=0,r=0) {
|
module insertFeet(at=0,r=0) {
|
||||||
@ -397,16 +427,47 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
module finalSingle(r=0) {
|
module finalSingle(r=0) {
|
||||||
screwFeet(at=1,r=r);
|
screwFeet(at=1,r=r);
|
||||||
|
|
||||||
|
for (i = [1, 5, 9, 13, 17]) {
|
||||||
|
translate(v = [2, frontScrewSpacing+railFrontThickness+railSlotToXZ, i*10])
|
||||||
|
multmatrix(yBarMainRailConnectorTrans)
|
||||||
|
union() {
|
||||||
|
if (!sideSupportRailMask) {
|
||||||
|
sideSupportRailBase("lBracket");
|
||||||
|
}
|
||||||
|
|
||||||
|
rotate(a = [0, -90, 0])
|
||||||
|
caseScrewA();
|
||||||
|
|
||||||
|
translate(v = [0, sideRailScrewMountDist, 0])
|
||||||
|
rotate(a = [0, -90, 0])
|
||||||
|
caseScrewA();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
multmatrix(xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace)
|
||||||
|
for (i = [1, 5, 9, 13, 17]) {
|
||||||
|
translate(v = [2, frontScrewSpacing+railFrontThickness+railSlotToXZ, i*10])
|
||||||
|
multmatrix(yBarMainRailConnectorTrans)
|
||||||
|
union() {
|
||||||
|
if (!sideSupportRailMask) {
|
||||||
|
sideSupportRailBase("lBracket");
|
||||||
|
}
|
||||||
|
rotate(a=[0,-90,0])
|
||||||
|
caseScrewA();
|
||||||
|
|
||||||
|
translate(v=[0,sideRailScrewMountDist,0])
|
||||||
|
rotate(a=[0,-90,0])
|
||||||
|
caseScrewA();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module finalDouble(r=0) {
|
module finalDouble(r=0) {
|
||||||
multmatrix(secondStackTrans)
|
stackable(at=1,r=r);
|
||||||
attachXYPlates(at=1,r=r);
|
|
||||||
|
|
||||||
screwFeet(at=1,r=r);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module slideInNuts(at=0) {
|
module slideInNuts(at=0) {
|
||||||
|
|
||||||
t = lerp(a=15,b=0,t=at);
|
t = lerp(a=15,b=0,t=at);
|
||||||
@ -445,7 +506,7 @@ module assemblyInstructions () {
|
|||||||
stackConnectorDual();
|
stackConnectorDual();
|
||||||
}
|
}
|
||||||
|
|
||||||
module stackable(at=0) {
|
module stackable(at=0,r=0) {
|
||||||
|
|
||||||
t1 = lerp(a=0, b=1, t=min(3*at, 1));
|
t1 = lerp(a=0, b=1, t=min(3*at, 1));
|
||||||
t2 = lerp(a=30, b=0, t=min(max(3*at-1,0),1));
|
t2 = lerp(a=30, b=0, t=min(max(3*at-1,0),1));
|
||||||
@ -465,8 +526,10 @@ module assemblyInstructions () {
|
|||||||
caseScrewB();
|
caseScrewB();
|
||||||
}
|
}
|
||||||
|
|
||||||
translate(v=[0,0,t2/2])
|
if (!plasticMask) {
|
||||||
stackConnectors();
|
translate(v = [0, 0, t2/2])
|
||||||
|
stackConnectors();
|
||||||
|
}
|
||||||
|
|
||||||
if (at >= 2/3) {
|
if (at >= 2/3) {
|
||||||
multmatrix(secondStackTrans)
|
multmatrix(secondStackTrans)
|
||||||
@ -478,9 +541,9 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
translate(v=[0,0,t2])
|
translate(v=[0,0,t2])
|
||||||
multmatrix(secondStackTrans)
|
multmatrix(secondStackTrans)
|
||||||
attachXYPlates(at=1);
|
attachXYPlates(at=1,r=r);
|
||||||
|
|
||||||
screwFeet(at=1);
|
screwFeet(at=1,r=20);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,10 +553,6 @@ module assemblyInstructions () {
|
|||||||
finalSingle(r=r);
|
finalSingle(r=r);
|
||||||
}
|
}
|
||||||
|
|
||||||
module parametric() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
xBarSpaceToYBarSpace =
|
xBarSpaceToYBarSpace =
|
||||||
yBarXBarConnectorTrans *
|
yBarXBarConnectorTrans *
|
||||||
xBarConnectorToYBarConnectorTrans *
|
xBarConnectorToYBarConnectorTrans *
|
||||||
@ -535,36 +594,44 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
|
|
||||||
module caseScrewA() {
|
module caseScrewA() {
|
||||||
color([1,1,1]) {
|
if (!screwMask) {
|
||||||
difference() {
|
color([1, 1, 1]) {
|
||||||
scale(v = [0.9, 0.9, 0.9])
|
difference() {
|
||||||
counterSunkHead_N(rackFrameScrewType, screwExtension = 6, headExtension = 0.5);
|
scale(v = [0.9, 0.9, 0.9])
|
||||||
|
counterSunkHead_N(rackFrameScrewType, screwExtension = 6, headExtension = 0.5);
|
||||||
|
|
||||||
cylinder($fn = 6, r = 1.5);
|
cylinder($fn = 6, r = 1.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module caseScrewB() {
|
module caseScrewB() {
|
||||||
color([1,1,1]) {
|
if (!screwMask) {
|
||||||
difference() {
|
color([1, 1, 1]) {
|
||||||
scale(v = [0.9, 0.9, 0.9])
|
difference() {
|
||||||
counterSunkHead_N(rackFrameScrewType, screwExtension = 10, headExtension = 0.5);
|
scale(v = [0.9, 0.9, 0.9])
|
||||||
|
counterSunkHead_N(rackFrameScrewType, screwExtension = 10, headExtension = 0.5);
|
||||||
|
|
||||||
cylinder($fn = 6, r = 1.5);
|
cylinder($fn = 6, r = 1.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module hingeDowel() {
|
module hingeDowel() {
|
||||||
color([0,1,1])
|
if (!screwMask) {
|
||||||
cylinder(h=dowelPinH, r=dowelPinR);
|
color([0, 1, 1])
|
||||||
|
cylinder(h = dowelPinH, r = dowelPinR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module magnet() {
|
module magnet() {
|
||||||
color([1,1,1])
|
if (!screwMask) {
|
||||||
cylinder(r=magnetR, h=magnetH);
|
color([1, 1, 1])
|
||||||
|
cylinder(r = magnetR, h = magnetH);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module arrow(length) {
|
module arrow(length) {
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
include <./profiles.scad>
|
include <./profiles.scad>
|
||||||
|
|
||||||
profileName = "micro";
|
profileName = "default";
|
||||||
profile = getProfile(profileName);
|
profile = getProfile(profileName);
|
||||||
|
|
||||||
// echo("Profile:", profile);
|
// echo("Profile:", profile);
|
||||||
|
|||||||
@ -5,8 +5,8 @@ include <./sideWallBase.scad>
|
|||||||
module sideWallLeft() {
|
module sideWallLeft() {
|
||||||
|
|
||||||
//applyEpicVentilation()
|
//applyEpicVentilation()
|
||||||
applySideWallVerticalRibs()
|
//applySideWallVerticalRibs()
|
||||||
render()
|
//render()
|
||||||
sideWallBase();
|
sideWallBase();
|
||||||
|
|
||||||
module applyEpicVentilation() {
|
module applyEpicVentilation() {
|
||||||
|
|||||||
@ -6,8 +6,8 @@ module sideWallRight() {
|
|||||||
|
|
||||||
//applyEpicVentilation()
|
//applyEpicVentilation()
|
||||||
mirror(v=[1,0,0])
|
mirror(v=[1,0,0])
|
||||||
applySideWallVerticalRibs()
|
//applySideWallVerticalRibs()
|
||||||
render()
|
//render()
|
||||||
sideWallBase();
|
sideWallBase();
|
||||||
|
|
||||||
module applyEpicVentilation() {
|
module applyEpicVentilation() {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user