What is the reason that some actions breaking circles and arcs?

Coming here from another topic: How do I find the centre of an object?
Just curious: What is the reason that some actions breaking circles and arcs?
As a test I created a cilinder. when I draw 2 lines over the softened lines from circle to circle, the circle is not recognised as such anymore. When I soften and smooth the lines it does not become a circle as you would expect but stays 2 arcs. 1 arc of 23 sides and 1 “arc” of 1 side wich is in fact a straight line or an edge…

Edit: I just unsoftend and unsmoothed 2 lines on another cilinder and the top and bottom remain circles…

EDIT: The following comment I made is incorrect, but I’ll leave it here for conversation context.

‘Sketchup seems to forget that they’re circles if the lines making up their perimeter are above a particular threshold in length. I don’t know what that is, but I have spent years frustrated about it. One day hopefully Sketchup will use Vector Circles or something. If your circle is big with a low line count, Sketchup does not recognise it as a circle at all.’

It has nothing to do with the length of the segments!
A circle breaks after some actions that do not alter the segments length.

Don’t get your hopes up. SketchUp has always worked this way and I’m pretty sure that won’t change…

The basic data representation used by SketchUp is inverted from that used by some other modeling apps. In SketchUp, polygonal faces and line segments (edges) are the fundamental datatypes. This design was likely seen as a good match to the sort of geometry most common in architecture, which is what SketchUp was created to model. There is also little math required to prepare the parameters of faces and edges for passing them to the graphics hardware, because that’s what it also works with. Modern graphics hardware can efficiently handle zoom, orbit, and pan operations once the faces and edges are passed.

But this fundamental representation means there is no such thing as a circle or arc datatype. Instead, SketchUp’s database attaches metadata to the series of edges representing a circle. When you modify a circle after it is created, you force SketchUp to consult this metadata and regenerate the edges based on the new parameters.

But some kinds of modification, especially sharing of vertices with other geometry, make this operation impossible. SketchUp can’t revise the edges if that would put the end of an edge in the circle at a different location than the end of some other edge not in the circle if they share a vertex. So it is forced to drop the metadata and the circle can no longer be modified as such.

In the other apps, the mathematical parameters of the circle are fundamental in the database, and the presentation on the screen by the graphics engine must be calculated on the fly from the circle parameters to create things like edges and triangles that the graphics engine can handle. The calculations must take into consideration things such as zoom to decide on a number of triangles and edges that will look good on the screen. These calculations are more overhead than what SketchUp has to do, but enable keeping the circle as the basic datatype.

Given this basic difference in design, it would be a massive rework of all of SketchUp to convert it to have true circles - effectively tossing it out and creating a new app from the start. Not likely to happen!


I have to disagree.
It’s not the case, at least for the ones I just created:

  • a 3 side circle with radius of 1 mm
  • a 3 side circle with radius of 30,000,000 mm (30 km)

Both of them in the same modeling space with the same center. Both of them are still circles.

Other connected geometry or operations upon them (creating new geometry) may detach them from their metadata… see post above by @slbaumgartner to explain circles metadata

1 Like

Thanks Steve for the comprehensive explanation!
It’s a bit hard to understand as English is not my native language and I’m not software-tech savvy but I think I get the idea…

You’re right, sorry. Its not a segment length issue after all. I observed incorrectly. As for circles and spheres, I don’t think they will always have problems. Its just a matter of time before the coding is improved.

Yes, I was wrong. It’s not segment length that breaks circles.