Using XREFs and XREF Best Practice
XREFs can be an extremely helpful tool at your disposal when used well. However when used badly they can be a nightmare. In this article I am going to go through how to use XREFs and talk about some best practice tips to get the most out of your XREFs. Also I'll talk about some common pit-falls that often cause problems.
What is an XREF?
If it wasn't already obvious to you, XREF stands for external reference. As such, these are drawing files that are used as external references in our drawing. Other names for XREFs include references, overlays, attachments and model files. No matter what the name, the concept is the same. The external file is inserted into the current drawing as a reference. If you want to edit the geometry of the XREF, you'll need to open the referenced file and edit that.
We can insert an XREF by simply entering XREF into the command line. This brings up the the External References dialog box. In the top left there is a button for attaching a DWG file. Click this button, and you will be prompted to select a DWG file to insert. The insertion point for the XREF will always use the coordinate 0,0 in the XREF as the base-point in a similar fashion to how blocks work.
The External References dialog lists the currently loaded XREFs and displays details for each. Here is a good place to look to find any problems with your XREFs, such as XREF paths that might have changed. You can update the XREF paths from here by overwriting the "found at" path, or by selecting the ellipsis (...) in this field and browsing to the drawing. If you seem to be unable to edit this, it is likely that the reference you are trying to edit is a nested reference. This means that the drawing is actually an XREF within another drawing, and has not been directly referenced to this drawing. In other words, it is an XREF within an XREF. If this is the case you'll need to edit the path within the first XREF, and then refresh that XREF within the current drawing.
While the External References dialog can be convenient, for simply inserting an XREF you do not need to open this dialog. Using the XATTACH command, you can invoke the command that would be used by clicking the DWG button on the XREF dialog.
What to use XREFs for
XREFs should be used for content that could potentially be displayed on many drawings. Having multiple copies of the same thing is just a pain to deal with. Ok, you can copy easily enough from one drawing to the other, but you have to remember to do that every single time you make any change to either drawing. The solution is to use an XREF. Put all the information in the one drawing and insert that XREF into all the drawings that require it. Essentially, XREFs can become a kind of external modelspace for your drawings, saved in a central location. You can also logically separate aspects of the model so that each XREF has its own distinct purpose. This is a great way to add some structure to you drawings, and minimise any headaches you might face later with discrepancies between drawings.
Breaking your modelspace down into smaller XREFs is also a great way to reduce file size. I work under the premise that the bigger the drawing file size, the higher the chance that it'll crash my PC. As such I try to keep individual drawings to below 5mb. Sometimes this is not practical, but mostly it is.
Also, be careful of surveys and other mapping information such as Ordnance Survey maps. While these are of course essential, avoid putting these directly into your drawings like the plague. These should ALWAYS be an XREF, unless you actually want AutoCAD® to crash :-)
Attachments vs Overlays
XREFs can be inserted as two different types; an attachment or an overlay. While both may appear to achieve the same thing, there is a subtle difference between them. If you insert an XREF as an attachment, this means that any other drawings that XREF the current drawing will also show the nested XREF as well. For example, Model.dwg contains the XREF Outline.dwg as an attachment. If Drawing1.dwg then XREFs Model.dwg in, Outline.dwg will also be shown as a part of Model.dwg.
Conversely, overlays allow you to insert as many XREFs as you want, but prevents them from being nested. So in the example above, if Outline.dwg were inserted as an overlay, it would not be shown when Model.dwg is XREFed into Drawing1.dwg.
So which do you use? Well, like most things it depends what you're doing. Generally speaking the preferred default option is to use overlays, because this prevents the possibility of having a reference loop, and is generally the more lightweight option. However, if you have much to gain from having XREFs that contain other XREFs, clearly an attachment is the way to go.
Where should XREFs be saved?
This is a good question - they have to go somewhere, and having them scattered all over the place so that you don't know what's what is not good at all. Generally speaking, I create a folder called xrefs, and put them all in there. I sort of consider the xrefs folder as the modelspace of all my drawings, and I treat it accordingly.
I have the luxury of working on projects that aren't massive, so if you're working on huge projects you'll certainly need some other structure to accommodate the scope of the project. It would be no good having hundreds and hundreds of drawing files all saved in one folder named xrefs. For this, you'd probably have to set up zones, and subcategorise your xrefs by zone. This will have to be done on a project by project basis, and agreed with the others working on the project before starting.
I'm going to kick off the pitfalls with VISRETAIN, a system variable that has been the bane of many a AutoCAD® user. It can easily catch you out as well. VISRETAIN controls how layers within XREFs behave. With VISRETAIN set to 1, the layer state of XREFs are remembered. So when you make some intricate changes to your XREF layers to ensure it plots a certain colour for example, this will be remembered. Set VISRETAIN to 0 and it's another story - you'll close the drawing, the layer changes you made will be lost, and you'll have no idea it happened until you open the drawing again, and (maybe) spot the mistake. If you never ever want this to be an issue again, put this in acaddoc.lsp, which ensures VISRETAIN is set to 1 each time a drawing is opened:
(setvar "VISRETAIN" 1)
Next, I'll talk about broken XREFs. A broken XREF is what we call an XREF with a path that no longer resolves to the .DWG file that it originally pointed to, and the file cannot be found. This is usually the result of an element of the path being renamed, such as the folder or the .DWG file itself. As noted earlier, you can update the path for the XREF from the XREF dialog, and modifying the "found at" path.
An additional problem can be to do with drive paths. Say you have an XREF that resides in W:\CAD\Projects\xrefs, but you also have a Z drive mapped such that Z:\Projects\xrefs refers to the same folder. If the XREF was originally loaded using the W:\CAD\Projects\xrefs path, then AutoCAD® usually expects the drawing to be on the W drive. This can be a temperamental issue, but I have often found that AutoCAD® will prevent you from re-loading an XREF from what appears to be another drive.
If you or someone else has renamed a folder, you'll notice that many, if not all of your XREFs will have a broken path. Then you're faced with the somewhat daunting task of updating all the XREF paths in your whole drawing set... For this, look into using the Reference Manager tool provided with AutoCAD® - its really useful, but I'll save the details for another post.
The final problem is that with great power comes great responsibility! Although it is great to be able to update all your drawings in one go, equally you can screw the whole set up just as easily. BE CAREFUL. And regularly take a backup of your XREFs folder so that if you make a huge mistake, you can roll back to a previous version.
So there we go - XREFs. Use them, and use them wisely.
P.S. Don't forget to subscribe below - I'm nearly at 200 subscribers!
So that's what Overlays are for.....!!!!!! Another great Xref tip can be found at http://cadtips.cadalyst.com/dwg/x-x Simply add these macros to two new commands and then (as I have done) put them on the Right click context menu
This macro will unload all references: ^C^C-XREF;U;* This macro will load all references: ^C^C-XREF;R;*
Cheers Neil, helpful as usual! :D
Don't forget there is the little program "Reference Manager" which installs with AutoCAD®. From the program you can re target multiple drawings in one go. So if you drive letter changes of you want to change them all to the network path it can be done fairly pain free. (There is a similar program for Data Shortcuts in Civil 3D®)
So what is all this biz about bring in xrefs on a locked layer? I am trying to figure this out. How do you specify which layer an xref is on? and how do I know now that I already have xrefs in my file? Is there an easy way to tell?
Select the xref, and the properties window will show you what layer it is on. You can change its layer through the conventional methods for any other entities.