Files
OpenSCAD/BOSL2/V08APR26/SKU2689999/sgc/gridstack.scad
TheRON dfdcde918d version 1 ready
Layer one is a continuous line, but the rest of the layers are single line segments. The next version should have continuous lines for all layers.
2026-04-27 12:47:11 -04:00

79 lines
2.2 KiB
OpenSCAD

/* 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 <BOSL2/std.scad>
include <sgc_params.scad>
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]);
}}}
}