discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Fillet meeting a convex curve

AG
Alex Gibson
Wed, Feb 12, 2020 3:15 PM

Hi, smarter people than me today.

I needed to make a fillet between a straight edge and a gently curving away
radius.

Below is what it looks like if I use a square and subtract a circle.  I was
in a hurry, and just nudged it and shaved it further until it was visually
OK.

I have a library that would put fillets all over the part - but it would be
overkill.

Does anyone have a nifty library set up for these occasions?

Cheers,

Alex Gibson

admg consulting

edumaker limited

.        Project management

.        Operations & Process improvement

.        3D Printing

Hi, smarter people than me today. I needed to make a fillet between a straight edge and a gently curving away radius. Below is what it looks like if I use a square and subtract a circle. I was in a hurry, and just nudged it and shaved it further until it was visually OK. I have a library that would put fillets all over the part - but it would be overkill. Does anyone have a nifty library set up for these occasions? Cheers, Alex Gibson admg consulting edumaker limited . Project management . Operations & Process improvement . 3D Printing
W
Whosawhatsis
Wed, Feb 12, 2020 6:59 PM

This type of curvature is much easier to create if you can do it using
offset().

To create a 2D shape with rounded corners, you can do something like
offset(inner_radius) offset (outer_radius - inner_radius)
offset(-outer_radius) shape(). Note that any positive or negative features
that go to zero width at any point during this process will be lost (you
can often get around this by booleaning multiple shapes that already have
their fillets applied). Also, you get a resolution difference in the
convex/concave curves that depends on the order of the multiple offsets.

Otherwise, the solution involves finding the point where the two curves
meet. Usually adding a square with a side equal to the circle's radius,
with its corner at the circle's center, and rotated to that its edge is
normal to the desired curve at the point where its curvature changes, but
that math is usually more tedious than using the offset method.

On February 12, 2020 at 07:19:21, Alex Gibson (alex@alexgibson.net) wrote:

Hi, smarter people than me today…

I needed to make a fillet between a straight edge and a gently curving away
radius.

Below is what it looks like if I use a square and subtract a circle.  I was
in a hurry, and just nudged it and shaved it further until it was visually
OK.

I have a library that would put fillets all over the part – but it would be
overkill.

Does anyone have a nifty library set up for these occasions?

Cheers,

Alex Gibson

admg consulting

edumaker limited

·        Project management

·        Operations & Process improvement

·        3D Printing


OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org

This type of curvature is much easier to create if you can do it using offset(). To create a 2D shape with rounded corners, you can do something like offset(inner_radius) offset (outer_radius - inner_radius) offset(-outer_radius) shape(). Note that any positive or negative features that go to zero width at any point during this process will be lost (you can often get around this by booleaning multiple shapes that already have their fillets applied). Also, you get a resolution difference in the convex/concave curves that depends on the order of the multiple offsets. Otherwise, the solution involves finding the point where the two curves meet. Usually adding a square with a side equal to the circle's radius, with its corner at the circle's center, and rotated to that its edge is normal to the desired curve at the point where its curvature changes, but that math is usually more tedious than using the offset method. On February 12, 2020 at 07:19:21, Alex Gibson (alex@alexgibson.net) wrote: Hi, smarter people than me today… I needed to make a fillet between a straight edge and a gently curving away radius. Below is what it looks like if I use a square and subtract a circle. I was in a hurry, and just nudged it and shaved it further until it was visually OK. I have a library that would put fillets all over the part – but it would be overkill. Does anyone have a nifty library set up for these occasions? Cheers, Alex Gibson admg consulting edumaker limited · Project management · Operations & Process improvement · 3D Printing _______________________________________________ OpenSCAD mailing list Discuss@lists.openscad.org http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org
A
adrianv
Wed, Feb 12, 2020 11:50 PM

The method using a bunch of offsets is the easiest, if that can do the job.
I wrote an "offset_stroke" that will take a series of points and draw a 2d
curve with specified width and with filleting to an arbitrary angle at both
ends.  (It's in BOSL2.)

I'm very interested in this kind of problem, but I think the solutions often
need to be integrated with the method you used to make the curved shape.
That is, you need to have a representation of the curve and use that to
develop the fillet.  I'm actually planning to write a function that will
blend two point lists with a curve between them.  But of course, all of
these types of approaches require that you have a point list rather than
geometry.

--
Sent from: http://forum.openscad.org/

The method using a bunch of offsets is the easiest, if that can do the job. I wrote an "offset_stroke" that will take a series of points and draw a 2d curve with specified width and with filleting to an arbitrary angle at both ends. (It's in BOSL2.) I'm very interested in this kind of problem, but I think the solutions often need to be integrated with the method you used to make the curved shape. That is, you need to have a representation of the curve and use that to develop the fillet. I'm actually planning to write a function that will blend two point lists with a curve between them. But of course, all of these types of approaches require that you have a point list rather than geometry. -- Sent from: http://forum.openscad.org/