Sketchup slows down a LOT when deleting ANY object - how to troubleshoot?

I have a lot of extensions installed, which I need for work. Problem is, some of them are randomly causing Sketchup to “freeze” for a second or 2 when deleting objects. It could be a simple line segment, nothing heavy, but it keeps freezing every time, which ruins my work flow.

Is there any way to troubleshoot exactly WHAT is happening “behind the scenes” when objects are interacted with?

I’d only really expect this kind of thing if you had a model with thousands of entities

Does it do this on a brand new file empty if you draw something and delete it?

No, it doesn’t; this usually doesn’t happen, it’s just occurring on a very complicated house model which uses a lot of dynamic components (brand-name doors & windows & railings, I have to use the specific ones according to the spec list + I need them to be dynamic because we’re making several sizes of houses).

It almost feels like every time I delete something, all the components recalculate, or something like that. It’s not a graphics issue, there’s no frame tearing or anything like that, it just “chokes” for a second or two, and then I can work again.

Short of taking apart the house piece by piece and trying to narrow it down in terms of what component / s are interacting with which extension, I really don’t know how to solve it.

I wish there was like a “Task Manager” in Sketchup, so you could see, for example, “Extension ABC is using 100% of the CPU” and know where the problem is…

I see that happen if you have lots of nested groups which are instanced. Even outside of SketchUp there are optimisation topics that need to be dealt with if you have modelled with lots of instanced geometries- I have scripts I have to run to deal with it even in sometime seemingly sophisticated and magic like unreal stuff engine if I’m bringing geometry from Revit or rhino.

Try finding any components that are repeated lots and have lots of other groups/components inside.

Plants that are made of nested branches and leaves cause issues like this.

A typical not plant situation where this might be the case could be a small railing assembly . A top a bottom and then 5 instanced rails.
This component is then present 800 times in the model.

Open the component and everything inside.
This will cut down on the number of checks that SketchUp is required to do across the model as you edit.

There are a couple of extensions useful for finding information about the current state of geometry and entity instancing - CG impact report is one and Goldilocks Geometry is another

2 Likes

You nailed it. It was the railings generated by a plugin. I don’t have 800 of them, but a couple of dozen per house. But that’s still 100s of sub-components.

I have Goldilocks Geometry but I wish there was a way to isolate the targeted item, because often it’s something like a logo plate on an appliance, and merely pointing the camera in the general direction of the appliance doesn’t help me to guess WHICH part of the appliance it is.

You could try my Statistics Probe extension available from SketchUcation. It has a tabular version and a visual version. They both walk the model hierarchy interactively to let you see where the “weight” is coming from. The tabular version is faster, but you have to follow up with outliner to identify the specific offender, which can be difficult unless you always name your groups as they will all appear just as “Group” in the SketchUp outliner. The visual version zooms the model view to the offender and highlights its bounding box so you can see exactly which it is even if it is not named. Due to the zoom and highlight, it is significantly slower than the tabular version on a very heavy model.

CG impact report has an option that selects the item - or if you can see the offending item, search the outliner for its name.
Nowadays I think that most machines and SketchUp’s renderer can deal ok with the amount of geometry - however the number of groups/components or even materials in a model has a big impact. It gets worse the more they are nested

Oooh, this is SO much more helpful than Goldilocks!

Would it be possible to make a version / update of it that either adds the info to the Outliner (i.e. “Sketchup native name” - “# of edges” - “# of polygons”), and lets you sort/filter by them, or if that’s not possible (i.e. it’s a protected system function), generate its own persistent list like this? Would make it much easier to navigate.

The Outliner is not exposed in the SketchUp Ruby API; its behavior can’t be modified or manipulated directly by an extension. As implemented, it sorts by name only.

So if the extension was coded to modify the names of groups and component instances, it would require pre-pending the edge count to the front of every group and CI name. I think that would result in a confusing mess - but try doing it manually and see if it works in a useful way for you. Also, the Outliner’s search function looks only at the names of groups and CIs that are not hidden by being nested in non-expanded containers. So, you’d have to expand all in the Outliner to be certain you found what you want. That would likely make the Outliner window huge and unwieldy.

Have you read the user’s guide for the extension and tried its interactive features? They are supposed to let you quickly identify exactly where the weight is coming from, including by drilling down into containers for which some nested object owns the problem geometry. The visual version directly shows you the offender, which to my thinking is more useful than any action in the Outliner.

That said, if you can argue a convincing use case, I am not categorically opposed to changing things.