谨供参考:

- [FONT=courier new]
- (defun fld (num)
- (cdr (assoc num d))
- )
- (defun C:ATEDIT (/ adj p l n e os as ns st s nsl osl sl si chf chm)
- (setq p (ssget))
- (if p (progn
- (setq osl (strlen (setq os (getstring "\nOld string: " t))))
- (setq nsl (strlen (setq ns (getstring "\nNew string: " t))))
- (setq l 0 chm 0 n (sslength p))
- (setq adj
- (cond
- ((/= osl nsl) (- nsl osl))
- (T nsl)
- )
- )
- (while (< l n)
- (setq d (entget (setq e (ssname p l))))
- (if (and (= (fld 0) "INSERT")
- (= (fld 66) 1))
- (progn
- (setq e (entnext e))
- (while e
- (setq d (entget e))
- (cond ((= (fld 0) "ATTRIB")
- (setq chf nil si 1)
- (setq s (cdr (setq as (assoc 1 d))))
- (while (= osl (setq sl (strlen
- (setq st (substr s si osl)))))
- (cond
- ((= st os)
- (setq s (strcat (substr s 1 (1- si)) ns
- (substr s (+ si osl))))
- (setq chf t)
- (setq si (+ si adj)))
- )
- (setq si (1+ si))
- )
- (if chf (progn
- (setq d (subst (cons 1 s) as d))
- (entmod d)
- (entupd e)
- (setq chm (1+ chm))
- ))
- (setq e (entnext e))
- )
- ((= (fld 0) "SEQEND")
- (setq e nil)) ; stop scan
- (T (setq e (entnext e)))
- );end cond
- );end while
- ) ;end progn
- ) ;end if
- (setq l (1+ l))
- );end while
- ))
- (princ "Changed ")
- (princ chm)
- (princ " attributes.")
- (terpri)
- )
- [/FONT]
|