Тема: Как расчитать ширину однострочного текста

Пока делаю так
TextWidth = TextHeight/HW*ScaleFactor*TextLength;
здесь HW - эмпиричесикий коэф. усредененное отношение выстоты буквы к ширине. А т.к. фонт не моноширинный, то, само собой, результат получается очень приблизительный.

Re: Как расчитать ширину однострочного текста

Непонятно.
Вам нужна ширина литеры?

Re: Как расчитать ширину однострочного текста

> Vitaliy
Попробуйте опции align и fit команды dtext.

Re: Как расчитать ширину однострочного текста

Мне нужно вычислить ширину строки текста. Например введен однострочный текст "Тестовая строка", нужно вычислить какую ширину, эта строка будет иметь на чертеже.
Align и Fit не подходит.
Задача - вписать строку в определеную ширину, если строка не умещается в заданную ширину увеличивается ScaleFactor и расчет повторяется. MText не подходит.

Re: Как расчитать ширину однострочного текста

Если нужна точность, можно воспользоваться функцией textbox. Немного подвирает при наклонном тексте (не учитывает наклон, кажется)
Command: (textbox '((1 . "Строка текста")))
((1.11022e-016 -4.44089e-016 0.0) (31.6667 2.5 0.0))
1.11022e-016 - начальная (слева) точка (практически, 0)
31.6667 - конечная (справа) точка теста
2.5 - высота текста

Re: Как расчитать ширину однострочного текста

textbox - делает именно это, но в данном случае не подходит, т.к. работает с дефолтными значениями и есть только в lisp.
Нашел другое решение TextWidth = Text alignment X - Position X
(в терминах окна свойств объекта) или TextAlignmentPoint[0]-InsertionPoint[0] (в терминах VBA).

Re: Как расчитать ширину однострочного текста

Что-то эдакое

(defun C:textw()
  (setq coord (textbox
        (entget
          (car
            (entsel "\n Выберите текст:")
            )
          )
        )
    wid (-
          (caadr coord)
          (caar coord)
          )
    );setq
  
  (princ (strcat "\nТекущая ширина строки="
         (itoa
           (fix wid)
           )"mm"
         )
     )
  (setq neww
     (getreal "\n Введите требуемую ширину строки:")
    )
  (princ
    (strcat "Масштабный коэффициент="
           
        (rtos
          (/  neww wid) 2 3
          )
        )
    )
(princ)         
  )

Re: Как расчитать ширину однострочного текста

Пишу на Delphi, поэтому lisp - реализация не подходит, но все равно спасибо за толчок в правильном направлении.
Решение с "Text alignment X" и "Position X", оказалось не универсальным.
Самый прямой способ:
  object.GetBoundingBox MinPoint, MaxPoint