Hi, welcome to AUGI.
Since you do have a couple of full acad installations, the easy answer is most definitely - second/hijack one of them for this task.
This lisp will probably do what you want.
Code:
-;
; TXTOUT.LSP for AutoCAD R14
; by John A Bogie, FactorEdge Ltd. August 1999.
; Original code by by Tony Tanzillo, A/E Automation Systems
; Public domain software for non-commercial use
; Adapted from `export.lsp', part of `Misclisp' by Tony Tanzillo, A/E Automation Systems
; `Export' is now a word reserved for AutoCAD's internal use.
; --------------------------------------------------------------------
; TXTOUT.LSP & MTXTOUT AutoCAD TEXT EXPORT FACILITY
; TXTOUT & MTEXTOUT are user-defined lisp commands that will export
; all text or all mtext entities in your drawing to any ascii text file you specify.
; Each text entity in the drawing will occupy
; one line in the file in the order that the text appears in the
; drawing database.
; To export the text in the drawing you are working on, simply
; enter "txtout" <cr> at the AutoCAD command prompt.
; To export the mtext in the drawing you are working on, simply
; enter "mtxtout" <cr> at the AutoCAD command prompt.
; You will then be asked for an OUTPUT filespec, which can be
; any legal DOS file specification including drive, directory path,
; filename and extension.
; If the OUTPUT filespec already exists, you will be notified of
; such, and told to start over and use another filespec. Once you
; specify the filespec and it is accepted, the drawing database is
; scanned and all text is exported to the specified file on an
; entity-by-line basis (one line of text is written for each text
; entity in the drawing, in the logical order in which they appear
; in the database).
: Please note that I have tried to combine these two functions
; into one. I have failed.
(defun C:TXTOUT( / outfile)
(if
(and
(not (eq "" (setq outfile (getstring "\nText output file: "))))
(if (filep outfile)
(prompt
(strcat "\nFile " (strcase outfile)
" already exists, try again."))
T)
(setq outfile (open outfile "w"))
)
(progn
(global 'object
'(if (eq (get object 0) "TEXT")
(write-line (get object 1) outfile)
)
t)
(close outfile)
)
(if (not (filep outfile)) (prompt "\nInvalid filespec, try again."))
)
(prin1)
)
(defun C:MTXTOUT( / outfile)
(if
(and
(not (eq "" (setq outfile (getstring "\nText output file: "))))
(if (filep outfile)
(prompt
(strcat "\nFile " (strcase outfile)
" already exists, try again."))
T)
(setq outfile (open outfile "w"))
)
(progn
(global 'object
'(if (eq (get object 0) "MTEXT")
(write-line (get object 1) outfile)
)
t)
(close outfile)
)
(if (not (filep outfile)) (prompt "\nInvalid filespec, try again."))
)
(prin1)
)
; support functions
; (entput <ename> <groupcode> <value> )
; Replaces or adds the specified <value> to the property specified
; by <groupcode> for the entity specified by <ename>.
(defun entput(e p v / pr o)
(setq pr (entget e))
(entmod (if (setq o (assoc p pr))
(subst (cons p v) o pr) (append pr (cons p v))
)
)
)
; (filep <"filespec">)
; returns it's argument (a string) if a file with that name exists,
; and NIL otherwise.
(defun filep(f / p)
(cond ((setq p (open f "r")) (close p) f))
)
; (global <alias> <procedure> <count>)
;
; Global will take <procedure> (any valid lisp expression) and apply
; it sequentially to each entity in the drawing, assigning each
; entity name to <alias>.
;
; If <count> is NON-NIL, then the message "Processing drawing database..."
; is printed on the display along the number of each entity as
; it is processed.
;
; Note: this procedure is very powerful (and should be used with caution).
; It can be employed for many different purposes in the sense
; that it can take the entire drawing entity-by-entity and
; apply an "if-then-else" test for each entity and branch on
; the result. You can use any valid LISP expression regardless
; of the complexity (memory permitting) as the <procedure> argument,
; and it will be applied to each entity in the drawing database.
(defun global (smb expr count / i)
(set smb (entnext))
(setq i (if count 0))
(prompt "\nProcessing drawing database... \n")
(while
(progn
(if i (prompt (strcat "\rEntity " (itoa (setq i (1+ i))))))
(eval expr)
(set smb (entnext (eval smb)))
)
)
)
; (get <ename> <property>)
;
; Returns the value of the specified <property> (which must be the
; group code of the desired property) from the entity specified by <ename>.
(defun get(e g)
(cdr (assoc g (entget e)))
)
;--------------------------------------------------------------------
(Prompt "\ntxtout and mtextout loaded")