最好的办法是反应器,给你个笨办法,按自己的需求去改吧
 - (defun c:tt (/ en en1 ent lst n pt1 pt2 ss ss1)
- (setq lst '(("2-D0101-04" . "甲方")
- ("2-D0101-05" . "乙方")
- ("2-D0101-06" . "今天上班"))
- ss (ssget '((0 . "text") (1 . "*-*-*"))))
- (repeat (setq n (sslength ss))
- (setq en (vlax-ename->vla-object (ssname ss (setq n (1- n)))))
- (vla-getboundingbox en 'pt1 'pt2)
- (setq pt1 (mapcar '+ '(0 600 0) (vlax-safearray->list pt1))
- pt2 (mapcar '+ '(0 600 0) (vlax-safearray->list pt2)))
- (setq ss1 (ssget "c" pt1 pt2 '((0 . "text"))))
- (if ss1
- (progn (setq en1 (ssname ss1 0)
- ent (entget en1))
- (entmod
- (subst (cons 1 (cdr (assoc (vla-get-textstring en) lst)))
- (assoc 1 ent)
- ent)))
- (progn (vla-move (setq en1 (vla-copy en))
- (vlax-3d-point '(0 0 0))
- (vlax-3d-point '(0 600 0)))
- (vla-put-textstring en1
- (cdr (assoc (vla-get-textstring en) lst)))))
- )
- (princ))
|