Выражения DIESEL в макросах

Строковые выражения DIESEL можно использовать в файлах адаптации (CUI/CUIx) в качестве дополнительного метода создания макросов и способа изменения метки раскрывающегося меню.

При использовании выражений DIESEL в элементах пользовательского интерфейса требуется соблюдать формат "$раздел=вложенное_меню", где раздел — буква M, а вложенное меню — требуемое выражение DIESEL.

Рассмотрим пример:

^C^C^P$M=$(if,$(=,$(getvar,cvport),1),mspace,pspace)

Это выражение DIESEL позволяет переключаться между пространствами модели и листа в зависимости от текущего значения системной переменной CVPORT. Если CVPORT присвоено значение 1, выполняется команда МОДЕЛЬ; в противном случае выполняется команда ЛИСТ. Выражение вычисляется прозрачно. Если пропустить специальный символ ^P, который переключает переменную MENUECHO, выражение DIESEL будет отображать в командной строке только вызванную команду.

Выражение DIESEL в следующем примере используется для умножение текущего значения DIMSCALE на 0,5 для вычисления масштабного коэффициента при вставке блока примечания с помощью команды -ВСТАВИТЬ.

^C^C-insert;note;0,0;$M=$(*,$(getvar,dimscale),0.5);;0;

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

В данном примере текущему слою присвоено значение BASE, а в качестве метки раскрываюшегося меню используется следующее выражение DIESEL.

$(eval,"Current layer: " $(getvar,clayer))

В результате данный пункт раскрывающегося меню будет отображать имя текущего слоя (с немедленным обновлением при его смене).

Текущий слой: BASE

Прим.: Ширина раскрывающихся и контекстных меню определяется в момент загрузки файла адаптации. Имена пунктов, генерируемые или изменяемые с помощью DIESEL-выражений после загрузки меню, будут усекаться до длины строки меню.

Если есть опасность того, что сгенерированные с помощью DIESEL пункты меню будут иметь избыточную длину, проблему можно решить с помощью описанного ниже подхода. В этом примере показаны первые 10 символов текущего значения системной переменной CLAYER.

$(eval,"Current value: " $(substr,$(getvar,clayer),1,10))

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

В следующем примере одно и то же DIESEL-выражение применено и в имени элемента меню, и в его макросе. Таким образом можно, например, ввести в чертеж текущие значения даты и времени.

Метка меню

$(edtime,$(getvar,date),DDD", "D MON YYYY)

Макрос

^C^Ctext \\\ $M=$(edtime,$(getvar,date),DDD", "D MON YYYY);

Макросы на языке DIESEL можно использовать также для установки пометки на пунктах меню и для перевода их в недоступное состояние. Следующее раскрывающееся меню недоступно, пока команда активна. После завершения их выполнения пункт возвращается в нормальное состояние.

$(if,$(eq,$(getvar,tilemode),1),~)&Polygonal Viewport

Подобный подход можно использовать для установки пометки возле имени элемента меню и для интерактивной смены символа, который служит для пометки.

$(if,$(and,$(getvar,ucsicon),1),!.)&On