From eb92f13f67576b5eb446e69a7168619b2d58f31a Mon Sep 17 00:00:00 2001 From: David Date: Thu, 19 Dec 2024 17:59:28 -0800 Subject: [PATCH 1/3] Add parameterized cube module --- parameterized_cube.scad | 58 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 parameterized_cube.scad diff --git a/parameterized_cube.scad b/parameterized_cube.scad new file mode 100644 index 0000000..ddb9fcd --- /dev/null +++ b/parameterized_cube.scad @@ -0,0 +1,58 @@ +// Parameterized cube module with optional rounded edges and hollow interior +module param_cube( + size = [50, 50, 50], // [x, y, z] dimensions + center = true, // center the cube + wall_thickness = 2, // wall thickness for hollow cube (0 for solid) + corner_radius = 0, // radius for rounded corners (0 for sharp corners) + $fn = 32 // resolution for rounded corners +) { + // Validate inputs + assert(len(size) == 3, "Size must be a vector of [x, y, z] dimensions"); + assert(wall_thickness >= 0, "Wall thickness must be non-negative"); + assert(corner_radius >= 0, "Corner radius must be non-negative"); + + // Create solid or hollow cube + difference() { + // Outer cube + if (corner_radius > 0) { + // Rounded cube using minkowski + minkowski() { + cube([ + size[0] - 2 * corner_radius, + size[1] - 2 * corner_radius, + size[2] - 2 * corner_radius + ], center = center); + sphere(r = corner_radius); + } + } else { + // Regular cube + cube(size, center = center); + } + + // Interior hollow (if wall_thickness > 0) + if (wall_thickness > 0) { + translate([0, 0, 0]) + cube([ + size[0] - 2 * wall_thickness, + size[1] - 2 * wall_thickness, + size[2] - 2 * wall_thickness + ], center = center); + } + } +} + +// Example usage: +// Basic cube +param_cube([30, 30, 30]); + +// Hollow cube with 2mm walls +// translate([40, 0, 0]) +// param_cube([30, 30, 30], wall_thickness = 2); + +// Rounded cube +// translate([80, 0, 0]) +// param_cube([30, 30, 30], corner_radius = 5); + +// Hollow rounded cube +// translate([120, 0, 0]) +// param_cube([30, 30, 30], wall_thickness = 2, corner_radius = 5); From 52aeabfee59ab4e684290ae4b07dc6492c22dc22 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 19 Dec 2024 17:59:40 -0800 Subject: [PATCH 2/3] Add parameterized cube module From 43d08c8e58eb8dd3d1a7c62dcb119cccafd96147 Mon Sep 17 00:00:00 2001 From: David Date: Thu, 19 Dec 2024 18:01:29 -0800 Subject: [PATCH 3/3] Add parameterized cube module --- parameterized_cube.scad | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/parameterized_cube.scad b/parameterized_cube.scad index ddb9fcd..84b5f5e 100644 --- a/parameterized_cube.scad +++ b/parameterized_cube.scad @@ -44,15 +44,3 @@ module param_cube( // Example usage: // Basic cube param_cube([30, 30, 30]); - -// Hollow cube with 2mm walls -// translate([40, 0, 0]) -// param_cube([30, 30, 30], wall_thickness = 2); - -// Rounded cube -// translate([80, 0, 0]) -// param_cube([30, 30, 30], corner_radius = 5); - -// Hollow rounded cube -// translate([120, 0, 0]) -// param_cube([30, 30, 30], wall_thickness = 2, corner_radius = 5);