CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于 Safearrays with Variant (AutoLISP/ActiveX)

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

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

Safearray 数据必须通过变体传递给 ActiveX 方法。

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

在将值赋值给安全数组之前,必须先创建它。然后,在将 safearray 传递给方法之前,可以将其分配给变体。对于需要三元素双精度数组(通常用于指定点)的方法,可以使用该函数生成所需的数据结构。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   苏公网安备32011402011833)

GMT+8, 2024-12-15 14:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部