未测试(当然):
- (defun C:test ( / SS nm nms enx e )
- (if (setq SS (ssget "_C" '(7.244 2.071) '(16.665 10.003) '((0 . "TEXT,INSERT"))))
- (foreach enx (mapcar 'entget (vl-remove-if 'listp (mapcar 'cadr (ssnamex SS))))
- (or
- (and
- (vl-every '(lambda (x) (member x enx)) '((0 . "TEXT")(8 . "YYY")))
- (entmod (subst '(8 . "ZZZ") '(8 . "YYY") enx))
- ); and
- (and
- (member '(0 . "INSERT") enx) (entmod (subst '(8 . "ZZZ") (assoc 8 enx) enx))
- (setq nm (vla-get-EffectiveName (vlax-ename->vla-object (cdr (assoc -1 enx)))))
- (not (member nm nms))
- (setq nms (cons nm nms))
- (setq enx (entget (tblobjname "BLOCK" nm)))
- (setq e (cdr (assoc -2 enx)))
- (while (and e (not (member '(0 . "SEQEND") (setq enx (entget e)))))
- (and (member '(0 . "TEXT") enx) (entmod (subst '(8 . "0") (assoc 8 enx) enx)))
- (setq e (entnext e))
- ); while
- ); and
- ); or
- ); foreach
- (alert "\nNo selection.")
- ); if SS
- (if nms (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport))
- (princ)
- ); defun
- (vl-load-com) (princ)
|