Slack error reporting inconsistency example

A closed curve – rhino reports no problems, check says object is valid, “what” reports closed curve.

When I go to revolve it,a message pops up saying the curve self-intersects.

Running crvend marks the area where indeed the curve does self intersect.
So if I hadn’t tried to revolve the curve I would never have known about the problem….

Why doesn’t rhino check for self-intersection when the curve is closed…?
Its obviously got the code for it…?


A self intersecting closed curve is a valid curve. Think of drawing the number 8 as a curve, why would that be invalid?
Revolving a self-intersecting curve, however, could give rise to an invalid surface, because the revolved surface would not have a consistent “inside” and “outside”. As far as I have seen, Rhino does try to make the best of it - the message about self intersection is only a warning.

Thanks for your reply.

Certainty a figure eight is a valid 2D curve, but when its used for construction of a 3D entity is where there are problems.
For example, if you try to revolve a figure eight, you are warned it self intersects.
If you extrude it, there are no warnings, but the 3D part is broken into two entities, which is interesting…

However, I would expect to be warned when trying to make a 3D object from self-intersecting curves. In the real world, often a self intersecting curve is something that is not intended, and has come about by user error, or often from importing from other software.
For example see the attached file containing a self intersecting curve.
If i try to revolve it, I am warned.
However, if I extrude it, it creates a 3D object that has a flaw at that point. Now this is a valid 3D object, but its not what I would want, and will cause problems later if its expected this will be part of something that is to be cut or machine manufactured.
So the only way to avoid this kind error is to try to revolve everything before extruding, to see if rhino will pick up any errors, which is hardly practical.

So for my money, this is inconsistent error reporting…

rabbitself_intersect.3dm (34.1 KB)