Для отображения пользовательской информации в строке состояния можно использовать обычные текстовые строки и функции языка DIESEL.
Значение переменной MODEMACRO определяет, что должно отображаться в строке состояния. Простейший пример переменной MODEMACRO представляет собой постоянное текстовое значение, однако, в этом случае результативность переменной минимальна. Например, чтобы в строке состояния выводилось название фирмы, которой принадлежит экземпляр программы, можно сделать так:
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Greg's Bank and Grill
В этом случае MODEMACRO всегда отображает один и тот же текст; строка состояния не содержит никаких данных об изменениях внутреннего состояния AutoCAD. Информация обновляется только при следующей модификации MODEMACRO.
Для того чтобы в строке состояния отображались какие-либо текущие параметры AutoCAD, нужно включить в нее макровыражения на языке DIESEL. Макровыражения записываются в следующем формате:
$(функция, арг1, арг2, ...)
функция это имя DIESEL-функции (аналогичное имени функции AutoLISP), а арг1, арг2 и т.д. ее аргументы, интерпретируемые в соответствии с определением функции. В отличие от функций AutoLISP, макровыражения DIESEL оперируют только одним типом данных - строками. Макросы, которые работают с числами, выражают их в виде строк, преобразуя по мере необходимости.
ЗдесьUSERS1-5 Каталог функций языка DIESEL.
Описание функций языка DIESEL можно найти в разделеСоздадим более содержательную строку состояния, например, с информацией об имени текущего текстового стиля:
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Стиль: $(getvar, textstyle)
Чтобы получить значение какой-либо системной переменной, нужно воспользоваться функцией $(getvar, имя_переменной). Текущее значение переменной при этом заменяет то, которое отображалось ранее. При смене текстового стиля инициируется пересчет MODEMACRO. В результате имя нового текущего стиля появляется в строке состояния.
Выражения могут быть вложенными и достаточно сложными. Рассмотрим еще один пример. Пусть в строке состояния требуется отобразить текущий интервал и угол (в градусах) шаговой привязки. Преобразование угла из радиан в градусы и отсечение дробной части может быть осуществлено с помощью вложенных выражений.
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Шаг: $(getvar, snapunit) $(fix,$(*,$(getvar,snapang),$(/,180,3.14159)))
Другой вариант — отображение значений в текущих линейных и угловых форматах единиц.
Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">: Шаг: $(rtos,$(index,0,
$(getvar,snapunit))),$(rtos,$(index,1,$(getvar,snapunit))) $(angtos,
$(getvar,snapang))
$) или строку в кавычках. Строки в кавычках можно использовать для подавления вычисления последовательности символов, которые без кавычек интерпретировались бы как DIESEL-функции. Если требуется использовать кавычки внутри таких строк, нужно повторять их дважды. В следующем примере текущим слоем является LAYOUT, а MODEMACRO иллюстрирует, как происходит получение значения переменной CLAYER:
$(getvar,snapang)) DIESEL передает все введенные данные непосредственно на выход, пока не встретит знак доллара (Команда: modemacro
Новое значение MODEMACRO, или . если нет <"">:?"$(getvar,clayer)="""$(getvar,clayer)""""
В строке состояния выводится:
$(getvar,clayer)="LAYOUT"