19 October 2012

Too much Detail: Why is my computer so slow?

As BIM gets used on larger projects one on the most common complaints is how slow, and hence frustrating, working in Revit becomes. Using a more powerful computer only helps up to a point. There are metrics on what specifications a computer should have (which I won't go into in this post), but even an adequate computer won't make working on a large project the pleasure it should be.
Many people blame large file sizes, after all Revit project files of 400Mb are not uncommon.
Those that still think the CAD way believe that splitting a project into a number of linked files will solve the problem.
But if  Revit is to do all the things BIM is useful for, everything needs to be instantly accessible. Therefore  everything has to be in one file, or if in several linked files all those files need to be loaded in to your computer at once.
The reality is file size in itself, whilst an indicator of underlying problems, doesn't have a huge impact on working in Revit. The worst it does is slow down opening and saving the project file (which can still be a pain).
A greater culprit is graphic complexity, or geometric density. The more 'stuff' Revit has to deal with the longer it takes to do anything. Geometric density effects Revit in two ways: view regeneration and constraint calculations.


The slowing of view regeneration is caused by the complexity of calculating hidden line removal.
I can appreciate this because back in the late 1980's, when AutoDesk released AutoShade, it would take 36 hours to do a hidden line image of a pretty simple office building. Which was longer than it took to manually trim out the hidden lines.
You may notice that software that is faster than Revit at showing 3D, like Navisworks, always uses a shaded view, no lines. In fact you can speed up 3D views in Revit by using Shaded visual style with Show Edges unticked. Try it on a large project.

When I say 'stuff', I mean detail. Every extra line that has to be calculated adds to the load.
The company logo on the Blanco cooktop family adds 136 lines that Revit has to deal with. And Revit doesn't know it is just a logo and not important.

Besides the number of lines, curves also present a calculation challenge. The line Revit draws to represent the edge of a curved surface is not based on a fixed location. Its location has to be calculated based on the angle you are viewing it from. The more curved surfaces, the longer Revit takes.


Everything is connected in Revit, the more complex the things the object you are working on is connected to, the longer Revit takes. I had a situation where it was taking just under a minute to draw a wall in a car park. We racked our brains, ransacked google, but to no avail. Then we noticed it took no time at all to draw the same wall outside the car park floor. After some help from AutoDesk we worked out it was the Room placed in the car park that caused the problem. The car park floor was large with complex edges, and had a single Room element placed in it. Whenever a new wall was placed Revit was recalculating the Room area, (and whatever else it calculates), causing the delay. This is an extreme example, but the lesson is Revit does a lot of calculating on the fly. And although this may not be noticeable on smaller projects, it become significantly noticeable on large projects that are over-modelled.


I see this all the time. From the mechanical drafter creating photo-realistic fan units no-one will ever see, the new Revit user modelling a walking stick to place in a hospital project, to every family I have ever looked at provided by a manufacturer (a sink that included the bolts, wing nuts and brackets to install it is my favourite). And not just families. Existing conditions that are to be demolished modelled as if they are going to be rendered, curtain wall mullions modelled to shop drawing detail standard. The list goes on.

Here is an example of a chair in an elevation view. The simplified version shows the geometric extents of the chair without all complexity that the realistic model shows. To represent how many extra lines there are I printed both to separate PDF files. The realistic model file was 2.7 times the size of the simplified model file. When there are 10 chairs it goes to 4.5 times larger, and the time to process the realistic model file was noticeably longer.

Why do people do it?
Why do all that work when it will never be seen in any of the 1:50 to 1:200 scale drawings they appear? It wasn't such a problem with CAD, why is it a problem with BIM?
Because they can.
Revit has the tools to do exquisitely realistic modelling. And they are not that hard to use. Learners are the worst culprits. They think they are doing a good job (and they are if the task is to produce photo-realistic renders), but are completely unaware of the consequences. Other culprits are contracting BIM 'experts' who don't stick around to see the consequences of their work,  design architects who rely on photo-realistic images because they lack the imagination to visualise their design, and those who don't use the software but direct those who do, like project architects and directors.

I really see this issue as one of the biggest facing BIM use at the moment. Hopefully in the future as people become more familiar with BIM and computers get more powerful it will diminish. But for now it can't be ignored.


The first step is to define the scale everyone needs to model to.
It is a simple metric that is easy to imagine and test. For example specify that only elements and detail that can be seen on a 1:100 drawing be modelled. It is easy to calculate the size of the smallest elements that can be modelled. Assuming a 0.25mm line thickness is used, anything smaller than 25mm will appear as a single thick line on a 1:100 drawing.
Specifying 1:50 (which is probably more realistic), anything smaller than 12.5mm will appear as a single line.

There is little point modelling to suit construction details. It is not possible to produce readable detail drawings from a realistic model. Things are too close together.
Flashing is a typical example. Steel flashing is 0.6mm thick. On a 1:5 drawing that is 0.12mm. By convention flashing is drawn using a thick pen, say 0.5mm, 4 times thicker than the flashing. And flashing is placed between, or on, other elements along at least one edge. Add in the pen thickness for those other elements and the full extent of the flashing is no longer visible on the drawing, there is just one thick blob.
Construction details have to be 'faked', things drawn further apart than they are so they are readable on a drawing.

  • If it is intended the model you are working in will be used for documentation treat it as if you are documenting, even if at schematic design stage. Only model sufficiently for documentation. (Depending how clean the design process was, sometimes it is better to discard a schematic design model and start a new one)
  • Keep in mind the fact that high levels of detail are only ever required for parts of the project, not everything in the project. An external view doesn't need the inside to be detailed, a view of one room doesn't require every instance of furniture in that room to be highly detailed across the whole project, a window sill detail is of only one window, every window doesn't require that level of detail.
  • If additional detail is required for a particular part treat it as a separate task, don't alter your main model. Create new views rather than edit existing views, place one off families rather than replace an existing one with a more detailed one, create new easily identifiable materials, etc. Then these can be deleted from the project when no longer required, and removed when providing to other consultants (who also struggle with your huge files).
  • Don't try and put everything into your project files. Consider making copies of the project file if radical changes are required to achieve a one off deliverable (e.g. an alternative design for discussion). Using Design Options is not always the most efficient path.
  • Using different families of the same thing to show different levels of detail isn't good practice. Schedules won't be correct, counting numbers becomes complicated.
  • Swapping out families is also not good practice. Unless carefully controlled parameters can be lost or altered, dimensions deleted and schedules completely messed up.
  • If you want to use this method do it in reverse -  make a copy of the BIM project for rendering, swap out families ONLY in this copy.
  • If Detail Levels aren't adequate use custom shared parameters and filters to control visibility in individual views. But be careful you don't make it so complex others receiving your model (or others working on it in your office) don't understand what you have done.

  • make use of Fine; Medium; Coarse Detail Level settings in families.
  • simplify shapes; avoid curves. Particularly rounded corners and edges you won't see in a drawing.
  • turn off visibility of model objects in plan and use Symbolic lines (2D lines) and Masking Regions. But don't use symbolic lines in elevation. They won't be visible in section and elevation views that are not exactly perpendicular to those lines. Use Model lines (3D lines) instead.
  • use Model lines (3D lines) for very thin objects (e.g. wire shelf) and joints (e.g. where drawers, cupboard doors meet).
  • use fill patterns instead of modelling (e.g. meshes).
  • keep it simple. Model what everyone needs to know, not what the object looks like.   

Ultimately it comes down to training and oversight. Everyone working on your project must be aware of the consequences of over-modelling, and be familiar with the methods to avoid it.

Next post I'll offer a strategy for creating families suitable for both realistic views and documentation drawings.

1 comment: