PRINTER_SLOP=0.20;// The printer specific amount of slop in mm to print with to make parts fit exactly. You may need to override this value for your printer.
// Section: Directional Vectors
// Vectors useful for `rotate()`, `mirror()`, and `align` arguments for `cuboid()`, `cyl()`, etc.
ORIENT_X_90=[90,-90,90];// Orient along the X axis, then rotate 90 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_Y_90=[90,-90,180];// Orient along the Y axis, then rotate 90 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_Z_90=[0,0,90];// Orient along the Z axis, then rotate 90 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_XNEG_90=[0,-90,0];// Orient reversed along the X axis, then rotate 90 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_YNEG_90=[90,-90,0];// Orient reversed along the Y axis, then rotate 90 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_ZNEG_90=[0,180,-90];// Orient reversed along the Z axis, then rotate 90 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_X_180=[-90,0,-90];// Orient along the X axis, then rotate 180 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_Y_180=[-90,0,0];// Orient along the Y axis, then rotate 180 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_Z_180=[0,0,180];// Orient along the Z axis, then rotate 180 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_XNEG_180=[-90,0,90];// Orient reversed along the X axis, then rotate 180 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_YNEG_180=[-90,0,180];// Orient reversed along the Y axis, then rotate 180 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_ZNEG_180=[0,180,180];// Orient reversed along the Z axis, then rotate 180 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_X_270=[90,90,90];// Orient along the X axis, then rotate 270 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_Y_270=[90,90,180];// Orient along the Y axis, then rotate 270 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_Z_270=[0,0,-90];// Orient along the Z axis, then rotate 270 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_XNEG_270=[90,90,-90];// Orient reversed along the X axis, then rotate 270 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_YNEG_270=[90,90,0];// Orient reversed along the Y axis, then rotate 270 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
ORIENT_ZNEG_270=[0,180,90];// Orient reversed along the Z axis, then rotate 270 degrees counter-clockwise on that axis, as seen when facing the origin from that axis orientation.
// Section: Individual Edges
// Constants for specifying edges for `cuboid()`, etc.
EDGE_TOP_BK=[[1,0,0,0],[0,0,0,0],[0,0,0,0]];// Top Back edge.
EDGE_TOP_FR=[[0,1,0,0],[0,0,0,0],[0,0,0,0]];// Top Front edge.
EDGE_BOT_FR=[[0,0,1,0],[0,0,0,0],[0,0,0,0]];// Bottom Front Edge.
EDGE_BOT_BK=[[0,0,0,1],[0,0,0,0],[0,0,0,0]];// Bottom Back Edge.
EDGE_TOP_RT=[[0,0,0,0],[1,0,0,0],[0,0,0,0]];// Top Right edge.
EDGE_TOP_LF=[[0,0,0,0],[0,1,0,0],[0,0,0,0]];// Top Left edge.
EDGE_BOT_LF=[[0,0,0,0],[0,0,1,0],[0,0,0,0]];// Bottom Left edge.
EDGE_BOT_RT=[[0,0,0,0],[0,0,0,1],[0,0,0,0]];// Bottom Right edge.
EDGE_BK_RT=[[0,0,0,0],[0,0,0,0],[1,0,0,0]];// Back Right edge.
EDGE_BK_LF=[[0,0,0,0],[0,0,0,0],[0,1,0,0]];// Back Left edge.
EDGE_FR_LF=[[0,0,0,0],[0,0,0,0],[0,0,1,0]];// Front Left edge.
EDGE_FR_RT=[[0,0,0,0],[0,0,0,0],[0,0,0,1]];// Front Right edge.
// Section: Sets of Edges
// Constants for specifying edges for `cuboid()`, etc.
EDGES_X_TOP=[[1,1,0,0],[0,0,0,0],[0,0,0,0]];// Both X-aligned Top edges.
EDGES_X_BOT=[[0,0,1,1],[0,0,0,0],[0,0,0,0]];// Both X-aligned Bottom edges.
EDGES_X_FR=[[0,1,1,0],[0,0,0,0],[0,0,0,0]];// Both X-aligned Front edges.
EDGES_X_BK=[[1,0,0,1],[0,0,0,0],[0,0,0,0]];// Both X-aligned Back edges.
EDGES_X_ALL=[[1,1,1,1],[0,0,0,0],[0,0,0,0]];// All four X-aligned edges.
EDGES_Y_TOP=[[0,0,0,0],[1,1,0,0],[0,0,0,0]];// Both Y-aligned Top edges.
EDGES_Y_BOT=[[0,0,0,0],[0,0,1,1],[0,0,0,0]];// Both Y-aligned Bottom edges.
EDGES_Y_LF=[[0,0,0,0],[0,1,1,0],[0,0,0,0]];// Both Y-aligned Left edges.
EDGES_Y_RT=[[0,0,0,0],[1,0,0,1],[0,0,0,0]];// Both Y-aligned Right edges.
EDGES_Y_ALL=[[0,0,0,0],[1,1,1,1],[0,0,0,0]];// All four Y-aligned edges.
EDGES_Z_BK=[[0,0,0,0],[0,0,0,0],[1,1,0,0]];// Both Z-aligned Back edges.
EDGES_Z_FR=[[0,0,0,0],[0,0,0,0],[0,0,1,1]];// Both Z-aligned Front edges.
EDGES_Z_LF=[[0,0,0,0],[0,0,0,0],[0,1,1,0]];// Both Z-aligned Left edges.
EDGES_Z_RT=[[0,0,0,0],[0,0,0,0],[1,0,0,1]];// Both Z-aligned Right edges.
EDGES_Z_ALL=[[0,0,0,0],[0,0,0,0],[1,1,1,1]];// All four Z-aligned edges.
EDGES_LEFT=[[0,0,0,0],[0,1,1,0],[0,1,1,0]];// All four Left edges.
EDGES_RIGHT=[[0,0,0,0],[1,0,0,1],[1,0,0,1]];// All four Right edges.
EDGES_FRONT=[[0,1,1,0],[0,0,0,0],[0,0,1,1]];// All four Front edges.
EDGES_BACK=[[1,0,0,1],[0,0,0,0],[1,1,0,0]];// All four Back edges.
EDGES_BOTTOM=[[0,0,1,1],[0,0,1,1],[0,0,0,0]];// All four Bottom edges.
EDGES_TOP=[[1,1,0,0],[1,1,0,0],[0,0,0,0]];// All four Top edges.
EDGES_NONE=[[0,0,0,0],[0,0,0,0],[0,0,0,0]];// No edges.
EDGES_ALL=[[1,1,1,1],[1,1,1,1],[1,1,1,1]];// All edges.
// Section: Edge Helpers
EDGE_OFFSETS=[// Array of XYZ offsets to the center of each edge.