CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于 Safearrays (AutoLISP/ActiveX)

2023-1-6 01:30| 发布者: admin| 查看: 412| 评论: 0|来自: AutoCAD

摘要: 传递给 ActiveX 方法的数组必须是安全数组类型。这些数组是安全的,因为您不会意外地分配数组边界之外的值并导致发生数据异常。

传递给 ActiveX 方法的数组必须是安全数组类型。这些数组是安全的,因为您不会意外地分配数组边界之外的值并导致发生数据异常。

注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。

使用函数创建安全数组,并使用数据填充安全数组。该函数至少需要两个参数。第一个参数标识将存储在数组中的数据类型。为数据类型指定以下常量之一:vlax-make-safearrayvlax-safearray-put-elementvlax-safearray-fillvlax-make-safearray

  • vlax-vbInteger整数
  • vlax-vbLong长整数
  • vlax-vbSingle单精度浮点数
  • vlax-vbDouble双精度浮点数
  • vlax-vbString字符串
  • vlax-vbObject对象
  • vlax-vbBoolean布尔
  • vlax-vbVariant变体

常量的计算结果为整数值。由于整数值可以更改,因此应始终引用常量,而不是整数值。查找分配给每个常量的当前整数值。其余参数用于指定数组每个维度的上限和下限。您可以使用创建单维或多维数组。索引的下限可以是零或任何正整数或负整数。vlax-make-safearrayvlax-make-safearrayvlax-make-safearray

例如,以下函数调用创建一个由双精度组成的一维数组,起始索引为 0:

(setq point (vlax-make-safearray vlax-vbDouble '(0 . 2)))
#<safearray...>

此示例中指定的上限为 2,因此数组将包含三个元素(元素 0、元素 1 和元素 2)。

不同的维度可以有不同的边界。例如,以下函数调用创建一个字符串的二维数组。第一个维度从索引 0 开始,包含两个元素,而第二个维度从索引 1 开始,包含三个元素:

(setq mat2 (vlax-make-safearray vlax-vbString '(0 . 1) '(1 . 3)))
#<safearray...>

以下函数用于处理数组:

  • vlax-safearray-fill– 将数据存储在安全数组的元素中。
  • vlax-safearray-put-element– 为安全数组中的元素赋值。
  • vlax-safearray-type– 返回安全数组的数据类型。
  • vlax-safearray-get-dim– 返回安全数组中的维数。
  • vlax-safearray-get-l-bound– 返回安全数组中维度的下边界(第一个索引)。
  • vlax-safearray-get-u-bound– 返回安全数组中维度的上边界(最后一个索引)。
  • vlax-safearray-get-element– 返回安全数组中元素的值。

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 13:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部