@GoldSA,
Try this code:
(prompt "\nTo run a LISP type: COMTXTCSV")
(princ)
(defun c:COMTXTCSV ( / old_snap ss len i lst file op minPt maxPt ssn lst elast ptlist)
(setq old_osnap (getvar 'osmode))
(setvar 'osmode 0)
(prompt "\nSelect TEXT or MTEXT:")
(setq ss (ssget (list (cons 0 "*TEXT") (cons 8 "?????") (cons 62 1)))
len (sslength ss)
i 0
lst (list)
)
(setq file (getfiled "Choose file save destination" "" "csv" 1)
op (open file "w")
)
(while (< i len)
(vla-GetBoundingBox (vlax-ename->vla-object (ssname ss i)) 'minPt 'maxPt)
(setq minPt (vlax-safearray->list minPt)
maxPt (vlax-safearray->list maxPt)
ssn (ssget "_F" (list minPt maxPt) (list (cons 0 "*TEXT") (cons -4 "<AND") (cons 8 "TEXT") (cons 62 4) (cons -4 "AND>")))
lst (cons (list (cdr (assoc 1 (entget (ssname ss i)))) (cdr (assoc 1 (entget (ssname ssn 0))))) lst)
)
(if (= ssn nil)
(progn
(command-s "_RECTANG" minPt maxPt)
(setq elast (entlast)
ptlist (mapcar 'cdr (vl-remove-if-not (function (lambda (x) (= (car x) 10))) (entget elast)))
ssn (ssget "_CP" ptlist (list (cons 0 "*TEXT") (cons -4 "<AND") (cons 8 "TEXT") (cons 62 4) (cons -4 "AND>")))
lst (cons (list (cdr (assoc 1 (entget (ssname ss i)))) (cdr (assoc 1 (entget (ssname ssn 0))))) lst)
)
)
)
(setq i (1+ i))
)
(foreach val lst
(write-line (strcat (car val) "," (cadr val)) op)
)
(close op)
(setvar 'osmode old_osnap)
(prompt (strcat "\nThe text values are written in " (vl-filename-base file) ".csv!"))
(princ)
)
Two things to note:
- the firtst one is inside this part of code "(setq ss (ssget (list (cons 0 "*TEXT") (cons 8 "?????") (cons 62 1)))", (cons 8 "?????")", the question marks present the red text values (I can't read the layer name, it is on chineese, but doesn't make a problem for me to performe COMTXTCSV) (picture 1). If the layer name is differnt, you need to put a right name for the layer name inside (cons 8 "?????"), which is the inside "(setq ss (ssget (list (cons 0 "*TEXT") (cons 8 "?????") (cons 62 1)))"".
- the second one is inside this part of code "ssn (ssget "_F" (list minPt maxPt) (list (cons 0 "*TEXT") (cons -4 "<AND") (cons 8 "TEXT") (cons 62 4) (cons -4 "AND>")))" and this part of code "ssn (ssget "_CP" ptlist (list (cons 0 "*TEXT") (cons -4 "<AND") (cons 8 "TEXT") (cons 62 4) (cons -4 "AND>")))", if the layer name is different than "TEXT" inside the "(cons 8 "TEXT")", you need to replace into the correct layer name, and for the "TEXT COLOR" inside the "(cons 62 4)", you also need to replace into the correct color index (picture 2).
After executing the COMTXTCSV command, I get this (picture 3):
Best regards.