Для отображения пользовательской информации в панели состояния можно использовать обычные текстовые строки и функции языка DIESEL.
Значение системной переменной MODEMACRO определяет отображение крайней левой стороны строки состояния в определенном пользователем разделе. Самый простой (и самый нефункциональный) способ использования системной переменной MODEMACRO — отображение постоянного текстового значения.
Например, чтобы в строке состояния выводилось название фирмы, которой принадлежит экземпляр программы, можно сделать так:
Команда: modemacro
Введите новое значение для MODEMACRO или ".", если значений нет <"">: Петровские экскаваторы
Текстовое значение остается неизменным; строка состояния не отражает изменения внутреннего состояния приложения. Оно не изменяется до тех пор, пока значение системной переменной MODEMACRO не будет обновлено.
Для того чтобы в строке состояния отображались какие-либо текущие параметры, нужно включить в нее макровыражения на языке DIESEL в следующем формате:
$(func_name, arg1, arg2, ...)
Здесь func_name — это имя функции DIESEL, а arg1 , arg2 и т. д. ее аргументы, интерпретируемые в соответствии с определением функции.
В следующем примере показано имя текущего стиля текста в строке состояния:
Команда: 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 передает все введенные данные непосредственно на выход, пока не встретит знак доллара ($) или строку в кавычках. Строки в кавычках можно использовать для подавления вычисления последовательности символов, которые без кавычек интерпретировались бы как DIESEL-функции. Если требуется использовать кавычки внутри таких строк, нужно повторять их дважды. В следующем примере текущим слоем является LAYOUT, а MODEMACRO иллюстрирует, как происходит получение значения переменной CLAYER:
Команда: modemacro
Введите новое значение для MODEMACRO или ".", если нет <"">:?"$(getvar,clayer)= """$(getvar,clayer)""""
В строке состояния выводится:
$(getvar,clayer)="LAYOUT"