Why does BlendEdge or FilletEdge not work on these edges?

Trying to make a fillet on these edges using filletedge/blendedge command but both of them seem to fail and I don’t understand why. Can anybody explain why I it doesn’t work?

200411 FilletEdge problem.3dm (55.7 KB)

Hello - I guess it is because the surfaces come tangent in the middle.

RH-57856 FilletEdge messy - test case


I see, that makes sense, I guess.

Working only with a copy of the object…

Could you offset the mating edges on the surface, and then extend it enough to split to make sure it splits the surface and then remove the two sections…

And then either try blending it…

Or create intermediate tangent cross-sections and use sweep2 and match surfaces to mate them.

It might also be possible to split the edges at the coplanar point and then use a variable fillet, tapering to zero. I don’t know if the Int snap could find this point.

Because this likely exists bodies, I think that this would be a good case for the filleter to programed for.

FilletSrf will give you results you can trim out.

…waiting on the other Jim to chime in here with his filletSrf-works-better-and-is-a-better-workflow rant…which I’ve found seems to be true.

While it’s true Fillet surf often works when Fillet edge fails. The results are rarely good. I don’t use it for that reason.

Thanks for your input @Brenda, @JimCarruthers, @Stratosfear
I actually had a rather simple grasshopper definition I wanted to use the FilletEdge component on without complicating things too much but got stuck on these 2 edges.

As shown below, _BlendEdge with RailType=DistFromEdge (distance of 10) also fails on this polysurface. (It also fails in V5 and the WIP, although differently between all 3 versions.) The purple curves are intersections of the polysurface with 10 mm radius pipes (not shown) using the interior edges of the polysurface as the rails.

Is _BlendEdge with RailType=DistFromEdge supposed to be equivalent to trimming the polysurface at the (extended) pipe intersections, then appying _BlendSrf?


no it’s not the same, dist. from edge is measured over the surface. So if a surface has a lot of curvature near the trim, the pipe will give a significantly wider trim

FilletEdge command is based on a mathematically incorrect algorithm which means in many situations it will fail and no amount of development work will ever fix it because it is trying to do something that is mathematically impossible.

What filledge tries to do is make one fillet surface for every edge. That is just plain wrong and your model is a good example of why its wrong. In your example the correct solution has 2 fillet surfaces for one of the edges and 3 fillet surfaces for the other edge. Filletedge tries to make one surface on the one edge where the mathematically correct solution is 2 surfaces that don’t even touch each other. Filletsrf will also have problems when you create surfaces that are tangent in some places and not tangent in others. It is essentially the same problem Rhino has with the intersect command when surfaces have areas where the intersection becomes tangent.
You might be able to get fillet edge to work better if you use split edge at the points on the edge where the edge changes from convex to concave or tangent. That will at least make filletedge try to make the correct number of surfaces. If you use filletSrf you will have to fix the pointy ends of the fillets or make small bridge surfaces to cover the small area where the fillet does not complete.

Since filleting becomes wonky whenever surfaces are close to being tangent, in situations like this, you may have better luck using matchsrf or trimming each surface back a little and use BlendSrf to fill the gap.

The results you get with Rhino’s FilletSrf are close to identical to other CAD programs that make rolling ball fillets correctly. If you take a model from Unigraphics or Solidworks you can extract a fillet and delete it and then replace it with a Rhino Filletsrf and it will produce the same surface that fits precisely.

Using “Pipe” to split the surfaces and then “Sweep 2 rails” is a good way to solve that issue.

200411 FilletEdge problem solved.3dm (284.8 KB)