Grasshopper

algorithmic modeling for Rhino

Error thrown by Fillet component when Radius input set to specific value

I have a GH definition to build a closed planer curve.  Then I feed that curve into the Fillet component along with a desired radius.  I've attached the gh for building the planer curve and seeing the fillet error.

Two things I notice:

  1. If I set the radius to 3.0 I get an exception thrown by Fillet.  Setting to 2.9 or 3.1 and I don't get an error.
  2. The results on the Fillet aren't consistent on the corners of the planer curve.  I can visually see that the radius applied to the corners do not appear to be the same.

Views: 1414

Attachments:

Replies to This Discussion

In general you should use a filleting radius that fits your curves. Once two corner fillets meet, the original segment vanishes.

Now fillet corner walks along the curve and sequentially applies fillets. If the next fillet would intersect the last, it seems to be ignored. Now I don't know how exactly GH determines fillets on vanished segments but it looks like subsection of the curve from the end point of the current fillet to the next corner point is used.

For a radius larger than 1.9, not every corner can be filleted. The first (bottom left) is ok, the second is ignored, all others are ok until the next to last (top left), which is ignored again.

For a radius of 3, fillet end point and next corner point are coincident. The result is either a invalid curve or, as it looks like here, a null-object (Object not set to a reference).

For a radius larger that the first fillet fails, which makes for a different result in the skip/success sequence.

Ah, your explination helps me to understand why the radius on my curve are not consistent.  Specifically, I'm talking about the sharp corner points of the curve in the bottom left corner and the top left corner.  I'm hoping to just fillet those corners, but as I apply the Fillet component I get the bottom left corner to fillet in a certain way, but the top left corner displays a fillet that doesn't "match".

Your explanation helps me to understand why that may be so, but also begs the question; how do I get those  two sharp corners to fillet the same?  Do I have to explode the curve, extract the sub-curves that contain just those two corners, apply the fillet to those two sub-curves, and then combine all those curves back into a single curve?

As to the problem with Fillet throwing an exception Object not set to a reference when the fillet radius is set to 3...  Personally I think this should be corrected in the component code.  There are many settings for the fillet radius in which the fillet can not be applied.  The component handles these just fine and doesn't throw an exception - it just doesn't apply a fillet.  I would expect that the same capability would exist within the Fillet component to handle the situation where the fillet end point and next corner point are coincident.  In such a case, if the fillet can not be applied then simply do not apply the fillet -- throwing an exception doesn't seem like the correct behavior.

Okay, while GH handles the cases somehow, that doesn't mean, the input and output makes any sense. But you are right, the component should gracefully

For your fillet radii larger than 1.9: If you would try and fillet the curve in Rhino, you would get different results depending on which corner you start from. If the sub segment is too short, there is no valid way to fillet that curve.

Why is that? Take your radius of 3 and fillet the first corner bottom left. Now the fillet joins the arc on the bottom right. A fillet is an arc of a given radius, that starts and ends tangential to the given curves. You might see that filleting an arc is only possible, if the fillet radius is different. Otherwise, you would try to extend the arc from any point on the arc, trying to find an intersection with the other curve, where the arcs extension is tangential to the other curve... in short: not possible.

The most consistent "workaround" would be to find and completely ignore any segment that is to short and instead fillet the two adjacent curves to the ignored segments. This is likely to f*ck up your geometry, as you put the short segment there for a reason in the first place. This will fillet all sharp corners but messes up the original dimensions.

The other "workaround" would be to do your fillets one by one. You'd start with the corners, you'd like to priorize and skip subsequent fillets if they fail. This keeps original dimensions but cannot fillet all sharp corners.

I'm moving this to the bugs topic area as I believe this is a problem with the Fillet component.

RSS

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service