vlax-make-variant (AutoLISP/ActiveX)

バリアント データ タイプを作成します。

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

構文と要素

(vlax-make-variant [value [type]])
value

タイプ: 整数、実数、文字列、VLA オブジェクト、セーフ配列、T、nil

バリアント型のデータに割り当てる値。指定しないと、バリアント型は vlax-vbEmpty タイプ(データなし)で作成されます。

type

タイプ: 整数型

バリアント型のタイプ。次の定数の 1 つを指定することができます。

vlax-vbEmpty (0): データ無し(既定値)

vlax-vbNull (1): 有効なデータが含まれない

vlax-vbInteger (2): 整数

vlax-vbLong (3): 長整数

vlax-vbSingle (4): 単精度浮動小数点数

vlax-vbDouble (5): 倍精度浮動小数点数

vlax-vbString (8): 文字列

vlax-vbObject (9): オブジェクト

vlax-vbBoolean (11): 真偽値

vlax-vbArray (8192): 配列

括弧内に示した整数は、定数の値を示しています。AutoCAD の将来のリリースで値が変更されたときのために、引数には整数値ではなく、定数を指定することをお勧めします。

type 引数を指定しないと、vlax-make-variant 関数は、指定された value 引数のデータ タイプに基づいて、既定のデータ タイプを割り当てます。 それぞれの LISP データ タイプに割り当てられる既定のバリアント型データ タイプは、次のとおりです。

nil: vlax-vbEmpty

:vlax-null: vlax-vbNull

整数: vlax-vbLong

実数: vlax-vbDouble

文字列: vlax-vbString

VLA オブジェクト: vlax-vbObject

:vlax-true/:vlax-false: vlax-vbBoolean

バリアント: 初期値のタイプと同じ

vlax-make-safearray: vlax-vbArray

戻り値

タイプ: バリアント型

作成されたバリアント型データ。

vlax-make-variant 関数の既定を使用してバリアント型データを作成します。

(setq varnil (vlax-make-variant))
#<variant 0 >

既定では、初期化されていない(vlax-vbEmpty)バリアント型が作成されます。次のように呼び出すことにより、明示的に同じことを実現できます。

(setq varnil (vlax-make-variant nil))
#<variant 0 >

整数のバリアント型データを作成し、その値を 5 に設定します。

(setq varint (vlax-make-variant 5 vlax-vbInteger))
#<variant 2 5>

上記のコマンドで、type 引数を指定しないとどうなるかを実験します。

(setq varint (vlax-make-variant 5))
#<variant 3 5>

データ タイプの既定により、vlax-make-variant 関数は、指定された整数値を、整数データ タイプではなく、長整数データ タイプに割り当てました。つまり、数値で作業するときは、作成するバリアント型のタイプを明示的に指定することが重要です。

文字列に対しては type 引数を指定しなくても、期待どおりの結果になります。

(setq varstr (vlax-make-variant "ghost"))
#<variant 8 ghost>

配列を含んだバリアント型データを作成するには、配列内のデータのタイプと一緒に、タイプに vlax-vbArray を指定する必要があります。たとえば、倍精度実数の配列を含んだバリアント型データを作成するには、まず、変数の値を倍精度の配列に設定します。

(setq 4dubs (vlax-make-safearray vlax-vbDouble '(0 . 3)))
#<safearray...>

次に、倍精度の配列を取得し、それをバリアント型データに割り当てます。

(vlax-make-variant 4dubs)
#<variant 8197 ...>