diff --git a/rack2/assemble.scad b/rack2/assemble.scad new file mode 100644 index 0000000..a0b2997 --- /dev/null +++ b/rack2/assemble.scad @@ -0,0 +1,8 @@ +include <../math.scad> +include <./config.scad> +include <./mainRail.scad> +include <./connectingBar.scad> + + +*mainRail(); +connectingBar(); diff --git a/rack2/config.scad b/rack2/config.scad index f1e81c4..42d28e1 100644 --- a/rack2/config.scad +++ b/rack2/config.scad @@ -20,7 +20,7 @@ maxUnitDepth = 200; screwDiff = 10; // Number screw slots on the main rail. Affects build volume. -numRailScrews = 20; +numRailScrews = 3; // Screw type used for rackmount units. See screws.scad. mainRailScrewType = "m4"; diff --git a/rack2/connectingBar.scad b/rack2/connectingBar.scad index fcef11f..13651f1 100644 --- a/rack2/connectingBar.scad +++ b/rack2/connectingBar.scad @@ -1,12 +1,12 @@ include <../math.scad> include <./config.scad> include <./screws.scad> +include <./misc/magnet.scad> + include <./mainRail.scad> include <./helper/sphericalFilet.scad> include <./helper/cylindricalFilet.scad> -// TODO remove support requirements -// TODO add slack to top slots // TODO clean up // TODO: How do I nicely explain this? railSlotSpacing = 3; @@ -22,6 +22,7 @@ barRoundness = 5; echo("Bar total depth: ", barDepth); echo("Bar total width: ", barWidth); + module connectingBar() { module positive() { @@ -35,11 +36,25 @@ module connectingBar() { } module stackConn_N() { - translate(v=[0,0,0]) - cube(size = [10, 10, 5]); + taperH = 2; - translate(v=[5,5,5]) - cylinder(r=2, h=2); + translate(v=[0,0,0]) + cube(size = [10, 10, taperH]); + + + hull() { + translate(v = [0, 0, taperH]) + linear_extrude(height=eps) + square(size = [10, 10]); + + translate(v=[5,5,5]) + linear_extrude(height=eps) + circle(r=magnetRSlacked); + } + + // -1 is for male support + translate(v=[5,5,5 - 1]) + cylinder(r=magnetRSlacked, h=magnetHSlacked); } // TODO move this to custom file @@ -60,7 +75,8 @@ module connectingBar() { // TODO fix this up, no center=true translate(v=[-1, y1 + (y2 - y1)/2, 0]) - cube(size=[2,10,5], center=true); + rotate(a=[0,45,0]) + cube(size=[3,10,6], center=true); } // TODO move this in custom file, like for railFeetSlot_N @@ -114,5 +130,3 @@ module connectingBar() { } connectingBar(); } - -connectingBar(); diff --git a/rack2/connectingBar.stl b/rack2/connectingBar.stl index 07fd803..4cbdfcc 100644 Binary files a/rack2/connectingBar.stl and b/rack2/connectingBar.stl differ diff --git a/rack2/connectingBarShort.stl b/rack2/connectingBarShort.stl new file mode 100644 index 0000000..a1c65ce Binary files /dev/null and b/rack2/connectingBarShort.stl differ diff --git a/rack2/connectingRailShort.stl b/rack2/connectingRailShort.stl new file mode 100644 index 0000000..a1c65ce Binary files /dev/null and b/rack2/connectingRailShort.stl differ diff --git a/rack2/mainRail.scad b/rack2/mainRail.scad index 51b0190..5a57fc9 100644 --- a/rack2/mainRail.scad +++ b/rack2/mainRail.scad @@ -29,8 +29,6 @@ frontFaceWidth = railScrewHoleToInnerEdge + railScrewHoleToOuterEdge; railTotalWidth = frontFaceWidth; railTotalDepth = railFrontThickness+sideSupportDepth; -*mainRail(); - echo("Total Rail Height: ", railTotalHeight); module mainRail() { @@ -67,21 +65,11 @@ module mainRail() { module _sideSupportSegment() { difference() { cube(size = [sideSupportDepth, railSideMountThickness, railTotalHeight]); - - union() { - for (i = [1:numRailScrews]) { - translate(v = [frontScrewSpacing, railFrontThickness/2, i*screwDiff+railFootThickness]) - rotate(a = [90, 0, 0]) - cylinder(r = screwRadiusSlacked(mainRailSideMountScrewType), h = inf10, $fn = 32); - } - - translate(v = [4, 0, railFootThickness + 5]) - rotate(a=[90,0,0]) - cylinder(r = screwRadiusSlacked(rackFrameScrewType), h = inf10, $fn = 32, center = true); - - translate(v = [4, 0, railTotalHeight- (railFootThickness + 5)]) - rotate(a=[90,0,0]) - cylinder(r = screwRadiusSlacked(rackFrameScrewType), h = inf10, $fn = 32, center = true); + + for (i = [1:numRailScrews]) { + translate(v = [frontScrewSpacing, railFrontThickness/2, i*screwDiff+railFootThickness]) + rotate(a = [90, 0, 0]) + cylinder(r = screwRadiusSlacked(mainRailSideMountScrewType), h = inf10, $fn = 32); } } } @@ -98,10 +86,12 @@ module mainRail() { module railFeetSlot_N() { + slotSlack = 0.2; union() { - cube(size = [railTotalWidth, railTotalDepth, railFootThickness]); + translate(v=[-slotSlack/2, -slotSlack/2,0]) + cube(size = [railTotalWidth + slotSlack, railTotalDepth + slotSlack, railFootThickness]); - translate(v = [railSideMountThickness + 5, railFrontThickness + 4, -m3HeatSetInsertSlotHeightSlacked]) + translate(v = [railSideMountThickness + 5, railFrontThickness + 4 , -m3HeatSetInsertSlotHeightSlacked]) heatSetInsertSlot_N(rackFrameScrewType); } } diff --git a/rack2/mainRail.stl b/rack2/mainRail.stl index 8c4ba43..75de839 100644 Binary files a/rack2/mainRail.stl and b/rack2/mainRail.stl differ diff --git a/rack2/mainRailS.stl b/rack2/mainRailS.stl new file mode 100644 index 0000000..6de58f5 Binary files /dev/null and b/rack2/mainRailS.stl differ diff --git a/rack2/mainRailShort.stl b/rack2/mainRailShort.stl new file mode 100644 index 0000000..6de58f5 Binary files /dev/null and b/rack2/mainRailShort.stl differ diff --git a/rack2/misc/magnet.scad b/rack2/misc/magnet.scad new file mode 100644 index 0000000..34cd5c3 --- /dev/null +++ b/rack2/misc/magnet.scad @@ -0,0 +1,11 @@ + + +// Dimensions for small cylindrical neodymium magnets that I bought off Amazon +magnetR = 3; +magnetH = 1.7; + +magnetRSlack = 0.1; +magnetHSlack = 0.05; + +magnetRSlacked = magnetR + magnetRSlack; +magnetHSlacked = magnetH + magnetHSlack; \ No newline at end of file diff --git a/rack2/screws.scad b/rack2/screws.scad index 4e54d5b..67ab710 100644 --- a/rack2/screws.scad +++ b/rack2/screws.scad @@ -5,7 +5,7 @@ include <../common.scad> /********************************************************************************/ // M3 dimensions -m3HoleRadiusSlack = 0.3; +m3HoleRadiusSlack = 0.4; // higher slack for not-so straight heat set inserts m3Diameter = 3.0; m3Radius = m3Diameter / 2.0; m3RadiusSlacked = m3Radius + m3HoleRadiusSlack;