CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

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

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

摘要: 使用 vlax-make-safearray 创建数组后,您可以使用 vlax-safearray-fill 或 vlax-safearray-put-element 来填充数组中的数据。

使用 创建数组后,可以使用 bothorto 用数据填充数组。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

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

例如,下面的代码填充一个包含三个双精度的一维数组:

(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)

如果需要更改数组中元素的值,可以调用 toAgain。下面将数组的第二个元素更改为值 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 )

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部