Gets the extended data (XData) associated with an object.
Supported platforms: Windows only
VBA:
object.GetXData AppName, XDataType, XDataValue
Type: All drawing objects, AttributeReference, Block, Dictionary, Dimension, DimStyle, Group, Layer, Layout, Linetype, Material, MLeaderStyle, PlotConfiguration, RegisteredApplication, TableStyle, TextStyle, UCS, View, Viewport, XRecord
The objects this method applies to.
Access: Input-only
Type: String
A NULL string will return all the data attached to the object, regardless of the application that created it. Supplying an application name will return only the data that was created by the specified application.
Access: Output-only
Type: Variant (array of shorts)
An array of short integer values that represent the DXF group code values for each value in the extended data (XData).
Access: Output-only
Type: Variant (array of variants)
An array of values that make up the extended data (XData).
No return value.
Extended data is an example of instance-specific data created by applications written with ObjectARX or AutoLISP. This data can be added to any object. This data follows the object's definition data, and is maintained in the order that it was saved into the document. (AutoCAD maintains this information, but does not use it.)
VBA:
Sub Example_GetXData()
' This example creates a line and attaches extended data to that line.
' Create the line
Dim lineObj As AcadLine
Dim startPt(0 To 2) As Double, endPt(0 To 2) As Double
startPt(0) = 1#: startPt(1) = 1#: startPt(2) = 0#
endPt(0) = 5#: endPt(1) = 5#: endPt(2) = 0#
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPt, endPt)
ZoomAll
' Initialize all the xdata values. Note that first data in the list should be
' application name and first datatype code should be 1001
Dim DataType(0 To 9) As Integer
Dim Data(0 To 9) As Variant
Dim reals3(0 To 2) As Double
Dim worldPos(0 To 2) As Double
DataType(0) = 1001: Data(0) = "Test_Application"
DataType(1) = 1000: Data(1) = "This is a test for xdata"
DataType(2) = 1003: Data(2) = "0" ' layer
DataType(3) = 1040: Data(3) = 1.23479137438413E+40 ' real
DataType(4) = 1041: Data(4) = 1237324938 ' distance
DataType(5) = 1070: Data(5) = 32767 ' 16 bit Integer
DataType(6) = 1071: Data(6) = 32767 ' 32 bit Integer
DataType(7) = 1042: Data(7) = 10 ' scaleFactor
reals3(0) = -2.95: reals3(1) = 100: reals3(2) = -20
DataType(8) = 1010: Data(8) = reals3 ' real
worldPos(0) = 4: worldPos(1) = 400.99999999: worldPos(2) = 2.798989
DataType(9) = 1011: Data(9) = worldPos ' world space position
' Attach the xdata to the line
lineObj.SetXData DataType, Data
' Return the xdata for the line
Dim xdataOut As Variant
Dim xtypeOut As Variant
lineObj.GetXData "", xtypeOut, xdataOut
End Sub
Visual LISP:
(vl-load-com)
(defun c:Example_GetXData()
;; This example creates a line and attaches extended data to that line.
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
;; Create the line
(setq startPt (vlax-3d-point 1 1 0)
endPt (vlax-3d-point 5 5 0))
(setq modelSpace (vla-get-ModelSpace doc))
(setq lineObj (vla-AddLine modelSpace startPt endPt))
(vla-ZoomAll acadObj)
;; Initialize all the xdata values. Note that first data in the list should be
;; application name and first datatype code should be 1001
(setq DataType (vlax-make-safearray vlax-vbInteger '(0 . 9)))
(setq Data (vlax-make-safearray vlax-vbVariant '(0 . 9)))
(vlax-safearray-put-element DataType 0 1001)
(vlax-safearray-put-element Data 0 "Test_Application")
(vlax-safearray-put-element DataType 1 1000)
(vlax-safearray-put-element Data 1 "This is a test for xdata")
;; layer
(vlax-safearray-put-element DataType 2 1003)
(vlax-safearray-put-element Data 2 "0")
;; real
(vlax-safearray-put-element DataType 3 1040)
(vlax-safearray-put-element Data 3 1.23479137438413E+40)
;; distance
(vlax-safearray-put-element DataType 4 1041)
(vlax-safearray-put-element Data 4 1237324938)
;; 16 bit Integer
(vlax-safearray-put-element DataType 5 1070)
(vlax-safearray-put-element Data 5 32767)
;; 32 bit Integer
(vlax-safearray-put-element DataType 6 1071)
(vlax-safearray-put-element Data 6 32767)
;; scaleFactor
(vlax-safearray-put-element DataType 7 1042)
(vlax-safearray-put-element Data 7 10)
;; 3D point
(setq reals3 (vlax-3d-point -2.95 100 -20))
(vlax-safearray-put-element DataType 8 1010)
(vlax-safearray-put-element Data 8 reals3)
;; world space position
(setq worldPos (vlax-3d-point 4 400.99999999 2.798989))
(vlax-safearray-put-element DataType 9 1011)
(vlax-safearray-put-element Data 9 worldPos)
;; Attach the xdata to the line
(vla-SetXData lineObj DataType Data)
;; Return the xdata for the line
(vla-GetXData lineObj "" 'xtypeOut 'xdataOut)
)