Automatic minimum radius correction

Is there any way Rhino6 can automatically detect the minimum radius for a curve and correct it to fit a tolerance? See illustration below. This would be a huge time saver for drawing things that have to be machined with a cutter that has a limited minimum diameter. I can compensate for this when I generate a toolpath in CAM but I am looking for a way to do this to the drawing.

Hello - The Curvature command will help locate and mark minimums but you’ll need to fix it yourself…


Thanks Pascal! Here’s how I do it now using curvature graphing. I offset a pair of lines to match the curvature graph of the diameter cutter I need to use and visually inspect for anything that sticks out. But It’s still a manual correction process which gets pretty tedious on complicated designs.CAM will take care of it but I can’t see the actual finished design until after simulation and the visual image is no longer an editable nurbs curve.

Hello - here’s what occurs to me to to fix it… dunno if it is any better or worse, it’s still tedious.

MinRadius.3dm (37.2 KB)


Another method which replaces portions of the original curve which which the cutter cannot reach with fillets:

  1. Offset with cutter radius to create a cutter centerline curve. This curve will have sharp corners in areas which the cutter cannot reach.

  2. Offset with cutter radius and Corner=Round to create a new curve. This curve will have fillets corresponding to the sharp corners of the cutter centerline.

  3. Explode the new curve and delete portions of the new curve which are not fillets.

  4. Use the fillets to trim the original curve, and join the remaining portions of the original curve and the fillets.

Example based on Pascal’s curve: MinRadiusDC.3dm (32.5 KB) (Corrected file attached. Previous version had spurious text.)

1 Like

Illustration of method described above:

Thanks @pascal ! This is an interesting solution that maintains the extent of the the original curve without shortening it’s reach into the corner. As you say though it still requires manual editing.

Thanks @davidcockey! I like this approach very much. If it were not for the increased control point density of the offset curve I could simply accept it without trimming out the corners on the original. And sometimes if I’m really done editing I probably will do just that.

But often I will want to retain the ability to edit CPs between the corners and so the final step replacing the corners on the original curve will be desired. I’ve written a small Grasshopper def to automate visualizing this but can’t seem to figure out how to get the fillets in the corners to trim and replace the original curve automatically. Hope someone with better GH skills can have a look.GH%20minimum%20%20radiusminimum radius (4.0 KB)

1 Like


I don’t know if this is what you are after:

I have chosen another approach ( without offsetting) but instead by evaluating for the minimal curvature radius. After finding local minima’s, I re-fillet at those locations where the radius is beneath the threshold. Because I have chosen one of my own extreme value algorithm, this script should be working for Rhino V5 as well.

Hope I could help (15.2 KB)

1 Like

Thanks @TomTom! I really like the way the points mark areas that need attention.

Is there any reason you have chosen to edit the curve manually after identifying out of tolerance curvature segments rather than have the curve update automatically?

What do you mean? Do you mean that you have to “bake” the curve after editing? Are you familiar with grasshopper and its concept of inputting and outputting geometry?
You can of course implement this to be fully automatic. However, What if the script fails or it returns a unwanted result. In this case you will loose your original curve(-s).
I mean you can convert this as a command as well. I just don’t know if its bulletproof enough yet, since I haven’t spend much time into…

I’m no expert but do use Grasshopper regularly so I am familiar with the workflow. Your GH file is fantastic and much appreciated.

Sometimes I am working on complicated inlays that would involve dozens of edit points so having the corner fillets replaced without manually trimming and joining would be appreciated. Typically I’ll keep a copy untouched so I have a fallback if necessary.

Thanks again for your help!


oh, now I know, it does not trim. I completely missed that. I’ll update that. (12.5 KB)

1 Like

Looks beautiful! I will play around with it a little more tonight…Thanks!

Help please, im failing at this:

How do i make a complete curve with the segmented results ?

RadiusReplace2.1.3dm (274.8 KB) (14.1 KB)

Hi Tom,
Great tool! However, it only works for open curves. Can I tweek this script to work with closed curves as well? best regards, Gieljan

1 Like

Have you been able to find a solution for closed curves?

I’m late to the party, but you could construct your curve by using the offset command with record history, with an offset at or near your minimum radius. Form the curve basically offset inward outward by your min radius, and the offset will be your final curve. History will allow the offset to follow adjustments to the inset reference curve.Min Radius.3dm (34.5 KB)

Basically you’re designing by the tool axis path instead of the part finished edge.