Files
3d-models/lib/rounded-cube.scad
T
2025-12-26 13:25:38 -06:00

76 lines
3.4 KiB
OpenSCAD

module roundedCube(dims = [10, 10, 10], cornerRadii = [2, 2, 2]) {
innerDims = [
dims[0] - cornerRadii[0]*2,
dims[1] - cornerRadii[1]*2,
dims[2] - cornerRadii[2]*2 ];
// X-Y
translate(cornerRadii)
scale([cornerRadii[0], cornerRadii[1], 1])
cylinder(r=1, h = innerDims[2]);
translate([cornerRadii[0], cornerRadii[1] + innerDims[1], cornerRadii[2]])
scale([cornerRadii[0], cornerRadii[1], 1])
cylinder(r=1, h = innerDims[2]);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1] + innerDims[1], cornerRadii[2]])
scale([cornerRadii[0], cornerRadii[1], 1])
cylinder(r=1, h = innerDims[2]);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1], cornerRadii[2]])
scale([cornerRadii[0], cornerRadii[1], 1])
cylinder(r=1, h = innerDims[2]);
translate([cornerRadii[0], cornerRadii[1], 0]) cube([innerDims[0], innerDims[1], dims[2]]);
// X-Z
translate(cornerRadii)
scale([cornerRadii[0], 1, cornerRadii[2]])
rotate([-90, 0, 0]) cylinder(r=1, h = innerDims[1]);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1], cornerRadii[2]])
scale([cornerRadii[0], 1, cornerRadii[2]])
rotate([-90, 0, 0]) cylinder(r=1, h = innerDims[1]);
translate([cornerRadii[0], cornerRadii[1], cornerRadii[2] + innerDims[2]])
scale([cornerRadii[0], 1, cornerRadii[2]])
rotate([-90, 0, 0]) cylinder(r=1, h = innerDims[1]);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1], cornerRadii[2] + innerDims[2]])
scale([cornerRadii[0], 1, cornerRadii[2]])
rotate([-90, 0, 0]) cylinder(r=1, h = innerDims[1]);
translate([cornerRadii[0], 0, cornerRadii[2]]) cube([innerDims[0], dims[1], innerDims[2]]);
// Y-Z
translate([cornerRadii[0] + innerDims[0], cornerRadii[1] + innerDims[1], cornerRadii[2]])
scale([1, cornerRadii[1], cornerRadii[2]])
rotate([-90, 0, 90]) cylinder(r=1, h = innerDims[0]);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1], cornerRadii[2]])
scale([1, cornerRadii[1], cornerRadii[2]])
rotate([-90, 0, 90]) cylinder(r=1, h = innerDims[0]);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1] + innerDims[1], cornerRadii[2] + innerDims[2]])
scale([1, cornerRadii[1], cornerRadii[2]])
rotate([-90, 0, 90]) cylinder(r=1, h = innerDims[0]);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1], cornerRadii[2] + innerDims[2]])
scale([1, cornerRadii[1], cornerRadii[2]])
rotate([-90, 0, 90]) cylinder(r=1, h = innerDims[0]);
translate([0, cornerRadii[1], cornerRadii[2]]) cube([dims[0], innerDims[1], innerDims[2]]);
// corners
translate(cornerRadii)
scale(cornerRadii) sphere(r=1);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1], cornerRadii[2]])
scale(cornerRadii) sphere(r=1);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1] + innerDims[1], cornerRadii[2]])
scale(cornerRadii) sphere(r=1);
translate([cornerRadii[0], cornerRadii[1] + innerDims[1], cornerRadii[2]])
scale(cornerRadii) sphere(r=1);
translate([cornerRadii[0], cornerRadii[1], cornerRadii[2] + innerDims[2]])
scale(cornerRadii) sphere(r=1);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1], cornerRadii[2] + innerDims[2]])
scale(cornerRadii) sphere(r=1);
translate([cornerRadii[0] + innerDims[0], cornerRadii[1] + innerDims[1], cornerRadii[2] + innerDims[2]])
scale(cornerRadii) sphere(r=1);
translate([cornerRadii[0], cornerRadii[1] + innerDims[1], cornerRadii[2] + innerDims[2]])
scale(cornerRadii) sphere(r=1);
}