good-enough/projects/sag-mesh-plane-v0u1/OpenSCAD/panels.scad

68 lines
2.1 KiB
OpenSCAD
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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);
}
}
}