## Monday, February 14, 2011

### OpenSCAD Tip: Round 1 of 3 - Basic Rounding

This is the beginning of a three part series on rounding edges in OpenSCAD. This tutorial shows how to make a box with rounded edges, but this technique can be used anywhere you are trying to round an edge where both surfaces are flat and meet at a 90 degree angle.

Starting with a box in OpenSCAD
box_l = 10; // Length
box_w = 10; // Width
box_h = 10; // Height
cube([box_l, box_w, box_h], center = true);

So what is a rounded corner? One way to think about it is that it is shaped in a way similar to a cylinder. The idea is to make the edge of the box into a cylinder, so the first attempt will to be to remove an absence of a cylinder. Next move a cylinder into place for the edge to be rounded. The padding is there to maintain manifoldness.
box_l = 10; // Length
box_w = 10; // Width
box_h = 10; // Height
round_r = 2; // Radius of round
smooth = 45; // Number of facets of rounding cylinder
difference() {
cube([box_l, box_w, box_h], center = true);

translate([0, -box_w/2+round_r, box_h/2-round_r]) {
rotate(a=[0,90,0])
}
}

Now that all the padding and minus signs are correct, a box is moved into place to make the part to round the edge off.
translate([0, -box_w/2+round_r, box_h/2-round_r]) {
difference() {
rotate(a=[0,90,0])
}
}

Now by subtracting this from the original box one of the edges is rounded off.

difference() {
cube([box_l, box_w, box_h], center = true);
translate([0, -box_w/2+round_r, box_h/2-round_r]) {
difference() {
rotate(a=[0,90,0])
}
}
}

Now by repeating the technique on all of the sides a new problem is discovered.

To fix the corners, the absence of a sphere must be subtracted from each corner.

If a cylinder isn't a good analogy then the question becomes, how do you mathematically represent a rounded edge. One way to do that is to think of the shape produced by a sphere moving along the edge. We will explore this concept of rounding using a rolling ball further in the next tutorial, Advanced Rounding with OpenSCAD.

All of the .scad files can be found on Thingiverse and our previous OpenSCAD tutorials can be found here.

whosawhatsis? said...

It gets really interesting when you want to round the edges with two different radii. The solution involves using toriods (rotate_extrude) instead of spheres for the corners. I demonstrated this technique on my Better thumb z-crank Thing.

I Heart Robotics said...

That looks great! I think you will like part 3 - Impossible Rounding.