CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于点列表(AutoLISP)

2023-1-6 13:25| 发布者: admin| 查看: 1003| 评论: 0|来自: AutoCAD

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

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

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

  • 2D 点 - 包含两个整数或实数(分别为 X 和 Y)的列表,如 in。(3.4 7.52)
  • 3D 点 – 包含三个整数或实数(分别为 X、Y 和 Z)的列表,如 in。(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)

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

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

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

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

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

AutoLISP 支持深度达四个级别的函数组合。这些函数的一些示例是 and。每个 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)))

路过

雷人

握手

鲜花

鸡蛋

最新评论

AutoCAD Civil 3D.NET二次开发

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

GMT+8, 2024-5-7 11:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部