From 93a0ec3a2cc8af7756a27dd1983bcaeb5ecdb261 Mon Sep 17 00:00:00 2001 From: zhao Date: Thu, 5 Jan 2023 18:09:59 -0500 Subject: [PATCH] stuff --- rack2/connectingBar.scad | 46 ++++++++++++++++++++++----------------- rack2/connectingBar.stl | Bin 122884 -> 123684 bytes 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/rack2/connectingBar.scad b/rack2/connectingBar.scad index 449d963..f9b289d 100644 --- a/rack2/connectingBar.scad +++ b/rack2/connectingBar.scad @@ -5,7 +5,8 @@ include <./mainRail.scad> include <./helper/sphericalFilet.scad> include <./helper/cylindricalFilet.scad> -railSlotSpacing = 4; +// TODO: How do I nicely explain this? +railSlotSpacing = 2; sideSpacing = 12; barDepth = maxUnitDepth + 2*railSlotSpacing; @@ -20,7 +21,7 @@ echo("Bar total width: ", barWidth); module connectingBar() { - module _positive() { + module positive() { minkowski() { difference() { sphericalFiletEdge(barWidth, barDepth, barHeight, barRoundness); @@ -31,8 +32,7 @@ module connectingBar() { } } - - module _stackConn() { + module stackConn_N() { translate(v=[0,0,0]) cube(size = [10, 10, 5]); @@ -40,43 +40,49 @@ module connectingBar() { cylinder(r=2, h=2); } - module _sideConnector() { - //translate(v=[1.5, railTotalDepth - 4, -m3HeatSetInsertSlotHeightSlacked]) + // negatives on the y-z plane to be imprinted on the side of the main + module sideConnector_N() { + + translate(v=[ - m3HeatSetInsertSlotHeightSlacked, 7, 7.5]) rotate(a=[0,90,0]) heatSetInsertSlot_N(rackFrameScrewType); + + translate(v=[ - m3HeatSetInsertSlotHeightSlacked, 35, 7.5]) + rotate(a=[0,90,0]) + heatSetInsertSlot_N(rackFrameScrewType); + + translate(v=[-1, 7 + 28/2, 7.5]) + cube(size=[2,10,5], center=true); } - module _test() { + module railConnector_N() { + + } + + module test() { difference() { - _positive(); + positive(); union() { translate(v=[10,10,0]) - _stackConn(); + stackConn_N(); translate(v=[barWidth - (railTotalWidth + railSlotSpacing), railSlotSpacing, barHeight - railFootThickness]) railFeetSlot_N(); - translate(v=[barWidth - m3HeatSetInsertSlotHeightSlacked + eps, 6, 7.5]) - _sideConnector(); - - translate(v=[barWidth - m3HeatSetInsertSlotHeightSlacked + eps, 35, 7.5]) - _sideConnector(); + translate(v=[barWidth + eps, 0,0]) + sideConnector_N(); } } } - _test(); - - translate(v=[barWidth - m3HeatSetInsertSlotHeightSlacked + eps, 6, 7.5]) - _sideConnector(); - + test(); } connectingBar(); -intersection() { +*intersection() { connectingBar(); cube(size=[15,100,100]); diff --git a/rack2/connectingBar.stl b/rack2/connectingBar.stl index c1db6c1e0b3c4fd00e6f863ce41a9d66442f1a20..b5e2acfd1d7d397d48955d1fb828bbf975511920 100644 GIT binary patch delta 15367 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 P=|8OD2QHttCiMJ&9Okf5