From 1450e1b0c82458f88e6b6e9efe0a8ff7da6f31db Mon Sep 17 00:00:00 2001 From: TheRON Date: Fri, 19 Sep 2025 10:57:11 -0400 Subject: [PATCH] Initial create --- .../sag-mesh-plane-v0u1/OpenSCAD/panels.scad | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 projects/sag-mesh-plane-v0u1/OpenSCAD/panels.scad diff --git a/projects/sag-mesh-plane-v0u1/OpenSCAD/panels.scad b/projects/sag-mesh-plane-v0u1/OpenSCAD/panels.scad new file mode 100644 index 0000000..eaee5fc --- /dev/null +++ b/projects/sag-mesh-plane-v0u1/OpenSCAD/panels.scad @@ -0,0 +1,68 @@ +// 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); + } + } + +} \ No newline at end of file