FilletSrf bug

I still (Filleting problems) have regular issues with FilletEdge and FilletSrf.

Attached is part of a model that I’ve just been working with. I’ve filleted one join okay but am having problems with the other. Using FilletSrf with a radius of 1mm sort of works but using 0.8mm creates completely wild geometry.

FilletEdge doesn’t do a good job with any of the radii I’ve tried.

Somebody suggested that I use SrfSeam but that creates a duplicate seam for me and hasn’t helped in the examples I’ve had problems with.

Fillet bug.3dm (764.0 KB)

Fillet bugck.3dm (853.0 KB)

I had noproblem. Works fine with the default 1mm, tried 2mm, also works.

Thanks for trying ChrisK but:

1- the file you sent me has an error. Use ShowEdges / Naked Edges and you’ll see that the fillet failed at the seam;

2- the main point I was making in my original post is what happens when using a fillet of 0.8mm where things go crazy.

3- you just re-did the fillet that I originally did (which I thought had worked but now noticed had failed). The original point I made was the problem with the 2nd join (especially when filleted at 0.8mm), not the 1st. I uploaded one join filleted and a second join unfilleted.


There are a couple of problems with your topology that is causing the fillet to fail. I used another software package to try the fillet and it had problems as well. As you can see by the zebra stripes the two halves of the main body are not tangent. The second problem area is the pinched section. My guess is that area’s radius is smaller than .8 mm. Spread those cv’s out and that should fix it.

Sorry Stratosfear but I don’t understand what you are saying. I don’t understand what “main body” is, nor “two halves” or what a “cv” is. I don’t see what the tangents have to do with this either.

I can imagine that the filleting may be complicated by the fact that two tubes are close to each other, but using a value of 0.8mm should not create the wild geometry that it does. To me that is a software bug. A value of 0.6mm also creates wild geometry with FilletSrf:

Using FilletSrf with a value of 0.4mm appears to work until I check with ShowEdges:

Also not that as well as the 2nd join (ie the one which I did not fillet in the file I uploaded), I later realised that the 1st join that was filleted in fact had failed to fillet properly when I examined it with ShowEdges / Naked Edges. You can see this on the left hand side fillet of the above photo. The yellow lines are naked edges.

Hi Stratosfear

I really appreciate you taking so much time on this.

So as I understand it the problem is that the control points are too close together, but how and why did you split the surface into two halves? And then how did you, as you said, ‘match’ the two halves?

I see that the first fillet that I had tried has also been fixed by you. Was that the same issue and same fix as with the second (ie the red / grey one in the picture you posted?


I assumed that were at least an intermediate Rhino user. I’m happy to help with specific modeling issues. However I’m not up to teaching new users the basics. You might consider taking an online course and going through Rhino’s training manuals.

There are two problems that make filleting fail.

First of all your surfaces are non-periodic closed surfaces. You probably want them to be periodic.

A periodic surface is closed but essentially has no beginning and end. A closed surface that is non-periodic (like yours) can have discontinuities at the seam. And you want surfaces that are tangent continuous at all seams (edges) that the fillet has to cross.

You can use MakePeriodic command to make the surface periodic before you start filleting. Or create the surfaces as periodic to begin with.

The other problem is that fillets will fold in on themselves if you try to put them on surfaces that have concave curvature of less than the fillet radius. In other words, A fillet of 1mm won’t be able to cross over a dimple in the surface with curvature of less than 1mm. In your example the smallest radius that can be supported is about .38 mm. You can use CurvatureAnalysis with minimum curvature set to a range of 0.3-2.0 to find the areas where the curvature radius is low. In the enclosed file I edited the surfaces so that a fillet of 1mm can be supported.

periodficSurfaces.3dm (146.9 KB)

1 Like

Thanks Jim, that’s very helpful.

The problem seems to stem from the fact that I create a surface and then use OffsetSrf to create an outer surface. It is this outer surface that I am trying to fillet. I noted this afternoon that if I first rebuild this outer surface my filleting works. But for my particular workflow this makes it a rather lengthy process. Your suggestion of using MakePeriodic looks like it will be a much better solution. Thank you.

Fair enough. Thanks anyway Stratosfear.

That problem is easily solved by using the “loose” option in the OffsetSrf command. It looks like the loose option will give you about the same level of accuracy that you are now getting, but the result will be smoother and periodic. It also helps with the minimum curvature problem. Basically the loose option creates a surface that retains the same structure as the original, so you don’t introduce the continuity degradation that you always get without the loose option. I recommend always using the loose option with freeform surfaces.
If you need more accuracy than the loose option produces you can rebuild the original surface to slightly more dense surface and then offset(loose) then copy the result to the clipboard and undo back to before the rebuild and paste (hold ctrl key and type CZZV)

1 Like

For all the purposes I ever encountered, the loose option gave better results with very acceptable precision.

1 Like