A slow part drawing and how I fixed it with a weird trick (not exactly, but sort of...)

BACKGROUND
Before I begin, I should say that we have a lot of SW data, dating back to 10+years ago. At that time I was not in this company and probably a lot happened back then so I cannot really blame the persons that were in charge of 3D. Hardware was slower, SW was a mess and they started to change things like cutlist properties, threads and other stuff that broke the backwards compatibility of data a lot of times during the years.

We made the mistake to wait until few years ago to overwrite our old templates from 2011, when I remade them all from scratch. Old templates were, capability wise, at least two big file structure updates behind in the way SW handles its files and this is likely the reason we had all sort of odd balls (like bodies changing materials on their own, properties linking to the old file the model was based upon, cutlists exploding), on top of very slow drawings.

Performance evaluation tool is very handful. Use it!
A rough comparison of my data before and after the fix

SAMPLE DATA
~500 bodies weldment, 100~200 features

The geometry after the fix is 100% identical to the one before it.
Also 2D drawings were overlapped to check and almost nothing noticeable was missing.

BEFORE AFTER
File Size (SLDPRT) 40 MB 8.8 MB
Rebuild time (SLDPRT) 3.3 s 1.7 s
File Size (SLDDRW) 24 MB 8 MB
File opening time (SLDDRW) 2 min 40 s 42 s

I fixed the 3D features to speed up the rebuild time and I was able to halve it. Then I disabled the detailing mode in drafting, but it was not enough: at that point I looked at the status bar during drawing loading phase and I noticed some view was rebuilding with a file different name: I looked in the drawing tree,feature tree, all the properties and the file references and that was nowhere to be found.

After some search in our PDM system, I tracked the data the current file was derived from… and the one before it, and so on up to something like 10 file generations ago and the mysterious file name came out!

In the end there was a view in the drawing, a broken section in a big front view that was referencing a old file name and it seems SW was still looking for it during the loading phase and during all the rebuilds…
It was invisible in the tree, but clicking inside that broken section view on some face the linked feature was named after a different filename. All I had to do was to remake the broken section (I copied its sketch before deleting the section so it took little to no effort to remake it with the help of a screenshot to match the exact position)

SOME BACKGROUND AND GENERAL HINTS

I have made some funny experiments in the past, and tampered with SW data quite a bit. I have some tools I made by myself to apply and reset settings in SW data. (cannot share since those are workplace property, sorry)

Basically I came to the following conclusions:

  1. a faster drawing needs a faster rebuild time in the 3D as a basic premise. Every feature that requires more than 0.1s to rebuild must be scrutinized. In theory we should aim at a rebuild time as close (low) as possible to “number of features in the model x 0.01s” (back of the envelope math)
  2. geometry patterns wherever possible (+disabling face properties option ON as a bonus)
  3. proper use of “body pattern” and “feature pattern” (limited to holes and cuts only, no solid features like chamfers, extrusions allowed). If you want to pattern a complex geometry disable the boolean merge and use pattern+booleans. (faster and likely one of the few modelling calculations that can run in parallel on multiple CPU cores)
  4. splitting a single body pattern into multiple patterns sometimes may help to reduce drastically the rebuild time. (the sum of rebuild times is sometimes lower than a single, fat, pattern)
  5. in principle keep your files up to date, with the newest cosmetic threads and weldment properties, but check if the update breaks something. (I had a part doubling the rebuild time after applying the cosmetic threads update and it cannot be undone, so make some backup before trying)
  6. check inside the 3D custom properties, the configuration properties, cutlists and the external references if the file references something that should not be there. Usually the file properties should reference the current file only and it is a best practice of mine to avoid external references at all.
  7. check every single view and apply high quality instead of the old (slower and bug prone) draft quality. Disable the surface view from all the sections. Keep the cosmetic threads on draft for views without them since it causes a graphic glitch showing thread circles that was supposed to be hid behind other geometry. I made a macro that cycle all the drawings view in every sheet to batch apply these settings.
  8. sometimes a section gets corrupted and it cause a long calculation time. The “less destructive” way to rebuild a section view I found is to temporary reverse it (flip the arrows on the section line) and revert it back. The dimensions on the section view might hate it, but sometimes it is better than delete the view and remake it, worth a try.
  9. DISABLE detailing mode: it causes a huge overhead in the drawing most of the time make the size so huge it takes forever to save and nobody use it. In the sample data I analyzed it made the file 3x the actual size
  10. double click every view and check for dangling or broken sketch relations: delete or fix them.
  11. Broken sections are heavy, avoid them if possible.
  12. for multibody parts, instead of hiding dozen of bodies in a view use the “body selection” option to generate the view, with a fewer bodies. BE AWARE to not abuse “body selection” as the derived views are not updated when the selected bodies are changed and there is an open glitch with details that go blank for no reason. Body selection cannot be undone once used!
  13. Check and reduce the tessellation resolution and the line overlap check on drawings. From documents properties. At least make sure it matches the one in your company templates.

RANDOM SUGGESTIONS

Use the drawing compare tool to check if you broke something while trying to fix your drawings: it does not require a special license! It makes a BITMAP comparison of two drawings and it gives you the BEFORE / AFTER and ADDED/REMOVED comparison with colors. Even a pixel shift on minor things like the section letters does not go unnoticed.
It is a very cool tool.

To compare 3D I make a temporary assy and overlap the geometries before and after the fix. Clicking one of the components makes the highlight very easy to compare. It is not a proper calculation, but we used a similar method in Unigraphics and it was reliable at 0.01mm level to catch the differences: select one body and wireframe with a unselected color is where the difference lies. Cheap and reliable.

Another thing to watch out for is the view palette. I have seen drawings reference models that aren’t in any view, and refreshing the view palette corrected the problem.

Thank you!
I had forgot it since I have eliminated the view palette in our environment because of that. :joy:

The References on the open did not show the file it was looking for,


Or the file, find references did not show it.

Thanks for sharing!

File, find references did not show other external references. it was the status bar to give me the hint, it was regenerating 2 festures from an unrelated file… probably the file was not even loaded and SW looped somehow? (my guess)
Remaking the section drastically improved the file performance.

Detailing mode data and other garbage amounted to more than 60% of the initial file size…

I guess that with older files it did not keep good track in there. On some occasions I will find files linked there. Only time we really go back to a drawing is if we are making changes to them, which is not that often thankfully.
I have seen some strange hidden views in drawings to get detail section views and other details on the drawing but most of the time it is all from one model and not some other ones.