ThinkerHua 发表于 2016-1-5 13:24:17

如何获取和修改多段线的多个顶点坐标

例如:
(assoc 10 (entget (car (entsel))))
运行上述代码后,选择了一个多段线,只能返回第一个顶点的坐标。
如何获取多段线的所有顶点?

lizagen 发表于 2016-1-5 13:36:58

(defun c:abc (/ curve dxf point)
(vl-load-com)
(setq curve (car (entsel "\n选择对象")))
(setq dxf (entget curve))
(setq        point
       (mapcar
           '(lambda (x) (vlax-curve-getclosestpointto curve (cdr x)))
           (vl-remove-if-not '(lambda (x) (= 10 (car x))) dxf)
       )
)
(princ point)
(prin1)
)

lucas_3333 发表于 2016-1-5 13:42:37

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=96422&fromuid=7303840
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=168719&fromuid=7303840

bori 发表于 2016-1-5 13:45:06

有个笨方法,用vl-remove删除,while循环获取。

xyp1964 发表于 2016-1-5 18:44:57

;; (PLVertexs (setq s1 (car (entsel "\n选择多段线: "))))
(defun PLVertexs (s1)(mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget s1))))

fan_zh_mjtd 发表于 2016-1-5 19:55:10

lisp入门必学题-------获取多段线顶点坐标

ThinkerHua 发表于 2016-1-6 11:34:55

多谢楼上各位的回答,现在基本了解如何获取多段线的各个顶点了。
但是这些方法都是另外建立了一个存储数据的表,如何修改多段线顶点数据并更新还是不清楚。
还请各位再帮帮忙
页: [1]
查看完整版本: 如何获取和修改多段线的多个顶点坐标