Need a book? Engineering books recommendations...

Return to index: [Subject] [Thread] [Date] [Author]

Re: AutoCadLT/12/14 Layering problems

[Subject Prev][Subject Next][Thread Prev][Thread Next]

As Bill Allen noted, the problem could be your VISRETAIN setting, but only if the layers involved are xref layers.

Imagine you've got a drawing called Parent.dwg, and in it you use the XREF Attach command to attach a drawing called Child.dwg. Further assume that Child.dwg has the following layers and layer settings:

 A-WALL:  On,  Thawed,  Color 4,  Continuous linetype
 S-COLS:  On,  Thawed,  Color 7,  Continuous linetype

These layers appear as Child|A-WALL and Child|S-COLS when you view the list of layers in Parent.dwg

VISRETAIN is an AutoCAD system variable that controls whether the parent's or the child's settings of child's layers govern each time you load the parent:

 0 = child's layer settings control.
 1 = parent's layer settings control.

"Layer settings" here mean the off/on, freeze/thaw, color, and linetype setting for each layer that comes along with an xref.

VISRETAIN is saved in the drawing file, which means that different drawings can have different VISRETAIN settings. The VISRETAIN setting in the parent drawing is the one that matters. 

Now suppose that you're in Parent.dwg and you freeze (or turn off) the Child|A-WALLS layer. You then save Parent.dwg and re-open it (or open it again at a later time). If VISRETAIN is set to 0 in Parent.dwg, then Child|A-WALLS will be thawed (child's layer settings control). If VISRETAIN=1, then Child|A-WALLS will still be frozen (parent's layer settings control).

Or instead, suppose you open Child.dwg and freeze the A-WALLS layer. When next you open Parent.dwg, the status of Child|A-WALLS will depend on the VISRETAIN setting in Parent.dwg. If VISRETAIN=0, then Child|A-WALLS will be frozen, and if VISRETAIN=1, Child|A-WALLS will still be thawed.

Many people indiscriminately set VISRETAIN=1, which I think is bad practice. In general, it's better to set VISRETAIN=0 and control layer settings from the child drawing (especially if the child drawing is xrefed into multiple parent drawings and you want layers to appear consistently in all of the parents). There are, however, situations were you need to xref a child drawing into multiple parents and set the child layers differently in each parent. In that case, you need to set VISRETAIN=1 in the parent drawings.

In your case, another possibility is that different versions of the child drawings are being substituted by the architect after you send your drawings back. Suppose that Child.dwg is supplied to you by the architect. You open Child.dwg and freeze A-WALLS. Your Parent.dwg has VISRETAIN=0 so everything looks fine every time you open Parent.dwg. You send both drawings back to the architect, and he tosses out the version of Child.dwg that you modified and substitutes his version of Child.dwg, which he's been updating. Of course his version has A-WALLS thawed, so Parent|A-WALLS comes back on when he opens and plots Parent.dwg. In this situation, you do want to set VISRETAIN=1 in your parent drawing to avoid this problem.


If the magically reappearing layers aren't from xrefs, then someone else is changing their settings. Layers don't toggle their settings by themselves.

- Mark Middlebrook