diff --git a/.gitignore b/.gitignore index 2002b91..5587e0b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ !/stl/mini/ !/stl/micro/ !/stl/nano/ + +/assembly-guide/gifs/tmp \ No newline at end of file diff --git a/assembly-guide/gifs/addMagnetsToMagnetModules.gif b/assembly-guide/gifs/addMagnetsToMagnetModules.gif new file mode 100644 index 0000000..65d2c3a Binary files /dev/null and b/assembly-guide/gifs/addMagnetsToMagnetModules.gif differ diff --git a/assembly-guide/gifs/addMagnetsToSideWall.gif b/assembly-guide/gifs/addMagnetsToSideWall.gif new file mode 100644 index 0000000..a2d4e47 Binary files /dev/null and b/assembly-guide/gifs/addMagnetsToSideWall.gif differ diff --git a/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif b/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif new file mode 100644 index 0000000..19fb428 Binary files /dev/null and b/assembly-guide/gifs/attachSideConnectorModulesToYBars.gif differ diff --git a/assembly-guide/gifs/attachXBarWithYBar.gif b/assembly-guide/gifs/attachXBarWithYBar.gif new file mode 100644 index 0000000..cf35508 Binary files /dev/null and b/assembly-guide/gifs/attachXBarWithYBar.gif differ diff --git a/assembly-guide/gifs/attachXYPlates.gif b/assembly-guide/gifs/attachXYPlates.gif new file mode 100644 index 0000000..1b98fbc Binary files /dev/null and b/assembly-guide/gifs/attachXYPlates.gif differ diff --git a/assembly-guide/gifs/attachXYTrays.gif b/assembly-guide/gifs/attachXYTrays.gif new file mode 100644 index 0000000..be18199 Binary files /dev/null and b/assembly-guide/gifs/attachXYTrays.gif differ diff --git a/assembly-guide/gifs/connectXYTrayWithMainRails.gif b/assembly-guide/gifs/connectXYTrayWithMainRails.gif new file mode 100644 index 0000000..c22e128 Binary files /dev/null and b/assembly-guide/gifs/connectXYTrayWithMainRails.gif differ diff --git a/assembly-guide/gifs/insertDowelsIntoSideWall.gif b/assembly-guide/gifs/insertDowelsIntoSideWall.gif new file mode 100644 index 0000000..dfe86de Binary files /dev/null and b/assembly-guide/gifs/insertDowelsIntoSideWall.gif differ diff --git a/assembly-guide/gifs/insertFeet.gif b/assembly-guide/gifs/insertFeet.gif new file mode 100644 index 0000000..2757a5e Binary files /dev/null and b/assembly-guide/gifs/insertFeet.gif differ diff --git a/assembly-guide/gifs/propUpBottomXYTraywithSideWalls.gif b/assembly-guide/gifs/propUpBottomXYTraywithSideWalls.gif new file mode 100644 index 0000000..c1a0ce2 Binary files /dev/null and b/assembly-guide/gifs/propUpBottomXYTraywithSideWalls.gif differ diff --git a/assembly-guide/gifs/screwFeet.gif b/assembly-guide/gifs/screwFeet.gif new file mode 100644 index 0000000..ea87319 Binary files /dev/null and b/assembly-guide/gifs/screwFeet.gif differ diff --git a/assembly-guide/gifs/screwXBarAndYBar.gif b/assembly-guide/gifs/screwXBarAndYBar.gif new file mode 100644 index 0000000..323cdeb Binary files /dev/null and b/assembly-guide/gifs/screwXBarAndYBar.gif differ diff --git a/assembly-guide/gifs/slideHexNutToFeet.gif b/assembly-guide/gifs/slideHexNutToFeet.gif new file mode 100644 index 0000000..b1e35cf Binary files /dev/null and b/assembly-guide/gifs/slideHexNutToFeet.gif differ diff --git a/assembly-guide/gifs/slideHexNutsIntoYBar.gif b/assembly-guide/gifs/slideHexNutsIntoYBar.gif new file mode 100644 index 0000000..14d9911 Binary files /dev/null and b/assembly-guide/gifs/slideHexNutsIntoYBar.gif differ diff --git a/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif b/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif new file mode 100644 index 0000000..44ae13c Binary files /dev/null and b/assembly-guide/gifs/slideHexNutsIntoYBarXYPlate.gif differ diff --git a/config/rackFrame.scad b/config/rackFrame.scad index a69a4fa..bf5d6bd 100644 --- a/config/rackFrame.scad +++ b/config/rackFrame.scad @@ -22,7 +22,7 @@ _profileConfigs = [ ["micro", [ ["maxUnitWidth", 180], ["maxUnitDepth", 180], - ["numRailScrews", 18] + ["numRailScrews", 12] ]], ["mini", [ ["maxUnitWidth", 205], diff --git a/helper/math.scad b/helper/math.scad index 5f9a880..d6f125e 100644 --- a/helper/math.scad +++ b/helper/math.scad @@ -2,6 +2,7 @@ $fn=64; eps=0.001; +rh=1; // preview render helper :) inf10 = 10; inf50 = 50; inf1000 = 1000; diff --git a/misc/animate.sh b/misc/animate.sh index d01372a..74b159b 100755 --- a/misc/animate.sh +++ b/misc/animate.sh @@ -3,14 +3,29 @@ name="anim" -# Check if an argument is provided and update the variable if so +# TODO provide through script +png_dir="./assembly-guide/gifs/tmp" +target_dir="./assembly-guide/gifs" + if [ -n "$1" ]; then name="$1" fi +if [ -n "$2" ]; then + png_dir="$2" +fi + +if [ -n "$3" ]; then + target_dir="$3" +fi + +echo "Current directory: $(pwd)" + filename_without_extension="${name%.*}" # needs tomorrow night openscad theme -convert -resize 20% -delay 6 -loop 0 -transparent "#1d1f21" -dispose previous frame000*.png "$filename_without_extension".gif +# convert -resize 20% -delay 6 -loop 0 -transparent "#1d1f21" -dispose previous frame000*.png "$filename_without_extension".gif -gifsicle -O3 --colors=64 --scale 0.5 -i "$filename_without_extension".gif -o "$filename_without_extension".gif \ No newline at end of file +convert -resize 20% -delay 6 -loop 0 -dispose previous "$png_dir"/"$filename_without_extension"000*.png "$target_dir"/"$filename_without_extension".gif + +gifsicle -O3 --colors=64 --scale 0.5 -i "$target_dir"/"$filename_without_extension".gif -o "$target_dir"/"$filename_without_extension".gif \ No newline at end of file diff --git a/rack-mount/patchPanel.scad b/rack-mount/patchPanel.scad index f52fd00..08f7855 100644 --- a/rack-mount/patchPanel.scad +++ b/rack-mount/patchPanel.scad @@ -4,7 +4,7 @@ include <../rack/sharedVariables.scad> use <./plateBase.scad> -patchPanel(slots=2); +*patchPanel(slots=2); module patchPanel (slots=8) { difference() { diff --git a/rack-mount/plateBase.scad b/rack-mount/plateBase.scad index b4a2591..0d37454 100644 --- a/rack-mount/plateBase.scad +++ b/rack-mount/plateBase.scad @@ -1,7 +1,7 @@ include <./common.scad> -plateBase(U=2, plateThickness=3, screwType="m4", filletR=2); +*plateBase(U=2, plateThickness=3, screwType="m4", filletR=2); module plateBase(U, plateThickness, screwType, screwToXEdge=4.5, screwToYEdge=4.5, filletR=2) { diff --git a/rack/assembly/addMagnetsToMagnetModules.scad b/rack/assembly/addMagnetsToMagnetModules.scad new file mode 100644 index 0000000..0038d98 --- /dev/null +++ b/rack/assembly/addMagnetsToMagnetModules.scad @@ -0,0 +1,25 @@ +include <./common.scad> + +$vpt = [21,-15,20]; +$vpr = [65,0,40]; +$vpd = 50; +$vpf = 22.50; + +addMagnetsToMagnetModules(at=$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(); +} diff --git a/rack/assembly/addMagnetsToSideWall.scad b/rack/assembly/addMagnetsToSideWall.scad new file mode 100644 index 0000000..e0395b7 --- /dev/null +++ b/rack/assembly/addMagnetsToSideWall.scad @@ -0,0 +1,26 @@ +include <./common.scad> + +$vpt = [40,44,70]; +$vpr = [77,0,40]; +$vpd = 370; +$vpf = 22.50; + +addMagnetsToSideWall(at=$t); + +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(); +} \ No newline at end of file diff --git a/rack/assembly/attachSideConnectorModulesToYBars.scad b/rack/assembly/attachSideConnectorModulesToYBars.scad new file mode 100644 index 0000000..2d68a59 --- /dev/null +++ b/rack/assembly/attachSideConnectorModulesToYBars.scad @@ -0,0 +1,59 @@ +include <./common.scad> +use <./screwXBarAndYBar.scad> +use <./addMagnetsToMagnetModules.scad> + +$vpt = [116,90,18]; +$vpr = [56,0,42]; +$vpd = 550; +$vpf = 22.50; + +attachSideConnectorModulesToYBars(at=$t); + +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(); + } +} \ No newline at end of file diff --git a/rack/assembly/attachXBarWithYBar.scad b/rack/assembly/attachXBarWithYBar.scad new file mode 100644 index 0000000..1ff32cb --- /dev/null +++ b/rack/assembly/attachXBarWithYBar.scad @@ -0,0 +1,29 @@ +include <./common.scad> +use <./slideHexNutsIntoYBar.scad> + +$vpt = [116,90,18]; +$vpr = [56,0,42]; +$vpd = 550; +$vpf = 22.50; + +attachXBarWithYBar(at=$t); + +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(); + } +} diff --git a/rack/assembly/attachXYPlates.scad b/rack/assembly/attachXYPlates.scad new file mode 100644 index 0000000..99b687c --- /dev/null +++ b/rack/assembly/attachXYPlates.scad @@ -0,0 +1,50 @@ +include <./common.scad> +use <./slideHexNutsIntoYBarXYPlate.scad> + +$vpt = [96,110,70]; +$vpr = [68,0,36]; +$vpd = 700; +$vpf = 22.50; + +attachXYPlates(at=$t); + +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; + + slideHexNutsIntoYBarXYPlate(at=1); + + 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); + } +} \ No newline at end of file diff --git a/rack/assembly/attachXYTrays.scad b/rack/assembly/attachXYTrays.scad new file mode 100644 index 0000000..b85f444 --- /dev/null +++ b/rack/assembly/attachXYTrays.scad @@ -0,0 +1,36 @@ +include <./common.scad> +use <./attachSideConnectorModulesToYBars.scad> +use <./propUpBottomXYTraywithSideWalls.scad> + +$vpt = [71,123,88]; +$vpr = [44,0,47]; +$vpd = 450; +$vpf = 22.50; + +attachXYTrays(at=$t); + +module attachXYTrays(at=0,r=0) { + + t1 = lerp(a=12, b=0, t=min(1, 2*at)); + t2 = lerp(a=16, b=0, t=max(0, 2*at - 1)); + + 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,t1]) + multmatrix(upperXYTrayTrans) { + attachSideConnectorModulesToYBars(at=1); + + if (at >= 1/2) { + mirrorAllTrayCornersFromYBarSpace() + multmatrix(yBarMainRailConnectorTrans) + singleScrew(); + } + } + + propUpBottomXYTraywithSideWalls(at=1,r=r); +} \ No newline at end of file diff --git a/rack/assembly/common.scad b/rack/assembly/common.scad new file mode 100644 index 0000000..930ad69 --- /dev/null +++ b/rack/assembly/common.scad @@ -0,0 +1,106 @@ +include <../../helper/common.scad> +include <../../config/common.scad> +include <../mainRail.scad> +include <../yBar.scad> +include <../xBar.scad> +include <../side/magnetModule.scad> +include <../side/hingeModule.scad> +include <../side/sideWallRight.scad> +include <../side/sideWallLeft.scad> +include <../stackEnds.scad> +include <../xyPlate.scad> + +screwMask = false; +plasticMask = false; +sideSupportRailMask = true; + + +xBarSpaceToYBarSpace = + yBarXBarConnectorTrans * + xBarConnectorToYBarConnectorTrans * + inv4x4(xBarYBarConnectorTrans); + +yBarSpaceToXBarSpace = + xBarYBarConnectorTrans * + yBarConnectorToXBarConnectorTrans * + inv4x4(yBarXBarConnectorTrans); + +upperXYTrayTrans = + yBarMainRailConnectorTrans * + mirrorMainRailOtherSideTrans * + inv4x4(yBarMainRailConnectorTrans); + +function feetToYBarTrans(t=0) = + translate(v=[connectorRectWidth/2,connectorRectDepth/2,-t]) * + yBarStackConnectorTrans * + mirror(v=[0,1,0]); + +function stackConnectorTrans(t=0) = + upperXYTrayTrans * + yBarStackConnectorTrans; + +module mirrorAllTrayCornersFromYBarSpace() { + children(0); + + multmatrix(yBarMirrorOtherCornerTrans) + children(0); + + multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans) + children(0); + + multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * yBarMirrorOtherCornerTrans) + children(0); +} + +secondStackTrans = upperXYTrayTrans * mirror(v=[0,0,1]); + + +module caseScrewA() { + if (!screwMask) { + color([1, 1, 1]) { + difference() { + scale(v = [0.9, 0.9, 0.9]) + counterSunkHead_N(rackFrameScrewType, screwExtension = 10, headExtension = 0.5); + + cylinder($fn = 6, r = 1.5); + } + } + } +} + +module caseScrewB() { + if (!screwMask) { + color([1, 1, 1]) { + difference() { + scale(v = [0.9, 0.9, 0.9]) + counterSunkHead_N(rackFrameScrewType, screwExtension = 14, headExtension = 0.5); + + cylinder($fn = 6, r = 1.5); + } + } + } +} + +module hingeDowel() { + if (!screwMask) { + color([0, 1, 1]) + cylinder(h = dowelPinH, r = dowelPinR); + } +} + + +module magnet() { + if (!screwMask) { + color([1, 1, 1]) + cylinder(r = magnetR, h = magnetH); + } +} + +module arrow(length) { + color([1,0,1]) { + translate(v = [0, 0, length-2]) + cylinder(r1 = 2, r2 = 0.2, h = 2); + + cylinder(r = 1, h = length-2); + } +} \ No newline at end of file diff --git a/rack/assembly/connectXYTrayWithMainRails.scad b/rack/assembly/connectXYTrayWithMainRails.scad new file mode 100644 index 0000000..0568c22 --- /dev/null +++ b/rack/assembly/connectXYTrayWithMainRails.scad @@ -0,0 +1,47 @@ +include <./common.scad> +use <./attachSideConnectorModulesToYBars.scad> + +$vpt = [96,110,70]; +$vpr = [68,0,36]; +$vpd = 700; +$vpf = 22.50; + +connectXYTrayWithMainRails(at=$t); + +module connectXYTrayWithMainRails(at=0) { + + attachSideConnectorModulesToYBars(at=1); + + function mainRailTrans() = + yBarMainRailConnectorTrans; + + module railAndScrew(at) { + t1 = lerp(a=12, b=0, t=min(1, 2*at)); + t2 = lerp(a=16, b=0, t=max(0, 2*at - 1)); + + if (!plasticMask) { + translate(v=[0,0,t1]) + mainRail(); + } + + if (at >= 1/2) { + multmatrix( + translate(v = [mainRailSlideHexOnYBarDx, mainRailSlideHexOnYBarDy, -5])* + rotate(a = [-45, 0, 0])) + translate(v = [0, 0, 14 + t2]) // length of caseScrewB + caseScrewB(); + } + } + + multmatrix(mainRailTrans()) + railAndScrew(at=at); + + multmatrix(yBarMirrorOtherCornerTrans * mainRailTrans()) + railAndScrew(at=at); + + multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * mainRailTrans()) + railAndScrew(at=at); + + multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * mainRailTrans()) + railAndScrew(at=at); +} \ No newline at end of file diff --git a/rack/assemblyGuide.scad b/rack/assembly/finalBuilds.scad similarity index 79% rename from rack/assemblyGuide.scad rename to rack/assembly/finalBuilds.scad index 4dd1254..a88cca0 100644 --- a/rack/assemblyGuide.scad +++ b/rack/assembly/finalBuilds.scad @@ -1,47 +1,43 @@ -include <../helper/common.scad> -include <../config/common.scad> -include <./mainRail.scad> -include <./yBar.scad> -include <./xBar.scad> -include <./side/magnetModule.scad> -include <./side/hingeModule.scad> -include <./side/sideWallRight.scad> -include <./side/sideWallLeft.scad> -include <./stackEnds.scad> -include <./xyPlate.scad> +include <./common.scad> -include <../rack-mount/side-rail/dualMount.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(); +assemblyInstructions(stepNum=0); -module assemblyInstructions () { +module assemblyInstructions (stepNum=1) { screwMask = false; plasticMask = false; sideSupportRailMask = true; - // Instruction List (in order) - // render() - // addHeatSetInsertsYBar(at=$t); - // addMagnetsToMagnetModules(at=$t); - // addMagnetsToSideWall(at=$t); - // attachXBarWithYBar(at=$t); - // screwXBarAndYBar(at=$t); - // attachSideConnectorModulesToYBars(at=$t); - // connectXYTrayWithMainRails(at=1); - // insertDowelsIntoSideWall(at=$t); - // propUpBottomXYTraywithSideWalls(at=$t); - // attachXYTrays(at=$t); - // slideHexNutToFeet(at=$t); - // insertFeet(at=$t); - // screwFeet(at=$t); - // attachXYPlates(at=$t); + 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 + } // Final builds: // render() - finalSingle(); + // finalSingle(); // finalDouble(); // Features: @@ -51,7 +47,9 @@ module assemblyInstructions () { // sideSwivel(at=$t); - module addHeatSetInsertsYBar(at=0) { + 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) { @@ -65,7 +63,7 @@ module assemblyInstructions () { yBarSideModuleConnectorTrans; function mainRailHeatSetTrans(t=0) = - translate(v=[mainRailHeatSetOnYBarDx,mainRailHeatSetOnYBarDy,t-heatSetHeight]) * + translate(v=[mainRailSlideHexOnYBarDx,mainRailSlideHexOnYBarDy,t-heatSetHeight]) * yBarMainRailConnectorTrans; function xBarHeatSetTrans(t=0) = @@ -134,10 +132,10 @@ module assemblyInstructions () { // assemble x-y bar trays multmatrix(translate(v = [0, 0, t])) - addHeatSetInsertsYBar(at=1); + slideHexNutsIntoYBar(at=1); multmatrix(translate(v = [0, 0, t])*xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace) - addHeatSetInsertsYBar(at=1); + slideHexNutsIntoYBar(at=1); if (!plasticMask) { multmatrix(xBarSpaceToYBarSpace) @@ -156,10 +154,10 @@ module assemblyInstructions () { translate(v=[27,xBarSideThickness + extension,6]) * rotate(a=[270,0,0]); // screw to connect x and y bars - addHeatSetInsertsYBar(at=1); + slideHexNutsIntoYBar(at=1); multmatrix(xBarSpaceToYBarSpace*xBarMirrorOtherCornerTrans*yBarSpaceToXBarSpace) - addHeatSetInsertsYBar(at=1); + slideHexNutsIntoYBar(at=1); multmatrix(xBarSpaceToYBarSpace) union() { @@ -554,94 +552,5 @@ module assemblyInstructions () { finalSingle(r=r); } - xBarSpaceToYBarSpace = - yBarXBarConnectorTrans * - xBarConnectorToYBarConnectorTrans * - inv4x4(xBarYBarConnectorTrans); - - yBarSpaceToXBarSpace = - xBarYBarConnectorTrans * - yBarConnectorToXBarConnectorTrans * - inv4x4(yBarXBarConnectorTrans); - - upperXYTrayTrans = - yBarMainRailConnectorTrans * - mirrorMainRailOtherSideTrans * - inv4x4(yBarMainRailConnectorTrans); - - function feetToYBarTrans(t=0) = - translate(v=[connectorRectWidth/2,connectorRectDepth/2,-t]) * - yBarStackConnectorTrans * - mirror(v=[0,1,0]); - - function stackConnectorTrans(t=0) = - upperXYTrayTrans * - yBarStackConnectorTrans; - - module mirrorAllTrayCornersFromYBarSpace() { - children(0); - - multmatrix(yBarMirrorOtherCornerTrans) - children(0); - - multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans) - children(0); - - multmatrix(xBarSpaceToYBarSpace * xBarMirrorOtherCornerTrans * yBarSpaceToXBarSpace * yBarMirrorOtherCornerTrans * yBarMirrorOtherCornerTrans) - children(0); - } - - secondStackTrans = upperXYTrayTrans * mirror(v=[0,0,1]); - - - module caseScrewA() { - if (!screwMask) { - color([1, 1, 1]) { - difference() { - scale(v = [0.9, 0.9, 0.9]) - counterSunkHead_N(rackFrameScrewType, screwExtension = 6, headExtension = 0.5); - - cylinder($fn = 6, r = 1.5); - } - } - } - } - - module caseScrewB() { - if (!screwMask) { - color([1, 1, 1]) { - difference() { - scale(v = [0.9, 0.9, 0.9]) - counterSunkHead_N(rackFrameScrewType, screwExtension = 10, headExtension = 0.5); - - cylinder($fn = 6, r = 1.5); - } - } - } - } - - module hingeDowel() { - if (!screwMask) { - color([0, 1, 1]) - cylinder(h = dowelPinH, r = dowelPinR); - } - } - - - module magnet() { - if (!screwMask) { - color([1, 1, 1]) - cylinder(r = magnetR, h = magnetH); - } - } - - module arrow(length) { - color([1,0,1]) { - translate(v = [0, 0, length-2]) - cylinder(r1 = 2, r2 = 0.2, h = 2); - - cylinder(r = 1, h = length-2); - } - } } \ No newline at end of file diff --git a/rack/assembly/insertDowelsIntoSideWall.scad b/rack/assembly/insertDowelsIntoSideWall.scad new file mode 100644 index 0000000..0a74510 --- /dev/null +++ b/rack/assembly/insertDowelsIntoSideWall.scad @@ -0,0 +1,25 @@ +include <./common.scad> +use <./addMagnetsToSideWall.scad> + +$vpt = [65,120,96]; +$vpr = [66,0,112]; +$vpd = 500; +$vpf = 22.50; + +insertDowelsIntoSideWall(at=$t); + +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(); + +} \ No newline at end of file diff --git a/rack/assembly/insertFeet.scad b/rack/assembly/insertFeet.scad new file mode 100644 index 0000000..d5a3f78 --- /dev/null +++ b/rack/assembly/insertFeet.scad @@ -0,0 +1,47 @@ +include <./common.scad> +use <./slideHexNutToFeet.scad> +use <./attachXYPlates.scad> + +$vpt = [95,90,10]; +$vpr = [105,0,38]; +$vpd = 650; +$vpf = 22.50; + +insertFeet(at=$t); + +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); +} diff --git a/rack/assembly/propUpBottomXYTraywithSideWalls.scad b/rack/assembly/propUpBottomXYTraywithSideWalls.scad new file mode 100644 index 0000000..16dd3a4 --- /dev/null +++ b/rack/assembly/propUpBottomXYTraywithSideWalls.scad @@ -0,0 +1,32 @@ +include <./common.scad> +use <./insertDowelsIntoSideWall.scad> +use <./connectXYTrayWithMainRails.scad> + +$vpt = [96,110,70]; +$vpr = [68,0,36]; +$vpd = 700; +$vpf = 22.50; + +propUpBottomXYTraywithSideWalls(at=$t, r=0); + +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); +} \ No newline at end of file diff --git a/rack/assembly/screwFeet.scad b/rack/assembly/screwFeet.scad new file mode 100644 index 0000000..7debb1c --- /dev/null +++ b/rack/assembly/screwFeet.scad @@ -0,0 +1,33 @@ +include <./common.scad> +use <./insertFeet.scad> + +$vpt = [95,90,10]; +$vpr = [105,0,38]; +$vpd = 650; +$vpf = 22.50; + +screwFeet(at=$t); + +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)) + caseScrewA(); + + multmatrix(feetToYBarTrans(t = 0)*mirrorOtherFeetStackConnectorTrans*screwTrans(t = t)) + caseScrewA(); + } + + screwToFeetModule(); + + multmatrix(yBarMirrorOtherCornerTrans) + screwToFeetModule(); + + insertFeet(at=1,r=r); +} diff --git a/rack/assembly/screwXBarAndYBar.scad b/rack/assembly/screwXBarAndYBar.scad new file mode 100644 index 0000000..7307e7a --- /dev/null +++ b/rack/assembly/screwXBarAndYBar.scad @@ -0,0 +1,42 @@ +include <./common.scad> +use <./attachXBarWithYBar.scad> + +$vpt = [103,90,20]; +$vpr = [68,0,36]; +$vpd = 500; +$vpf = 22.50; + +screwXBarAndYBar(at=$t); + +module screwXBarAndYBar(at=0) { + screwExtension = lerp(a=16, b=0, t=at); + + // in x bar space + function xBarYBarScrewTrans(extension) = + translate(v=[27,xBarSideThickness + extension,8]) * rotate(a=[270,0,0]); + + attachXBarWithYBar(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(); + } +} \ No newline at end of file diff --git a/rack/assembly/slideHexNutToFeet.scad b/rack/assembly/slideHexNutToFeet.scad new file mode 100644 index 0000000..a496d64 --- /dev/null +++ b/rack/assembly/slideHexNutToFeet.scad @@ -0,0 +1,31 @@ +include <./common.scad> + +$vpt = [75,-10,-14]; +$vpr = [74,0,120]; +$vpd = 300; +$vpf = 22.50; + +slideHexNutToFeet(at=$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(); + } +} diff --git a/rack/assembly/slideHexNutsIntoYBar.scad b/rack/assembly/slideHexNutsIntoYBar.scad new file mode 100644 index 0000000..0292f24 --- /dev/null +++ b/rack/assembly/slideHexNutsIntoYBar.scad @@ -0,0 +1,52 @@ +include <./common.scad> + +$vpt = [43,66,41]; +$vpr = [44,0,47]; +$vpd = 350; +$vpf = 22.50; + +slideHexNutsIntoYBar(at=$t); + +module slideHexNutsIntoYBar(at=0) +{ + + t = lerp(a=20,b=0,t=at); + + if (!plasticMask) { + yBar(); + } + + function sideModuleTrans(t=0) = + yBarSideModuleConnectorTrans * + translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge+t, -(4+sideWallConnLugDepression)]) * + rotate(a=[0,0,90]); + + function mainRailTrans(t=0) = + yBarMainRailConnectorTrans * + translate(v = [mainRailSlideHexOnYBarDx+t, mainRailSlideHexOnYBarDy, -5]) * + rotate(a=[-45,0,0]); + + function xBarTrans(t=0) = + translate(v = [-5, 27, 8+t]) * + yBarXBarConnectorTrans * + rotate(a=[0,90,0]); + + module slideHexNutsOneCorner(t=0) { + multmatrix(sideModuleTrans(t = t)) + hexNut(rackFrameScrewType); + + multmatrix(mainRailTrans(t = t)) + hexNut(rackFrameScrewType); + + multmatrix(xBarTrans(t = t)) + hexNut(rackFrameScrewType); + } + + if (!screwMask) { + slideHexNutsOneCorner(t = t); + + multmatrix(yBarMirrorOtherCornerTrans) + slideHexNutsOneCorner(t = t); + } + +} \ No newline at end of file diff --git a/rack/assembly/slideHexNutsIntoYBarXYPlate.scad b/rack/assembly/slideHexNutsIntoYBarXYPlate.scad new file mode 100644 index 0000000..7456fce --- /dev/null +++ b/rack/assembly/slideHexNutsIntoYBarXYPlate.scad @@ -0,0 +1,41 @@ +include <./common.scad> +use <./attachXYTrays.scad> + +$vpt = [71,123,88]; +$vpr = [44,0,47]; +$vpd = 450; +$vpf = 22.50; + +slideHexNutsIntoYBarXYPlate(at=$t); + +module slideHexNutsIntoYBarXYPlate(at=0) { + + t = lerp(a=12,b=0,t=at); + + attachXYTrays(at=1,r=0); + + slideHexNuts(t=t); + + multmatrix(upperXYTrayTrans) + slideHexNuts(t=t); + + module plateHexNut(t) { + multmatrix(yBarBasePlateConnectorTrans) + translate(v=[_heatSetX+t, _heatSetY, 4 + _baseConnRecession]) // TODO gotta rename these + hexNut(rackFrameScrewType); + } + + module slideHexNuts(t=0) { + + plateHexNut(t=t); + + translate(v=[xyPlateConnDx, 0,0]) + plateHexNut(t=-t); + + translate(v=[0, xyPlateConnDy,0]) + plateHexNut(t=t); + + translate(v=[xyPlateConnDx, xyPlateConnDy,0]) + plateHexNut(t=-t); + } +} \ No newline at end of file diff --git a/rack/connector/mainRailYBarConnectors.scad b/rack/connector/mainRailYBarConnectors.scad index 00c7463..5c9c5ad 100644 --- a/rack/connector/mainRailYBarConnectors.scad +++ b/rack/connector/mainRailYBarConnectors.scad @@ -2,8 +2,8 @@ include <../../helper/common.scad> include <../../config/common.scad> include <../sharedVariables.scad> -mainRailHeatSetOnYBarDx = railSideMountThickness + 5; -mainRailHeatSetOnYBarDy = railFrontThickness + 2; +mainRailSlideHexOnYBarDx = railSideMountThickness + 5; +mainRailSlideHexOnYBarDy = railFrontThickness + 2; module onYBarToMainRailNegative() { @@ -14,7 +14,7 @@ module onYBarToMainRailNegative() { translate(v=[-slotZSlack/2, -slotSlack/2,0]) cube(size = [railTotalWidth+slotZSlack, railTotalDepth + slotSlack, railFootThickness]); - translate(v = [mainRailHeatSetOnYBarDx, mainRailHeatSetOnYBarDy, -5]) + translate(v = [mainRailSlideHexOnYBarDx, mainRailSlideHexOnYBarDy, -5]) rotate(a=[-45,0,0]) hexNutPocket_N("m3", openSide=false, backSpace=5); } @@ -36,7 +36,7 @@ module onMainRailYBarConnectorNegative() { screwOffset = 9; - translate(v = [mainRailHeatSetOnYBarDx, mainRailHeatSetOnYBarDy + screwOffset, -5 + screwOffset]) + translate(v = [mainRailSlideHexOnYBarDx, mainRailSlideHexOnYBarDy + screwOffset, -5 + screwOffset]) rotate(a=[-45,0,0]) counterSunkHead_N(rackFrameScrewType, screwExtension=inf50, headExtension=inf50); diff --git a/rack/mainRail.scad b/rack/mainRail.scad index d9fdb4a..a18d242 100644 --- a/rack/mainRail.scad +++ b/rack/mainRail.scad @@ -3,7 +3,7 @@ include <../config/common.scad> include <./sharedVariables.scad> include <./connector/connectors.scad> -mainRail(); +*mainRail(); module mainRail() { diff --git a/rack/side/sideWallLeft.scad b/rack/side/sideWallLeft.scad index 9069695..336327f 100644 --- a/rack/side/sideWallLeft.scad +++ b/rack/side/sideWallLeft.scad @@ -1,6 +1,6 @@ include <./sideWallBase.scad> -sideWallLeft(); +*sideWallLeft(); module sideWallLeft() { diff --git a/rack/side/sideWallRight.scad b/rack/side/sideWallRight.scad index 8e9c0f2..22c28b0 100644 --- a/rack/side/sideWallRight.scad +++ b/rack/side/sideWallRight.scad @@ -1,6 +1,6 @@ include <./sideWallBase.scad> -sideWallRight(); +*sideWallRight(); module sideWallRight() { diff --git a/rack/xBar.scad b/rack/xBar.scad index f3032d4..943bf4c 100644 --- a/rack/xBar.scad +++ b/rack/xBar.scad @@ -3,7 +3,7 @@ include <../config/common.scad> include <./sharedVariables.scad> include <./connector/connectors.scad> -xBar(); +*xBar(); module xBar() { diff --git a/rack/xyPlate.scad b/rack/xyPlate.scad index 4ef18f6..33a7a2d 100644 --- a/rack/xyPlate.scad +++ b/rack/xyPlate.scad @@ -1,7 +1,7 @@ include <../helper/common.scad> include <./connector/connectors.scad> -xyPlate(); +*xyPlate(); xyPlateConnDx = xBarX + 2*_heatSetX; // X distance between connectors xyPlateConnDy = yBarDepth - 2*basePlateScrewMountToYBarXZFace; // Y distance between connectors diff --git a/rack/yBar.scad b/rack/yBar.scad index 42ea080..3016dbe 100644 --- a/rack/yBar.scad +++ b/rack/yBar.scad @@ -3,7 +3,7 @@ include <../config/common.scad> include <./connector/connectors.scad> include <./sharedVariables.scad> -yBar(); +*yBar(); module yBar() { diff --git a/rbuild.py b/rbuild.py index 1999198..f12f601 100644 --- a/rbuild.py +++ b/rbuild.py @@ -4,12 +4,8 @@ import argparse import subprocess import os -<<<<<<< HEAD -PATH_TO_OPENSCAD = '/Applications/OpenSCAD.app/Contents/MacOS/OpenSCAD' -======= -PATH_TO_OPENSCAD = 'openscad' -PATH_TO_OPENSCAD_NIGHTLY = 'path/to/nightly/build' ->>>>>>> 380dcb9 (update) +PATH_TO_OPENSCAD = '/usr/bin/openscad' +PATH_TO_OPENSCAD_NIGHTLY = '/snap/bin/openscad-nightly' # For actual dimensions, please see profiles.scad. class BuildSizeConfig: @@ -17,7 +13,6 @@ class BuildSizeConfig: MINI = 'mini' MICRO = 'micro' - RACK_BUILD_DIR = './rack/print' RACK_MOUNT_BUILD_DIR = './rack-mount/print' @@ -26,6 +21,29 @@ BUILD_PARENT_DIR = './stl' RACK_BUILD_TARGET_SUB_DIR = 'rack' RACK_MOUNT_BUILD_TARGET_SUB_DIR = 'rack-mount' +ASSEMBLY_GIF_DIR = './rack/assembly' +ASSEMBLY_GIF_BUILD_DIR = './assembly-guide/gifs' +ASSEMBLY_GIF_TEMP_DIR = ASSEMBLY_GIF_BUILD_DIR + '/tmp' +BUILD_GIF_FROM_PNG_SCRIPT = './misc/animate.sh' + +ASSEMBLY_STEPS = [ + ('slideHexNutsIntoYBar.scad', 16), + ('addMagnetsToMagnetModules.scad', 16), + ('addMagnetsToSideWall.scad', 16), + ('attachXBarWithYBar.scad', 16), + ('screwXBarAndYBar.scad', 16), + ('attachSideConnectorModulesToYBars.scad', 16), + ('connectXYTrayWithMainRails.scad', 16), + ('insertDowelsIntoSideWall.scad', 16), + ('propUpBottomXYTraywithSideWalls.scad', 16), + ('slideHexNutsIntoYBarXYPlate.scad', 16), + ('attachXYTrays.scad', 16), + ('slideHexNutToFeet.scad', 16), + ('insertFeet.scad', 16), + ('screwFeet.scad', 16), + ('attachXYPlates.scad', 16) +] + def main(): if not assertOpenscadExists(): @@ -72,6 +90,12 @@ def main(): help='Use openscad-nightly command. Should result in much faster build times.' ) + parser.add_argument( + '--build_assembly_gifs', + action='store_true', + help='Generate the GIFS for the assembly guide.' + ) + args = parser.parse_args() run_build(args) @@ -79,14 +103,19 @@ def main(): def run_build(args): build_var = args.b - - if build_var is None: - print("Please provide the build (-b) variable") # TODO redundant - config_var = args.c target_var = args.t dz = args.dz nightly = args.nightly + build_gifs = args.build_assembly_gifs + + if (build_var is not None) == (build_gifs is True): + print("Please either provide the build (-b) variable, or the build-gifs option (--build-assembly-gifs)") + quit() + + if build_gifs: + build_assembly_gifs(config_var, dz, nightly) + quit() if target_var != "": final_target_directory_name = target_var @@ -128,12 +157,34 @@ def build_single(build_dir, target_dir, filename, config, dz, nightly): openscad_args = construct_openscad_args(build_dir, target_dir, filename, config, dz) run_openscad(openscad_args, nightly) +def build_assembly_gifs(config, dz, nightly): + print('Building assembly-gifs. Source Dir:', ASSEMBLY_GIF_DIR, ', Target:', ASSEMBLY_GIF_BUILD_DIR) -def construct_openscad_args(build_dir, target_dir, filename, config, dz): + for (fileName, numSteps) in ASSEMBLY_STEPS: + print('Rendering', fileName) + openscad_args = construct_openscad_animation_args( + ASSEMBLY_GIF_DIR, ASSEMBLY_GIF_TEMP_DIR, fileName, config, dz, numSteps + ) + run_openscad(openscad_args, nightly) + + print("Building GIF for", fileName) + build_gif_from_png(fileName) + print("Done") + +def build_gif_from_png(fileName): + script_dir = os.path.dirname(os.path.abspath(__file__)) + script_path = os.path.join(script_dir, BUILD_GIF_FROM_PNG_SCRIPT) + try: + subprocess.run(["bash", script_path, fileName], check=True) + except subprocess.CalledProcessError as e: + print(f"Error calling shell script: {e}") + +def construct_openscad_args(build_dir, target_dir, filename, config, dz, format='.stl'): source = os.path.join(build_dir, filename) - target = os.path.join(target_dir, os.path.splitext(filename)[0] + '.stl') + target = os.path.join(target_dir, os.path.splitext(filename)[0] + format) - openscad_args = ['-D', 'profileName=\"' + config + '\"'] + openscad_args = ['--export-format', 'binstl'] + openscad_args += ['-D', 'profileName=\"' + config + '\"'] if dz != 0: openscad_args += ['-D', 'numRailScrews=' + dz] @@ -146,6 +197,22 @@ def construct_openscad_args(build_dir, target_dir, filename, config, dz): return openscad_args +def construct_openscad_animation_args(build_dir, target_dir, filename, config, dz, steps): + source = os.path.join(build_dir, filename) + target = os.path.join(target_dir, os.path.splitext(filename)[0] + '.png') + + openscad_args = [] + openscad_args += ['--colorscheme', 'BeforeDawn'] + openscad_args += ['--render'] + openscad_args += ['--imgsize', '1920,1080'] + openscad_args += ['--projection', 'o'] + openscad_args += ['--animate', str(steps)] + openscad_args += ['-o', target, source] + + return openscad_args + + + def find_rack(filename): return find_scad_file(RACK_BUILD_DIR, filename) @@ -178,17 +245,13 @@ def run_openscad(options, nightly): else: command = [PATH_TO_OPENSCAD] - command += ['--export-format', 'binstl'] + options + command += options try: subprocess.check_output(command, universal_newlines=True, stderr=subprocess.DEVNULL) except FileNotFoundError: print('OpenSCAD command not found! ' -<<<<<<< HEAD - 'Please make sure that you have OpenSCAD installed and can run OpenSCAD CLI commands. ' -======= 'Please make sure that you have the OpenSCAD binary configured in rbuild.py.' ->>>>>>> 380dcb9 (update) '(Currently needs Linux/Mac for this)') def assertOpenscadExists(): return os.path.exists(PATH_TO_OPENSCAD) diff --git a/resource/sbc/rpi/frontPlate.scad b/resource/sbc/rpi/frontPlate.scad index a17586a..82daa2e 100644 --- a/resource/sbc/rpi/frontPlate.scad +++ b/resource/sbc/rpi/frontPlate.scad @@ -1,6 +1,6 @@ -include <../common.scad> -include <../rack/screws.scad> -include <../sine.scad> +include <../../../config/common.scad> +include <../../../helper/common.scad> +include <../../../rack-mount/plateBase.scad> vU = 2; uHeight = 10; @@ -20,7 +20,7 @@ frontPlateH = plateScrewDiffH + 2*plateScrewToVEdge; plateScrewToBoxMin = 6; -length = 170; +length = 150; resolution = 250; period = PI/6; shift = 0.0; @@ -28,11 +28,6 @@ amplitudeFunction = function(x) 2; module _frontPlateBody() { - difference() { - translate(v = [- plateScrewToVEdge, 0, - plateScrewToHEdge]) - cube(size = [frontPlateH, frontPlateThickness, frontPlateV]); - } - translate(v=[5,-3,-1]) rotate(a=[180,0,0]) sineWaveHull(length, resolution, amplitudeFunction, period+0.02, 2, 5); @@ -69,7 +64,6 @@ module _plateHole() { module frontPlate() { - difference() { _frontPlateBody(); @@ -90,11 +84,13 @@ module frontPlate() { } } + difference() { difference() { difference() { union() { + plateBase(U=2, plateThickness=2.5, screwType="m4", filletR=2); rotate(a = [- 90, 0, 0]) frontPlate(); } @@ -105,7 +101,7 @@ difference() { translate(v=[0,-50,0]) cube(size=[100, 100, 30]); - translate(v=[180-1,0,0]) + translate(v=[160-1,0,0]) mirror(v=[1,0,0]) { rotate(a = [0, - 15, 0]) translate(v = [0, - 50, 0]) @@ -116,14 +112,14 @@ difference() { } // lug holes union() { - translate(v=[160,-3,-frontPlateThickness]) + translate(v=[150,-3,-frontPlateThickness]) cube(size=[5.2, 5.2, 3]); - translate(v=[160-91.1,-3,-frontPlateThickness]) + translate(v=[150-91.1,-3,-frontPlateThickness]) cube(size=[5.2, 5.2, 3]); } } for (i=[0:5]) { translate(v=[5,i*4 - 0.75,-10]) - cube(size=[170, 1.5, 20]); + cube(size=[150, 1.5, 20]); } } \ No newline at end of file diff --git a/resource/sbc/rpi/rpi2b.scad b/resource/sbc/rpi/rpi2b.scad index 421db07..da385e8 100644 --- a/resource/sbc/rpi/rpi2b.scad +++ b/resource/sbc/rpi/rpi2b.scad @@ -5,8 +5,8 @@ TODO this case has many many problems as it currently is. The following - no locking lid for case */ -include <../common.scad> - +include <../../../config/common.scad> +include <../../../helper/common.scad> // All coordinates are in [x,y], or [x,y,z] format pcbDimensions = [56.0, 85.1]; // [x,y] @@ -134,7 +134,7 @@ module cutoutProfile_N() { // front I/O mirror(v=[0,1,0]) translate(v=[1, -eps*100, pcbThickness-4]) - cube(size=[58.0 + 0.1, inf50, 19.0 + 0.1]); + cube(size=[58.0 + 0.1, inf50, 21 + 0.1]); // side I/O translate(v=[-48-3, (pcbDimensions[1]-54)-10, pcbThickness-4]) diff --git a/stl/micro/rack-mount/patchPanel_P.stl b/stl/micro/rack-mount/patchPanel_P.stl index 23b0d22..e6fda61 100644 Binary files a/stl/micro/rack-mount/patchPanel_P.stl and b/stl/micro/rack-mount/patchPanel_P.stl differ diff --git a/stl/micro/rack/eval_P.stl b/stl/micro/rack/eval_P.stl index 49cc74d..8e55e04 100644 Binary files a/stl/micro/rack/eval_P.stl and b/stl/micro/rack/eval_P.stl differ diff --git a/stl/micro/rack/hingeModule_P1.stl b/stl/micro/rack/hingeModule_P1.stl index ab12747..c8a855e 100644 Binary files a/stl/micro/rack/hingeModule_P1.stl and b/stl/micro/rack/hingeModule_P1.stl differ diff --git a/stl/micro/rack/magnetModule_P1.stl b/stl/micro/rack/magnetModule_P1.stl index 463b46b..6122015 100644 Binary files a/stl/micro/rack/magnetModule_P1.stl and b/stl/micro/rack/magnetModule_P1.stl differ diff --git a/stl/micro/rack/magnetModule_P2.stl b/stl/micro/rack/magnetModule_P2.stl index 16b581e..b266505 100644 Binary files a/stl/micro/rack/magnetModule_P2.stl and b/stl/micro/rack/magnetModule_P2.stl differ diff --git a/stl/micro/rack/mainRail_P.stl b/stl/micro/rack/mainRail_P.stl index 4bf40ae..7e6c3fd 100644 Binary files a/stl/micro/rack/mainRail_P.stl and b/stl/micro/rack/mainRail_P.stl differ diff --git a/stl/micro/rack/sideWallLeft_P.stl b/stl/micro/rack/sideWallLeft_P.stl index 6309b27..8923ce9 100644 Binary files a/stl/micro/rack/sideWallLeft_P.stl and b/stl/micro/rack/sideWallLeft_P.stl differ diff --git a/stl/micro/rack/sideWallRight_P.stl b/stl/micro/rack/sideWallRight_P.stl index 8711e59..e26a7dd 100644 Binary files a/stl/micro/rack/sideWallRight_P.stl and b/stl/micro/rack/sideWallRight_P.stl differ diff --git a/stl/micro/rack/stackConnectorBottom_P.stl b/stl/micro/rack/stackConnectorBottom_P.stl index c92c4c5..2a4ae16 100644 Binary files a/stl/micro/rack/stackConnectorBottom_P.stl and b/stl/micro/rack/stackConnectorBottom_P.stl differ diff --git a/stl/micro/rack/stackConnectorDual_P.stl b/stl/micro/rack/stackConnectorDual_P.stl index cbbc1b9..a5fc881 100644 Binary files a/stl/micro/rack/stackConnectorDual_P.stl and b/stl/micro/rack/stackConnectorDual_P.stl differ diff --git a/stl/micro/rack/xBar_P.stl b/stl/micro/rack/xBar_P.stl index 1dec6ac..3844623 100644 Binary files a/stl/micro/rack/xBar_P.stl and b/stl/micro/rack/xBar_P.stl differ diff --git a/stl/micro/rack/xyPlate_P.stl b/stl/micro/rack/xyPlate_P.stl index cefbbcf..004d527 100644 Binary files a/stl/micro/rack/xyPlate_P.stl and b/stl/micro/rack/xyPlate_P.stl differ diff --git a/stl/micro/rack/yBar_P.stl b/stl/micro/rack/yBar_P.stl index ab81f2f..bacb141 100644 Binary files a/stl/micro/rack/yBar_P.stl and b/stl/micro/rack/yBar_P.stl differ