明经通道 Visual LISP 函数  
vlax-make-variant
 

创建变体数据类型

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

参数

value

要指定给变体的值。如果省略该参数,变体将创建为 vlax-vbEmpty 类型(未初始化)。

type

变体的类型。可由下列常量之一来表示:

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

integer vlax-vbLong

real vlax-vbDouble

string vlax-vbString

VLA-object vlax-vbObject

:vlax-true, :vlax-false vlax-vbBoolean

variant 与初始值的类型相同

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 ...>

参阅

vlax-make-safearrayvlax-variant-change-typevlax-variant-typevlax-variant-value 函数。关于使用变体的详细信息,请参见 《Visual LISP 开发人员手册》中的 使用变体

明经通道 版权所有 未经许可 不得传播

 评论