// File: panels.scad // Library: PLA+ / CementALL Mesh Panels // Author: ChatGPT // Uses only cube() primitives for printed "lines". // // Panel envelope: 5" x 11" (127.0 x 279.4 mm) // Line width (bead): ~0.48 mm with 0.4 mm nozzle // Layer height: 0.28 mm // // Variants: // - Light: pitch 10 mm, 2×2 layers, T ≈ 1.12 mm // - Medium: pitch 7 mm, 3×3 layers, T ≈ 1.68 mm // - Heavy: pitch 5 mm, 4×4 layers, T ≈ 2.24 mm // // --------------- Global --------------------- nozzle_w = 0.4; // nozzle width bead_w = (2 * nozzle_w) +0.2; // line width + some extra(mm) layer_h = 0.2; // layer height (mm) X = 125.0; // panel width (X-span for Y-lines) (127.0 original) Y = 280.0; // panel length (Y-span for X-lines) (279.4 original) bead_gap = 5.0; // spacing between beads, center-2-center (mm) noVoid = 0.004; // ensures that objects mesh cutoff = 10.0; // extend on each end so a faulty start does not ruin the entire line. It will be trimmed in post process. nX = 26; // The number of lines in the Y nY = 57; DEBUG = 0; objectX = X+(bead_w*1); objectY = Y+(bead_w*1); layerX(zVAL=0); // the first layer, created (zVAL * 0.5) below the Z origin. layerY(zVAL=(layer_h*1)); // the second layer layerX(zVAL=(layer_h*2)); // the third layerY(zVAL=(layer_h*3)); // the third module layerX(zVAL) { if(DEBUG) { translate ([0, 0, 0]) #cube([objectX, Y+cutoff, layer_h], center=true); } translate([-((objectX*0.5)-(bead_w*0.5)), 0, 0]) subA(); module subA() { for (lx = [0 : nX-1]) { if(zVAL) { translate([lx*5, 0, zVAL]) cube([bead_w, Y, layer_h], center=true); } else { translate([lx*5, 0, 0]) cube([bead_w, Y+cutoff, 0.2], center=true); } } } } module layerY(zVAL) { translate([0, -((objectY*0.5)-(bead_w*0.5)), 0]) subA(); module subA() { for (ly = [0 : nY-1]) { translate([0, ly*5, zVAL]) cube([X, bead_w, layer_h], center=true); } } }