概要 - バリアント型のセーフ配列(AutoLISP/ActiveX)

セーフ配列のデータは、バリアント型を介して ActiveX メソッドに渡す必要があります。

注: AutoLISP での ActiveX のサポートは Windows のみに制限されています。

セーフ配列に値を割り当てるためには、まずセーフ配列を作成する必要があります。この後、セーフ配列をメソッドに渡す前にバリアント型に割り当てることができます。倍精度浮動小数点数型の 3 つの要素の配列(通常は、点を表す配列)を必要とするメソッドの場合、vlax-3d-point 関数を使用して必要なデータ構造体を作成できます。

たとえば、次の呼び出しは点のリストを受け取って、そのリストを 3 つの倍精度浮動小数点数型の配列に変換します。

(setq circCenter (vlax-3d-point '(3.0 3.0 0.0)))
#<variant 8197 ...>

また、リストの代わりに、2 つまたは 3 つの数値を vlax-3d-point 関数に渡すこともできます。次に、例を示します。

(setq circCenter (vlax-3d-point 3.0 3.0))
#<variant 8197 ...>

3 番目の点を省略すると、vlax-3d-point はこれを 0 に設定します。vlax-safearray->list 関数を使用して vlax-3d-point 関数で設定した変数の内容を確認できます。

(vlax-safearray->list (vlax-variant-value circcenter))
(3.0 3.0 0.0)

vlax-TMatrix 関数は、同じような変換マトリックスのタスクを実行し、その変換マトリックスは vla-TransformBy 関数で必要になります。関数は、4 つの数値からなる 4 つのリストそれぞれから変換マトリックスを作成し、必要な場合は、すべての数値を実数に変換します。次に、例を示します。

(vlax-tmatrix '((1 1 1 0) (1 2 3 0) (2 3 4 5) (2 9 8 3)))
#<variant 8197 ...>

3 つの倍精度浮動小数点数型以外のもの、または変換マトリックス以外のものを格納する配列に対してバリアント型を作成する必要がある場合は、自分で作成しなければなりません。