diff --git a/helper/math.scad b/helper/math.scad index 57feaee..6413a20 100644 --- a/helper/math.scad +++ b/helper/math.scad @@ -13,9 +13,8 @@ function mirror4XY(midpoint, offsetX, offsetY) = module align(a,b) { - - echo("a", a); - echo("b", b); + //echo("a", a); + //echo("b", b); rot_axis = cross(a,b); if (rot_axis == [0,0,0]) { @@ -25,7 +24,7 @@ module align(a,b) { //echo("rot_axis", rot_axis); angle = acos(a*b/(norm(a)*norm(b))); - echo("angle", angle) + //echo("angle", angle) rotate(v=rot_axis, a=angle) children(0); diff --git a/rack/sideWallConnector.scad b/rack/sideWallConnector.scad index 788d650..6e2ef09 100644 --- a/rack/sideWallConnector.scad +++ b/rack/sideWallConnector.scad @@ -1,15 +1,23 @@ include <./config.scad> include <../helper/screws.scad> +include <../helper/halfspace.scad> +include <../misc/magnet.scad> sideWallConnectorSlotWidth = 7; sideWallConnW = 7; sideWallConnD = 20; -sideWallConnLugDepression = 2; +sideWallConnH = 2; +sideWallConnLugDepression = sideWallConnH; yBarScrewHoleToOuterYEdge = 3.5; yBarScrewHoleToFrontXEdge = 16; +magnetFaceToSideWallConnOuterYEdge = 2; +magnetCenterToSideWallConnOuterXYFace = magnetRSlacked + 1; + +magnetMountExtraRadius = magnetRSlacked + 1; + module sideWallConnector_N() { translate(v = [0, 0, -sideWallConnLugDepression]) cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]); @@ -19,27 +27,54 @@ module sideWallConnector_N() { } module sideWallConnectorMagnet() { - difference() { - cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]); - translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression]) - counterSunkHead_N(rackFrameScrewType, headExtension=eps,screwExtension=inf10); - } + applyYBarScrewMount() + applyMagnetMount() + base(); - translate(v = [0, 5, 6]) - rotate(a = [0, 90, 0]) - difference() { + module base() { + intersection() { + cube(size = [sideWallConnW, sideWallConnD, sideWallConnLugDepression]); - 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); + // TODO: pattern for this? beef up mirror4XY? + cVal = 0.5; + halfspace(p=[0,cVal,0], vpos=[0,1,1]); + halfspace(p=[cVal,0,0], vpos=[1,0,1]); + halfspace(p=[sideWallConnW-cVal,0,0], vpos=[-1,0,1]); + halfspace(p=[0,sideWallConnD-cVal,0], vpos=[0,-1,1]); } - translate(v=[0,0,1]) - cylinder(r = magnetRSlacked, h = magnetHSlacked); } - //cylinder(r = magnetRSlacked, h = magnetHSlacked); + module applyYBarScrewMount() { + apply_n() { + translate(v = [yBarScrewHoleToOuterYEdge, yBarScrewHoleToFrontXEdge, sideWallConnLugDepression]) + counterSunkHead_N(rackFrameScrewType, headExtension = eps, screwExtension = inf10); + + children(0); + } + } + + // TODO: clean up + module applyMagnetMount() { + apply_p() { + difference() { + hull() { + translate(v = [0, 4, magnetMountExtraRadius+sideWallConnH]) + rotate(a = [0, 90, 0]) + cylinder(r = magnetMountExtraRadius, h = sideWallConnW-magnetFaceToSideWallConnOuterYEdge); + + translate(v = [0, 0, sideWallConnH]) + cube(size = [sideWallConnW-magnetFaceToSideWallConnOuterYEdge, 2*magnetMountExtraRadius, eps]); + } + + translate(v = [sideWallConnW-(magnetFaceToSideWallConnOuterYEdge+magnetHSlacked), 4, 6]) + rotate(a = [0, 90, 0]) + cylinder(r = magnetRSlacked, h = magnetHSlacked); + } + + children(0); + } + } } module sideWallConnectorHinge() {