add instructions and renders
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 100 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 151 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 140 KiB |
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+92
-25
@@ -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
|
||||||
|
|
||||||
|
if (!plasticMask) {
|
||||||
yBar();
|
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);
|
||||||
|
|
||||||
|
if (!plasticMask) {
|
||||||
magnetModule();
|
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);
|
||||||
|
|
||||||
|
if (!plasticMask) {
|
||||||
sideWallLeft();
|
sideWallLeft();
|
||||||
|
}
|
||||||
|
|
||||||
function insertMagnetTrans(t=0) =
|
function insertMagnetTrans(t=0) =
|
||||||
translate(v=[sideWallThickness+t, magnetMountToYBarFront, magnetMountToYBarTop-sideWallZHingeTotalClearance]) *
|
translate(v=[sideWallThickness+t, magnetMountToYBarFront, magnetMountToYBarTop-sideWallZHingeTotalClearance]) *
|
||||||
@@ -125,12 +138,14 @@ 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);
|
||||||
|
|
||||||
|
if (!plasticMask) {
|
||||||
multmatrix(xBarSpaceToYBarSpace)
|
multmatrix(xBarSpaceToYBarSpace)
|
||||||
xBar();
|
xBar();
|
||||||
|
|
||||||
multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace)
|
multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace)
|
||||||
xBar();
|
xBar();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module screwXBarAndYBar(at=0) {
|
module screwXBarAndYBar(at=0) {
|
||||||
screwExtension = lerp(a=15, b=0, t=at);
|
screwExtension = lerp(a=15, b=0, t=at);
|
||||||
@@ -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() {
|
||||||
|
|
||||||
|
if (!plasticMask) {
|
||||||
hingeModule();
|
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() {
|
||||||
|
if (!plasticMask) {
|
||||||
hingeModule();
|
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) {
|
||||||
|
|
||||||
|
if (!plasticMask) {
|
||||||
mainRail();
|
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) {
|
||||||
|
translate(v = [0, 0, -t])
|
||||||
xyPlate();
|
xyPlate();
|
||||||
|
}
|
||||||
|
|
||||||
screw(t=2*t);
|
screw(t=2*t);
|
||||||
|
|
||||||
@@ -343,10 +369,12 @@ module assemblyInstructions () {
|
|||||||
t = lerp(a=8, b=0, t=at);
|
t = lerp(a=8, b=0, t=at);
|
||||||
|
|
||||||
module slideNut() {
|
module slideNut() {
|
||||||
|
if (!screwMask) {
|
||||||
rotate(a = [0, 0, 90])
|
rotate(a = [0, 0, 90])
|
||||||
rotate(a = [90, 0, 0])
|
rotate(a = [90, 0, 0])
|
||||||
hexNut(rackFrameScrewType);
|
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?
|
||||||
slideNut();
|
slideNut();
|
||||||
@@ -354,8 +382,10 @@ 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();
|
||||||
|
|
||||||
|
if (!plasticMask) {
|
||||||
stackConnectorFeet();
|
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) {
|
||||||
|
translate(v = [0, 0, t2/2])
|
||||||
stackConnectors();
|
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,7 +594,8 @@ module assemblyInstructions () {
|
|||||||
|
|
||||||
|
|
||||||
module caseScrewA() {
|
module caseScrewA() {
|
||||||
color([1,1,1]) {
|
if (!screwMask) {
|
||||||
|
color([1, 1, 1]) {
|
||||||
difference() {
|
difference() {
|
||||||
scale(v = [0.9, 0.9, 0.9])
|
scale(v = [0.9, 0.9, 0.9])
|
||||||
counterSunkHead_N(rackFrameScrewType, screwExtension = 6, headExtension = 0.5);
|
counterSunkHead_N(rackFrameScrewType, screwExtension = 6, headExtension = 0.5);
|
||||||
@@ -544,9 +604,11 @@ module assemblyInstructions () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module caseScrewB() {
|
module caseScrewB() {
|
||||||
color([1,1,1]) {
|
if (!screwMask) {
|
||||||
|
color([1, 1, 1]) {
|
||||||
difference() {
|
difference() {
|
||||||
scale(v = [0.9, 0.9, 0.9])
|
scale(v = [0.9, 0.9, 0.9])
|
||||||
counterSunkHead_N(rackFrameScrewType, screwExtension = 10, headExtension = 0.5);
|
counterSunkHead_N(rackFrameScrewType, screwExtension = 10, headExtension = 0.5);
|
||||||
@@ -555,16 +617,21 @@ module assemblyInstructions () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
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) {
|
||||||
|
|||||||
+1
-1
@@ -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
+1426
-1426
File diff suppressed because it is too large
Load Diff
+823
-823
File diff suppressed because it is too large
Load Diff
+2059
-2059
File diff suppressed because it is too large
Load Diff
+29653
-4453
File diff suppressed because it is too large
Load Diff
+12088
-52184
File diff suppressed because it is too large
Load Diff
+10200
-50296
File diff suppressed because it is too large
Load Diff
+6845
-6845
File diff suppressed because it is too large
Load Diff
+13234
-13234
File diff suppressed because it is too large
Load Diff
+35266
-33446
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user