点のリストからバリアント型を作成する

これまでは、変数 polypoints 内のデータは、多くの AutoLISP 呼び出しに適したリスト形式です。しかし、ActiveX 呼び出しの入力パラメータとしては、バリアント型の倍精度浮動小数点数型配列のデータを渡さなければなりません。次のようなユーティリティ関数を使用して、リストからバリアント型に変換するという要求に応えることができます。

(defun gp:list->variantArray (ptsList / arraySpace sArray)
  ; allocate space for an array of 2d points stored as doubles
  (setq arraySpace (vlax-make-safearray
              vlax-vbdouble ; element type
              (cons 0
                    (- (length ptsList) 1)
                    ) ; array dimension
              )
  )

  (setq sArray (vlax-safearray-fill arraySpace ptsList))

  ; return array variant
  (vlax-make-variant sArray)
)

gp:list->variantArray は、次のように動作します。

次に、gp:list‑>variantArray を呼び出して、リストを倍精度浮動小数点数型のバリアント型配列に変換する関数呼び出しの例を示します。

; data conversion from list to variant
(setq VLADataPts (gp:list->variantArray polypoints))