李,
不在乎我昨天写的,这是我的错,因为我测试例程时使用了错误的测试文件。
我修改了您的代码,使用ssget“\u C”函数将作业分为多个步骤。
现在,对于大文件,该例程速度更快。
我还添加了一些代码以获得更好的输出。
任何其他提示都会得到。
非常感谢您的时间和好运。
路易吉
- ; clear.lsp: Delete duplicate entities, tested only on polylines and circles.
- ; Core routine by Lee Mac 04-08-2013
- ; Output results by Luigi Calderone 04-10-2013
- ;
- (defun c:clear (/ old a b ent enx i lst s)
- (setq xmin (car (getvar "EXTMIN"))
- xmax (car (getvar "EXTMAX"))
- ymin (car (cdr (getvar "EXTMIN")))
- ymax (car (cdr (getvar "EXTMAX")))
- old (ssget "_X")
- N 10
- J 0
- )
- (command "zoom" "e")
- (prompt "\n")
- (while (< J N)
- (setq lst nil
- s nil
- pt1 (list xmin (+ ymin (/ (* (- ymax ymin) J) N)))
- pt2 (list xmax (+ ymin (/ (* (- ymax ymin) (+ J 1)) N)))
- J (+ J 1)
- )
- (if (setq s (ssget "_C" pt2 pt1))
- (repeat (setq i (sslength s))
- (foreach dx (entget (setq ent (ssname s (setq i (1- i)))))
- (setq a (car dx)
- b (cdr dx)
- )
- (cond
- ((or (= 'ename (type b)) (= a 5)))
- ((listp b)
- (setq
- enx (cons
- (cons
- a
- (mapcar (function (lambda (x) (rtos x 2 )) b)
- )
- enx
- )
- )
- )
- ((numberp b)
- (setq enx (cons (cons a (rtos b 2 ) enx))
- )
- ((setq enx (cons dx enx)))
- )
- )
- (if (member enx lst)
- (entdel ent)
- (setq lst (cons enx lst))
- )
- (setq enx nil)
- (cond (SPIN (setq SPIN NIL) (princ "\r\"))
- (t
- (setq SPIN (princ "\r/")
- SPIN (princ " ")
- SPIN (princ (itoa J))
- SPIN (princ "/")
- SPIN (princ (itoa N))
- )
- )
- )
- )
- )
- )
- (if (setq trap old)
- (prompt (strcat "\nNumber of elements before clearing- "
- (itoa (sslength old))
- )
- )
- (prompt (strcat "\nNumber of elements before clearing- 0"))
- )
- (if (setq trap (ssget "_X"))
- (prompt (strcat "\nNumber of elements after clearing- "
- (itoa (sslength (ssget "_X")))
- )
- )
- (prompt (strcat "\nNumber of elements after clearing- 0"))
- )
- (if (setq trap (ssget "_X"))
- (prompt (strcat "\nNumber of elements cleared- "
- (itoa (- (sslength old) (sslength (ssget "_X"))))
- )
- )
- (prompt (strcat "\nNumber of elements cleared- 0"))
- )
- (princ)
- );end file
- (prompt "\nLoaded new command CLEAR. ")
- (princ)
|