My take on it [minimally tested in your sample drawing]:
(defun C:TEST (/ file blkname test info)
(setq file (open "C:\\Users\\kcooper\\Downloads\\MTS.txt" "r"))
(setq blkname (cdr (assoc 2 (entget (car (entsel "\nSelect Block: "))))))
(while
(not
(and
(setq test (read-line file))
(= (vl-string-trim "\t " (substr test 1 (vl-string-search "=" test))) blkname)
); and
); not
); while
(close file); done with it
(setq
info (substr test (+ (vl-string-search "=" test) 2))
info (vl-string-right-trim "\"\)" (substr info (+ (vl-string-search "\" \"" info) 4)))
); setq
(while (vl-string-search "\" \"" info); new lines
(setq info (vl-string-subst "\\P" "\" \"" info))
); while
(while (vl-string-search "\\\"" info); inches mark if present
(setq info (vl-string-subst "\"" "\\\"" info))
); while
(command "_.mleader" pause pause info)
(prin1)
)
Fix the filepath etc. in line 2 to suit your situation.
It doesn't make an all-encompassing list [huge!] of all part numbers and their descriptions, but rather reads the file until it hits the line that starts with the Block name, uses that and reads no further.
It depends on all data-line entries having some space(s) and/or tab(s) followed by an = sign after the part number, and one " " [the closing double-quote after DES and a space and the opening double-quote for what follows] immediately preceding the beginning of the "meat" of the description part, as [I think] is the case in your sample file. Not having your hundreds of Blocks, I can't try beyond that. Not like the example in Message 3.
It did the white parts here:
[EDIT: Corrected former inclusion of backslash in 2\" to just 2".]
Kent Cooper, AIA