From 54f0f4f93590c3178b41809e35a7e923e04b7cc2 Mon Sep 17 00:00:00 2001 From: Arthur Moore Date: Thu, 2 May 2024 00:46:41 -0400 Subject: [PATCH] Simplify rounded_square and make defaults match `square` The default for square is center=false. --- generic-helpers.scad | 22 ++++++++++++++++------ gridfinity-spiral-vase.scad | 12 ++++++------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/generic-helpers.scad b/generic-helpers.scad index 0a1f0ec..cd3302c 100644 --- a/generic-helpers.scad +++ b/generic-helpers.scad @@ -15,7 +15,7 @@ function is_even(number) = (number%2)==0; * @details "size" accepts both the standard number or a 2d vector the same as `square`. * However, if passed a 3d vector, this will apply a `linear_extrude` to the resulting shape. */ -module rounded_square(size, radius, center = true) { +module rounded_square(size, radius, center = false) { assert(is_num(size) || (is_list(size) && ( (len(size) == 2 && is_num(size.x) && is_num(size.y)) || @@ -36,13 +36,23 @@ module rounded_square(size, radius, center = true) { if (is_list(size) && len(size) == 3) { linear_extrude(size.z) + _internal_rounded_square_2d(size, radius, center); + } else { + _internal_rounded_square_2d(size, radius, center); + } +} + +/** + * @brief Internal module. Do not use. May be changed/removed at any time. + */ +module _internal_rounded_square_2d(size, radius, center) { + diameter = 2*radius; + if (is_list(size)) { offset(radius) - offset(-radius) - square([size.x, size.y], center = center); + square([size.x-diameter, size.y-diameter], center = center); } else { offset(radius) - offset(-radius) - square(size, center = center); + square(size-diameter, center = center); } } @@ -50,7 +60,7 @@ module rounded_square(size, radius, center = true) { * @deprecated Use rounded_square(...) */ module rounded_rectangle(length, width, height, rad) { - rounded_square([length, width, height], rad); + rounded_square([length, width, height], rad, center=true); } module copy_mirror(vec=[0,1,0]) { diff --git a/gridfinity-spiral-vase.scad b/gridfinity-spiral-vase.scad index f8b13ea..d4e09fb 100644 --- a/gridfinity-spiral-vase.scad +++ b/gridfinity-spiral-vase.scad @@ -161,7 +161,7 @@ module gridfinityBaseVase() { intersection() { block_base_blank(0); translate([0,0,-h_base-1]) - rounded_rectangle(l_grid-0.5-0.005, l_grid-0.5-0.005, h_base*10, r_fo1+0.001); + rounded_square([l_grid-0.5-0.005, l_grid-0.5-0.005, h_base*10], r_fo1+0.001, center=true); } translate([0,0,0.01]) difference() { @@ -220,16 +220,16 @@ module block_base_blank(o = 0) { mirror([0,0,1]) { hull() { linear_extrude(h_base) - rounded_square(l_grid-o-0.05-2*r_c2-2*r_c1, r_fo3); + rounded_square(l_grid-o-0.05-2*r_c2-2*r_c1, r_fo3, center=true); linear_extrude(h_base-r_c1) - rounded_square(l_grid-o-0.05-2*r_c2, r_fo2); + rounded_square(l_grid-o-0.05-2*r_c2, r_fo2, center=true); } hull() { linear_extrude(r_c2) - rounded_square(l_grid-o-0.05-2*r_c2, r_fo2); + rounded_square(l_grid-o-0.05-2*r_c2, r_fo2, center=true); mirror([0,0,1]) linear_extrude(d_bottom) - rounded_square(l_grid-o-0.05, r_fo1); + rounded_square(l_grid-o-0.05, r_fo1, center=true); } } } @@ -527,7 +527,7 @@ module transform_scoop() { module block_vase(h = d_height*2) { translate([0,0,-0.1]) - rounded_rectangle(gridx*l_grid-0.5-nozzle, gridy*l_grid-0.5-nozzle, h, r_base+0.01-nozzle/2); + rounded_square([gridx*l_grid-0.5-nozzle, gridy*l_grid-0.5-nozzle, h], r_base+0.01-nozzle/2, center=true); } module profile_x(x_f = 3) {