オブジェクトに関連付けられている拡張データ(XData)を取得します。
サポートされているプラットフォーム: Windows のみ
VBA:
object.GetXData AppName, XDataType, XDataValue
タイプ: すべての図形オブジェクト、AttributeReference、Block、Dictionary、Dimension、DimStyle、Group、Layer、Layout、Linetype、Material、MLeaderStyle、PlotConfiguration、RegisteredApplication、TableStyle、TextStyle、UCS、View、Viewport、XRecord
このメソッドが適用されるオブジェクト。
アクセス: 入力のみ
タイプ: 文字列
NULL 文字列は、データを作成したアプリケーションに関係なく、オブジェクトにアタッチされたデータをすべて返します。アプリケーションの名前を入力すると、指定したアプリケーションが作成したデータだけを返します。
アクセス: 出力のみ
タイプ: バリアント型(短整数型配列)
拡張データ(Xdata)の各値の DXF グループ コード値を表す短整数値の配列。
アクセス: 出力のみ
タイプ: バリアント型(バリアント型配列)
拡張データ(Xdata)を構成する値の配列。
戻り値はありません。
拡張データは、ObjectARX または AutoLISP で記述されたアプリケーションによって作成される、インスタンス固有のデータ サンプルです。このデータは、どんなオブジェクトにも追加することができます。このデータはオブジェクトの定義データにしたがっており、データベースに保存された順序に管理されています(AutoCAD はこの情報を保持しますが、それを使用することはありません。)
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) )