Gh fillet fail

Hi!

I am trying to fillet the ‘ridges’ of a ‘pyramid’ shape. The problem is, the fillet fails: the peak vertex of pyramid turns into a hole/gap, instead of a rounded patch

I now try to fillet the vertical direction first, and then the horizontal. This still fails. I want a slightly bigger (0.4 or more in the file). But the fillet fails completely.

What could be wrong here? I need g2 fillets, and this seems a pretty simple situation (just four edges meeting at one point) most software have no problem handling.

Thanks a lot!
fillet_fail.gh (13.5 KB)

You’ve got a pretty nasty problem with that shape. The problem happens after your first fillet which looks like it works fine. Actually it does, but it makes a real problem for the second fillet. I don’t see an obvious way to get around this.

Here are the edges if your original shape:

And here they are after your first fillet:

See the problem? Note that the single edge down the center has been replaced by 2 - 1 on either side of the fillet. Except it isn’t really 2, it’s 4, and that’s because the perpendicular edge has been split into 5 separate edges - 3 long ones and 2 very short ones. You have to take the output from the first fillet operation and use that as the base shape for any subsequent ones because the Fillet component can change the way the remaining edges are defined.

The same thing happens if you fillet the other 2 edges leading up to the peak. So I don’t see how you can get around this - unless you convert your base Brep to a mesh and do some sort of mesh smoothing. But this will (I think) round off all the edges, not just the 4 sloping ones.

I made a mess of your file by adding a bunch of Edge and CherryPicker components which you can play with to see the problem for yourself. I’ve actually run into this same problem a few times myself. Since I don’t like meshes I just gave up when I found one of the pre-filleted edges split into multiple parts. Someone else might know of a clever way to resolve this without meshing - if so I’d like to see it.

fillet_fail-bb1.gh (28.3 KB)

1 Like

Thanks for your detailed reply Birk!

It’s surprising that for most software, the problem (filleting an edge made of many edges) is not a problem.

Even when I fillet the other direction first (so no extra edges created), the patch at the top of the ‘pyramid’ is not curvature continuous (in fact it’s g0), which makes me wonder the point of the fillet function (and what I am missing here)

I’ve used the fillet routine a lot for the simple geometry I 3D print. In most of my cases it works pretty well.

I’m guessing about this, but I think the problem you encountered has to do with the fact that Rhino’s Nurbs surfaces have to have 4 distinct edges, period. So if you fillet one edge and by doing that you create an extra surface, it has to have it’s own 4 edges.

1 Like


I think this mismatching is the problem.

1 Like

Filleting the other two convex edges first results in less edges.

Using a regular fillet blend type and Rail Distance metric, the result can be closed, depending on the radii.

fillet_fail.gh (20.2 KB)

2 Likes

Thanks for your help! Yes the fact that we have a curvature continuous (I believe) edge made of many small segments that causes fillet problems is very surprising because I get the impression this is a Blender kind of problem (fillet not working without ideal topology)

Thanks for your help Martin! It seems that the main problem is gh’s handling of the top patch (where the fillets run into each other). Even when it works (small enough radius) in g2 setting, the top patch is only g0 continuity to the surrounding faces. It looks like fillet just doesn’t work in gh when more than three edges run into one vertex

I don’t think the problem is just a Grasshopper problem. This is how Rhino creates fillets.

Does this look / work any better in another CAD software?

Blockquote Does this look / work any better in another CAD software?

Creo using same fillet for all edges:

Using different sizes for x-y curves:

Fusion360 yields identical results:

1 Like

You can do it easily in Rhino with the FilletSrf command.

Just use the extend and trim option in FilletSrf to make the 4 fillets that connect the 4 base surfaces.
Then split (by Isocurve) each fillet where it contacts the fillet next to it
If the pyramid is symmetrical, the 4 ends of the fillets will be the boundary for the spherical patch at the top.
If the pyramid is not symmetrical the ends of the fillets will define two 3-sided spherical patches with a short connecting fillet between
pyramid.3dm (183.6 KB)

Making it with 2 different size fillets is even easier. Just make the 2 bigger fillets as before and then wrap the string of 6 smaller fillets over the first two. .

1 Like

This works fine with Rolling Ball and 0.4 radius.

@Gears_Gears I see it fails when blend is used instead of a regular fillet… and I was wrong, Rhino creates the patch correctly with the Blend edges command and GH doesn’t.

2 Likes

Occasionally I just feel Rhino fillet is a luck problem. Not a complaint, but a real feeling.

3 Likes

I see! This cross-shaped blend looks great! It’s a shame gh can’t do it

2 Likes

what lol.

I’m starting to think ‘rolling ball’ is a fallacy of logic. Doesn’t a ball only roll on two points of contact if those points of contact are continuously parallel?

Maybe it should be called dragging ball or smearing calk. Or thrown out cause it’s a terrible concept.

In actual manufacturing, CNC machinists use full nose radius tools or concave radius tools or lollipop cutters or undercutting endmills, etc.

Where does this rolling ball ideology even come from. It’s a bad approach to the entire filleting realm.