# Animals in the garage

How about rhino calls circles, arcs and other geometric entities by their name, instead of calling them all curves?

Why?

Because rhino itself is fussy about the way it treats them.

So, if I have an isocurve extracted from a 3D wheel for example, it looks like a circle, but rhino wont accept any snaps to its center and so on.

So it has to be changed to a circle either by creating a circle over it, or calling curve-to-arcs.

If this curve-but-not-a-circle is selected, along with another curve-that-is-a-circle, that I have created alongside it with the circle command, the command line says: “2 curves added to selection”

Now this is actually true in that they are both curves, but its not useful since, well, one is a circle and one isn’t….

Its like both tigers and squirrels are animals, but, although true, its not helpful to say there’s a couple of animals in the garage; rather you’d like to know one was a tiger before going in there to do the laundry or whatever…

Further, when dimensioning a 2D set of curves (derived in this example from the centerlines of pipes) rhino will allow the radius dimension command to dimension curves-that-are-not-arcs, so it knows where the center is, but it wont accept angular dimensions, returning “curve is not an arc” to the command line.

So a curve can be an arc, but not be an arc at the same time.

Further, if the curve-that-is-not-really-an-arc-even-though-rhino-knows-the-radius is converted to an arc via the command mentioned above, it can still be incorrect, as evidenced by the angular dimension looking at only part of the curve-that-is-now-supposedly-an-arc.

So you have to delete the not-really-an-arc and redraw the arc, using the arc command, which you can do with accuracy, since you can use the radius dimension center as reference, left over from dimensioning the not-really-an-arc-at-all….

So I vote for always calling anything that rhino thinks is truly an arc, circle etc by their proper names, to distinguish from the ordinary curves masquerading as phantom arcs.

cheers
rabbit

SimplifyCrv…

Arcs and circles that were used to make surface edges, by the fact that they have been recalculated to be part of the brep definition end up being NURBS curves even though they are within tolerance of the original arcs/circles… When you extract them, Rhino does do some of this simplification automatically - try duplicating an edge of a cylinder, it will be a true circle - but it can’t always manage.

Well, not really. The Radius command shows the local radius at the selected point on a curve and works on any curve including non-arc splines. So the fact that Radius works is not an indication that Rhino knows that the object is an arc but is stubbornly refusing to tell you so.

SimplifyCrv…

Yes, and thankyou - I do get that. (however, simplifyCrv doesn’t always work - as per an example I have here.)

Anyway, the point I was trying to make somewhat flippantly still stands - you can waste a lot of time dealing with arcs and circles that are not true geometry, and which rhino just unhelpfully calls “curves” when selected. (although the “what” command will note if they are circles for example.)

If rhino would call them by their geometric names when they met those criteria, I think that would be helpful.

I suppose an alternative might be an optional cursor pop-up that supplied this information when an entity was selected, perhaps along with layer, and other information which may be helpful, and which one may select via checkbox options for the command…

cheers
rabbit

I see what you are tying to solve here, and I do not mean to minimize that, but how about a way to visually tell if a circle-looking curve is a circle or not without even having to look at its name?

For example a macro-script that selects all circles/arcs in a file and sets them to a unique thickness/color/appearance. So you could see right in your viewport with curves are just curves and which ones are true arcs/circles.

G

Yes, that is a very good idea!
Perhaps a toggle, so you could flip the display to show the geometry to check, and again to flip it off…

So we are all animals here, but some of us are A-level predators…!

cheers
rabbit

There were some bugs in V5, I don’t know if all of them have been squashed in V6, I think V7 should be better. I have a script to simply the “recalcitrant” circles (but not arcs) in that case. You can enter a max tolerance value, if you enter 0, it will simplify any planar closed curve to a circle…

If near-circles don’t simplify though, it is usually (except for the buggy cases mentioned above) because the deviation from a true circle is larger than the file absolute tolerance.

SimplifyRecalcitrantCircles2.py (3.6 KB)

here you go…

no curves simplified.3dm (62.7 KB)

your python doesn’t eat the example I posted for inju…

cheers

How did you get this periodic NURBS curve?

extract iso curve from a model of a wheel…

Sure it does - if you input the correct tolerance. Your red ‘circle’ is out of round by at least 0.013 in spots, the file tolerance is 0.001. The script works to convert the curve to a circle at a tolerance value of 0.02. SimplifyCrv would only work if the ‘circle’ was closer than 0.001 to a real circle.

Thank you.
Tried many wheel models from here, failed with the ExtractIsocurve team to extract the periodic NURBS curve.