明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 22528|回复: 85

[源码] 删除重复对象

    [复制链接]
发表于 2013-12-11 00:36:29 | 显示全部楼层 |阅读模式
本帖最后由 flyfox1047 于 2013-12-23 21:42 编辑



老外网上下的,带对话框,感觉还没ET的Overkill好用,源文件拿出来,想研究的拿去吧

再多上几个吧


再发删除重复线
  1. (defun unique ( linlst )
  2.   (if (car linlst) (cons (car linlst) (unique (_vl-remove (car linlst) (_vl-remove (list (cadar linlst) (caar linlst)) (cdr linlst) 1e-6) 1e-6))))
  3. )

  4. (defun _vl-remove ( el lst fuzz )
  5.   (vl-remove-if '(lambda ( x ) (and (equal (car x) (car el) fuzz) (equal (cadr x) (cadr el) fuzz))) lst)
  6. )

  7. (defun eraseduplin ( ss / i lin p1 p2 lay col62 col420 linlst linlsta linlstn )
  8.   (setq i -1)
  9.   (while (setq lin (ssname ss (setq i (1+ i))))
  10.     (setq p1 (cdr (assoc 10 (entget lin)))
  11.           p2 (cdr (assoc 11 (entget lin)))
  12.           lay (cdr (assoc 8 (entget lin)))
  13.           col62 (cdr (if (assoc 62 (entget lin)) (assoc 62 (entget lin)) nil))
  14.           col420 (cdr (if (assoc 420 (entget lin)) (assoc 420 (entget lin)) nil))
  15.     )
  16.     (setq linlsta (cons (list p1 p2 lay col62 col420) linlsta))
  17.     (setq linlst (cons (list p1 p2) linlst))
  18.     (entdel lin)
  19.   )
  20.   (setq linlstn (unique linlst))
  21.   (foreach lin linlsta
  22.     (if (vl-some '(lambda ( x ) (and (equal (car x) (car lin) 1e-8) (equal (cadr x) (cadr lin) 1e-8))) linlstn)
  23.       (setq linlstn (subst lin (list (car lin) (cadr lin)) linlstn))
  24.     )
  25.   )
  26.   (foreach lin linlstn
  27.     (entmake (vl-remove nil (list '(0 . "LINE") (cons 8 (caddr lin)) (if (cadddr lin) (cons 62 (cadddr lin))) (if (caddr (cddr lin)) (cons 420 (caddr (cddr lin)))) (cons 10 (car lin)) (cons 11 (cadr lin)))))
  28.   )
  29. )

  30. (defun c:eraseduplines-0lines ( / ss s i k lin )
  31.   (setq ss (ssget "_:L" '((0 . "LINE"))))
  32.   (setq s (ssadd))
  33.   (setq i -1)
  34.   (setq k 0)
  35.   (while (setq lin (ssname ss (setq i (1+ i))))
  36.     (if (equal (cdr (assoc 10 (entget lin))) (cdr (assoc 11 (entget lin))) 1e-4) (progn (setq k (1+ k)) (entdel lin)) (ssadd lin s))
  37.   )
  38.   (prompt "\nTotal : ")(princ (eraseduplin s))(prompt " duplicate-lines erased")
  39.   (prompt "\nTotal : ")(princ k)(prompt " zero-lines erased")
  40.   (princ)
  41. )

  42. (defun c:ed0l nil (c:eraseduplines-0lines))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

好东西!赞1  发表于 2015-4-21 14:42

评分

参与人数 3明经币 +3 收起 理由
lucas_3333 + 1 很给力!
ucuc2003 + 1 赞一个!
flytoday + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

  • · excel|主题: 80, 订阅: 2
发表于 2024-1-16 08:00:19 | 显示全部楼层
支持楼主!老外的程序也能试试参考,都多多益善。
发表于 2018-2-2 11:02:30 | 显示全部楼层
看帖回帖好习惯  楼主辛苦
发表于 2024-1-13 11:37:02 | 显示全部楼层

楼主真是无私奉献啊!谢谢了!
发表于 2013-12-11 21:14:10 | 显示全部楼层
这么多人下载,怎么都没见一个人支持楼主。
发表于 2013-12-12 09:23:20 | 显示全部楼层
我来支持楼主
发表于 2013-12-12 14:05:49 | 显示全部楼层
少人回复我相信是应该要验证码吧。。。。。
 楼主| 发表于 2013-12-12 14:10:50 | 显示全部楼层
ysq101 发表于 2013-12-12 14:05
少人回复我相信是应该要验证码吧。。。。。

LSP都是源码,又没编译,怎会要验证码?
发表于 2013-12-12 21:29:43 | 显示全部楼层
flyfox1047 发表于 2013-12-12 14:10
LSP都是源码,又没编译,怎会要验证码?

四楼只的是 回帖需要验证码。。现在貌似没有验证码了。
发表于 2013-12-13 09:05:10 | 显示全部楼层
楼主顶你...这么多好东东
发表于 2013-12-13 09:14:53 | 显示全部楼层
路过也顶一下!
发表于 2013-12-13 13:21:32 | 显示全部楼层
谢谢!!!!!!!!!
发表于 2013-12-13 18:48:34 | 显示全部楼层
支持楼主!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 15:31 , Processed in 0.189286 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表