Angle-convex aware fillet

Hi community,

I have the following geometry that I want to fillet, such that:
1 ‘convex’ points (3, 4, 6, 16, 8, 9, 12, 11, 1, 0, 20, 19) are filleted with larger radius
2 ‘concave’ points (all other points) are filleted with smaller radius
3 If possible, I want the ‘larger’ radius in 1 to be adaptive, so that radius on 3, 4 is smaller than that on 6 or 10
4 (bonus) make it so that, fillet amount on 10 is greater than that on 6 (with the same radius, fillet on 10 will look very tiny–I mean the ‘length’ of the curve created from filleting)

My hope is to make it so that, the fillet on 6 ‘looks like’ an offset from 17, keeping the constant width of the walls after filleting. If 6 and 17 have the same fillet setting (e.g. radius), the wall will get super thick at this corner and look ugly.

I’m hoping to make some GH algorithm to automatically detect the appropriate fillet amount for these, so that I can plug into components or code that does the filleting for me.


fillet.gh (12.6 KB)

thye first “round” of fillets you can get by filletting the curves before pipe/offset, this take cares of fillets of the same corner on opposite sides

and a second round for the remaining ones?

fillet_inno.gh (17.4 KB)

1 Like

Isn’t 10 also convex?

2 Likes

Thanks so much for your help inno! I will try this out once I get back to my computer

1 Like

You’re right David! Having to enumerate the convex/concave parts without inno’s method is prone to omissions as I did here, even in this simple example

Works super well. Thanks again!

1 Like

It’s a pretty tricky problem to solve, especially if the fillet radius has to mathematically depend on the corner angle in a completely free way.

I’ve added a component to GH2 which fillets all corners of a curve based on the angles, and you must provide a function which maps corner angles (either in degrees or in radians) to fillet radii. I’ve defined the corners in such a way so that concave ones are negative.

Zero radius for all negative angles:

Zero radius for all positive angles:

6 Likes

It won’t give you radii dependent on angle, but to set radius A for all convex corners and radius B for all concave corners, you can offset by +A, -A, -B, +B consecutively.
(the opening and closing operations in Mathematical morphology - Wikipedia)


fillet.gh (11.5 KB)
(same idea shown here)

7 Likes

Thanks very much David! Another way to say my ‘length of the curve created from filleting’ is the Chord Width setting in Solidworks’ Face fillet option–it looks at the distance of the ‘chord’ between the filleted edges and adjusts radius to make it work.

The component you added seems very useful. I hope GH2 fully comes out soon! :pray:t3:

Thanks a lot for your help Daniel! Being able to auto-identify convex and concave corners is awesome!

My hack has been to use BREP to identify closed and open borders, but that doesn’t work well (1) without the refined filtering Discontinuity provides and (2) the extrusion of the filleted part of the curve breaking once I use Solid Difference of Split Brep and (3) of course having to get the curves themselves ‘back’ after everything