76 lines
3.4 KiB
OpenSCAD
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);
|
|
|
|
}
|