Реакция на AutoLISP с выражениями DIESEL в макросах

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

Выражения DIESEL возвращают строковые значения (текстовые строки), которые могут быть использованы в ответ на стандартные команды, процессы AutoLISP и ObjectARX ® , а также другие макросы.

Прим.: AutoLISP и ObjectARX недоступны в AutoCAD LT.

Так как значение, возвращаемое выражением DIESEL, является текстовой строкой, его можно использовать в ответах на запросы функций getXXX AutoLISP или acetGetXXX ObjectARX. Это позволяет вычислять в пунктах меню режимы текущего чертежа и возвращать соответствующие значения в процессы AutoLISP и ObjectARX.

Если загрузить и выполнить приведенный ниже процесс AutoLISP, программа запросит имя и размер символа, а также местоположение в чертеже.

(defun C:SYMIN()
  (setq sym 
    (getstring 
      "\nEnter symbol name: ")      ; Prompts for a symbol name
  )

  (setq 
    siz (getreal 
          "\nSelect symbol size: ") ; Prompts for a symbol size

    p1 (getpoint 
          "\nInsertion point: ")    ; Prompts for insertion point
  )

  (command "._insert"               ; Issues the INSERT command
           sym                      ; using the desired symbol
           p1 siz siz 0)            ; insertion point, and size

 (princ)                            ; Exits quietly 
)
Прим.: Реальный вариант AutoLISP-процедуры должен включать в себя контроль ошибок для проверки корректности введенных пользователем данных.

Пока выполняется указанный выше процесс, щелкните элементы пользовательского интерфейса, которые выполняют выражения DIESEL в ответ на один из запросов. Например, можно использовать выражение $M=$(*,$(getvar,dimscale),0,375) для работы с масштабным коэффициентом, который составляет 3/8 от текущего значения DIMSCALE.

Это невозможно выполнить с помощью аналогичных кодов AutoLISP, поскольку, как правило, возвращаемые выражениями AutoLISP значения не воспринимаются в качестве ответов на запросы функций getXXX (например, функции getreal в предыдущем примере).