-
-
Save groovenectar/92174cb1c98c1089347e to your computer and use it in GitHub Desktop.
// More information: https://danielupshaw.com/openscad-rounded-corners/ | |
// Set to 0.01 for higher definition curves (renders slower) | |
$fs = 0.15; | |
module roundedcube(size = [1, 1, 1], center = false, radius = 0.5, apply_to = "all") { | |
// If single value, convert to [x, y, z] vector | |
size = (size[0] == undef) ? [size, size, size] : size; | |
translate_min = radius; | |
translate_xmax = size[0] - radius; | |
translate_ymax = size[1] - radius; | |
translate_zmax = size[2] - radius; | |
diameter = radius * 2; | |
obj_translate = (center == false) ? | |
[0, 0, 0] : [ | |
-(size[0] / 2), | |
-(size[1] / 2), | |
-(size[2] / 2) | |
]; | |
translate(v = obj_translate) { | |
hull() { | |
for (translate_x = [translate_min, translate_xmax]) { | |
x_at = (translate_x == translate_min) ? "min" : "max"; | |
for (translate_y = [translate_min, translate_ymax]) { | |
y_at = (translate_y == translate_min) ? "min" : "max"; | |
for (translate_z = [translate_min, translate_zmax]) { | |
z_at = (translate_z == translate_min) ? "min" : "max"; | |
translate(v = [translate_x, translate_y, translate_z]) | |
if ( | |
(apply_to == "all") || | |
(apply_to == "xmin" && x_at == "min") || (apply_to == "xmax" && x_at == "max") || | |
(apply_to == "ymin" && y_at == "min") || (apply_to == "ymax" && y_at == "max") || | |
(apply_to == "zmin" && z_at == "min") || (apply_to == "zmax" && z_at == "max") | |
) { | |
sphere(r = radius); | |
} else { | |
rotate = | |
(apply_to == "xmin" || apply_to == "xmax" || apply_to == "x") ? [0, 90, 0] : ( | |
(apply_to == "ymin" || apply_to == "ymax" || apply_to == "y") ? [90, 90, 0] : | |
[0, 0, 0] | |
); | |
rotate(a = rotate) | |
cylinder(h = diameter, r = radius, center = true); | |
} | |
} | |
} | |
} | |
} | |
} | |
} |
Hi Daniel.
I'm running into a bug which rears its ugly head when one tries to set a radius for the cylinder of a single-axis rounding and the radius is larger than one or more of the dimensions of the object. I have an object where the thickness is
0.125
and the radius is0.325
. It makes the thickness of the object larger to compensate, which kinda sucks. It seems like the problem lies with the definitions of thetranslate
variables at the top. If I can find the time, I will see about submitting a fix later.
It looks like @ggs67's fork fixes this. I think it would be a good idea to replace your code with theirs.
I'm running into a bug which rears its ugly head when one tries to set a radius for the cylinder of a single-axis rounding and the radius is larger than one or more of the dimensions of the object. I have an object where the thickness is
0.125
and the radius is0.325
. It makes the thickness of the object larger to compensate, which kinda sucks. It seems like the problem lies with the definitions of thetranslate
variables at the top. If I can find the time, I will see about submitting a fix later.It looks like @ggs67's fork fixes this. I think it would be a good idea to replace your code with theirs.
Yes, I'm glad you found that. It's been a while since I've been able to design or print but was aware of some forks... would you say that's the most ideal one to redirect people to when that issue crops up? https://gist.github.com/ggs67/ff6ba8caf5a1871d285c5c758dce0575
Hi Daniel.
I'm running into a bug which rears its ugly head when one tries to set a radius for the cylinder of a single-axis rounding and the radius is larger than one or more of the dimensions of the object. I have an object where the thickness is
0.125
and the radius is0.325
. It makes the thickness of the object larger to compensate, which kinda sucks. It seems like the problem lies with the definitions of thetranslate
variables at the top. If I can find the time, I will see about submitting a fix later.