Строковые выражения 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 пункты меню будут иметь избыточную длину, проблему можно решить с помощью описанного ниже подхода. В этом примере показаны первые 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