CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2019 开发者帮助

关于填充安全数组中的元素 (AutoLISP/ActiveX)

2024-5-18 17:48| 发布者: admin| 查看: 97| 评论: 0|原作者: admin|来自: AutoCAD

关于填充安全数组中的元素 (AutoLISP/ActiveX)

使用 创建数组后,可以使用 或 用数据填充数组。vlax-make-safearrayvlax-safearray-fillvlax-safearray-put-element

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

使用 vlax-safearray-fill 填充数组

该函数需要两个参数:包含要填充的数组的变量和要分配给数组元素的值列表。您必须指定与数组中元素一样多的值。vlax-safearray-fill

例如,以下代码填充三个双精度的单维数组:

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

数组的内容可以以列表形式显示,功能如下:vlax-safearray->list

(vlax-safearray->list point)
(100.0 100.0 0.0)

如果未为数组中的每个元素指定值,则会导致错误。vlax-safearray-fill

使用多维数组时,必须将列表列表传递给 ,每个列表对应一个维度。例如,以下语句将值赋给一个二维字符串数组,该数组在每个维度中包含三个元素:vlax-safearray-fill

(setq mat2 (vlax-make-safearray vlax-vbString '(0 . 1) '(1 . 3)))
(vlax-safearray-fill mat2 '(("a" "b" "c") ("d" "e" "f")))
#<safearray...>

用于确认 mat2 的内容:vlax-safearray->list

(vlax-safearray->list mat2)
(("a" "b" "c") ("d" "e" "f"))

使用 vlax-safearray-put-element 填充数组

该函数可用于将值分配给安全数组的一个或多个元素。此函数所需的参数数取决于数组中的维度数。以下规则适用于指定参数:vlax-safearray-put-elementvlax-safearray-put-element

  • 第一个参数始终命名要为其赋值的 safearray。
  • 下一组参数标识指向要为其赋值的元素的索引值。对于一维数组,指定一个索引值;对于二维数组,指定两个索引值,依此类推。
  • 最后一个参数始终是要分配给 safearray 元素的值。

例如,以下代码填充三个双精度的单维数组:

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

如果需要更改数组中元素的值,可以再次调用。下面将数组的第二个元素更改为值 50:vlax-safearray-put-element

(vlax-safearray-put-element point 1 50)

下面的示例创建并填充字符串的二维数组。数组的第一个维度从索引 0 开始,而第二个维度从索引 1 开始:

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

(vlax-safearray-put-element mat2 0 1 "a")
(vlax-safearray-put-element mat2 0 2 "b")
(vlax-safearray-put-element mat2 0 3 "c")
(vlax-safearray-put-element mat2 1 1 "d")
(vlax-safearray-put-element mat2 1 2 "e")
(vlax-safearray-put-element mat2 1 3 "f")

您可以使用以下方法确认数组的内容:vlax-safearray->list

(vlax-safearray->list mat2)
(("a" "b" "c") ("d" "e" "f"))

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-15 22:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部