本帖最后由 namezg 于 2018-3-10 13:28 编辑
 - ;删除重复圆
- (defun c:DelOverlapCircle ( / *error* ss i j n m en en_dxf ss1)
- (defun *error* (msg)
- (setvar "nomutt" 0)
- (or (not msg)
- (wcmatch (strcase msg) "*BREAK,*中断,*CANCEL*,*取消,*EXIT*")
- (princ (strcat "\n** Error: " msg " **"))
- )
- (if msg
- (command ".undo" "")
- )
- (setvar "cmdecho" 1)
- (princ)
- )
- (setvar "cmdecho" 0)
- (command "_undo" "be")
- (princ "\n请选择圆: ")
- (setvar "nomutt" 1)
- (setq ss (ssget '((0 . "CIRCLE"))))
- (setvar "nomutt" 0)
- (setq i 0
- j 0
- n -1
- )
- (if ss
- (progn
- (repeat (setq i (sslength ss))
- (setq en (ssname ss (setq n (1+ n))))
- (command "_.select" ss "")
- (if (and (setq en_dxf (entget en))
- (setq ss1 (ssget "p" (list '(0 . "CIRCLE") (assoc 10 en_dxf) (assoc 40 en_dxf))))
- (> (setq m (sslength ss1)) 1)
- )
- (progn
- (command "_.erase" ss1 "r" en "")
- (setq j (+ j (1- m)))
- )
- )
- )
- )
- )
- (princ (strcat "共选择" (itoa i) "个圆,删除重复圆" (itoa j) "个。"))
- (*error* nil)
- )
|