Scale-up breaking validity check
-
I've been designing a few big spaceships for a while with SketchUp, but the last couple of days have had a very peculiar error occur with the Validity Check for the larger models - 300-ish lines like the following, basically:
Results of Validity Check. The start or end vertex for CArcCurve (#####) is not valid - fixed The plane equation for CFace (#####) is not valid - fixed
Now, all I have done to the model is scale it up - it's fine when it's smaller, but bigger versions make the validator go nuts and add in all kinds of weird geometry and faces to the model. I can't actually see any problem unless I select the weirdness in question, but it's frustrating to have the validator grumble every time I open or save the file.
No idea why SketchUp is doing this - I've tried incremental scaling (no more than x1.5 each time to get to the scale I want), using the tape measure tool... none of it helps. It's also occurring to flat planes, so I'm really quite confused as to what's going on here.
What else... I've tried using the CleanUp3 extension, but it doesn't help any: these problems occur regardless of whether I use it or not.
I've attached before & after models so you can poke around if you want. Both were saved in SU 2016.
-
I can confirm. I downloaded your model and got no issues when pressing "Fix Problems" from the Statistics dialog. After scaling up, many problems were found.
It is unusual because the standard advice when having these types of problems is to model at a larger scale, then scale down later. In your case, scaling up causes something to happen that SketchUp does not like.
After looking over your model, the geometry is not very "clean." For example, although the model is hundreds of meters in length, there are still some very tiny edges (less then a mm) which were likely created during intersect operations. SketchUp does not like small edges, and so these may well be the cause.
The model has nice symmetry, and using Components for each section of the ship would make for easier modeling since editing one section would edit them all.
-
@jim said:
there are still some very tiny edges (less then a mm) which were likely created during intersect operations
Are you aware of any plugins or similar that can deal with them?
-
Looking at the way that the faces get triangulated during the "fix" (which I too can reproduce), I suspect the following:
The circular holes in your model are located at off-axis locations and orientations (this is an observation, not a criticism). As a result, their vertex locations had to be calculated when they were placed on the faces. The calculations had typical finite-precision arithmetic effects, but they were initially within SketchUp's tolerance for accepting points as being on the planes of both the ArcCurve and the surrounding face. When you scale up, those trailing digits also scale up, and they come to be larger than SketchUp's tolerance, so it concludes that the circles are no longer planar. Hence all the error messages about start or end vertices of a CArcCurve not valid. The fixup moves the points so that they are once again coplanar to within tolerance. But this convinces SketchUp that edges have been moved in your model, so it draws new edges from each circle vertex to the corners of the plane or to the neighboring circle (or in some cases both) in an effort to make sure every face is planar.
I found that I could delete a lot but not all of the new edges without losing a face. My interpretation is that the ArcCurves are repaired based on the plane defined by their center and normal vector, not based on the surrounding plane. Just like the vertices, the center and normal contain finite-precision effects. As a result, some of the "fixed" vertices come to lie in the surrounding face during the fix, but some do not.
To me this all suggests a possible alternative strategy for your model, building on what Jim already wrote: if you use Components instead of loose geometry, when you scale up, the geometry itself is not modified, only the transformation that maps it into model space. As a result, there is no need for SketchUp to recalculate any geometry during the scaling nor to fix up the model if it was ok before scaling. I tried this by making a single Component of your entire model and got no errors or fixups after scaling up by 64x!
Equally important, since there is a lot of repeated structure and symmetry in your model, you should be using Components for many parts and placing/rotating instances to assemble the whole.
By the way, I agree that this behavior could arguably be regarded as a bug - though some could also argue it is just a result of pushing the limits of model accuracy.
Edit: I wrote a little Ruby script that explores the planarity of an ArcCurve via the Ruby Console. It verified my theory: scaling up causes some vertices of some circles to be off plane by more than SketchUp's tolerance.
-
Thanks both of you for the prompt replies. Learnt something new from this as well
.
Anyway, I've "fixed" it by re-doing it at the desired scale, though from what you say slbaumgartner I could have just scaled up a component - oh well
. Should at least go quicker & easier next time.
Advertisement