CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

构造折线点数组

2023-1-5 08:13| 发布者: admin| 查看: 279| 评论: 0|来自: AutoCAD

要处理的最后一个问题是如何将单个点变量—,,and—转换为函数所需的格式。首先,获得有关该主题的一些帮助。p1p2p3,p4vla-addLightweightpolyline

获取有关函数的信息

  1. 单击 Visual LISP 工具栏上的“帮助”按钮。
  2. 输入“输入项目名称”对话框,然后单击“确定”。 (帮助系统不区分大小写,因此不必担心函数名称的大小写方式。vla-addLightweightpolyline

帮助状态要求您将折线顶点指定为变体形式的双精度数组。以下是帮助如何描述此参数:AddLightWeightPolyline

The array of 2D WCS coordinates specifying the vertices of the polyline. At least two points (four elements) are required for constructing a lightweight polyline. The array size must be a multiple of 2.

变体是一种 ActiveX 构造,用作各种类型数据的容器。字符串、整数和数组都可以用变体表示。变体存储数据以及标识数据的信息。

到目前为止,您有四个点,每个点的格式为 (x、y、z)。挑战在于将这四个点转换为以下形式的列表:

(x1 y1 x2 y2 x3 y3 x4 y4)

该函数采用多个列表并将它们连接起来。若要以正确的格式为 ActiveX 函数创建四个点的列表,可以使用以下表达式:append

(setq polypoints (append (3dPoint->2dPoint p1)
                              (3dPoint->2dPoint p2)
                              (3dPoint->2dPoint p3)
                              (3dPoint->2dPoint p4)))

写四遍函数有点麻烦。您可以使用 theandfunctions 进一步减少代码。选中此选项后,对一个或多个列表中的单个元素执行函数,并将参数列表传递给指定的函数。生成的代码如下所示:3dPoint->2dPointmapcarapplymapcarapply

(setq polypoints (apply 'append (mapcar '3dPoint->2dPoint 
(list p1 p2 p3 p4))))

在调用之前,点列表采用以下形式:mapcar

((x1 y1 z1) (x2 y2 z2) (x3 y3 z3) (x4 y4 z4))

之后,您拥有以下形式的点列表:mapcar

((x1 y1) (x2 y2) (x3 y3) (x4 y4))

最后,在从中返回的列表上应用函数后,最终会得到以下内容:appendmapcar

(x1 y1 x2 y2 x3 y3 x4 y4)

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部