Присвоение значений MODEMACRO
 
 
 

Для отображения пользовательской информации в строке состояния можно использовать обычные текстовые строки и функции языка DIESEL.

Значение переменной MODEMACRO определяет, что должно отображаться в строке состояния. Простейший пример переменной MODEMACRO представляет собой постоянное текстовое значение, однако, в этом случае результативность переменной минимальна. Например, чтобы в строке состояния выводилось название фирмы, которой принадлежит экземпляр программы, можно сделать так:

Команда: modemacro

Новое значение MODEMACRO, или . если нет <"">: Greg's Bank and Grill

В этом случае MODEMACRO всегда отображает один и тот же текст; строка состояния не содержит никаких данных об изменениях внутреннего состояния AutoCAD. Информация обновляется только при следующей модификации MODEMACRO.

Для того чтобы в строке состояния отображались какие-либо текущие параметры AutoCAD, нужно включить в нее макровыражения на языке DIESEL. Макровыражения записываются в следующем формате:

$(функция, арг1, арг2, ...) 

Здесь функция это имя DIESEL-функции (аналогичное имени функции AutoLISP), а арг1, арг2 и т.д. ее аргументы, интерпретируемые в соответствии с определением функции. В отличие от функций AutoLISP, макровыражения DIESEL оперируют только одним типом данных - строками. Макросы, которые работают с числами, выражают их в виде строк, преобразуя по мере необходимости.

Описание функций языка DIESEL можно найти в разделе USERS1-5 Каталог функций языка DIESEL.

Создадим более содержательную строку состояния, например, с информацией об имени текущего текстового стиля:

Команда: modemacro

Новое значение MODEMACRO, или . если нет <"">: Стиль: $(getvar, textstyle)

ПримечаниеВ тексте некоторых примеров выражения MODEMACRO перенесены на следующую строку из-за своей большой длины. При их вводе, однако, никаких переносов делать не следует.

Чтобы получить значение какой-либо системной переменной, нужно воспользоваться функцией $(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))

$(getvar,snapang)) DIESEL передает все введенные данные непосредственно на выход, пока не встретит знак доллара ($) или строку в кавычках. Строки в кавычках можно использовать для подавления вычисления последовательности символов, которые без кавычек интерпретировались бы как DIESEL-функции. Если требуется использовать кавычки внутри таких строк, нужно повторять их дважды. В следующем примере текущим слоем является LAYOUT, а MODEMACRO иллюстрирует, как происходит получение значения переменной CLAYER:

Команда: modemacro

Новое значение MODEMACRO, или . если нет <"">:?"$(getvar,clayer)="""$(getvar,clayer)""""

В строке состояния выводится:

$(getvar,clayer)="LAYOUT"