diff --git a/README.md b/README.md index d84359e..813e1b6 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,6 @@ - ***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 and fastened together. Mix and match different color and design combinations! -### Renders -See the [renders for difference parametric profiles here](media/renders) - ## Assembly Pre-generated STLs for roughly 200mm^3 (mini), 180mm^3 (micro), and 100mm^3 (nano) rack frames can be found in [stl](stl). @@ -30,27 +27,45 @@ Please see [the assembly README here](./assembly-guide) | Item | Name | Quantity | Comment | |---------------------------------------------------------------|---------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------| -| | M3x12 FHCS | 20 | Extras are useful and inexpensive. If you plan on eventually stacking multiple racks together, don't hesitate to get a lot more. | +| | 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 | ☝️ | | | 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/feet_P.scad) (optional) | 2 | + + + #### Notes: - Omitted actual plastic for printing. Any conventional 3d printing plastic should do (PLA, PETG, ABS), but beware of PLA's thermal limits. Higher infill is recommended for all parts. -- For joining two racks, you will need 8 M3 hex nuts, and 8 M3x12 FHCS. +- For joining two racks, you will need to print 4 [stackConnectorDuals](./rack/print/stackConnectorDual_P.scad), as well as 8 M3 hex nuts, and 8 M3x12 FHCS. - Main front rails use M4 hex nuts and screws. - Side rails are mounted using M3 hex nuts and screws. ## Configuring + Generating STLs -A python script: `rbuild.py` is provided to generate different project stls. +A python script: [rbuild.py](./rbuild.py) is provided to generate different project stls. Requirements: - - `openscad` cli (Currently only supported on Linux/Mac) + - `openscad` cli (Currently only supported on Linux/Mac). Please configure the path to the OpenSCAD binary in [rbuild.py](./rbuild.py) - `python3` ### Examples: diff --git a/assembly-guide/README.md b/assembly-guide/README.md index 093f9e9..550b286 100644 --- a/assembly-guide/README.md +++ b/assembly-guide/README.md @@ -1,50 +1,52 @@ # Rack Assembly Instructions -**Note**: This rack uses two different types of M3 flat heat screws: a 6mm length screw, referred to as type A; and a 10mm length screw, referred as type B. - - -TODO: Add image reference for parts +**Note**: Please see +- [BOM](../README.md#bom---single-rack) for required materials, beyond the actual 3-d printed parts. +- [Print BOM](../README.md#printing---single-rack) for all the required 3-d printed parts for a single rack. ## Instructions: -Insert heatset inserts into Y-bars - 4 times: -![insert heatset inserts](./insertHeatsetInserts.gif) +Slide in M3 hex nuts into the Y-bars - 4 times. Each corner should have 3 hex nuts: +![insert heatset inserts](./gifs/slideHexNutsIntoYBar.gif) Glue magnets into magnet side-modules - 4 times: -![glue magnets to magnet modules](./magnetToMagnetModule.gif) +![glue magnets to magnet modules](./gifs/addMagnetsToMagnetModules.gif) Glue top and bottom magnets into side walls - 2 times: -![glue magnets to side walls](./magnetToSideWall.gif) +![glue magnets to side walls](./gifs/addMagnetsToSideWall.gif) Insert top and bottom dowel rods into side walls - 2 times: -![insert dowels into side walls](./insertDowels.gif) +![insert dowels into side walls](./gifs/insertDowelsIntoSideWall.gif) Slide Y-bars into X-bars - 2 times: -![slide y-bar into x-bar](./slideYBarIntoXBar.gif) +![slide y-bar into x-bar](./gifs/attachXBarWithYBar.gif) -Screw together Y-bars and X-bars using 4 B-type screws (one screw per corner) - 2 times: -![attach x-bar with y-bar](./screwYBarXBar.gif) +Screw together Y-bars and X-bars using 4 M3x12 FHCS screws (one screw per corner) - 2 times: +![attach x-bar with y-bar](./gifs/screwXBarAndYBar.gif) -Screw in the side-modules with A-type screws: two magnet side modules in front with the magnets facing outwards, and two dowel holder side modules in the back - 2 times: -![attach side connector modules to y bars](./screwYBarSideModules.gif) - -Screw in the main rails with A-type screws: -![connect xy-tray with main rails](./screwYBarMainRail.gif) +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): +![attachSideConnectorModulesToYBars.gif](./gifs/attachSideConnectorModulesToYBars.gif) +Screw in the main rails with M3x16 FHCS screws. +![connect xy-tray with main rails](./gifs/connectXYTrayWithMainRails.gif) Prop us the side wall using the side modules. Make sure the dowels are inserted properly, and the magnets align: -![prop up side walls](./slideInSideWall.gif) +![prop up side walls](./gifs/propUpBottomXYTraywithSideWalls.gif) -Slide in the other (top) tray. Make sure the magnets and dowels align. Screw in the main rails with A-type screws: -![attach xy-trays](./connectXYTrays.gif) +Slide in the other (top) tray. Make sure the magnets and dowels align. Screw in the main rails with M3x16 FHCS screws: +![attach xy-trays](./gifs/attachXYTrays.gif) + +Attach the top and bottom plates with 4 M3x8 screws each: +![slideHexNutsIntoYBarXYPlate](./gifs/slideHexNutsIntoYBarXYPlate.gif) +![attachXYPlates.gif](gifs%2FattachXYPlates.gif) Slide in hex nuts into feet - 2 times: -![slide hex nuts into feet](./slideHexNutToFeet.gif) +![slide hex nuts into feet](./gifs/slideHexNutToFeet.gif) Insert feet into the bottom of the rack: -![insert feet](./slideFeetIntoYBar.gif) +![insert feet](./gifs/insertFeet.gif) -Screw in feet using 4 B-type screws: -![screw feet](./screwFeetIntoYBar.gif) +Screw in feet using 4 M3x12 FHCS screws: +![screw feet](./gifs/screwFeet.gif) -Finally, attach the top and bottom plates with 4 A-type screws each: -![attach xy-plates](./screwXYPlates.gif) + +**FIN** \ No newline at end of file diff --git a/assembly-guide/connectXYTrays.gif b/assembly-guide/connectXYTrays.gif deleted file mode 100644 index 978b069..0000000 Binary files a/assembly-guide/connectXYTrays.gif and /dev/null differ diff --git a/assembly-guide/gifs/addMagnetsToMagnetModules.gif b/assembly-guide/gifs/addMagnetsToMagnetModules.gif index b8b135e..684c050 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 38fc350..8d02121 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 16a2488..b1ee590 100644 Binary files a/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif and b/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif differ diff --git a/assembly-guide/gifs/attachXYPlates.gif b/assembly-guide/gifs/attachXYPlates.gif index a8d3b43..08db9f3 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 ac3b4d6..a305058 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 15118bc..4770148 100644 Binary files a/assembly-guide/gifs/connectXYTrayWithMainRails.gif and b/assembly-guide/gifs/connectXYTrayWithMainRails.gif differ diff --git a/assembly-guide/gifs/insertFeet.gif b/assembly-guide/gifs/insertFeet.gif index 379e270..328c26f 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 691f13c..caed860 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 c84ae2d..eb980cb 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 e35c1a2..63ad2ed 100644 Binary files a/assembly-guide/gifs/screwXBarAndYBar.gif and b/assembly-guide/gifs/screwXBarAndYBar.gif differ diff --git a/assembly-guide/gifs/slideHexNutsIntoYBar.gif b/assembly-guide/gifs/slideHexNutsIntoYBar.gif index 50b9c96..b0c0bca 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 26d0a70..e75975c 100644 Binary files a/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif and b/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif differ diff --git a/assembly-guide/insertDowels.gif b/assembly-guide/insertDowels.gif deleted file mode 100644 index edabeff..0000000 Binary files a/assembly-guide/insertDowels.gif and /dev/null differ diff --git a/assembly-guide/insertHeatsetInserts.gif b/assembly-guide/insertHeatsetInserts.gif deleted file mode 100644 index f638525..0000000 Binary files a/assembly-guide/insertHeatsetInserts.gif and /dev/null differ diff --git a/assembly-guide/magnetToMagnetModule.gif b/assembly-guide/magnetToMagnetModule.gif deleted file mode 100644 index 18d2ca6..0000000 Binary files a/assembly-guide/magnetToMagnetModule.gif and /dev/null differ diff --git a/assembly-guide/magnetToSideWall.gif b/assembly-guide/magnetToSideWall.gif deleted file mode 100644 index 12bd9ad..0000000 Binary files a/assembly-guide/magnetToSideWall.gif and /dev/null differ diff --git a/assembly-guide/screwFeetIntoYBar.gif b/assembly-guide/screwFeetIntoYBar.gif deleted file mode 100644 index 0ec4baf..0000000 Binary files a/assembly-guide/screwFeetIntoYBar.gif and /dev/null differ diff --git a/assembly-guide/screwXYPlates.gif b/assembly-guide/screwXYPlates.gif deleted file mode 100644 index 07b3443..0000000 Binary files a/assembly-guide/screwXYPlates.gif and /dev/null differ diff --git a/assembly-guide/screwYBarMainRail.gif b/assembly-guide/screwYBarMainRail.gif deleted file mode 100644 index aec1475..0000000 Binary files a/assembly-guide/screwYBarMainRail.gif and /dev/null differ diff --git a/assembly-guide/screwYBarSideModules.gif b/assembly-guide/screwYBarSideModules.gif deleted file mode 100644 index e11ea54..0000000 Binary files a/assembly-guide/screwYBarSideModules.gif and /dev/null differ diff --git a/assembly-guide/screwYBarXBar.gif b/assembly-guide/screwYBarXBar.gif deleted file mode 100644 index f6cd4da..0000000 Binary files a/assembly-guide/screwYBarXBar.gif and /dev/null differ diff --git a/assembly-guide/slideFeetIntoYBar.gif b/assembly-guide/slideFeetIntoYBar.gif deleted file mode 100644 index 15caa8b..0000000 Binary files a/assembly-guide/slideFeetIntoYBar.gif and /dev/null differ diff --git a/assembly-guide/slideHexNutToFeet.gif b/assembly-guide/slideHexNutToFeet.gif deleted file mode 100644 index c46ee1d..0000000 Binary files a/assembly-guide/slideHexNutToFeet.gif and /dev/null differ diff --git a/assembly-guide/slideInSideWall.gif b/assembly-guide/slideInSideWall.gif deleted file mode 100644 index 20c0798..0000000 Binary files a/assembly-guide/slideInSideWall.gif and /dev/null differ diff --git a/assembly-guide/slideYBarIntoXBar.gif b/assembly-guide/slideYBarIntoXBar.gif deleted file mode 100644 index 31549de..0000000 Binary files a/assembly-guide/slideYBarIntoXBar.gif and /dev/null differ diff --git a/rack/assembly/addMagnetsToMagnetModules.scad b/rack/assembly/addMagnetsToMagnetModules.scad index 0038d98..7bf0302 100644 --- a/rack/assembly/addMagnetsToMagnetModules.scad +++ b/rack/assembly/addMagnetsToMagnetModules.scad @@ -8,7 +8,7 @@ $vpf = 22.50; addMagnetsToMagnetModules(at=$t); module addMagnetsToMagnetModules(at=0) { - t = lerp(a=8,b=0,t=at); + t = lerp(a=6,b=0,t=at); if (!plasticMask) { magnetModule(); diff --git a/rack/assembly/addMagnetsToSideWall.scad b/rack/assembly/addMagnetsToSideWall.scad index e0395b7..4c0389f 100644 --- a/rack/assembly/addMagnetsToSideWall.scad +++ b/rack/assembly/addMagnetsToSideWall.scad @@ -1,7 +1,7 @@ include <./common.scad> -$vpt = [40,44,70]; -$vpr = [77,0,40]; +$vpt = [23,105,70]; +$vpr = [84,0,133]; $vpd = 370; $vpf = 22.50; diff --git a/rack/assembly/attachSideConnectorModulesToYBars.scad b/rack/assembly/attachSideConnectorModulesToYBars.scad index 2d68a59..1ee6f2e 100644 --- a/rack/assembly/attachSideConnectorModulesToYBars.scad +++ b/rack/assembly/attachSideConnectorModulesToYBars.scad @@ -25,7 +25,7 @@ module attachSideConnectorModulesToYBars(at=0) { addMagnetsToMagnetModules(at=1); translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); + caseScrewShort(); } multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * sideModuleTrans(elevation)) @@ -33,7 +33,7 @@ module attachSideConnectorModulesToYBars(at=0) { addMagnetsToMagnetModules(at=1); translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); + caseScrewShort(); } multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation)) @@ -44,7 +44,7 @@ module attachSideConnectorModulesToYBars(at=0) { } translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); + caseScrewShort(); } multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation)) @@ -54,6 +54,6 @@ module attachSideConnectorModulesToYBars(at=0) { } translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); + caseScrewShort(); } } \ No newline at end of file diff --git a/rack/assembly/attachXYPlates.scad b/rack/assembly/attachXYPlates.scad index 99b687c..b880070 100644 --- a/rack/assembly/attachXYPlates.scad +++ b/rack/assembly/attachXYPlates.scad @@ -28,7 +28,7 @@ module attachXYPlates(at=0,r=0) { module screw(t=0) { translate(v=[0,0,-t]) mirror(v=[0,0,1]) - caseScrewA(); + caseScrewMedium(); } if (!plasticMask) { diff --git a/rack/assembly/attachXYTrays.scad b/rack/assembly/attachXYTrays.scad index b85f444..c0871c5 100644 --- a/rack/assembly/attachXYTrays.scad +++ b/rack/assembly/attachXYTrays.scad @@ -2,9 +2,9 @@ include <./common.scad> use <./attachSideConnectorModulesToYBars.scad> use <./propUpBottomXYTraywithSideWalls.scad> -$vpt = [71,123,88]; -$vpr = [44,0,47]; -$vpd = 450; +$vpt = [115,58,113]; +$vpr = [98,0,17]; +$vpd = 620; $vpf = 22.50; attachXYTrays(at=$t); @@ -17,8 +17,8 @@ module attachXYTrays(at=0,r=0) { module singleScrew() { translate(v = [mainRailSlideHexOnYBarDx, mainRailSlideHexOnYBarDy, -5]) rotate(a=[-45,0,0]) - translate(v=[0,0,14 + t2]) // length of caseScrewB - caseScrewA(); + translate(v=[0,0,14 + t2]) // length of caseScrewLong + caseScrewMedium(); } translate(v=[0,0,t1]) diff --git a/rack/assembly/common.scad b/rack/assembly/common.scad index 930ad69..42917e9 100644 --- a/rack/assembly/common.scad +++ b/rack/assembly/common.scad @@ -54,13 +54,12 @@ module mirrorAllTrayCornersFromYBarSpace() { secondStackTrans = upperXYTrayTrans * mirror(v=[0,0,1]); - -module caseScrewA() { +module caseScrewShort() { if (!screwMask) { color([1, 1, 1]) { difference() { scale(v = [0.9, 0.9, 0.9]) - counterSunkHead_N(rackFrameScrewType, screwExtension = 10, headExtension = 0.5); + counterSunkHead_N(rackFrameScrewType, screwExtension = 8, headExtension = 0.5); cylinder($fn = 6, r = 1.5); } @@ -68,12 +67,25 @@ module caseScrewA() { } } -module caseScrewB() { +module caseScrewMedium() { if (!screwMask) { color([1, 1, 1]) { difference() { scale(v = [0.9, 0.9, 0.9]) - counterSunkHead_N(rackFrameScrewType, screwExtension = 14, headExtension = 0.5); + counterSunkHead_N(rackFrameScrewType, screwExtension = 12, headExtension = 0.5); + + cylinder($fn = 6, r = 1.5); + } + } + } +} + +module caseScrewLong() { + if (!screwMask) { + color([1, 1, 1]) { + difference() { + scale(v = [0.9, 0.9, 0.9]) + counterSunkHead_N(rackFrameScrewType, screwExtension = 16, headExtension = 0.5); cylinder($fn = 6, r = 1.5); } diff --git a/rack/assembly/connectXYTrayWithMainRails.scad b/rack/assembly/connectXYTrayWithMainRails.scad index 0568c22..05539a4 100644 --- a/rack/assembly/connectXYTrayWithMainRails.scad +++ b/rack/assembly/connectXYTrayWithMainRails.scad @@ -28,8 +28,8 @@ module connectXYTrayWithMainRails(at=0) { multmatrix( translate(v = [mainRailSlideHexOnYBarDx, mainRailSlideHexOnYBarDy, -5])* rotate(a = [-45, 0, 0])) - translate(v = [0, 0, 14 + t2]) // length of caseScrewB - caseScrewB(); + translate(v = [0, 0, 14 + t2]) // length of caseScrewLong + caseScrewLong(); } } diff --git a/rack/assembly/finalBuilds.scad b/rack/assembly/finalBuilds.scad index a88cca0..8bec1cf 100644 --- a/rack/assembly/finalBuilds.scad +++ b/rack/assembly/finalBuilds.scad @@ -1,39 +1,12 @@ include <./common.scad> +include <./screwFeet.scad> $vpt = [23,22,20]; $vpr = [57,0,46]; $vpd = 60; -// TODO: this is completly broken. fix this and figure out a nice way to run this with cli commands -assemblyInstructions(stepNum=0); - -module assemblyInstructions (stepNum=1) { - - screwMask = false; - plasticMask = false; - sideSupportRailMask = true; - - module pickStep(stepNum) { - children(stepNum); - } - - pickStep(stepNum=stepNum) { - slideHexNutsIntoYBar(at = $t); // moved - addMagnetsToMagnetModules(at = $t); // moved - addMagnetsToSideWall(at = $t); // moved - attachXBarWithYBar(at = $t); // moved - screwXBarAndYBar(at=$t); // moved - attachSideConnectorModulesToYBars(at=$t); // moved - connectXYTrayWithMainRails(at=1); // moved - insertDowelsIntoSideWall(at=$t); // moved - propUpBottomXYTraywithSideWalls(at=$t); // moved - attachXYTrays(at=$t); // moved - slideHexNutToFeet(at=$t); - insertFeet(at=$t); // moved - screwFeet(at=$t); // moved - attachXYPlates(at=$t); // moved - } - +// TODO fix this +module finalBuilds () { // Final builds: // render() @@ -46,384 +19,6 @@ module assemblyInstructions (stepNum=1) { // stackable(at=$t); // recommended at least 32 frames for animation // sideSwivel(at=$t); - - module slideHexNutsIntoYBar(at=0) { - - - t = lerp(a=10,b=0.35,t=at); // non zero b for exposing the heatset gears for diagramming - - if (!plasticMask) { - yBar(); - } - - heatSetHeight = heatSetInsertSlotHeightSlacked(rackFrameScrewType) * 0.95; - - function sideModuleHeatSetTrans(t=0) = - translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,t-(heatSetHeight+sideWallConnLugDepression)]) * - yBarSideModuleConnectorTrans; - - function mainRailHeatSetTrans(t=0) = - translate(v=[mainRailSlideHexOnYBarDx,mainRailSlideHexOnYBarDy,t-heatSetHeight]) * - yBarMainRailConnectorTrans; - - function xBarHeatSetTrans(t=0) = - translate(v=[t-heatSetHeight,27,6]) * - yBarXBarConnectorTrans * - rotate(a=[0,90,0]); - - module heatSetInsertsOneCorner(t=0) { - multmatrix(sideModuleHeatSetTrans(t = t)) - heatSetInsert(rackFrameScrewType); - - multmatrix(mainRailHeatSetTrans(t = t)) - heatSetInsert(rackFrameScrewType); - - multmatrix(xBarHeatSetTrans(t = t)) - heatSetInsert(rackFrameScrewType); - } - - if (!screwMask) { - heatSetInsertsOneCorner(t = t); - - multmatrix(yBarMirrorOtherCornerTrans) - heatSetInsertsOneCorner(t = t); - } - - } - - module addMagnetsToMagnetModules(at=0) { - t = lerp(a=8,b=0,t=at); - - if (!plasticMask) { - magnetModule(); - } - - function insertMagnetTrans(t=0) = - translate(v=[sideWallConnW-(magnetFaceToSideWallConnOuterYEdge+magnetHSlacked) + t, - magnetModuleMagnetMountDy, - magnetModuleMagnetMountDz]) * - rotate(a=[0,90,0]); - - multmatrix(insertMagnetTrans(t=t)) - magnet(); - } - - module addMagnetsToSideWall(at=0) { - t = lerp(a=8,b=0,t=at); - - if (!plasticMask) { - sideWallLeft(); - } - - function insertMagnetTrans(t=0) = - translate(v=[sideWallThickness+t, magnetMountToYBarFront, magnetMountToYBarTop-sideWallZHingeTotalClearance]) * - rotate(a=[0,90,0]); - - multmatrix(insertMagnetTrans(t=t)) - magnet(); - - multmatrix(translate(v=[0,0,sideWallZ - 2*(magnetMountToYBarTop- sideWallZHingeTotalClearance)]) * insertMagnetTrans(t=t)) - magnet(); - } - - module attachXBarWithYBar(at=0) { - - t = lerp(a=20, b=0, t=at); - - // assemble x-y bar trays - multmatrix(translate(v = [0, 0, t])) - slideHexNutsIntoYBar(at=1); - - multmatrix(translate(v = [0, 0, t])*xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace) - slideHexNutsIntoYBar(at=1); - - if (!plasticMask) { - multmatrix(xBarSpaceToYBarSpace) - xBar(); - - multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace) - xBar(); - } - } - - module screwXBarAndYBar(at=0) { - screwExtension = lerp(a=15, b=0, t=at); - - // in x bar space - function xBarYBarScrewTrans(extension) = - translate(v=[27,xBarSideThickness + extension,6]) * rotate(a=[270,0,0]); - - // screw to connect x and y bars - slideHexNutsIntoYBar(at=1); - - multmatrix(xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace) - slideHexNutsIntoYBar(at=1); - - multmatrix(xBarSpaceToYBarSpace) - union() { - - if (!plasticMask) { xBar(); } - - multmatrix(xBarYBarScrewTrans(screwExtension)) - caseScrewB(); - - multmatrix(xBarMirrorOtherCornerTrans * xBarYBarScrewTrans(screwExtension)) - caseScrewB(); - } - - multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace) - union() { - if (!plasticMask) { xBar(); } - - multmatrix(xBarYBarScrewTrans(screwExtension)) - caseScrewB(); - - multmatrix(xBarMirrorOtherCornerTrans * xBarYBarScrewTrans(screwExtension)) - caseScrewB(); - } - } - - module attachSideConnectorModulesToYBars(at=0) { - 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 - - screwXBarAndYBar(at=1); - - multmatrix(sideModuleTrans(elevation)) - union() { - addMagnetsToMagnetModules(at=1); - - translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); - } - - multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * sideModuleTrans(elevation)) - union() { - addMagnetsToMagnetModules(at=1); - - translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); - } - - multmatrix(yBarMirrorOtherCornerTrans * sideModuleTrans(elevation)) - union() { - - if (!plasticMask) { - hingeModule(); - } - - translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); - } - - multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * sideModuleTrans(elevation)) - union() { - if (!plasticMask) { - hingeModule(); - } - - translate(v=[yBarScrewHoleToOuterYEdge,yBarScrewHoleToFrontXEdge,sideWallConnLugDepression + 2*elevation]) - caseScrewA(); - } - } - - module connectXYTrayWithMainRails(at=0) { - - elevation = lerp(a=5, b=0, t=at); - - attachSideConnectorModulesToYBars(at=1); - - function mainRailTrans(elevation) = translate(v=[0,0,elevation]) * yBarMainRailConnectorTrans; - - module railAndScrew(elevation) { - - if (!plasticMask) { - mainRail(); - } - - translate(v=[railSideMountThickness + 5, railFrontThickness + 4,railFootThickness + 2*elevation]) - caseScrewA(); - } - - multmatrix(mainRailTrans(elevation=elevation)) - railAndScrew(elevation=elevation); - - multmatrix(yBarMirrorOtherCornerTrans * mainRailTrans(elevation=elevation)) - railAndScrew(elevation=elevation); - - multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * mainRailTrans(elevation=elevation)) - railAndScrew(elevation=elevation); - - multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * mainRailTrans(elevation=elevation)) - railAndScrew(elevation=elevation); - } - - module insertDowelsIntoSideWall(at=0) { - - t = lerp(a=10, b=0, t=at); - - hingeHoleH = hingePoleH-sideWallConnLugDepression; - - addMagnetsToSideWall(at=1); - - translate(v=[hingePoleDx,hingePoleDy, (sideWallZ-hingeHoleH) + t]) - hingeDowel(); - - translate(v=[hingePoleDx,hingePoleDy, (hingeHoleH-hingePoleH)-t]) - hingeDowel(); - - } - - module propUpBottomXYTraywithSideWalls(at=0, r=0) { - - t = lerp(a=10,b=0,t=at); - - function sideWallToYBarTrans(t=0,r=0) = - yBarMirrorOtherCornerTrans * - yBarSideModuleConnectorTrans * // bring to y bar space - mirror(v=[0,1,0]) * - translate(v=[0,0,t]) * - translate(v=[sideWallConnW/2.0, -hingePoleR, sideWallZHingeTotalClearance]) * // bring to side module space - rotate(a=[0,0,-r]) * - translate(v=[-hingePoleDx, -hingePoleDy, 0]); - - connectXYTrayWithMainRails(at=1); - - multmatrix(sideWallToYBarTrans(t=t, r=r)) - insertDowelsIntoSideWall(at=1); - - multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * sideWallToYBarTrans(t=t,r=r)) - insertDowelsIntoSideWall(at=1); - } - - module attachXYTrays(at=0,r=0) { - - t = lerp(a=10,b=0,t=at); - - module singleScrew(t=0) { - translate(v = [railSideMountThickness+5, railFrontThickness+4, railFootThickness + 2*t]) - caseScrewA(); - } - - translate(v=[0,0,t]) - multmatrix(upperXYTrayTrans) { - attachSideConnectorModulesToYBars(at=1); - - mirrorAllTrayCornersFromYBarSpace() - multmatrix(yBarMainRailConnectorTrans) - singleScrew(t=t); - } - - propUpBottomXYTraywithSideWalls(at=1,r=r); - } - - module attachXYPlates(at=0,r=0) { - - t = lerp(a=10,b=0,t=at); - - // TODO fix xyPlate transformations - function xyPlateToYBarTrans() = translate(v=[6,6,0]) * yBarBasePlateConnectorTrans; - - attachXYTrays(at=1,r=r); - - multmatrix(xyPlateToYBarTrans()) - xyPlateWithScrews(t=t); - - multmatrix(upperXYTrayTrans * xyPlateToYBarTrans()) - xyPlateWithScrews(t=t); - - module xyPlateWithScrews(t=0) { - - module screw(t=0) { - translate(v=[0,0,-t]) - mirror(v=[0,0,1]) - caseScrewA(); - } - - if (!plasticMask) { - translate(v = [0, 0, -t]) - xyPlate(); - } - - screw(t=2*t); - - translate(v=[xyPlateConnDx, 0,0]) - screw(t=2*t); - - translate(v=[0, xyPlateConnDy,0]) - screw(t=2*t); - - translate(v=[xyPlateConnDx, xyPlateConnDy,0]) - screw(t=2*t); - } - } - - module slideHexNutToFeet(at=0) { - - t = lerp(a=8, b=0, t=at); - - module slideNut() { - if (!screwMask) { - rotate(a = [0, 0, 90]) - rotate(a = [90, 0, 0]) - hexNut(rackFrameScrewType); - } - } - - translate(v=[0,t,connectorBottomToScrew + 0.5]) // where does this come from again? slack? - slideNut(); - - translate(v=[stackConnectorDx,t,connectorBottomToScrew + 0.5]) // where does this come from again? slack? - slideNut(); - - if (!plasticMask) { - stackConnectorFeet(); - } - } - - module insertFeet(at=0,r=0) { - - t = lerp(a=10,b=0,t=at); - - attachXYPlates(at=1,r=r); - - multmatrix(feetToYBarTrans(t=t)) - slideHexNutToFeet(at=1); - - multmatrix(yBarMirrorOtherCornerTrans * feetToYBarTrans(t=t)) - slideHexNutToFeet(at=1); - } - - module screwFeet(at=0,r=0) { - - t = lerp(a=20, b=0, t=at); - - function screwTrans(t=0) = translate(v=[-t - 9,0,connectorBottomToScrew]) * rotate(a=[0,-90,0]); - mirrorOtherFeetStackConnectorTrans = translate(v=[stackConnectorDx,0,0]) * mirror(v=[1,0,0]); - - - module screwToFeetModule() { - multmatrix(feetToYBarTrans(t = 0)*screwTrans(t = t)) - caseScrewB(); // we might want a longer screw? - - multmatrix(feetToYBarTrans(t = 0)*mirrorOtherFeetStackConnectorTrans*screwTrans(t = t)) - caseScrewB(); - } - - screwToFeetModule(); - - multmatrix(yBarMirrorOtherCornerTrans) - screwToFeetModule(); - - insertFeet(at=1,r=r); - } - - module finalSingle(r=0) { screwFeet(at=1,r=r); @@ -436,11 +31,11 @@ module assemblyInstructions (stepNum=1) { } rotate(a = [0, -90, 0]) - caseScrewA(); + caseScrewMedium(); translate(v = [0, sideRailScrewMountDist, 0]) rotate(a = [0, -90, 0]) - caseScrewA(); + caseScrewMedium(); } } @@ -453,11 +48,11 @@ module assemblyInstructions (stepNum=1) { sideSupportRailBase("lBracket"); } rotate(a=[0,-90,0]) - caseScrewA(); + caseScrewMedium(); translate(v=[0,sideRailScrewMountDist,0]) rotate(a=[0,-90,0]) - caseScrewA(); + caseScrewMedium(); } } } @@ -522,7 +117,7 @@ module assemblyInstructions (stepNum=1) { mirrorAllTrayCornersFromYBarSpace() multmatrix(screwTrans) - caseScrewB(); + caseScrewLong(); } if (!plasticMask) { diff --git a/rack/assembly/insertFeet.scad b/rack/assembly/insertFeet.scad index d5a3f78..e03a291 100644 --- a/rack/assembly/insertFeet.scad +++ b/rack/assembly/insertFeet.scad @@ -32,10 +32,10 @@ module screwFeet(at=0,r=0) { module screwToFeetModule() { multmatrix(feetToYBarTrans(t = 0)*screwTrans(t = t)) - caseScrewB(); // we might want a longer screw? + caseScrewLong(); // we might want a longer screw? multmatrix(feetToYBarTrans(t = 0)*mirrorOtherFeetStackConnectorTrans*screwTrans(t = t)) - caseScrewB(); + caseScrewLong(); } screwToFeetModule(); diff --git a/rack/assembly/screwFeet.scad b/rack/assembly/screwFeet.scad index 7debb1c..affae75 100644 --- a/rack/assembly/screwFeet.scad +++ b/rack/assembly/screwFeet.scad @@ -18,10 +18,10 @@ module screwFeet(at=0,r=0) { module screwToFeetModule() { multmatrix(feetToYBarTrans(t = 0)*screwTrans(t = t)) - caseScrewA(); + caseScrewMedium(); multmatrix(feetToYBarTrans(t = 0)*mirrorOtherFeetStackConnectorTrans*screwTrans(t = t)) - caseScrewA(); + caseScrewMedium(); } screwToFeetModule(); diff --git a/rack/assembly/screwXBarAndYBar.scad b/rack/assembly/screwXBarAndYBar.scad index 7307e7a..40d8363 100644 --- a/rack/assembly/screwXBarAndYBar.scad +++ b/rack/assembly/screwXBarAndYBar.scad @@ -23,10 +23,10 @@ module screwXBarAndYBar(at=0) { if (!plasticMask) { xBar(); } multmatrix(xBarYBarScrewTrans(screwExtension)) - caseScrewB(); + caseScrewLong(); multmatrix(xBarMirrorOtherCornerTrans * xBarYBarScrewTrans(screwExtension)) - caseScrewB(); + caseScrewLong(); } multmatrix(yBarMirrorOtherCornerTrans*xBarSpaceToYBarSpace) @@ -34,9 +34,9 @@ module screwXBarAndYBar(at=0) { if (!plasticMask) { xBar(); } multmatrix(xBarYBarScrewTrans(screwExtension)) - caseScrewB(); + caseScrewLong(); multmatrix(xBarMirrorOtherCornerTrans * xBarYBarScrewTrans(screwExtension)) - caseScrewB(); + caseScrewLong(); } } \ No newline at end of file diff --git a/rack/print/feet_P.scad b/rack/print/feet_P.scad new file mode 100644 index 0000000..1df7366 --- /dev/null +++ b/rack/print/feet_P.scad @@ -0,0 +1,4 @@ +use <../stackEnds.scad> + + +stackConnectorFeet(); \ No newline at end of file diff --git a/rack/print/hingeModule_P1.scad b/rack/print/hingeModule.scad similarity index 100% rename from rack/print/hingeModule_P1.scad rename to rack/print/hingeModule.scad diff --git a/rack/print/magnetModule_P2.scad b/rack/print/magnetModuleLeft_P.scad similarity index 100% rename from rack/print/magnetModule_P2.scad rename to rack/print/magnetModuleLeft_P.scad diff --git a/rack/print/magnetModule_P1.scad b/rack/print/magnetModuleRight_P.scad similarity index 100% rename from rack/print/magnetModule_P1.scad rename to rack/print/magnetModuleRight_P.scad diff --git a/rbuild.py b/rbuild.py index 758f34a..f7e92a1 100644 --- a/rbuild.py +++ b/rbuild.py @@ -27,17 +27,17 @@ ASSEMBLY_GIF_TEMP_DIR = ASSEMBLY_GIF_BUILD_DIR + '/tmp' BUILD_GIF_FROM_PNG_SCRIPT = './misc/animate.sh' ASSEMBLY_STEPS = [ - ('slideHexNutsIntoYBar.scad', 16), + ('slideHexNutsIntoYBar.scad', 24), ('addMagnetsToMagnetModules.scad', 16), ('addMagnetsToSideWall.scad', 16), ('attachXBarWithYBar.scad', 16), ('screwXBarAndYBar.scad', 16), ('attachSideConnectorModulesToYBars.scad', 16), - ('connectXYTrayWithMainRails.scad', 16), + ('connectXYTrayWithMainRails.scad', 24), ('insertDowelsIntoSideWall.scad', 16), ('propUpBottomXYTraywithSideWalls.scad', 16), ('slideHexNutsIntoYBarXYPlate.scad', 16), - ('attachXYTrays.scad', 16), + ('attachXYTrays.scad', 24), ('slideHexNutToFeet.scad', 16), ('insertFeet.scad', 16), ('screwFeet.scad', 16), diff --git a/stl/micro/rack-mount/patchPanel_P.stl b/stl/micro/rack-mount/patchPanel_P.stl deleted file mode 100644 index e6fda61..0000000 Binary files a/stl/micro/rack-mount/patchPanel_P.stl and /dev/null differ diff --git a/stl/micro/rack-mount/sideSupportRail_P1.stl b/stl/micro/rack-mount/sideSupportRail_P1.stl deleted file mode 100644 index 5b77e9d..0000000 Binary files a/stl/micro/rack-mount/sideSupportRail_P1.stl and /dev/null differ diff --git a/stl/micro/rack-mount/sideSupportRail_P2.stl b/stl/micro/rack-mount/sideSupportRail_P2.stl deleted file mode 100644 index a4e8180..0000000 Binary files a/stl/micro/rack-mount/sideSupportRail_P2.stl and /dev/null differ diff --git a/stl/micro/rack-mount/tray_P.stl b/stl/micro/rack-mount/tray_P.stl deleted file mode 100644 index ccb8ab8..0000000 Binary files a/stl/micro/rack-mount/tray_P.stl and /dev/null differ diff --git a/stl/micro/rack/eval_P.stl b/stl/micro/rack/eval_P.stl deleted file mode 100644 index 8e55e04..0000000 Binary files a/stl/micro/rack/eval_P.stl and /dev/null differ diff --git a/stl/micro/rack/hingeModule_P1.stl b/stl/micro/rack/hingeModule_P1.stl deleted file mode 100644 index c8a855e..0000000 Binary files a/stl/micro/rack/hingeModule_P1.stl and /dev/null differ diff --git a/stl/micro/rack/magnetModule_P1.stl b/stl/micro/rack/magnetModule_P1.stl deleted file mode 100644 index 6122015..0000000 Binary files a/stl/micro/rack/magnetModule_P1.stl and /dev/null differ diff --git a/stl/micro/rack/magnetModule_P2.stl b/stl/micro/rack/magnetModule_P2.stl deleted file mode 100644 index b266505..0000000 Binary files a/stl/micro/rack/magnetModule_P2.stl and /dev/null differ diff --git a/stl/micro/rack/mainRail_P.stl b/stl/micro/rack/mainRail_P.stl deleted file mode 100644 index 7e6c3fd..0000000 Binary files a/stl/micro/rack/mainRail_P.stl and /dev/null differ diff --git a/stl/micro/rack/sideWallLeft_P.stl b/stl/micro/rack/sideWallLeft_P.stl deleted file mode 100644 index 8923ce9..0000000 Binary files a/stl/micro/rack/sideWallLeft_P.stl and /dev/null differ diff --git a/stl/micro/rack/sideWallRight_P.stl b/stl/micro/rack/sideWallRight_P.stl deleted file mode 100644 index e26a7dd..0000000 Binary files a/stl/micro/rack/sideWallRight_P.stl and /dev/null differ diff --git a/stl/micro/rack/stackConnectorBottom_P.stl b/stl/micro/rack/stackConnectorBottom_P.stl deleted file mode 100644 index 2a4ae16..0000000 Binary files a/stl/micro/rack/stackConnectorBottom_P.stl and /dev/null differ diff --git a/stl/micro/rack/stackConnectorDual_P.stl b/stl/micro/rack/stackConnectorDual_P.stl deleted file mode 100644 index a5fc881..0000000 Binary files a/stl/micro/rack/stackConnectorDual_P.stl and /dev/null differ diff --git a/stl/micro/rack/xBar_P.stl b/stl/micro/rack/xBar_P.stl deleted file mode 100644 index 3844623..0000000 Binary files a/stl/micro/rack/xBar_P.stl and /dev/null differ diff --git a/stl/micro/rack/xyPlate_P.stl b/stl/micro/rack/xyPlate_P.stl deleted file mode 100644 index 004d527..0000000 Binary files a/stl/micro/rack/xyPlate_P.stl and /dev/null differ diff --git a/stl/micro/rack/yBar_P.stl b/stl/micro/rack/yBar_P.stl deleted file mode 100644 index bacb141..0000000 Binary files a/stl/micro/rack/yBar_P.stl and /dev/null differ