Miller87 发表于 2022-7-5 19:54:15

如何删除重复点

我需要一个代码,在绘图中找到的每一行的开始和结束处插入一个点。
所以我这样做了:
 

(defun POINTLINES ( / sel i ini e fin)

;SELECTION ALL THE LINES IN THE DRAWING

(setq sel (ssget "_a" '((0 . "LINE" ))))
(repeat (setq i (sslength sel))
   (setq i (1- i))
   ;EXTRACTION INITIAL COORDINATES OF THE LINE
   (setq ini (cdr (assoc 10 (entget (setq e (ssname sel i))))))
   ;CREATION INITIAL POINT OF THE LINE       
   (entmakex
   (list
       (cons 0 "POINT")
       (cons 10 ini)
   )
   )
   ;EXTRACTION FINAL COORDINATES OF THE LINE
   (setq fin (cdr (assoc 11 (entget (setq e (ssname sel i))))))
   ;CREATION FINAL POINT OF THE LINE       
   (entmakex
   (list
       (cons 0 "POINT")
       (cons 10 fin)
      
   )
   )

   )

(princ)


      )


但是我想删除坐标相等的点。(两条或多条连续线的情况)。
一点帮助?
谢谢
米勒87

Miller87 发表于 2022-7-5 20:41:52

 
 
我发现它有效!
再次感谢

Lee Mac 发表于 2022-7-5 21:00:03

以下是一种更有效的方法:
(defun c:linepoints ( / e i l p s )
   (if (setq s (ssget "_X" '((0 . "LINE"))))
       (repeat (setq i (sslength s))
         (setq e (entget (ssname s (setq i (1- i)))))
         (foreach x '(10 11)
               (setq p (cdr (assoc x e)))
               (if (not (vl-some '(lambda ( q ) (equal p q 1e-) l))
                   (progn
                     (entmake (list '(0 . "POINT") (cons 10 p)))
                     (setq l (cons p l))
                   )
               )
         )
       )
   )
   (princ)
)
页: [1]
查看完整版本: 如何删除重复点