Тема: Помогите пожалуйста найти ошибку в коде который убирает форматирование MTEXT
Добрый день,
Есть код который убирает форматирование у MTEXT, но он не может справится с форматированными списками как например:
* ыв
* ываываы
* ываыва
В результате выдает бредовый набор символов
Сам код вот:
(defun remove-mtext-formatting (mtext-value / text-value temp-string) (setq text-value "") (while (/= mtext-value "") (cond ((wcmatch (strcase (setq temp-string (substr mtext-value 1 2))) "\\[\\{}]" ) (setq mtext-value (substr mtext-value 3) text-value (strcat text-value temp-string) ) ) ((wcmatch (substr mtext-value 1 1) "[{}]") (setq mtext-value (substr mtext-value 2)) ) ((wcmatch (strcase (setq temp-string (substr mtext-value 1 2))) "\\[LO`~]" ) (setq mtext-value (substr mtext-value 3)) ) ((wcmatch (strcase (substr mtext-value 1 2)) "\\[ACFHQTW]") (setq mtext-value (substr mtext-value (+ 2 (vl-string-search ";" mtext-value)) ) ) ) ((wcmatch (strcase (substr mtext-value 1 4)) "\\PQ[CRJD],\\PXQ" ) (setq mtext-value (substr mtext-value (+ 2 (vl-string-search ";" mtext-value)) ) ) ) ((wcmatch (strcase (substr mtext-value 1 2)) "\\P") (if (or (zerop (strlen text-value)) (= " " (substr text-value (strlen text-value))) (= " " (substr mtext-value 3 1)) ) (setq mtext-value (substr mtext-value 3)) (setq mtext-value (substr mtext-value 3) text-value (strcat text-value " ") ) ) ) ((wcmatch (strcase (substr mtext-value 1 2)) "\\S") (setq temp-string (substr mtext-value 3 (- (vl-string-search ";" mtext-value) 2) ) text-value (strcat text-value (vl-string-translate "#^\\" "/^\\" temp-string ) ) mtext-value (substr mtext-value (+ 4 (strlen temp-string))) ) ) (t (setq text-value (strcat text-value (substr mtext-value 1 1)) mtext-value (substr mtext-value 2) ) ) ) ) text-value )
Помогите пожалуйста пофиксить эту ошибку, если можно подскажите пожалуйста что надо изменить? Сложность еще в том что код должен быть совместим с 2000-м автокадом
С уважением.