diff --git a/helper/halfspace.scad b/helper/halfspace.scad index 31d1ba2..8b5a57d 100644 --- a/helper/halfspace.scad +++ b/helper/halfspace.scad @@ -4,8 +4,17 @@ include <./math.scad> include <./common.scad> module halfspace(vpos, p) { - translate(p) - align(a=[0,0,-1], b=vpos) - translate(v=[0,0,-inf/2]) + // TODO: clean up + ref = [0,0,-1]; + + if (cross(ref, vpos) == [0,0,0]) { + translate(p) + translate(v=[0,0, (ref*vpos) * -inf/2]) cube(size=[inf, inf, inf], center=true); + } else { + translate(p) + align(a=ref, b = vpos) + translate(v = [0, 0, -inf/2]) + cube(size = [inf, inf, inf], center = true); + } } \ No newline at end of file diff --git a/helper/math.scad b/helper/math.scad index 2b9c8b3..57feaee 100644 --- a/helper/math.scad +++ b/helper/math.scad @@ -18,11 +18,11 @@ module align(a,b) { echo("b", b); rot_axis = cross(a,b); - if (rot_axis == 0) { + if (rot_axis == [0,0,0]) { error("Can't align - provided vectors are parallel"); } - echo("rot_axis", rot_axis); + //echo("rot_axis", rot_axis); angle = acos(a*b/(norm(a)*norm(b))); echo("angle", angle) diff --git a/helper/screws.scad b/helper/screws.scad index c91b015..5165374 100644 --- a/helper/screws.scad +++ b/helper/screws.scad @@ -64,14 +64,16 @@ function screwRadiusSlacked(screwType) = module counterSunkHead_N(screwType, screwExtension=0, headExtension=0) { if (screwType == "m3") { - cylinder(r1=m3RadiusSlacked, r2=m3CounterSunkHeadRadius, h=m3CounterSunkHeadLength); + translate(v=[0,0,-m3CounterSunkHeadLength]) + union() { + cylinder(r1 = m3RadiusSlacked, r2 = m3CounterSunkHeadRadius, h = m3CounterSunkHeadLength); - translate(v=[0,0,-screwExtension]) - cylinder(r=m3RadiusSlacked, h=screwExtension); - - translate(v=[0,0,m3CounterSunkHeadLength]) - cylinder(r=m3CounterSunkHeadRadius, h=headExtension); + translate(v = [0, 0, -screwExtension]) + cylinder(r = m3RadiusSlacked, h = screwExtension); + translate(v = [0, 0, m3CounterSunkHeadLength]) + cylinder(r = m3CounterSunkHeadRadius, h = headExtension); + } } else { error("Unsupported screw type"); } diff --git a/rack/derivedConfig.scad b/rack/derivedConfig.scad deleted file mode 100644 index e01a531..0000000 --- a/rack/derivedConfig.scad +++ /dev/null @@ -1,6 +0,0 @@ -// Config file for derived variables. These variables are calculated from profile variables and are used by -// multiple components. - -// TODO -include <./config.scad> - diff --git a/rack/mainRail.scad b/rack/mainRail.scad index caed1c2..99fb96d 100644 --- a/rack/mainRail.scad +++ b/rack/mainRail.scad @@ -14,7 +14,7 @@ railSideMountThickness = 2.5; // Distance between the middle of a screw mount and the rail's vertical edges railScrewHoleToInnerEdge = 5; -railScrewHoleToOuterEdge = 9; +railScrewHoleToOuterEdge = 7; // Distance between the midpoint of the rail screw holes. rackMountScrewWidth = maxUnitWidth + 2 * railScrewHoleToInnerEdge; diff --git a/rack/sideWall.scad b/rack/sideWall.scad new file mode 100644 index 0000000..1ccb777 --- /dev/null +++ b/rack/sideWall.scad @@ -0,0 +1,56 @@ +include <../helper/math.scad> +include <../helper/halfspace.scad> +include <../misc/magnet.scad> +include <./config.scad> +include <./yBar.scad> +include <./sideWallConnector.scad> + + +sideWallZ = 110; +sideWallY = 110; +sideWallX = 12; +sideWallThickness = 2.5; + +module sideWall() { + + sideWallBase(); + + + module sideWallBase() { + + module roundThingHelper(x,y,z,r) { + translate(v=[r, r, 0]) + minkowski() { + cube(size = [x-r, y - 2*r, z]); + sphere(r = r); + } + } + + intersection() { + difference() { + roundThingHelper(sideWallX,sideWallY,sideWallZ, baseRoundness); + + translate(v=[sideWallThickness, sideWallThickness,0]) + roundThingHelper(sideWallX,sideWallY - 2*sideWallThickness,sideWallZ, baseRoundness); + } + halfspace(vpos=[-1,0,0], p=[sideWallX,0,0]); + halfspace(vpos=[0,0,-1], p=[0,0,sideWallZ]); + halfspace(vpos=[0,0,1], p=[0,0,0]); + } + } + + + module applyHingeConnector() { + + } + + module applyMagnetConnector() { + + } + + module applyEpicVentilation() { + + } +} + +*sideWall(); \ No newline at end of file diff --git a/rack/sideWallConnector.scad b/rack/sideWallConnector.scad index 55c7f77..788d650 100644 --- a/rack/sideWallConnector.scad +++ b/rack/sideWallConnector.scad @@ -2,19 +2,57 @@ include <./config.scad> include <../helper/screws.scad> sideWallConnectorSlotWidth = 7; + +sideWallConnW = 7; +sideWallConnD = 20; +sideWallConnLugDepression = 2; + +yBarScrewHoleToOuterYEdge = 3.5; +yBarScrewHoleToFrontXEdge = 16; + module sideWallConnector_N() { + translate(v = [0, 0, -sideWallConnLugDepression]) + cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]); - lugW = 7; - lugD = 20; - lugH = 2; + translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, -(m3HeatSetInsertSlotHeightSlacked+sideWallConnLugDepression)]) + heatSetInsertSlot_N(rackFrameScrewType); +} - insertDw = lugW/2; +module sideWallConnectorMagnet() { + difference() { + cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]); - insertDd = lugD-4; + translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression]) + counterSunkHead_N(rackFrameScrewType, headExtension=eps,screwExtension=inf10); + } - translate(v = [0, 0, -lugH]) - cube(size = [lugW, lugD, lugH]); + translate(v = [0, 5, 6]) + rotate(a = [0, 90, 0]) + difference() { - translate(v = [insertDw, insertDd, -(m3HeatSetInsertSlotHeightSlacked+lugH)]) - heatSetInsertSlot_N(rackFrameScrewType); -} \ No newline at end of file + hull() { + cylinder(r = magnetRSlacked + 1, h = magnetHSlacked+1); + translate(v=[5,0,(magnetHSlacked+1)/2]) + cube(size=[eps, 2*(magnetRSlacked+1),magnetHSlacked+1], center=true); + } + translate(v=[0,0,1]) + cylinder(r = magnetRSlacked, h = magnetHSlacked); + } + + //cylinder(r = magnetRSlacked, h = magnetHSlacked); +} + +module sideWallConnectorHinge() { + +} + +module sideWallConnectorHinge_N() { + +} + + +*sideWallConnector_N(); + +sideWallConnectorMagnet(); + +//counterSunkHead_N(rackFrameScrewType,screwExtension=10); diff --git a/rack/yBar.scad b/rack/yBar.scad index 8222258..1a7e56b 100644 --- a/rack/yBar.scad +++ b/rack/yBar.scad @@ -15,7 +15,7 @@ include <./yBarBasePlateConnector.scad> railSlotToInnerYEdge = 2; railSlotToXZ = 3; -railSlotToSideWallSlot = 0; +railSlotToSideWallSlot = 2; sideWallSlotToOuterYEdge = 3; sideWallSlotToXZ = 3;