CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于 Safearrays with Variant (AutoLISP/ActiveX)

2023-1-8 00:50| 发布者: admin| 查看: 349| 评论: 0|来自: AutoCAD

摘要: 必须通过变体将安全数组数据传递给 ActiveX 方法。

必须通过变体将安全数组数据传递给 ActiveX 方法。

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

必须先创建安全数组,然后才能为安全数组赋值。然后,可以将安全数组分配给变体,然后再将其传递给方法。对于需要三元素双精度数组(通常用于指定点)的方法,可以使用函数来构建所需的数据结构。vlax-3d-point

例如,以下调用采用点列表并将该列表转换为三个双精度数组:

(setq circCenter (vlax-3d-point '(3.0 3.0 0.0)))
#<variant 8197 ...>

您还可以传递两个或三个数字,而不是列表。例如:vlax-3d-point

(setq circCenter (vlax-3d-point 3.0 3.0))
#<variant 8197 ...>

省略第三点时,将其设置为零。您可以使用通过以下方式验证变量集的内容:vlax-3d-pointvlax-safearray->listvlax-3d-point

(vlax-safearray->list (vlax-variant-value circcenter))
(3.0 3.0 0.0)

该函数对函数所需的转换矩阵执行类似的任务。它从四个列表构建转换矩阵,每个列表四个数字,如有必要,将所有数字转换为实数。例如:vlax-TMatrixvla-TransformBy

(vlax-tmatrix '((1 1 1 0) (1 2 3 0) (2 3 4 5) (2 9 8 3)))
#<variant 8197 ...>

如果需要为包含三个双精度值或转换矩阵以外的任何内容的数组创建变体,则必须自己构建它。


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 14:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部