Odpovídání na AutoLISP pomocí výrazů jazyka DIESEL v makrech

Řetězcové výrazy jazyka DIESEL lze použít k poskytování odpovědí na příkazy definované pomocí jazyka AutoLISP nebo prostředím ObjectARX.

Výrazy jazyka DIESEL vracejí řetězcové hodnoty (textové řetězce), které lze použít jako odpověď na standardní příkazy, procedury AutoLISP a ObjectARX ® a jiná makra.

Poznámka: Technologie AutoLISP a ObjectARX nejsou dostupné v aplikaci AutoCAD LT.

Hodnota vrácená výrazem jazyka DIESEL je textový řetězec, lze ji proto použít jako odpověď na volání funkce AutoLISP getXXX nebo funkce prostředí ObjectARX acetGetXXX. Tato funkčnost umožňuje, aby položky nabídky vyhodnotily aktuální podmínky výkresu a vrátily hodnotu do procedury jazyka AutoLISP nebo ObjectARX.

Pokud načtete a spustíte následující ukázkovou proceduru jazyka AutoLISP, aplikace vyzve k zadání názvu a velikosti symbolu a jeho umístění ve výkresu.

(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 
)
Poznámka: Správná funkce jazyka AutoLISP by měla obsahovat kontrolu chyb, která ověřuje platnost zadaných hodnot.

Během provádění předchozího příkladu lze kliknout na prvky uživatelského rozhraní, které spustí výraz jazyka DIESEL jako reakci na jednu z výzev. Pokud například chcete použít faktor měřítka, jehož hodnota jsou 3/8 aktuální hodnoty proměnné DIMSCALE, použijte výraz $M=$(*,$(getvar,dimscale),0.375).

To není možné provést pomocí podobného kódu jazyka AutoLISP; hodnotu vrácenou výrazem jazyka AutoLISP obvykle není možné použít jako odpověď na volání getXXX (například funkce getreal v předchozí ukázce).