Advanced Filleting Question - 5 Surfaces Meeting at a Point

Hello -

I’ve seen multiple topics on advanced filleting but in my inexperience, I’ve been unable to apply what I’ve learned to this particular scenario. I would like to create a .020" fillet (as shown in the picture) but as expected, I loose the corner where I have 5 surfaces meeting at a point. I am unsure how to manually make this fillet. Any tips would be greatly appreciated.

My geometry should be clean to this point (though I noticed a small superfluous edge at the chamfered hole at top - not sure how to resolve that). This doesn’t affect the fillets I’m trying to make.

Here is the file: Cap.3dm (3.3 MB)


The standard rolling ball fillet solution would look something like this:


Hi, Jim. Thanks!

I tried Rolling Ball Fillet as well as Dist Between Rails and Dist From Edge before posting and in all cases, the corner disappears. I cannot achieve the result you shared. Is there another step I’m missing? I select all edges as shown in the image in the OP. Perhaps you are using Rhino 6?


I used Filletsrf to make the fillets. You make all the fillets for one corner and use array polar to create the rest.


Use the rotational symmetry of the object to your advantage. Just build the primary 60° domain and then copy/rotate it five more times to complete the shape.


Here is a slightly different approach. You might check how edges are always tangent aligned (arrows). If you create a patch layout like this, you will always have a high chance to match patches tangent or even with curvature continuity. If this is not possible you should work with trimmed data. But quite often (not always) its a bad idea to match two strongly curved surfaces which are not edge/iso aligned. That’s also why the Rhino “Patch” command almost never returns acceptable results. On the other hand… these fillets are quite small.

Cap2.3dm (1.4 MB)


Maybe you used Rhino 6? You can include a version of the file that can be opened with Rhino Mac. Thanks


Cap2_V5.3dm (1.4 MB)


Thanks for the explanation, Jim. I’ll try this myself.

Thanks for this, TomTom. I haven’t tried the patch command. I’ll look at this approach.

Usually when rolling ball fillets wrap around each other like this they can go either way.

Here is another solution where the lower fillets wrap over the upper ones.Capx2.3dm (361.1 KB)

The red surface is created using revolve command. and then use filletsrf to create the 3 green fillets that wrap over and connect those surfaces to the lower cylinder.

With difficult conditions like this surface fillets may work but produce poor results. @TomTom way is the better but more time consuming method.

If it was done with Rhino, could you explain the procedure (and the used commands) used for all fillets?
Thank you


The corner where you have Blue and Red arrows, how did you make it smooth?
I usually get a plumpy surface at those places…

That’s the way to do it. If the surrounding geometry is simple and proper, it’s quick to do and yields good highlights also.


due to reasons of timing I didn’t make it in native Rhino.
I used Icem Surf, but I completly made it manually (no algorithm doing it).
Now I’m pretty sure you can do the same in native Rhino, maybe
with a bunch cps more and much more time.
However owners of the VSR plugin can 100% recreate my workflow, which is:

1.) create unweighted fillets
2.) extrapolate (≈extend them)
3.) create blendcurves
4.) real trim/surface split fillets with blendcurves
5.) create blendsurfaces
6.) trim one blendsurface and match the other blend ontop (isotrim or increase degree to get more cps)
7.) check tangent deviation, match at all surfaces

some notes:


Unweighted fillets as you see in my example (6 unweighted cps instead of 3 weighted ones in radius direction) are better because matching to weighted (rational) geometry is much more difficult.
You can do so, but it often increases cp count. A low cp count however does not only make it easier to get better smoothness and as a consequence better highlights, it also makes it easier to modify the geometry later on.

In native Rhino, simply rebuilding weighted fillets does work quite often. Its a bit surprising, but when measuring tangent deviation after rebuilding, its often very low. Better of course is using a fillet command which returns unweighted fillets from beginning on (like VSR) .

The problem why its so hard doing corner blends in Rhino, is that Rhino misses this very fundamental modelling functionality. So native Rhino user will get a problem here.

VSR called it “Surface Split”.
Its a trim functionality which also pulls controlpoints back to the boundary.So that the surface stays untrimmed.
Depending on the trimming boundary it could be that there is no solution (more then 4 edges, or unsmooth trimming boundary),however if you use such a functionality the right way, you can pretty fast create the conditions I pointed out (ensuring tangent aligned edges).
Blending at untrimmed edges is much better and allows easy matching.

Here is an example, before:

and after:

A good visual deviation analysis would allow to manually match a surface by just pulling cps in normal direction with very low pulling strength. This comes in handy, when the algorithmic approach does not find a good solution or it does but by increasing cp count.

Example of a deviation analysis:

Programms I know being able to get this efficiently are Rhino with VSR, Autodesk Alias, Icem Surf.


Thanks for the exhaustive explanation. I was pretty sure that Icem Surf had been used. I agree that we can only use Rhino to get this (and I used your files as a reference to do it), but please consider that we are in “Rhino Mac” environment, where VSR plugins do not exist. For this reason, using only Rhino Mac requires a lot of work to get a good result. I believe and hope that everyone can contribute in any way to “transfer” suggestions like yours. Thank you for your valuable contribution.


I tried to manually replicate your geometry, “with limited success” to be honest… (even if I could eyeball most of the strategy I still would not have arrived at the specifics).

The two main problems I experienced was

  1. how to determine the height of the horisontal split (green),
  2. and the inclination angle (or width) of the Fillet where the BlendCrv lands (red).

If projecting an extended horizontal edge(red) vertically (to construct a BlendCrv partner on the main surface) the blend curve would dive too steeply and not meet the “edge split” of the Fillet on the main surface. Is there any strategy that one could apply manually to arrive at good solutions for §1 (height) and §2 (angle)?


The curvature of the “horizontal” blend (illustrated with yellow lines below) was also difficult to determine. The two curves pictured below were constructed using BlendCrv Tangency and Curvature respectively, but none of them comes close to your actual surface (green, which passes between the two yellow lines, see highlighted middle point):


It seems like it takes some black magic to manually arrive at good continuity in a case like this…

// Rolf


supposed to your fillets are in right place:

a.) just create two blend surface

b.) project red edge from view on blue, trim blue

c.) red surface -> _split at iso with shrink

d.) match both reds on blue, you may rebuild to 3x3 after first match, then match both reds again on all
4 edges.

match options: iso, tan tan, next point, improve (:frowning: ) , keep iso


I’ve worked unclean even in the Icem Surf version::sweat_smile: