;========== begin text-to-mtext (defun rw-objmod (modent moditm modval / moddat) (setq moddat (entget modent)) ; Sets moddat to the entity data ; for entity name moddat. (setq moddat (subst (cons moditm modval) (assoc moditm moddat) ; Changes the moditm group in moddat ; moddat to modval. ) ) (entmod moddat) ; Modifies entity value in drawing. (entupd modent) ; updates entity object ) (defun menuitem2str (inp) (cond ((= inp nil)(setq ret "BYLAYER")) ((= inp 256)(setq ret "BYLAYER")) ((= inp 0)(setq ret "BYBLOCK")) ((and (> inp 0)(< inp 255))(setq ret (itoa inp))) (t nil) ) ) (defun CHK_TXT( OBJ ) ; Verifies that OBJ is single line text. (if (/= (cdr (assoc 0(entget OBJ))) "TEXT") (progn (prompt "\n ===Selection is not TEXT====") (setq OBJ nil) ) OBJ ) ) ; Main routine (defun C:TMT ( / MT_LAY MT_STY MT_IPT MT_ROT MT_WID MT_TMP OLD_LAY MT_TXT MT_CLR TXT_OBJ U_CE activecolor) (setq U_CE (getvar "cmdecho")) (setvar "cmdecho" 0) (setq activecolor (getvar "CECOLOR")) (while (not TXT_OBJ) (setq TXT_OBJ (car (entsel "\nSelect TEXT object... "))) (if TXT_OBJ (setq TXT_OBJ (Chk_Txt TXT_OBJ))) ) (setq MT_STY (cdr (assoc 7 (entget TXT_OBJ))) ; style MT_LAY (cdr (assoc 8 (entget TXT_OBJ))) ; layer MT_IPT (cdr (assoc 10 (entget TXT_OBJ))) ; insertion point MT_ROT (cdr (assoc 50 (entget TXT_OBJ))) ; rotation MT_HGT (cdr (assoc 40 (entget TXT_OBJ))) ; text height MT_CLR (cdr (assoc 62 (entget TXT_OBJ))) ; text color MT_TXT (strcat (cdr (assoc 1 (entget TXT_OBJ))) "\\P") ; gets text and adds line-feed MT_WID (* MT_HGT (strlen MT_TXT)) ; text box width ) (if TXT_OBJ (entdel TXT_OBJ)) ; TEST (while (setq TXT_OBJ (entsel "\nSelect next TEXT object, to finish... ")) (setq TXT_OBJ (car TXT_OBJ)) (if (Chk_Txt TXT_OBJ) (progn (setq MT_TXT (strcat MT_TXT (cdr (assoc 1 (entget TXT_OBJ))) "\\P")) ; adds line-feed (setq MT_TMP (* MT_HGT (strlen (cdr (assoc 1 (entget TXT_OBJ)))))) (if (> MT_TMP MT_WID) (setq MT_WID MT_TMP) ; text box width) ) (entdel TXT_OBJ) ) ) ) (setq OLD_LAY(getvar "clayer")) (setvar "clayer" MT_LAY) (if (/= MT_CLR nil) (setvar "CECOLOR" (menuitem2str MT_CLR)) ; active color ) (command "-MTEXT" MT_IPT "S" MT_STY "W" MT_WID MT_TXT "") (setq TXT_OBJ (entlast)) (rw-objmod TXT_OBJ 50 MT_ROT) ; angle (rw-objmod TXT_OBJ 40 MT_HGT) ; size (rw-objmod TXT_OBJ 10 MT_IPT) ; insertion point (rw-objmod TXT_OBJ 62 MT_CLR) ; default color (see active color above) (setvar "clayer" OLD_LAY) (setvar "cmdecho" U_CE) (setvar "CECOLOR" activecolor) (princ) ) ;========== end text-to-mtext