(this has a long preamble. I think it’s needed, but the question about how to write an actual definition is below in bold if you want to skip ahead)
There seems to be a lot of confusion about how to use the fillet edge component in Grasshopper.
I’ve read a bunch of posts about it and I think one issue may be a key difference in how Rhino’s _FilletEdge command works and how the Grasshopper component works.
In Rhino, if attempt to fillet every edge of a polysurface, Rhino will automatically ignore naked edges and linear edges that divide two subsurfaces with continuity that’s tangent or better, because neither of those edge types can be filleted.
Thus, if I attempt to fillet the objects below and select all edges, I get this:
And filleting just works:
But in Grasshopper, the Fillet Edge Component does not filter out these edges. So if a user wants to fillet all filletable edges of a brep in Grasshopper, they need to be able to sort the edges shown below out of a tree.
(Question begins)
I have a way of doing this sort, which I’m sharing below. But it’s incomplete. I’m hoping someone can help me out. Here’s my definition:
My definition works by culling all linear edges of all non-planar subsurfaces of the breps.
(This also appears to be how the Rhino _FilletEdge command ignores the same edges.)
But there can be other types of edges that can’t be filleted and will cause the Fillet Edge component to fail. I want to cull those too.
My Question is: How do I cull all edges of a brep that are
- interior edges
- edges with a surface continuity of tangent or better.
I believe these two traits define which edges of a brep can never be filleted to any radius.
The Fillet Edge component will ignore naked edges on it’s own and return an error mentioning them, so I didn’t bother culling interior edges. My definition fails to be universally usable because it doesn’t cull curved edges with tangent or better surface continuity. I think Rhino’s FilletEdge command also doesn’t do this.
Are there Grasshopper components that can test surface edge continuity?
How can I use them here if they exist? Is there another way to get this done?