Tuesday, October 23, 2007

How Hidden Line Cache affects AutoCAD MEP Performance

Hidden Line Cache
The Hidden Line Cache is a feature that was implemented in order to improve the loading performance of drawings that contain ABS Objects, with the Hidden Line feature turned ON. It’s usage, which is a drawing-specific setting, is controlled in the ABS Crossed Objects tab of the Options dialog.


Fig 5 – Hidden Line Cache Control


As described in the Hidden Line Routine section, the end result of the Hidden Line routine is the assignment of portions of ABS objects to a Hidden Display Component. This assignment is not actually stored on the object themselves, but rather in a separate section of data.


The Hidden Line Cache feature allows for this data to be saved into the drawing database itself. This means that the data will not need to be rebuilt the next time that drawing is opened, since it already exists in the drawing. Without this option checked, the Hidden Line data will re-built each time the drawing is loaded, and exist only in the system RAM until the drawing is closed. The storage of the data in the Hidden Lines Cache will increase the overall size of the drawing file, sometimes significantly depending on the Hidden Line data generated by the routine. The tradeoff is that the drawing will load significantly faster with the Cache in place at time of load.


Hidden Lines and Xrefs

The existence of loaded xrefs that contain ABS objects, which are set to display Hidden Lines, in a host drawing will have a significant impact on the behavior of Hidden Line data for the host drawing. Since the xrefs contain ABS objects that will be factored into the Hidden Line routine, the program cannot know if those objects have changed significantly since the last time the host drawing was opened. Such a change would result in any data saved in the host drawing’s Hidden Line Cache not to be in sync.


Because of this potential for incorrect Hidden Line data of xrefed ABS objects, the data is never saved in the host drawing’s Hidden Line Cache, regardless of the setting highlighted in figure 5. This means that the Hidden Line data will be to be re-built EVERY time that the host drawing is loaded. This process can take a significant amount of time to complete, depending on the complexity of the layout.


This is why there may be a significant difference in load time between simply opening the xref directly and opening a host drawing that contains that xref.


Hidden Lines and Viewports on Layouts

In a given layout, each viewport has its own active Display Configuration setting. You change this by double-clicking in the viewport and making it active, and then changing the active Display Configuration. This allows for different viewports to display the same objects in a different way. An example of this would be a 1-Line and 2-Line display, as seen below.


Fig 6 – Different Display in Viewports


In some circumstances, a new Viewport is created with an active Display Configuration that uses Hidden Lines. Be aware of this setting, and make sure to use a Display Configuration that does not utilize Hidden Lines if the feature is not needed.


Mitigating Performance Impact of Hidden Lines

With a better understanding of the Hidden Line feature and how to control it, one can better make decisions regarding its impact on performance. The following items may be helpful in mitigating the performance impact of the Hidden Line feature.


  • First and foremost, have a Display Configuration that does not use the feature, and use this when display of Hidden Lines are not needed. Using such a “non-hidden line” Display Configuration will result in a significant improvement in load performance of a drawing, especially when there are xrefs containing ABS objects that use Hidden Line feature to display. Additionally, the existence of the Hidden Line data in the system RAM can have a significant impact on overall program performance. When new ABS objects are placed in the drawing, or existing ABS objects are moved, the Hidden Line data may need to be updated. This can add additional time to commands, potentially reducing productivity.

  • On a Paper Space layout, be sure to set the active Display Configuration for a viewport to a “hidden lines” Display Configuration only if such display is needed. If there is only text or non-ABS objects in the viewport, make sure to set active a “non-hidden lines” Display Configuration. This can make a significant impact on the time it takes to display the Layout.

  • If only using Hidden Lines for coordination, consider turning off Hidden Line gaps. This additional calculation in the Hidden Line routine contributes to the overall calculation time, and adds additional size to the Hidden Line data stored in system RAM.

  • Because of the impact of xrefs in a host drawing, as discussed in the Hidden Line and Xrefs section of this document, consider how you plan to structure your project drawings, and what xref relationships will be created as a result.

  • Unless there are specific reasons to reduce the physical size of drawings, consider using the Hidden Line Cache feature when possible. This will help to improve drawing load performance in situations when the Cache is utilized.

  • Flex Duct objects contain annotation lines that give them the “flex” appearance. The style of these annotation lines can be controlled by the user. Some of these styles use extensive linework to give the desired look for Flex Ducts. These annotation lines are included in the Hidden Line Routine, and can add significant complexity to the calculation. Unless you require that Flex Ducts be shown with Hidden Lines, consider using the 2 Line Display Representation to display these objects in your drawings. This can reduce the complexity of the Hidden Lines Routine, thus improving load time and reducing the overall size of the Hidden Line data stored in the system RAM.

2 comments:

  1. Scott, is it possible to put an RSS feed on your AutoCAD MEP blog?

    thanks

    Bill

    ReplyDelete
  2. Thanks for the feedback. Good Idea. Your wish is my command.

    Scott

    ReplyDelete