Baber62 发表于 2022-7-5 18:27:27

Lisp列出重复点

我正在寻找lisp例程列出重复点在一个图形。我已经设法找到了一个可以删除重复点,但没有任何可以列出重复点。
 
提前感谢您的协助。

David Bethel 发表于 2022-7-5 19:02:26

你说的是点实体吗?你需要什么宽容?是否考虑分层?颜色?
 
-大卫

Baber62 发表于 2022-7-5 19:13:09

嗨,大卫,
 
是的,我说的是点实体。我要考虑的公差是点的精确坐标,比如从地形测量或从转换为AutoCAD点的GIS地图。我已经看了图层,确实有些点在某些坐标处被输入了两次。公差需要为0.001(以米为单位)。
虽然我想我昨晚在CADTutor上搜索后找到了答案。大卫,你在下面的链接中回答了。
 
http://www.cadtutor.net/forum/showthread.php?94248-选择重复点/第2页
 
但是,我需要生成一个显示重复坐标的列表,然后可以将其导出为csv文件。如果您有任何想法,我们将不胜感激。

Lee Mac 发表于 2022-7-5 19:30:05

以下未经测试,但应按要求执行:
(defun c:listdupepoints ( / d f i l s )
   (if (setq s (ssget '((0 . "POINT"))))
       (progn
         (repeat (setq i (sslength s))
               (setq p (cdr (assoc 10 (entget (ssname s (setq i (1- i)))))))
               (if (vl-some (function (lambda ( x ) (equal p x 1e-3))) l)
                   (setq d (cons p d))
                   (setq l (cons p l))
               )
         )
         (cond
               (   (not d)
                   (princ "\nNo duplicate points found.")
               )
               (   (not (setq f (getfiled "" "" "csv" 1)))
                   (princ "\n*Cancel*")
               )
               (   (setq f (open f "w"))
                   (foreach p d
                     (write-line
                           (apply 'strcat
                               (mapcar '(lambda ( x y ) (strcat (rtos x) y)) p '("," "," ""))
                           )
                           f
                     )
                   )
                   (close f)
               )
               (   (princ "\nUnable to open file for writing."))
         )
       )
   )
   (princ)
)
页: [1]
查看完整版本: Lisp列出重复点