diff --git a/README.md b/README.md
index efd3bf6..19e0355 100644
--- a/README.md
+++ b/README.md
@@ -27,28 +27,25 @@ Please see [the assembly guide](./assembly-guide).
| Item | Name | Quantity | Comment |
|---------------------------------------------------------------|---------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------|
-|
| M3x8 FHCS | 8 | Extras are useful and inexpensive. If you plan on eventually stacking multiple racks together, don't hesitate to get a lot more. |
-|
| M3x12 FHCS | 12 | ☝️ |
-|
| M3x16 FHCS | 16 | ☝️ |
-|
| M3 hex nut | 36 | ☝️ |
+|
| M3x12 FHCS | 12 | Extras are useful and inexpensive. If you plan on eventually stacking multiple racks together, don't hesitate to get a lot more. |
+|
| M3x16 FHCS | 16 | ☝️ |
+|
| M3 hex nut | 28 | ☝️ |
|
| 3x10 steel dowel pin | 4 | 3mm diameter, 10mm height |
|
| 6x2 neodymium disc magnet | 8 | 6mm diameter, 2mm height |
|
| super glue | \>= 2ml | Used to glue magnets to plastic |
### Printing - Single Rack:
-| Part | Quantity |
-|--------------------------------------------------------------|----------|
-| [Y-Bar](./rack/print/yBar_P.scad) | 4 |
-| [X-Bar](./rack/print/xBar_P.scad) | 4 |
-| [Main Rail](./rack/print/mainRail_P.scad) | 4 |
-| [Left Magnet Module](./rack/print/magnetModuleLeft_P.scad) | 2 |
-| [Right Magnet Module](./rack/print/magnetModuleRight_P.scad) | 2 |
-| [Hinge Module](./rack/print/hingeModule.scad) | 4 |
-| [Left Side Wall](./rack/print/sideWallLeft_P.scad) | 1 |
-| [Right Side Wall](./rack/print/sideWallRight_P.scad) | 1 |
-| [XY-Plate](./rack/print/xyPlate_P.scad) | 2 |
-| [Feet](./rack/print/rackFeet_P.scad) (optional) | 2 |
+| Part | Quantity |
+|------------------------------------------------------|----------|
+| [Left Y-Bar](./rack/print/yBarLeft_P.scad) | 2 |
+| [Right Y-Bar](./rack/print/yBarRight_P.scad) | 2 |
+| [X-Bar](./rack/print/xBar_P.scad) | 4 |
+| [Main Rail](./rack/print/mainRail_P.scad) | 4 |
+| [Left Side Wall](./rack/print/sideWallLeft_P.scad) | 1 |
+| [Right Side Wall](./rack/print/sideWallRight_P.scad) | 1 |
+| [XY-Plate](./rack/print/xyPlate_P.scad) | 2 |
+| [Feet](./rack/print/rackFeet_P.scad) (optional) | 2 |
#### Notes:
diff --git a/assembly-guide/README.md b/assembly-guide/README.md
index f4c8bbd..bc114f7 100644
--- a/assembly-guide/README.md
+++ b/assembly-guide/README.md
@@ -8,7 +8,7 @@
Slide in M3 hex nuts into the Y-bars - 4 times. Each corner should have 3 hex nuts:

-Glue magnets into magnet side-modules - 4 times:
+Glue magnets into magnet side-modules on the Y-bars - 4 times:

Glue top and bottom magnets into side walls - 2 times:
@@ -17,14 +17,15 @@ Glue top and bottom magnets into side walls - 2 times:
Insert top and bottom dowel rods into side walls - 2 times:

-Slide Y-bars into X-bars - 2 times:
+Slide Y-bars into X-bars. Do this 2 times. You should end up with 2 trays. Orientation on the Y-bars matters here; make sure that the magnets are on the same side:

Screw together Y-bars and X-bars using 4 M3x16 FHCS screws (one screw per corner) - 2 times:

-Screw in the side-modules with M3x8 FHCS screws. Orientation matters here. The magnets modules should be on the eventual front side, facing outwards, and the two hinge modules should be in the back. Do this 2 times (for both trays):
-
+
+
+
Screw in the main rails with M3x16 FHCS screws.

@@ -49,4 +50,4 @@ Screw in feet using 4 M3x12 FHCS screws:

-**FIN**
\ No newline at end of file
+**FIN**
diff --git a/assembly-guide/gifs/addMagnetsToMagnetModules.gif b/assembly-guide/gifs/addMagnetsToMagnetModules.gif
index 684c050..3717dd1 100644
Binary files a/assembly-guide/gifs/addMagnetsToMagnetModules.gif and b/assembly-guide/gifs/addMagnetsToMagnetModules.gif differ
diff --git a/assembly-guide/gifs/addMagnetsToSideWall.gif b/assembly-guide/gifs/addMagnetsToSideWall.gif
index 7fcd77b..6047760 100644
Binary files a/assembly-guide/gifs/addMagnetsToSideWall.gif and b/assembly-guide/gifs/addMagnetsToSideWall.gif differ
diff --git a/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif b/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif
index 23744f3..4cfc954 100644
Binary files a/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif and b/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif differ
diff --git a/assembly-guide/gifs/attachXBarWithYBar.gif b/assembly-guide/gifs/attachXBarWithYBar.gif
index 6fce423..21abc13 100644
Binary files a/assembly-guide/gifs/attachXBarWithYBar.gif and b/assembly-guide/gifs/attachXBarWithYBar.gif differ
diff --git a/assembly-guide/gifs/attachXYPlates.gif b/assembly-guide/gifs/attachXYPlates.gif
index 3ff77c2..93a9ae3 100644
Binary files a/assembly-guide/gifs/attachXYPlates.gif and b/assembly-guide/gifs/attachXYPlates.gif differ
diff --git a/assembly-guide/gifs/attachXYTrays.gif b/assembly-guide/gifs/attachXYTrays.gif
index 2db5402..4b74db6 100644
Binary files a/assembly-guide/gifs/attachXYTrays.gif and b/assembly-guide/gifs/attachXYTrays.gif differ
diff --git a/assembly-guide/gifs/connectXYTrayWithMainRails.gif b/assembly-guide/gifs/connectXYTrayWithMainRails.gif
index abf0ae6..158f47f 100644
Binary files a/assembly-guide/gifs/connectXYTrayWithMainRails.gif and b/assembly-guide/gifs/connectXYTrayWithMainRails.gif differ
diff --git a/assembly-guide/gifs/insertDowelsIntoSideWall.gif b/assembly-guide/gifs/insertDowelsIntoSideWall.gif
index aa3b66e..3a580e8 100644
Binary files a/assembly-guide/gifs/insertDowelsIntoSideWall.gif and b/assembly-guide/gifs/insertDowelsIntoSideWall.gif differ
diff --git a/assembly-guide/gifs/insertFeet.gif b/assembly-guide/gifs/insertFeet.gif
index 3d35f8e..fbe248c 100644
Binary files a/assembly-guide/gifs/insertFeet.gif and b/assembly-guide/gifs/insertFeet.gif differ
diff --git a/assembly-guide/gifs/propUpBottomXYTraywithSideWalls.gif b/assembly-guide/gifs/propUpBottomXYTraywithSideWalls.gif
index 76fa9a8..f748a27 100644
Binary files a/assembly-guide/gifs/propUpBottomXYTraywithSideWalls.gif and b/assembly-guide/gifs/propUpBottomXYTraywithSideWalls.gif differ
diff --git a/assembly-guide/gifs/screwFeet.gif b/assembly-guide/gifs/screwFeet.gif
index f86a093..2d99980 100644
Binary files a/assembly-guide/gifs/screwFeet.gif and b/assembly-guide/gifs/screwFeet.gif differ
diff --git a/assembly-guide/gifs/screwXBarAndYBar.gif b/assembly-guide/gifs/screwXBarAndYBar.gif
index f265dfc..54004a8 100644
Binary files a/assembly-guide/gifs/screwXBarAndYBar.gif and b/assembly-guide/gifs/screwXBarAndYBar.gif differ
diff --git a/assembly-guide/gifs/slideHexNutToFeet.gif b/assembly-guide/gifs/slideHexNutToFeet.gif
index 44f462e..2d05894 100644
Binary files a/assembly-guide/gifs/slideHexNutToFeet.gif and b/assembly-guide/gifs/slideHexNutToFeet.gif differ
diff --git a/assembly-guide/gifs/slideHexNutsIntoYBar.gif b/assembly-guide/gifs/slideHexNutsIntoYBar.gif
index 88a5079..681a914 100644
Binary files a/assembly-guide/gifs/slideHexNutsIntoYBar.gif and b/assembly-guide/gifs/slideHexNutsIntoYBar.gif differ
diff --git a/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif b/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif
index 46ebba4..dc3e5df 100644
Binary files a/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif and b/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif differ
diff --git a/config/rackFrame.scad b/config/rackFrame.scad
index a043f8c..1d24632 100644
--- a/config/rackFrame.scad
+++ b/config/rackFrame.scad
@@ -1,5 +1,7 @@
// Manually set this variable to toggle rack profile
-profileName = "micro";
+profileName = "default";
+
+fixedSideModules = true;
_profileConfigs = [
// You can introduce a custom profile like:
diff --git a/rack-mount/enclosed-box/animate.gif b/rack-mount/enclosed-box/animate.gif
index 06d8bde..75c01de 100644
Binary files a/rack-mount/enclosed-box/animate.gif and b/rack-mount/enclosed-box/animate.gif differ
diff --git a/rack-mount/enclosed-box/entry.scad b/rack-mount/enclosed-box/entry.scad
index d5e7a0c..3fba17a 100644
--- a/rack-mount/enclosed-box/entry.scad
+++ b/rack-mount/enclosed-box/entry.scad
@@ -21,9 +21,9 @@ visualize = false,
zOrientation = "middle", // ["middle" | "bottom"]
recessSideRail = false,
-boxWidth = 170,
+boxWidth = 200,
boxHeight = 27,
-boxDepth = 100,
+boxDepth = 120,
railDefaultThickness = 1.5,
railSideThickness = 3,
@@ -71,4 +71,4 @@ frontPlateCutoutXSpace = 5,
);
}
-enclosedBoxSystem();
\ No newline at end of file
+enclosedBoxSystem();
diff --git a/rack-mount/patch-panel/animate.gif b/rack-mount/patch-panel/animate.gif
index 643779f..f30f11c 100644
Binary files a/rack-mount/patch-panel/animate.gif and b/rack-mount/patch-panel/animate.gif differ
diff --git a/rack-mount/tray/animate.gif b/rack-mount/tray/animate.gif
index d62eecc..08f061a 100644
Binary files a/rack-mount/tray/animate.gif and b/rack-mount/tray/animate.gif differ
diff --git a/rack/assembly/addMagnetsToMagnetModules.scad b/rack/assembly/addMagnetsToMagnetModules.scad
index 7bf0302..d72eb0a 100644
--- a/rack/assembly/addMagnetsToMagnetModules.scad
+++ b/rack/assembly/addMagnetsToMagnetModules.scad
@@ -1,4 +1,5 @@
include <./common.scad>
+use <./slideHexNutsIntoYBar.scad>
$vpt = [21,-15,20];
$vpr = [65,0,40];
@@ -10,8 +11,16 @@ addMagnetsToMagnetModules(at=$t);
module addMagnetsToMagnetModules(at=0) {
t = lerp(a=6,b=0,t=at);
+
if (!plasticMask) {
- magnetModule();
+
+ if (fixedSideModules) {
+ multmatrix(yBarToMagnetModuleTrans)
+ slideHexNutsIntoYBar(at=1);
+ }
+ else {
+ magnetModule();
+ }
}
function insertMagnetTrans(t=0) =
@@ -20,6 +29,9 @@ module addMagnetsToMagnetModules(at=0) {
magnetModuleMagnetMountDz]) *
rotate(a=[0,90,0]);
- multmatrix(insertMagnetTrans(t=t))
- magnet();
+
+
+ multmatrix(insertMagnetTrans(t=t))
+ magnet();
+
}
diff --git a/rack/assembly/attachSideConnectorModulesToYBars.scad b/rack/assembly/attachSideConnectorModulesToYBars.scad
index 1ee6f2e..f25b8dc 100644
--- a/rack/assembly/attachSideConnectorModulesToYBars.scad
+++ b/rack/assembly/attachSideConnectorModulesToYBars.scad
@@ -2,6 +2,11 @@ include <./common.scad>
use <./screwXBarAndYBar.scad>
use <./addMagnetsToMagnetModules.scad>
+
+/*
+ NOTE You only need to do this step if the `fixedSideModules` option is set to false.
+*/
+
$vpt = [116,90,18];
$vpr = [56,0,42];
$vpd = 550;
@@ -10,50 +15,57 @@ $vpf = 22.50;
attachSideConnectorModulesToYBars(at=$t);
module attachSideConnectorModulesToYBars(at=0) {
- elevation = lerp(a=8, b=0, t=at);
+ elevation = lerp(a=8, b=0, t=at);
- // side module to front corner ybar
- function sideModuleTrans(t=0) =
- translate(v=[sideWallConnW,0,t-sideWallConnLugDepression])
- * yBarSideModuleConnectorTrans
- * mirror(v=[1,0,0]); // mirror for magnetModule
+ // side module to front corner ybar
+ function sideModuleTrans(t=0) =
+ translate(v=[sideWallConnW,0,t-sideWallConnLugDepression])
+ * yBarSideModuleConnectorTrans
+ * mirror(v=[1,0,0]); // mirror for magnetModule
- screwXBarAndYBar(at=1);
+ screwXBarAndYBar(at=1);
- multmatrix(sideModuleTrans(elevation))
- union() {
- addMagnetsToMagnetModules(at=1);
+ if (!fixedSideModules) {
+ multmatrix(sideModuleTrans(elevation))
+ union() {
- translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
- caseScrewShort();
+
+ addMagnetsToMagnetModules(at=1);
+
+
+ translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
+ caseScrewShort();
+ }
+
+ multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * sideModuleTrans(elevation))
+ union() {
+
+ addMagnetsToMagnetModules(at=1);
+
+
+ translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
+ caseScrewShort();
+ }
+
+ multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
+ union() {
+
+ if (!plasticMask) {
+ hingeModule();
+ }
+
+ translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
+ caseScrewShort();
+ }
+
+ multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
+ union() {
+ if (!plasticMask) {
+ hingeModule();
+ }
+
+ translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
+ caseScrewShort();
+ }
}
-
- multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * sideModuleTrans(elevation))
- union() {
- addMagnetsToMagnetModules(at=1);
-
- translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
- caseScrewShort();
- }
-
- multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
- union() {
-
- if (!plasticMask) {
- hingeModule();
- }
-
- translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
- caseScrewShort();
- }
-
- multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation))
- union() {
- if (!plasticMask) {
- hingeModule();
- }
-
- translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation])
- caseScrewShort();
- }
-}
\ No newline at end of file
+}
diff --git a/rack/assembly/attachXBarWithYBar.scad b/rack/assembly/attachXBarWithYBar.scad
index 1ff32cb..714d4f6 100644
--- a/rack/assembly/attachXBarWithYBar.scad
+++ b/rack/assembly/attachXBarWithYBar.scad
@@ -1,5 +1,6 @@
include <./common.scad>
use <./slideHexNutsIntoYBar.scad>
+use <./addMagnetsToMagnetModules.scad>
$vpt = [116,90,18];
$vpr = [56,0,42];
@@ -14,10 +15,22 @@ module attachXBarWithYBar(at=0) {
// assemble x-y bar trays
multmatrix(translate(v = [0, 0, t]))
- slideHexNutsIntoYBar(at=1);
+
+ if (fixedSideModules) {
+ multmatrix(inv4x4(yBarToMagnetModuleTrans))
+ addMagnetsToMagnetModules(at=1); // same as slideHexNutsIntoYBar, but the magnet has already been inserted
+ } else {
+ slideHexNutsIntoYBar(at=1);
+ }
+
multmatrix(translate(v = [0, 0, t])*xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace)
- slideHexNutsIntoYBar(at=1);
+ if (fixedSideModules) {
+ multmatrix(inv4x4(yBarToMagnetModuleTrans))
+ addMagnetsToMagnetModules(at=1);
+ } else {
+ slideHexNutsIntoYBar(at=1);
+ }
if (!plasticMask) {
multmatrix(xBarSpaceToYBarSpace)
diff --git a/rack/assembly/attachXYTrays.scad b/rack/assembly/attachXYTrays.scad
index c0871c5..4e6d23d 100644
--- a/rack/assembly/attachXYTrays.scad
+++ b/rack/assembly/attachXYTrays.scad
@@ -33,4 +33,4 @@ module attachXYTrays(at=0,r=0) {
}
propUpBottomXYTraywithSideWalls(at=1,r=r);
-}
\ No newline at end of file
+}
diff --git a/rack/assembly/common.scad b/rack/assembly/common.scad
index 4297b21..e7be336 100644
--- a/rack/assembly/common.scad
+++ b/rack/assembly/common.scad
@@ -56,6 +56,14 @@ module mirrorAllTrayCornersFromYBarSpace() {
secondStackTrans = upperXYTrayTrans * mirror(v=[0,0,1]);
+
+
+yBarToMagnetModuleTrans =
+ translate(v=[13,0,sideWallConnLugDepression]) *
+ inv4x4(yBarSideModuleConnectorTrans) *
+ mirror(v=[1,0,0]);
+
+
module caseScrewShort() {
if (!screwMask) {
color([1, 1, 1]) {
@@ -117,4 +125,4 @@ module arrow(length) {
cylinder(r = 1, h = length-2);
}
-}
\ No newline at end of file
+}
diff --git a/rack/assembly/slideHexNutsIntoYBar.scad b/rack/assembly/slideHexNutsIntoYBar.scad
index 0292f24..d649bd1 100644
--- a/rack/assembly/slideHexNutsIntoYBar.scad
+++ b/rack/assembly/slideHexNutsIntoYBar.scad
@@ -32,8 +32,11 @@ module slideHexNutsIntoYBar(at=0)
rotate(a=[0,90,0]);
module slideHexNutsOneCorner(t=0) {
- multmatrix(sideModuleTrans(t = t))
- hexNut(rackFrameScrewType);
+
+ if (!fixedSideModules) {
+ multmatrix(sideModuleTrans(t = t))
+ hexNut(rackFrameScrewType);
+ }
multmatrix(mainRailTrans(t = t))
hexNut(rackFrameScrewType);
@@ -49,4 +52,4 @@ module slideHexNutsIntoYBar(at=0)
slideHexNutsOneCorner(t = t);
}
-}
\ No newline at end of file
+}
diff --git a/rack/connector/connectors.scad b/rack/connector/connectors.scad
index f6c8a56..3dbe48d 100644
--- a/rack/connector/connectors.scad
+++ b/rack/connector/connectors.scad
@@ -52,6 +52,10 @@ module connectorPositive(on, to) {
onYBarToXBarPositive();
} else if (on == "yBar" && to == "basePlate") {
onYBarBasePlateConnectorPositive();
+ } else if (on == "yBar" && to == "magnetModule") {
+ onYBarMagnetModulePositive();
+ } else if (on == "yBar" && to == "hingeModule") {
+ onYBarHingeModulePositive();
} else if (on == "basePlate" && to == "yBar") {
onBasePlateToYBarConnectorPositive();
} else if (on == "xBar" && to == "yBar") {
@@ -69,6 +73,8 @@ module connectorNegative(on, to) {
onXBarToYBarNegative();
} else if (on == "yBar" && to == "sideModule") {
onYBarSideModuleNegative();
+ } else if (on == "yBar" && to == "hingeModule") {
+ onYBarHingeModuleNegative();
} else if (on == "yBar" && to == "mainRail") {
onYBarToMainRailNegative();
} else if (on == "yBar" && to == "stackConnector") {
diff --git a/rack/connector/sideModuleYBarConnectors.scad b/rack/connector/sideModuleYBarConnectors.scad
index 4141898..db81050 100644
--- a/rack/connector/sideModuleYBarConnectors.scad
+++ b/rack/connector/sideModuleYBarConnectors.scad
@@ -2,13 +2,47 @@ include <../../helper/common.scad>
include <../../config/common.scad>
include <../sharedVariables.scad>
include <../side/sideWallVariables.scad>
+include <../side/magnetModule.scad>
+include <../side/hingeModule.scad>
-module onYBarSideModuleNegative() {
+
+module onYBarSideModuleNegative(fixed=false) {
translate(v = [-xySlack/2, -xySlack/2, -sideWallConnLugDepression])
cube(size = [sideWallConnW+xySlack, sideWallConnD+xySlack, sideWallConnLugDepression]);
- translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, -(4+sideWallConnLugDepression)])
- rotate(a=[0,0,90])
- hexNutPocket_N("m3", openSide=false, backSpace=5, bridgeFront=true);
-}
\ No newline at end of file
+
+ if (!fixed) {
+ translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, -(4+sideWallConnLugDepression)])
+ rotate(a=[0,0,90])
+ hexNutPocket_N("m3", openSide=false, backSpace=5, bridgeFront=true);
+ }
+}
+
+
+module onYBarMagnetModulePositive() {
+
+
+ translate(v=[sideWallConnW,0,-sideWallConnLugDepression])
+ mirror(v=[1,0,0])
+ magnetModule(fixed=true);
+
+
+}
+
+module onYBarHingeModulePositive() {
+
+ translate(v=[sideWallConnW,0,-sideWallConnLugDepression])
+ mirror(v=[1,0,0])
+ hingeModule(fixed=false);
+}
+
+module onYBarHingeModuleNegative() {
+
+ translate(v=[sideWallConnW,0,-sideWallConnLugDepression])
+ mirror(v=[1,0,0])
+ difference() {
+ cube(size=[sideWallConnW,sideWallConnD,sideWallConnLugDepression]);
+ hingeModule(fixed=true);
+ }
+}
diff --git a/rack/print/yBar_P.scad b/rack/print/yBarLeft_P.scad
similarity index 100%
rename from rack/print/yBar_P.scad
rename to rack/print/yBarLeft_P.scad
diff --git a/rack/print/yBarRight_P.scad b/rack/print/yBarRight_P.scad
new file mode 100644
index 0000000..613dbb8
--- /dev/null
+++ b/rack/print/yBarRight_P.scad
@@ -0,0 +1,7 @@
+use <../yBar.scad>
+
+// Oriented for 3d printing.
+// Supports required at XY wall connections, and depending on roundness
+
+mirror(v=[1,0,0])
+yBar();
diff --git a/rack/side/hingeModule.scad b/rack/side/hingeModule.scad
index 996aee6..ccb5f69 100644
--- a/rack/side/hingeModule.scad
+++ b/rack/side/hingeModule.scad
@@ -3,18 +3,18 @@ include <../../config/common.scad>
include <../sharedVariables.scad>
include <./sideWallVariables.scad>
-hingeModule();
-module hingeModule() {
+module hingeModule(fixed=false) {
applyHingePole()
- applyYBarScrewMount()
+ applyYBarScrewMount(fixed)
base();
- connW = sideWallConnW;
- connD = sideWallConnD;
-
module base() {
+
+ connW = sideWallConnW;
+ connD = sideWallConnD;
+
intersection() {
union() {
@@ -57,10 +57,13 @@ module hingeModule() {
}
- module applyYBarScrewMount() {
+ module applyYBarScrewMount(fixed=false) {
apply_n() {
- translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression])
- counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10);
+
+ if (!fixed) {
+ translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression])
+ counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10);
+ }
children(0);
}
diff --git a/rack/side/magnetModule.scad b/rack/side/magnetModule.scad
index b7a0ec7..5f23f04 100644
--- a/rack/side/magnetModule.scad
+++ b/rack/side/magnetModule.scad
@@ -4,20 +4,19 @@ include <../sharedVariables.scad>
include <./sideWallVariables.scad>
-magnetModule();
+module magnetModule(fixed=false) {
-module magnetModule() {
-
- applyYBarScrewMount()
+ applyYBarScrewMount(fixed)
applyMagnetMount()
base();
- connW = sideWallConnW;
- connD = sideWallConnD;
-
module base() {
+ connW = sideWallConnW;
+ connD = sideWallConnD;
+
intersection() {
+
cube(size = [connW, connD, sideWallConnLugDepression]);
// TODO: pattern for this? beef up mirror4XY?
@@ -29,10 +28,14 @@ module magnetModule() {
}
}
- module applyYBarScrewMount() {
+ module applyYBarScrewMount(fixed=false) {
+
apply_n() {
- translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression])
- counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10);
+
+ if (!fixed) {
+ translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression])
+ counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10);
+ }
children(0);
}
diff --git a/rack/yBar.scad b/rack/yBar.scad
index d484e24..369d53a 100644
--- a/rack/yBar.scad
+++ b/rack/yBar.scad
@@ -9,7 +9,7 @@ module yBar() {
applyOnYBarBothCorners(to="basePlate", trans=yBarBasePlateConnectorTrans)
applyOnYBarBothCorners(to="stackConnector", trans=yBarStackConnectorTrans)
- applyOnYBarBothCorners(to="sideModule", trans=yBarSideModuleConnectorTrans)
+ applySideModules()
applyOnYBarBothCorners(to="mainRail", trans=yBarMainRailConnectorTrans)
applyOnYBarBothCorners(to="xBar", trans=yBarXBarConnectorTrans)
yBarBase();
@@ -33,4 +33,20 @@ module yBar() {
applyConnector(on="yBar", to=to, trans=yBarMirrorOtherCornerTrans * trans)
children(0);
}
+
+
+ module applySideModules() {
+
+ if (!fixedSideModules) {
+ applyOnYBarBothCorners(to="sideModule", trans=yBarSideModuleConnectorTrans)
+ children(0);
+
+ } else {
+
+ applyConnector(on="yBar", to="magnetModule", trans=yBarSideModuleConnectorTrans)
+ applyConnector(on="yBar", to="hingeModule", trans=yBarMirrorOtherCornerTrans * yBarSideModuleConnectorTrans)
+ children(0);
+ }
+
+ }
}
diff --git a/rbuild.py b/rbuild.py
index a7bbbc9..9e171bb 100644
--- a/rbuild.py
+++ b/rbuild.py
@@ -253,7 +253,7 @@ def construct_openscad_animation_args(build_dir, target_dir, filename, config, d
target = os.path.join(target_dir, os.path.splitext(filename)[0] + '.png')
openscad_args = []
- openscad_args += ['--colorscheme', 'BeforeDawn']
+ openscad_args += ['--colorscheme', 'Tomorrow Night']
openscad_args += ['--render']
openscad_args += ['--imgsize', '1920,1080']
openscad_args += ['--projection', 'o']
@@ -286,7 +286,7 @@ def find_scad_file(directory, filename):
def run_openscad(options, nightly):
if nightly:
- command = [PATH_TO_OPENSCAD_NIGHTLY, '--enable', 'all']
+ command = [PATH_TO_OPENSCAD_NIGHTLY, '--enable', 'fast-csg', '--enable', 'manifold']
else:
command = [PATH_TO_OPENSCAD]