diff --git a/openscad/stress_test_models.scad~ b/openscad/stress_test_models.scad~ deleted file mode 100644 index 8412031..0000000 --- a/openscad/stress_test_models.scad~ +++ /dev/null @@ -1,166 +0,0 @@ -#!/usr/bin/openscad -o /tmp/ignore.stl -// -// stress_test_models.scad -// 20260317 ChatGPT -// $Id$ -// $HeadURL$ -// -// Example command lines: -// -// openscad -D 'model="cube"' -o cube_20260317_1335.stl stress_test_models.scad -// openscad -D 'model="ybar"' -o ybar_20260317_1335.stl stress_test_models.scad -// openscad -D 'model="tower"' -o tower_20260317_1335.stl stress_test_models.scad -// openscad -D 'model="all"' -o all_20260317_1335.stl stress_test_models.scad -// -// Suggested slicer use: -// -// 1) Print each model as a SEPARATE run. -// 2) For ybar, orient the LONG dimension along the printer's Y axis -// so the bed moves the long way front-to-back. -// 3) Infill is set in Orca Slicer, not here. -// -// Suggested slicer settings: -// -// cube: 0.20 layer, 3 perimeters, 20-25% grid or gyroid -// ybar: 0.20 layer, 3 perimeters, 15-25% grid -// tower: 0.20 layer, 3 perimeters, 0-10% infill, no brim at first; -// add brim only if adhesion becomes the issue rather than motion -// - -/* [General] */ -model = "all"; // [cube,ybar,tower,all] -center_models = false; // true / false -add_labels = true; // true / false - -/* [Cube Dimensions] */ -cube_x = 40; -cube_y = 40; -cube_z = 40; - -/* [Y Bar Dimensions] */ -ybar_x = 20; -ybar_y = 150; -ybar_z = 50; - -/* [Tower Dimensions] */ -tower_x = 18; -tower_y = 18; -tower_z = 120; - -/* [Edge Treatment] */ -corner_radius = 1.2; // 0 for sharp corners -$fn = 48; - -/* [Labeling] */ -label_depth = 0.6; -label_size = 7; -label_font = "Liberation Sans:style=Bold"; - -/* [Layout For model="all"] */ -gap_between_models = 20; - - -// -------------------------------------------------- -// Main -// -------------------------------------------------- - -if (model == "cube") { - make_cube(); -} -else if (model == "ybar") { - make_ybar(); -} -else if (model == "tower") { - make_tower(); -} -else if (model == "all") { - make_all(); -} -else { - echo("ERROR: model must be one of: cube, ybar, tower, all"); -} - - -// -------------------------------------------------- -// Assemblies -// -------------------------------------------------- - -module make_all() { - x0 = 0; - x1 = x0 + cube_x + gap_between_models; - x2 = x1 + ybar_x + gap_between_models; - - translate([x0, 0, 0]) make_cube(); - translate([x1, 0, 0]) make_ybar(); - translate([x2, 0, 0]) make_tower(); -} - - -module make_cube() { - difference() { - rounded_box(cube_x, cube_y, cube_z, corner_radius, center_models); - if (add_labels) - place_top_label("CUBE", cube_x, cube_y, cube_z, center_models); - } -} - - -module make_ybar() { - difference() { - rounded_box(ybar_x, ybar_y, ybar_z, corner_radius, center_models); - if (add_labels) - place_top_label("YBAR", ybar_x, ybar_y, ybar_z, center_models); - } -} - - -module make_tower() { - difference() { - rounded_box(tower_x, tower_y, tower_z, corner_radius, center_models); - if (add_labels) - place_top_label("TOWER", tower_x, tower_y, tower_z, center_models); - } -} - - -// -------------------------------------------------- -// Geometry helpers -// -------------------------------------------------- - -module rounded_box(x, y, z, r=0, center_it=false) { - if (r <= 0) { - cube([x, y, z], center=center_it); - } else { - if (center_it) { - translate([-x/2, -y/2, -z/2]) - rounded_box_uncentered(x, y, z, r); - } else { - rounded_box_uncentered(x, y, z, r); - } - } -} - - -module rounded_box_uncentered(x, y, z, r) { - linear_extrude(height=z) - offset(r=r) - offset(delta=-r) - square([x, y], center=false); -} - - -module place_top_label(txt, x, y, z, center_it=false) { - tx = center_it ? 0 : x/2; - ty = center_it ? 0 : y/2; - tz = center_it ? z/2 : z; - - translate([tx, ty, tz - label_depth]) - linear_extrude(height=label_depth + 0.02) - text( - txt, - size=label_size, - font=label_font, - halign="center", - valign="center" - ); -}