Добрый день. С такими вопросами хорошо справляется deepseek.
Вот пример запроса: "LISP: defun c:MTextSize, выбор MText, вывод ширины (41) и высоты (46) через rtos 2 3, обработка ошибок." (запрос тоже deepseek написал).
Вот пример кода от deepseek:
Спасибо за ответ. Но как раз с этой задачей Deepseek у меня и затупил

Ни одно из предлагаемых им решений не работает правильно.
Ваш код считывает размеры рамки, моя задача в обратном, установить размеры точно. Допустим, хочу сделать рамку 500х500:
(defun c:MTextSize ( / ent data width height)
(setq ent (car (entsel "\nВыберите MText: ")))
(if ent
(progn
(setq data (entget ent))
;; --- Чтение текущих значений (для информации) ---
(setq width (cdr (assoc 41 data))) ; ширина опорного прямоугольника
(setq height (cdr (assoc 46 data))) ; высота фона
(princ (strcat "\n?? Текущая ширина (DXF 41): " (rtos width 2 3)))
(princ (strcat "\n?? Текущая высота (DXF 46): " (rtos height 2 3)))
;; --- Установка новых значений 500 x 500 ---
(setq data (subst (cons 41 500.0) (assoc 41 data) data)) ; меняем ширину на 50
(setq data (subst (cons 46 500.0) (assoc 46 data) data)) ; меняем высоту на 50
;; --- Применяем изменения к объекту ---
(entmod data)
(entupd ent) ; обновляем экран
(princ "\n?? Рамка MText установлена на 500 x 500.")
)
(princ "\n? Объект не выбран или это не MText.")
)
(princ)
)
Пишет:
?? Текущая ширина (DXF 41): 3.652
?? Текущая высота (DXF 46): 50.000
?? Рамка MText установлена на 500 x 500.
Хотя по факту рамка редактирования вокруг текста как была, так и осталась небольшой, при этом выравнивание "Середина по центру". Deepseek снова убеждает меня, что программно это сделать невозможно.