Attaching an xref links one drawing (the reference file, or xref) to the current drawing. When a drawing references an xref, AutoCAD attaches only the xref definition to the drawing, unlike regular blocks, where the block definition and the contents of the block are stored with the current drawing. AutoCAD reads the reference drawing to determine what to display in the current drawing. If the reference file is missing or corrupt, its data is not displayed in the current drawing. Each time you open a drawing, AutoCAD loads all graphical and nongraphical (such as layers, linetypes, and text styles) objects from referenced files. If VISRETAIN is on, AutoCAD stores any updated xref-dependent layer information in the current drawing.
You can attach as many copies of an xref as you want, and each can have a different position, scale, and rotation. You can also control the dependent layers and linetype properties that are defined in the xref.
To attach an xref, use the AttachExternalReference method. This method requires you to input the path and file name of the drawing to be referenced, the name the xref is to use in the current drawing, the insertion point, the scale, and rotation information for the xref. The AttachExternalReference method returns the newly created ExternalReference object.
For more information on attaching xrefs, see “Attach External References” in the User's Guide.
Attach an external reference to a drawing
This example displays all the blocks in the current drawing before and after adding an external reference. This example uses the 3D House.dwg file found in the sample directory. If you do not have this image, or if it is located in a different directory, insert a valid path and file name for the PathName variable.
Sub Ch10_AttachingExternalReference()
On Error GoTo ERRORHANDLER
Dim InsertPoint(0 To 2) As Double
Dim insertedBlock As AcadExternalReference
Dim tempBlock As AcadBlock
Dim msg As String, PathName As String
' Define external reference to be inserted
InsertPoint(0) = 1
InsertPoint(1) = 1
InsertPoint(2) = 0
PathName = "C:/Program Files/AutoCAD 2009/sample/3D House.dwg"
' Display current Block information for this drawing
GoSub ListBlocks
' Add the external reference to the drawing
Set insertedBlock = ThisDrawing.ModelSpace. _
AttachExternalReference(PathName, "XREF_IMAGE", _
InsertPoint, 1, 1, 1, 0, False)
ZoomAll
' Display new Block information for this drawing
GoSub ListBlocks
Exit Sub
ListBlocks:
msg = vbCrLf ' Reset message
For Each tempBlock In ThisDrawing.Blocks
msg = msg & tempBlock.Name & vbCrLf
Next
MsgBox "The current blocks in this drawing are: " & msg
Return
ERRORHANDLER:
MsgBox Err.Description
End Sub