A few weeks ago I wrote a post called REGEN Rules that presented some ideas for datasharing and layout creation that would (hopefully) mitigate the torturous regen times that some of you are experiencing. Since then, I’ve had a little help understanding more about what is happening in the program. Special thanks to Lisa, one of the developers in Manchester, for helping me brainstorm some ideas and giving me a look behind the scenes.
The absolute biggest problems are often encountered with layouts that feature more than one viewport. Common examples are entrance plans, storm pond detail sheets, record plats, concept plans, and anything else that shows an overall, some close ups, and maybe a profile or two.
Like this one:
What is happening here is that every single model element, object style and label style in both this drawing AND any XREFs is called upon during REGEN.
Let me explain more. Civil 3D objects/labels are not “cached”. Every time you trigger a REGEN, such as plotting, changing layout tabs, typing REGEN, zoom extents, etc., Civil 3D recalculates everything. So, surfaces are checked and contours redrawn. Every label is recalculated and redrawn. Alignments, Profiles, Profile Views… you NAME it. It is called, recalculated and redrawn. If you have a big model, just one viewport in a layout tab could take awhile to REGEN…
When you have more than one viewport in a layout (or if your view is split in model space) the entire model (in this drawing and any XREFs) is regenerated FOR EACH VIEWPORT. Not just the elements that are visible in that viewport, but for the entire model. For the example drawing above, the entire model (contours, pipe networks, labels, about 10 profiles and profile views, parcels and more) would be regenerated six (6) times!
Lisa also set me straight on the whole frozen layer thing. She said that Civil 3D does not call upon model elements that are on frozen layers during REGEN. This means, for example, that if you have a surface in your XREF and you freeze it, that you should see a theoretically faster REGEN. The reason that I was so sure it wasn’t working is that I had so many viewports in my layout that freezing one or two objects from my XREF wasn’t making a lick of difference.
What should make a perceptible difference is freezing any Civil 3D objects and labels that aren’t being shown in a particular viewport in order to limit the extents of the viewport REGEN. (Or using DREFs to limit the number of objects in your drawing, period.)
There are too many other ideas and techniques for one post, so this should become a series. Perhaps it will. Your ideas and experiments are encouraged in comments. Some food for thought: expressions would take longer to calculate than standard labels, and child styles may also take longer. Long enough to make a difference? We shall see.