SetXdata メソッド(ActiveX)

オブジェクトに関連付けられた拡張データ(XData)を設定します。

サポートされているプラットフォーム: Windows のみ

構文と要素

VBA:

object.SetXData XDataType, XDataValue
object

タイプ: すべての図形オブジェクトAttributeReferenceBlockDictionaryDimensionDimStyleGroupLayerLayoutLinetypeMaterialMLeaderStylePlotConfigurationRegisteredApplicationTableStyleTextStyleUCSViewViewportXRecord

このメソッドが適用されるオブジェクト。

XDataType

アクセス: 入力のみ

タイプ: バリアント型(短整数型配列)

拡張データ(Xdata)の各値の DXF グループ コード値を表す短整数値の配列。

XDataValue

アクセス: 入力のみ

タイプ: バリアント型(バリアント型配列)

拡張データ(Xdata)を構成する値の配列。

戻り値(RetVal)

戻り値はありません。

注意

拡張データは、ObjectARX または AutoLISP で記述されたアプリケーションによって作成される、インスタンス固有のデータ サンプルです。このデータは、あらゆる図形に追加できます。このデータは、図形の定義データの後に配置され、データベースに登録された順に管理されます(AutoCAD はこの情報を保持しますが、それを使用することはありません)。

VBA:

Sub Example_SetXdata()
    ' 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_SetXData()
    ;; 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)
)