saw cut list gen
This commit is contained in:
parent
76c3a3cdff
commit
e8e42e27b6
@ -19,7 +19,7 @@ Nb_Boxes_V = 2; // [1:10]
|
||||
// View control
|
||||
Folded_View = false; // [true, false]
|
||||
// Use "export" to render all parts separately for STEP conversion
|
||||
view_mode = "preview"; // ["preview", "export", "dxf"]
|
||||
view_mode = "preview"; // ["preview", "export", "dxf", "cutplan"]
|
||||
|
||||
// Note: InnerBox_Width from the screenshot (100) is not used directly.
|
||||
// Instead, the compartment widths are calculated based on TotalWidth, Height, and Nb_Boxes_U/V.
|
||||
@ -271,6 +271,64 @@ module internal_divider_horizontal_export(length, compartment_u_size) {
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Module to generate a markdown cut plan for the operator.
|
||||
// This version avoids all list manipulation for maximum compatibility.
|
||||
// ---------------------------------------------------------------------
|
||||
module generate_cut_plan_text() {
|
||||
// --- Calculations ---
|
||||
InnerWidth = TotalWidth - 2 * Height;
|
||||
InnerLength = TotalLength - 2 * Height;
|
||||
GrooveDepth = TotalThickness - BaseThickness;
|
||||
|
||||
// --- Markdown Output ---
|
||||
echo("# Saw Operator Cut Plan");
|
||||
echo(str("## Board Dimensions: `", TotalWidth, " x ", TotalLength, " mm`"));
|
||||
echo("");
|
||||
echo("## Specifications");
|
||||
echo(str("* **V-Groove Spec:** Depth `", GrooveDepth, " mm`"));
|
||||
echo(str("* **Slot Spec:** Width `", Slot_Width_Walls, " mm`, Depth `", GrooveDepth, " mm`"));
|
||||
echo("");
|
||||
echo("## Blade Setup");
|
||||
echo("* **For V-Grooves:** Set saw blade angle to **45 degrees**.");
|
||||
echo("* **For Slots:** Set saw blade angle to **0 degrees** (straight up).");
|
||||
echo("");
|
||||
|
||||
// --- Setup 1: Vertical Cuts ---
|
||||
echo("## SETUP 1: VERTICAL CUTS");
|
||||
echo("All distances are from the LEFT edge. Flip board for cuts > 50%.");
|
||||
echo("");
|
||||
echo(str("* `", Height, " mm` -- **V-GROOVE**"));
|
||||
if (Nb_Boxes_U > 1) {
|
||||
for (i = [1 : Nb_Boxes_U - 1]) {
|
||||
pos = Height + i * ((InnerWidth - (Nb_Boxes_U - 1) * Slot_Width_Walls) / Nb_Boxes_U) + i * Slot_Width_Walls;
|
||||
echo(str("* `", pos, " mm` -- **SLOT**"));
|
||||
}
|
||||
}
|
||||
echo(str("* `", TotalWidth - Height, " mm` -- **V-GROOVE**"));
|
||||
echo("");
|
||||
|
||||
// --- Setup 2: Horizontal Cuts ---
|
||||
echo("## SETUP 2: HORIZONTAL CUTS");
|
||||
echo("Rotate board 90 deg. All distances from the NEW LEFT edge.");
|
||||
echo("");
|
||||
echo(str("* `", Height, " mm` -- **V-GROOVE**"));
|
||||
if (Nb_Boxes_V > 1) {
|
||||
for (i = [1 : Nb_Boxes_V - 1]) {
|
||||
pos = Height + i * ((InnerLength - (Nb_Boxes_V - 1) * Slot_Width_Walls) / Nb_Boxes_V) + i * Slot_Width_Walls;
|
||||
echo(str("* `", pos, " mm` -- **SLOT**"));
|
||||
}
|
||||
}
|
||||
echo(str("* `", TotalLength - Height, " mm` -- **V-GROOVE**"));
|
||||
|
||||
echo("");
|
||||
echo("---");
|
||||
echo("*End of Plan*");
|
||||
|
||||
// Generate a tiny invisible cube because OpenSCAD needs to produce some geometry.
|
||||
cube(0.01);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Render the final object
|
||||
// ---------------------------------------------------------------------
|
||||
@ -279,6 +337,8 @@ if (view_mode == "export") {
|
||||
} else if (view_mode == "dxf") {
|
||||
// Project the 2D unfolded pattern for DXF export
|
||||
projection(cut = true) unfolded_pattern();
|
||||
} else if (view_mode == "cutplan") {
|
||||
generate_cut_plan_text();
|
||||
} else {
|
||||
if (Folded_View) {
|
||||
folded_box();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user