/* 79-character width 012345678.012345678.012345678.012345678.012345678.012345678.012345678.012345678 */ /////////////////////////////////////////////////////////////////////////////// // LibFile: gridstack.scad // FileGroup: CSGPATTERS // FileSummary: Grid formed by stacked lines // // DETAILS: // Weaker than fully meshed grids, but also faster to print and lighter // Todo: NONE /////////////////////////////////////////////////////////////////////////////// include include lw = 2*nW; // line width lh = LH; // layer height // these MUST be the cavity size gridX=4.8; gridY=9.6; // these ARE the number of cavities xCount=3; yCount=4; // these MUST be the calculated dimensions //xw = ((2*gridX)*xCount)+((2*lw)*xCount); // X width //yw = ((2*gridY)*yCount)+((2*lw)*yCount)+lw; // Y width xw = ((gridX)*xCount)+((lw)*xCount)+lw; // X width yw = ((gridY)*yCount)+((lw)*yCount)+lw; // Y width yj = (2*gridY)+(0.5*lw); // jump by this amount hc = 3; //height count = height of stack *base_shape(nozzleStart = 10); module base_shape(nozzleStart) { cuboid([xw, yw, lh]); translate([(0.5*xw)+(0.5*nozzleStart)-VOID, -((0.5*yw)-(0.5*lw)), 0]) cuboid([nozzleStart, lw, lh]); } *layerOne(); module layerOne() { jumpY = ((0.5*yw)-(0.5*gridY))-lw; difference() { color("Gray") base_shape(nozzleStart = 10); union() { for (i = [0:(yCount-1)]) { translate([lw, -(jumpY-(i*((2*lw)+(2*gridY)))), 0]) color("Gainsboro") cuboid([xw, gridY, lh+VOID]); } for (i = [0:(yCount-1)]) { translate([-lw, -((jumpY-(lw+gridY))-(i*((2*lw)+(2*gridY)))), 0]) color("White") cuboid([xw, gridY, lh+VOID]); } }} } buildGrid(); module buildGrid() { layerOne(); for (c = [0:(hc-1)]) { translate([(0.5*xw)-(0.5*lw), 0, (c*((2*lh)-VOID))]) union() { for (i = [0:(xCount)]) { translate([-(i*(gridX+lw)), 0, lh]) color("Blue") cuboid([lw, yw, lh]); }} translate([0, (0.5*yw)-(0.5*lw), (lh)+(c*((2*lh)-VOID))]) union() { for (i = [0:(yCount)]) { translate([0, -(i*(gridY+lw)), lh]) color("Red") cuboid([xw, lw, lh]); }}} }