试试这个:
- (defun C:test (/ vc scs hv wh i l nss ss tssi)
- ;;; JDiala 10-23-13 ;;;
- ;;;; Cadtutor.net ;;;;;
- (setq vc (getvar 'viewctr)
- scs (getvar 'screensize)
- hv (/ (getvar 'viewsize) 2.)
- wh (* hv (/ (car scs) (cadr scs)))
- l nil
- nss (ssadd)
- )
- (mapcar
- (function
- (lambda (x)
- (repeat
- (setq i
- (sslength
- (setq tss
- (ssget "_W"
- (list (- (car vc) wh) (- (cadr vc) hv) 0.0)
- (list (+ (car vc) wh) (+ (cadr vc) hv) 0.0)
- (list (cons 0 (if (= (car x) "INSERT") "INSERT" (car x)))
- (if (= (car x) "INSERT")
- (cons 2 (cadr x))
- (cons 8 (cadr x))
- )
- )
- )
- )
- )
- )
- (ssadd (ssname tss (setq i (1- i))) nss)
- )
- )
- )
- (progn
- (setq ss (ssget ))
- (repeat (setq i (sslength ss))
- (setq i (1- i)
- e (ssname ss i))
- (cond
- ( (= l nil)
- (if (= "INSERT" (cdr (assoc 0 (entget e))))
- (setq l (cons (list "INSERT" (cdr (assoc 2 (entget e)))) l))
- (setq l (cons (list (cdr (assoc 0 (entget e))) (cdr (assoc 8 (entget e)))) l ))
- )
- )
- ( (not
- (member
- (if (= "INSERT" (cdr (assoc 0 (entget e))))
- (list "INSERT" (cdr (assoc 2 (entget e))))
- (list (cdr (assoc 0 (entget e))) (cdr (assoc 8 (entget e))))
- ) l
- )
- )
- (if (= "INSERT" (cdr (assoc 0 (entget e))))
- (setq l (cons (list "INSERT" (cdr (assoc 2 (entget e)))) l))
- (setq l (cons (list (cdr (assoc 0 (entget e))) (cdr (assoc 8 (entget e)))) l ))
- )
- )
- (t (setq l l))
- )
- )
- )
- )
- (command "_.isolateobjects" nss "")
- )
|