include <../../helper/screws.scad> include <../../helper/common.scad> include <../../helper/matrix.scad> include <../../helper/slack.scad> include <../../helper/dovetail.scad> include <../../helper/halfspace.scad> include <../sharedVariables.scad> include <../config.scad> // On xBar module onXBarToYBarNegative() { y = 27; z = 8; slack = xBarYBarDovetailSlack; translate(v=[-slack,14,0]) mirror(v=[1,0,0]) rotate(a=[0,0,-90]) dovetail( topWidth = 15+slack, bottomWidth = 12+slack, height = 2+slack, length = yBarHeight, headExtension = 1, baseExtension = 2, frontFaceLength = 0.5, frontFaceScale = 1.05, backFaceLength = 5, backFaceScale = 1.2 ); // TODO clean this up translate(v = [-xBarSideThickness, y, z]) rotate(a = [0, -90, 0]) counterSunkHead_N(rackFrameScrewType, screwExtension=inf10, headExtension=inf10); // lugs for snap fit and hold in place translate(v=[-0.1,3,13.5]) lug(); translate(v=[-0.1,26,13.5]) lug(); } module onXBarToYBarPositive() { // lugs for snap fit and hold in place translate(v=[-0.1,3,2]) lug(); translate(v=[-0.1,26,2]) lug(); } // On yBar module onYBarToXBarNegative() { y = 27; z = 8; translate(v = [-5, y, z]) rotate(a = [180, 0, 0]) rotate(a = [0, 90, 0]) hexNutPocket_N("m3", openSide=false, backSpace=5); // lugs for snap fit and hold in place translate(v=[-0.1,3,2]) lug(); translate(v=[-0.1,26,2]) lug(); } module onYBarToXBarPositive() { translate(v=[xBarYBarDovetailSlack, 14,0]) // TODO: variable for the 14 rotate(a=[0,0,-90]) dovetail( topWidth = 15-xySlack, // figure out why we need this bottomWidth = 12, height = 2, length = yBarHeight, headExtension = 1, baseExtension = 2, frontFaceLength = 2, frontFaceScale = 0.95, backFaceLength = 5, backFaceScale = 1.2 ); // lugs for snap fit and hold in place translate(v=[-0.1,3,13.5]) lug(); translate(v=[-0.1,26,13.5]) lug(); } xBarConnectorToYBarConnectorTrans = mirror(v=[1,0,0]); yBarConnectorToXBarConnectorTrans = mirror(v=[-1,0,0]); module lug() { hull() { sphere(r=0.5); translate(v=[0,2,0]) sphere(r=0.5); } }