取四点坐标
有这样一个列表,[*]
[*](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)
[*] )
[*] )
[*])
[*]如果单纯取出四个坐点,是怎样写的?
[*]请各前辈,出手指一二。
没有看懂(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 提问题也是门技术活,没看懂你想表达的意思。 qifeifei 发表于 2025-8-26 15:38
没有看懂
谢谢前辈的指点,学习了! 这种直接给AI,很快出答案 (mapcar 'cdr (vl-remove-if-not (function(lambda(x)(equal (car x) 10))) (car bbb)))
取第一组,其它的自己完善
Dea25 发表于 2025-8-26 16:57
(mapcar 'cdr (vl-remove-if-not (function(lambda(x)(equal (car x) 10))) (car bbb)))
取第一组,其它的 ...
谢谢前辈的指点,学习了! lxw320 发表于 2025-8-26 16:44
这种直接给AI,很快出答案
ai吗,暂时沒学习会! Maybe:
acet-geom-pline-point-list
acet-geom-rect-points
acet-geom-vertex-list (mapcar'(lambda(x)(mapcar'cdr(vl-remove-if'(lambda(y)(/=(car y)10))x)))bbb)
页:
[1]
2