Дополнительная информация, которую вы видите в содержимом MText, - это коды форматирования MText.
Когда переопределения форматирования применяются через редактор MText (в отличие от применения к стилю текста, на который ссылается объект MText) форматирование кодируется с использованием кодов форматирования , встроенных в текстовое содержимое. Такие коды форматирования не отображаются в AutoCAD, но используются для надлежащей визуализации различных разделов текстового содержимого, заключенного в код, - в вашем случае код форматирования:
{\\Fsimplex|c0;TEXT THAT I WANT}
Результат в строке TEXT THAT I WANT
отображается с использованием шрифта simplex
.
Насколько я знаю, ezdxf не включает методы , которые позволят вам получить текстовое содержимое с все коды форматирования удалены, но после получения содержимого с помощью свойства text
вы можете использовать регулярные выражения для удаления таких кодов.
Чтобы предложить существующий пример, я ранее разработал следующую функцию AutoLISP, которая использует регулярные выражения для удаления всех кодов форматирования, но, вероятно, есть и другие способы создания фраз для шаблонов RegEx и получения того же результата:
;; Quick Unformat - Lee Mac
;; Returns a string with all MText formatting codes removed.
;; rgx - [vla] Regular Expressions (RegExp) Object
;; str - [str] String to process
(defun LM:quickunformat ( rgx str )
(if
(null
(vl-catch-all-error-p
(setq str
(vl-catch-all-apply
'(lambda nil
(vlax-put-property rgx 'global actrue)
(vlax-put-property rgx 'multiline actrue)
(vlax-put-property rgx 'ignorecase acfalse)
(foreach pair
'(
("\032" . "\\\\\\\\")
(" " . "\\\\P|\\n|\\t")
("$1" . "\\\\(\\\\[ACcFfHKkLlOopQTW])|\\\\[ACcFfHKkLlOopQTW][^\\\\;]*;|\\\\[ACcFfKkHLlOopQTW]")
("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
("$1$2" . "\\\\(\\\\S)|[\\\\](})|}")
("$1" . "[\\\\]({)|{")
("\\$1$2$3" . "(\\\\[ACcFfHKkLlOoPpQSTW])|({)|(})")
("\\\\" . "\032")
)
(vlax-put-property rgx 'pattern (cdr pair))
(setq str (vlax-invoke rgx 'replace str (car pair)))
)
)
)
)
)
)
str
)
)
Для вашей текстовой строки примера выше возврат:
_$ (setq rgx (vlax-create-object "vbscript.regexp"))
#<VLA-OBJECT IRegExp2 00000000315de460>
_$ (LM:quickunformat rgx "{\\Fsimplex|c0;TEXT THAT I WANT}")
"TEXT THAT I WANT"
_$ (vlax-release-object rgx)
0