(defun change_att(blkname tag value layname / ss ent n ctrl)
(setvar "cmdecho" 0)
(setq ss (ssget (list '(-4 . "")))
n 0
ctrl T)
(if ss
(while (setq ent (ssname ss n))
(while ctrl
(setq ent (entnext ent))
(if (= (cdr(assoc 2 (entget ent))) tag)
(progn
(command "-attedit" "" blkname tag value ent "l" layname "")
(setq ctrl nil)
)
(setq ent (entnext ent))
)
)
(setq n (1+ n) ctrl T)
)
)
(setvar "cmdecho" 1)
(princ)
)
这个程序很简陋,你可以自己加以改进,应该可以帮你解决问题。