CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2025 开发者帮助

关于点列表 (AutoLISP)

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

关于点列表 (AutoLISP)

AutoLISP 利用列表数据类型来表示图形坐标值。

点表示为具有两个或三个数值的列表

  • 2D 点 - 包含两个整数或实数(分别为 X 和 Y)的列表,如 中所示。(3.4 7.52)
  • 3D 点 – 包含三个整数或实数(分别为 X、Y 和 Z)的列表,如 .(3.4 7.52 1.0)

您可以使用该函数形成点列表,如以下示例所示:list

(list 3.875 1.23)
(3.875 1.23)

(list 88.0 14.77 3.14)
(88.0 14.77 3.14)

要将特定坐标分配给点变量,可以使用以下表达式之一:

(setq pt1 (list 3.875 1.23))
(3.875 1.23)

(setq pt2 (list 88.0 14.77 3.14))
(88.0 14.77 3.14)

(setq abc 3.45)
3.45

(setq pt3 (list abc 1.23))
(3.45 1.23)

后者使用变量的值作为点列表的 X 分量。如果列表的所有成员都是常量值,则可以使用该函数显式定义列表,而不是函数。该函数返回一个不带计算值的表达式,如下所示:abcquotelistquote

(setq pt1 (quote (4.5 7.5)))
(4.5 7.5)

单引号 ( ' ) 可以用作函数的简写。下面的代码生成的结果与前面的代码相同。quote

(setq pt1 '(4.5 7.5))
(4.5 7.5)

quote 和 (') 函数不能用于使用存储在变量中的值创建列表。以下代码不返回例外结果:

(setq abc 3.45)
3.45

(setq pt4 (quote abc 1.23))
; error: syntax error

检索点列表的 X、Y 和 Z 分量

您可以使用三个附加的内置函数检索点列表的 XYZ 分量;和。下面的代码示例演示如何从 3D 点列表中检索值。变量设置为点 1.5,3.2,2:carcadrcaddrpt

(setq pt '(1.5 3.2 2.0))
(1.5 3.2 2.0)

该函数返回列表的第一个成员。在此示例中,它将点列表的 X 值返回给变量。carx_val

(setq x_val (car pt))
1.5

该函数返回列表的第二个成员。在此示例中,它将点列表的 Y 值返回给变量。cadry_val

(setq y_val (cadr pt))
3.2

该函数返回列表的第三个成员。在此示例中,它将点列表的 Z 值返回给变量。caddrz_val

(setq z_val (caddr pt))
2.0

您可以使用以下代码定义矩形的左下角和右上角(和),如下所示:pt1pt2

(setq pt1 '(1.0 2.0) pt2 '(3.0 4.0))
(3.0 4.0)

您可以使用 和 函数将变量设置为矩形的左上角,方法是提取 的 X 分量和 的 Y 分量,如下所示:carcadrpt3pt1pt2

(setq pt3 (list (car pt1) (cadr pt2)))
(1.0 4.0)

前面的语句设置为等于 点。pt3(1.0, 4.0)

AutoLISP 支持 和 函数的组合,深度可达四级。这些函数的一些示例是 和 。每个 a 表示对 的调用,每个 d 表示对 的调用。例如:carcdrcaaaarcadrcarcdr

(caar x)    is equivalent to  (car (car x)) 
(cdar x)    is equivalent to  (cdr (car x)) 
(cadar x)   is equivalent to  (car (cdr (car x)))
(cadr x)    is equivalent to  (car (cdr x)) 
(cddr x)    is equivalent to  (cdr (cdr x)) 
(caddr x)   is equivalent to  (car (cdr (cdr x)))

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-6-27 16:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部