lingfne 发表于 2025-8-26 15:23:45

取四点坐标

有这样一个列表,


[*]
[*](setq bbb'(
[*]            ((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (62 . 256)
[*]            (10 30623.9 50960.7)
[*]            (10 30623.9 53400.7)
[*]            (10 34223.9 53400.7)
[*]            (10 34223.9 50960.7)
[*]            )
[*]            ((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (62 . 256)
[*]            (10 35942.8 50960.7)
[*]            (10 35942.8 53400.7)
[*]            (10 39542.8 53400.7)
[*]            (10 39542.8 50960.7)
[*]            )
[*]            ((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (62 . 256)
[*]            (10 41444.6 54912.2)
[*]            (10 41444.6 57352.2)
[*]            (10 45044.6 57352.2)
[*]            (10 45044.6 54912.2)
[*]            )
[*]            ((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline") (90 . 4) (70 . 1) (62 . 256)
[*]            (10 46763.4 54912.2)
[*]            (10 46763.4 57352.2)
[*]            (10 50363.4 57352.2)
[*]            (10 50363.4 54912.2)
[*]            )
[*]          )
[*])

[*]如果单纯取出四个坐点,是怎样写的?
[*]请各前辈,出手指一二。

qifeifei 发表于 2025-8-26 15:38:20

没有看懂(setq points-list '()) ; 用于存储所有点

(foreach poly bbb
(foreach item poly
    (if (and (eq (car item) 10) (listp (cdr item)))
      (setq points-list (cons (cdr item) points-list))
    )
)
)

; 反转列表以保持原始顺序(因为 cons 是倒序添加)
(setq points-list (reverse points-list))

; 此时 points-list 就是所有 (x y) 坐标的列表
points-list

mahuan1279 发表于 2025-8-26 15:57:16

提问题也是门技术活,没看懂你想表达的意思。

lingfne 发表于 2025-8-26 16:26:20

qifeifei 发表于 2025-8-26 15:38
没有看懂

谢谢前辈的指点,学习了!

lxw320 发表于 2025-8-26 16:44:12

这种直接给AI,很快出答案

Dea25 发表于 2025-8-26 16:57:35

(mapcar 'cdr (vl-remove-if-not (function(lambda(x)(equal (car x) 10))) (car bbb)))
取第一组,其它的自己完善

lingfne 发表于 2025-8-26 17:22:49

Dea25 发表于 2025-8-26 16:57
(mapcar 'cdr (vl-remove-if-not (function(lambda(x)(equal (car x) 10))) (car bbb)))
取第一组,其它的 ...

谢谢前辈的指点,学习了!

lingfne 发表于 2025-8-26 17:24:35

lxw320 发表于 2025-8-26 16:44
这种直接给AI,很快出答案

ai吗,暂时沒学习会!

Andyhon 发表于 2025-8-26 20:57:23

Maybe:

acet-geom-pline-point-list
acet-geom-rect-points
acet-geom-vertex-list

xyp1964 发表于 2025-8-26 22:04:09

(mapcar'(lambda(x)(mapcar'cdr(vl-remove-if'(lambda(y)(/=(car y)10))x)))bbb)
页: [1] 2
查看完整版本: 取四点坐标