明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1886|回复: 3

[讨论] 删除小于指定间距的圆

[复制链接]
发表于 2013-12-3 13:45:47 | 显示全部楼层 |阅读模式
  1. ;;亮显相交对象
  2. (defun C:w1 (/ I LST SS SS1 X Y)
  3.   (defun Is-Ename (arg) (equal (type arg) 'ename))
  4.   (defun pdpx (en1 en2 / KJ)
  5.     (setq kj (mapcar 'vlax-ename->vla-object (list en1 en2)))
  6.     (vlax-invoke (car kj) 'intersectwith (cadr kj) 0)
  7.   )
  8.   ;;120.1 [功能] 选择集->图元列表
  9.   (defun MJ:SS->LIST (SS)
  10.     (vl-remove-if-not 'Is-Ename (mapcar 'cadr (ssnamex SS)))
  11.   )
  12.   (setq ss1 (ssadd))
  13.   (setq ss (ssget))
  14.   (setq lst (MJ:SS->LIST ss))
  15.   (mapcar '(lambda (x)
  16.        (mapcar '(lambda (y)
  17.       (if (equal x y)
  18.         nil
  19.         (if (pdpx x y)
  20.           (progn (ssadd x ss1) (ssadd y ss1))
  21.         )
  22.       )
  23.           )
  24.          lst
  25.        )
  26.      )
  27.     lst
  28.   )
  29.   ;;(repeat (setq i (sslength ss1))(redraw (ssname ss1 (setq i (1- 1))) 3))
  30.   ;;(setvar "selectionpreview" 0)            ;06以上
  31.   (sssetfirst nil SS1)
  32.   ;;(ayEntSSHighLight SS1)
  33.   ;;(command "erase" ss1 "")
  34. )

  35. ;;删除小于指定间距的圆
  36. (defun C:w2 (/ DIS LST SS X Y)
  37.   (defun Is-Ename (arg) (equal (type arg) 'ename))
  38.   (defun pdpx (en1 en2)
  39.     (distance (cdr (assoc 10 (entget en1))) (cdr (assoc 10 (entget en2))))
  40.   )
  41.   ;;120.1 [功能] 选择集->图元列表
  42.   (defun MJ:SS->LIST (SS)
  43.     (vl-remove-if-not 'Is-Ename (mapcar 'cadr (ssnamex SS)))
  44.   )

  45.   (if (and (setq ss (ssget '((0 . "Circle"))))
  46.      (setq dis (getdist "\n输入最小距离: "))
  47.       )
  48.     (progn
  49.       (setq lst (MJ:SS->LIST ss))
  50.       (foreach x lst
  51.   (foreach y lst
  52.     (if (and (entget x) (entget y))
  53.       (if  (equal x y)
  54.         nil
  55.         (if (< (pdpx x y) dis)
  56.     (progn (entdel x) (entdel Y))
  57.         )
  58.       )
  59.     )
  60.   )
  61.       )
  62.     )
  63.   )
  64. )
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2014-1-11 14:31:43 | 显示全部楼层
怎么没用到运算域的算法?想学习哈。[em0]
发表于 2014-6-28 16:49:04 | 显示全部楼层
可不可帮下面代码改成不用指定间距,直接删除圆!
;;删除圆
(defun C:w2 (/ DIS LST SS X Y)
  (defun Is-Ename (arg) (equal (type arg) 'ename))
  (defun pdpx (en1 en2)
    (distance (cdr (assoc 10 (entget en1))) (cdr (assoc 10 (entget en2))))
  )
  ;;120.1 [功能] 选择集->图元列表
  (defun MJ:SS->LIST (SS)
    (vl-remove-if-not 'Is-Ename (mapcar 'cadr (ssnamex SS)))
  )

  (if (and (setq ss (ssget '((0 . "Circle"))))
     (setq dis (getdist "\n输入最小距离: "))
      )
    (progn
      (setq lst (MJ:SS->LIST ss))
      (foreach x lst
  (foreach y lst
    (if (and (entget x) (entget y))
      (if  (equal x y)
        nil
        (if (< (pdpx x y) dis)
    (progn (entdel x) (entdel Y))
        )
      )
    )
  )
      )
    )
  )
)
发表于 2022-4-28 14:51:20 | 显示全部楼层
老师,如何改成显亮指定间距的圆呢?不需要删除,人为检查删除就好了,。最好圆和线之间满足指定间距也显亮
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:46 , Processed in 0.264212 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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