Shrinking fillet surfaces

Hello Pascal,

I tried to shrink the surface and while the fillet gets cleaned up, it still remains extented to the longest edge, resulting in a part of the fillet that is “not matched” (marked light blue).

I would need an option for the shortest edge. This is where the next fillet patch would start, if you build fillets by hand.


Hello - if you are working at the surface level like this, then Split > Isocurve > Shirink=Yes should get you the bit you want.

Does that help?


Yes of course you are right, but imagine filleting a whole car. An option/toggle for shortest edge would be a real time saver for thousands of fillets, as filleting and gap construction takes several days.

Hello - if you are using surface filleting (FilletSrf) then Extend =Yes/No should help. But if you are using the edge filleters there is no way to control this. It sounds like maybe you are using edge filleting and then diving in at the surface level to fix things up, correct? I’m trying to think how to make a splitter/shrinker that could figure out the right spot to stop… feels like a challenge.


Could G2 fillet be added to ( FilletSrf ) with those options included? I use Edge blend just for G2 continuity.

Hello - thre is no reason that it cannot be done, from what I understand.

RH-58921 FilletSrf : G2 surface



Thank you Pascal!

What is a “G2 fillet”?

My understanding is fillets in Rhino always have circular arc cross sections. Except for unusual situations a fillet surface with circular arc cross sections cannot be G2 continuous with adjacent surfaces

A G2 chordal fillet is what every product should be designed with, if only all CAD programs supported them better. :wink:

To get one in Rhino, you use BlendSrf or BlendEdge… but not VariableBlendSrf (again, Rhino sadly isn’t very consistent)… however, since both BlendSrf and BlendEdge requires edges as input, while VariableBlendSrf does not, to get a chordal, I often start with VariableBlendSrf (DistBetweenRails), delete the result but keep the trim, and then replace with a BlendSrf (I hope someone can tell me a better way).

A great CAD package also allows you to set a minimum desired radius (and also tension). In Rhino, you have to do a curvature analysis after the fact and to a tedious untrim dance since BlendSrf and BlendEdge (unlike BlendCrv) doesn’t have an Edit command…

Not yet - but in the next WIP BlendEdge and VariableBlendSrf will use chordal spacing to locate the control points.



Wait… VariableBlendSrf already has chordal with DistBetweenRails… EDIT: Wait, and it has G2? Hmm… why does the command line say “variable radius blend” instead of variable curvature blend?

Hello - the rails are found as ‘chordal’ in DistanceBetweenRails; the change is to how the control points across the surface are distributed - the new and improved way is that these are evenly distributed with respect to to the chord at that location:



The wording in the command line is confusing and potentially misleading…

When the “RollingBall” option is selected the " “radius” in the command line refers to the radius of the rolling ball.

When the “DistBetweenRails” option is selected the “radius” in the command line refers to the distance between the rails.

When the “DistFromEdge” option is slected the “radius” in the command line refers to the distance from the edges of the input surfaces to the edges of the blend.

@pascal This request does not make sense.

  1. A fillet has constant radius, circular cross sections so (except for exceptional situations) a fillet cannot be G2 continuous with the adjacent surfaces.

  2. A G2 blend surface between two surfaces is already the result of using VariableBlendSrf.

Hi David - I don’t know that ‘fillets’ are in general necessarily round in section, though yes, that is how Rhino uses the term. The VariableBlendSrf tool uses FilletEdge guts - as a consequence, it needs to be able to intersect the inputs, and has no way to Extend=Yes/No. This makes it much more limited than FilletSrf . We can arm wrestle about what to call it but the idea is to get G2 surfaces from the FilletSrf inputs and workflow/options…


Please keep the Rhino terminology consistent.

In that case VariableBlendSrf and/or BlendSrf need improvement. Don’t add confusion by adding “blend surfaces” to a “fillet” tool.

1 Like

I understand… Keep in mind that this is a (useful ?? ) change that can be made more or less right now to FilletSrf and that anything else, other than perhaps a new command with exactly the same code, is not going to happen for V7. How about let’s get it in there, and you can yell at us to do it differently and we’ll see what we can do down the road.


This is not correct. Fillet just means “Rounded Corner”. The term does not refer to its continuity but to its curvature. Breaking a corner instead of rounding it would be a chamfer.

A “Constant Radius Fillet” has a circular cross section.
A “Curvature Continous” (“G2”) fillet is referred to by its minimum radius and or its chord.
A “Blend Surface” blends between two surfaces without the necessity of “rounding a corner”

You are correct in general use. In Rhino a fillet consistently means constant radius cross sections.

I won’t yell at you after the fact. I’ll just chuckle when other folks complain about confusing and inconsistent nomenclature, and you get to explain it to them. :wink: