Bug? FilletSrf Result does not Join

using these settings in the image below the resulting fillets looks good, but it does not join on one side, what is happening? i get it to join if i match it additionally but i can not remember that these steps are necessary usually.

and here the file FilletSrf Unjoinable.3dm (3.4 MB)

Yes this is a bug. Or maybe even a couple bugs that have been tripping up Rhino users for decades.

The problem is your closed surface has internal discontinuities. You can fix the the surface by either running RemoveMultiKnot or DivideAlongCreases.

DivideAlongCreases will preserve the original shape exactly but will break it up into multiple surfaces. RemoveMultiKnot will change the shape slightly but will keep it as one surface. Various Rhino tools create these crappy curves and surfaces like this.

1 Like

The fillet and trimmed closed surface should join as CrvDeviation reports “Maximum deviation = 5.8694e-05” between the edges, well within the absolute tolerance of 0.001.

Use Join on the fillet and closed surface it fails. Then use CrvDeviation and it reports “Curves do not overlap”. So it appears that Join is doing something with the boundary/trim curves of the surfaces.

The cause Join failing is very likely the structure of the “closed” surface.

The “closed” surface is degree 3 x 1 but with only C1, not C2 continuity at every knot in the U direction. This is because there is a multi-knot with duplicity 2 at every internal knot. Geometrically it is degree 2 x 1.

The closed surface may have originally been a degree 2 surface and then ChangeDegree with Deformable=No was used to increase the degree from 2 to 3. Or the surface may have been created from a curve which was originally degree 2 and then ChangeDegree with Deformable=No was used to increase the degree of the curve from 2 to 3.

That is correct but don’t scold the user for doing something weird to make this surface.
This a Rhino bug you should be blaming McNeel not the user. That is why a bug like this can persist for 25 years because the blame is always placed on the user.

You can very easily make this crappy surface with sweep2. A straight loft will make an even crappier version of this surface than sweep2.

Try it:
2rail_Sweep.3dm (2.4 MB)

1 Like

It looks like the issue is caused by a bug in the Extend function in FilletSrf. If you uncheck that, the resulting fillet is not overlapping itself

@Gijs Will the “bug in the Extend function in FilletSrf” go on the heap to be fixed?

thank you @jim and @davidcockey for the nitty feedback.

this surface was caused (if i may blame it so conveniently) by the command Fin which offsets the surface normal to its base surface, i am assuming that this is causing most of it.

i actually tried both and the posted version should be the one with extend unchecked as seen in the screenshot above. both failed though.

It looks more is going on, indeed, but I could get a joined result with Extend=no

maybe the extend check/function is broken on mac, did you use the windows version?

I think my conclusion was not correct

In any case, the looped fillet does not stitch up to itself:

OK that’s another Rhino command that produces this type of crappy surface. There are more commands that do the same.

Rhino is a minefield. It helps a lot to know where the mines are located so you can avoid them.

The edges joined for me also but the ends of the fillet did not.

But the real problem is that Rhino will often make crappy surfaces that do not support good fillets. Even if you succeed in getting the trimming and joining to work you are still left with another crappy fillet surface on top of the original crappy surface that is more than likely to cause more downstream problems if the goal is to model something more complicated than just the 3 surfaces.

Filletsrf should not be making just one fillet. Given that the internal continuity of the base surface is so bad FilletSrf should be producing a string of fillets that correspond to the tangent discontinuities. FilletSrf does this correctly in some cases but does not in other cases like this one.

You might want to use FinSimple on packagemanager. Edit: seems this one needs open curves, sorry

In this case, it might still be that the bug is in FilletSrf. The angle deviation on the Seam is minor:

BlendEdge gives a closed result.

RH-83961 FilletSrf does not join up to itself

1 Like

I do agree that FilletSrf probably should be able to make a closed clamped surface here.

But, the same logic should apply to the Fin command the curve that was used as input was a closed clamp curve with good tangent continuity at the ends and Fin should be able to do the same. Also there is no good reason for all the other internal discontinuities. Its not as if this can’t be made both smooth and accurate like the original curve. And if it was smooth and accurate the fillet creation, trimming and joining would work without problems.
CleanFin.3dm (2.4 MB)

IMO, another bug in FilletSrf is that it doesn’t always break the fillet up into segments at discontinuities. Of course there would be no need for doing that if Rhino was not routinely making these bad surfaces with internal discontinuities.

I agree, and logged this earlier referring to your scripted solution: RH-83062 FilletSrf: split fillets at kinks

OK, Thanks.

RH-83961 is fixed in Rhino 8 Service Release 15