Vla-setxdata

提供:GizmoLabs - だいたい CAD LISP なサイト
2015年11月8日 (日) 18:58時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-setxdata ''vla-object'' ''XDataType'' ''XDataValue'') ; 機能 : オブジェクトに関連付けられた拡張データ(XData)を設定...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-setxdata vla-object XDataType XDataValue)


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


引数
  • vla-object … VLAオブジェクト(すべての図形オブジェクト、AttributeReference、Block、Dictionary、Dimension、DimStyle、Group、Layer、Layout、Linetype、Material、MLeaderStyle、PlotConfiguration、RegisteredApplication、TableStyle、TextStyle、UCS、View、Viewport、XRecord)
  • XDataType … 拡張データ(Xdata)の各値の DXF グループ コード値を表す短整数値の配列。
  • XDataValue … 拡張データ(Xdata)を構成する値の配列。


戻り値
nil


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


サンプル
(vl-load-com)
(defun c:Example_SetXData()
    ;; 線分を作成し、その行に拡張データをアタッチするサンプル。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
    
    ;; 線分を作成
    (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)

    ;; 拡張データのすべての値を初期化する。リスト内の最初のデータは、アプリケーション名にする
    ;; 必要があり、最初のデータ型コードは 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")

    ;; 画層
    (vlax-safearray-put-element DataType 2 1003)
    (vlax-safearray-put-element Data 2 "0")

    ;; 浮動小数点
    (vlax-safearray-put-element DataType 3 1040)
    (vlax-safearray-put-element Data 3 1.23479137438413E+40)

    ;; 距離
    (vlax-safearray-put-element DataType 4 1041)
    (vlax-safearray-put-element Data 4 1237324938)
  
    ;; 16 bit 整数
    (vlax-safearray-put-element DataType 5 1070)
    (vlax-safearray-put-element Data 5 32767)

    ;; 32 bit 整数
    (vlax-safearray-put-element DataType 6 1071)
    (vlax-safearray-put-element Data 6 32767)

    ;; 尺度要素
    (vlax-safearray-put-element DataType 7 1042)
    (vlax-safearray-put-element Data 7 10)

    ;; 3D 点
    (setq reals3 (vlax-3d-point -2.95 100 -20))
    (vlax-safearray-put-element DataType 8 1010)
    (vlax-safearray-put-element Data 8 reals3)
    
    ;; ワールド空間の位置
    (setq worldPos (vlax-3d-point 4 400.99999999 2.798989))
    (vlax-safearray-put-element DataType 9 1011)
    (vlax-safearray-put-element Data 9 worldPos)
    
    ;; 線分に、xdata をアタッチ。
    (vla-SetXData lineObj DataType Data)
    
    ;; 線分の xdata を返す
    (vla-GetXData lineObj "" 'xtypeOut 'xdataOut)
)


関連事項