Our general pattern goes like this: take an incoming drawing and save it as a "base." In the base, change all layer colors to gray and freeze any layers we don't need to see. Open a "parent" drawing and then xref in the base to draw on top of.
This always works just fine, except for now. Consistently, with one set of drawings, any changes I've made in the base drawing disappear when I set up the parent. So I have to save a layer state in the base and import it to the parent, or redo any changes through xref layer management.
I've set VISRETAIN to 1 in the parent and the base, and the problem still occurs.
The incoming drawing has several nested XREFs, all with VISRETAIN at 1. Is this due to all of the nested XREFs? Is it a bug (the incoming drawings are save in AutoCAD 2004)? I've searched many forums but haven't found an answer beyond adjusting VISRETAIN.
I should add that I'm working in 2008 LT. Any help would be enormously appreciated.
the trick with VISRETAIN is very simple as long as you follows this rule
in each Parent (host) dwg VISRETAIN should be 1.
when you save the Parent, all layer properties changes is saved with the Parent
it does not matter if VISRETAIN is 0 in the base (xrefed) dwg
as long as it does not have an xrefs of it's own.
hope this help
Thanks Moshe. I think I follow what you're saying. The problem, at least in part, is that the base drawing does have it's own xrefs, and those xrefs have their own as well. And the client has requested that we not bind them . . .
In general, I've always made all of the changes in a BASE file (saved and named as such) and then xref'ed that file into the parent. So I don't mess with XREF layers in the parent at all. Which is why I was thinking VISRETAIN at 1 in the BASE file would be important. But now, I make and save the changes, but when I XREF the file, all of the original layer settings are restored. So I'm back to importing layer states . . .
I'll try a test file where I remove all xref's in the BASE and only change non-xrefed objects. If that works normally, I'll know the problem is with multiple nested xrefs in the base drawing.
I feel like I'm making less sense all of the time. Good thing it's a three-day weekend . . .
VISREATIN only controls changes to Layer Properties
(geometric changes to the xref always should be done in the base dwg)
if in general you prefer to to make Layer Property changes in the base dwg
and want this to be reflect in the Parent dwg than after openning
the Parent set VISRETAIN to 0, reload all xref and than
restore VISRETAIN back to 1 and do a save
what VISRETAIN enable us is the freedom to plot drawing that at first was design
at some layer state (colors, ltypes, visibility...) to plot it at other layer state and save it with the parent
with out touching the original
The problem is that AutoCAD only saves layer states/changes in the current drawing and does not pass them onto the parent drawings. For example:
Original drawing A
Xref drawing A into drawing B
Turn all xref layers to gray, freeze annotations
Now xref drawing B into drawing C
AutoCAD sees only drawing A and not the changes you made in drawing B
This becomes very clear when we look at the layer names in drawing C, which will look like this:
Drawing A|Layer 1
Notice that it is NOT:
Drawing B|Drawing A|Layer 1
You already noted your two options:
1) Save a layer state in the intermediate file (drawing B) and restore it in the working file (drawing C) (make sure that you have "Don't list layer states in XREFs" unchecked)
2) Make changes in the actual base file (drawing A)
Access a broad range of knowledge to help get the most out of your products and services.