多么奇怪的请求啊。写起来很有趣。。。
需要DosLib。
- (defun c:EAT (/ ss sLst eLst nLst)
- ;; Edit All Text (playing around)
- ;; DosLib Required
- ;; Alan J. Thompson, 05.21.10
- (if (and (or dos_proplist
- (alert "DosLib required. Please download and install.")
- (command "_.browser" "http://www.en.na.mcneel.com/doslib.htm")
- )
- (setq ss (ssget "_X" '((0 . "ATTDEF,MTEXT,MULTILEADER,TEXT"))))
- )
- (progn
- ((lambda (i)
- (while (setq e (ssname ss (setq i (1+ i))))
- ((lambda (ent)
- (or (eq 4
- (logand 4 (cdr (assoc 70 (entget (tblobjname "layer" (cdr (assoc 8 ent)))))))
- )
- ((lambda (str)
- (setq sLst (cons (cons str str) sLst)
- eLst (cons e eLst)
- )
- )
- ((lambda (s)
- (cond
- ((eq (cdr (assoc 0 ent)) "MULTILEADER") (cdr (assoc 304 ent)))
- ((vl-position (cdr (assoc 0 ent)) '("ATTDEF" "MTEXT" "TEXT"))
- (foreach x ent
- (and (vl-position (car x) '(1 3)) (setq s (strcat s (cdr x))))
- )
- s
- )
- )
- )
- ""
- )
- )
- )
- )
- (entget e)
- )
- )
- )
- -1
- )
- (if (and sLst eLst)
- (if (setq nLst (dos_proplist "Edit All Text" "Edit text:" sLst))
- (mapcar
- (function
- (lambda (e s)
- (or (eq "" (cdr s))
- (eq (car s) (cdr s))
- (vla-put-textstring (vlax-ename->vla-object e) (cdr s))
- )
- )
- )
- eLst
- nLst
- )
- )
- (alert "No text on unlocked layers!")
- )
- )
- )
- (princ)
- )
|