this is two lisp routines that I combined. The 1st one copies a line of dtext by a scale factor. The 2nd one lets me select several lines of dtext and edit them from top to bottom. The problem that I have is when I put them together it remembers the previous text. (Its not clearing before the new selection). I think I need to put a nil statement somewhere but I cant figure out where? I still new to this. (defun c:5 (/ qlst tsize inp que num) (princ " * DText only *") (SETQ QUE (ssget '((0 . "text")))) (setq qlst (entget (ssname que 0))) (if nonstandardspacing (setq spacingmodifier nonstandardspacing) (setq spacingmodifier 1.35) ) (setq tsize (* -1 (* spacingmodifier (cdr (assoc 40 qlst))))) (SETQ INP (GETreal " * Enter how many lines of dtext to add *")) (cond ((= INP NIL) (SETQ NUM 2)) ((minusp inp) (setq num (fix (1+ (abs inp))))) (t (setq num (fix (1+ (abs inp))))) ) (COND ((NULL INP) (command "array" "p" "" "r" num "1" tsize)) ((MINUSP inp) (command "array" "p" "" "r" num "1" (abs tsize))) (T (command "array" "p" "" "r" num "1" tsize)) ) (SETQ QUE NIL) (if (setq ss (ssget '((0 . "TEXT,MTEXT")))) (progn (setq cnt1 0) (while (< cnt1 (sslength ss)) (setq TxtList (cons (ssname ss cnt1) TxtList)) (setq cnt1 (1+ cnt1)) ) (setq TxtList (vl-sort TxtList '(lambda (a b) (> (cadr (cdr (assoc 10 (entget a)))) (cadr (cdr (assoc 10 (entget b)))))))) (foreach item TxtList (command "_.ddedit" item "") ) ) ) )