O nastavení proměnné MODEMACRO pomocí jazyka AutoLISP

Nastavení hodnot proměnné MODEMACRO pomocí jazyka AutoLISP.

Poznámka: Jazyk AutoLISP není dostupný v aplikaci AutoCAD LT pro Mac OS a systémová proměnná MODEMACRO není dostupná v systému Mac OS.

Pomocí jazyka AutoLISP je možné k systémové proměnné MODEMACRO přiřadit řetězec a výsledky zobrazit na stavovém řádku. K sestavení úplného řetězce proměnné MODEMACRO z kratších řetězců použijte funkci jazyka AutoLISP strcat .

(defun C:ACADMODE()
  (setvar "modemacro"
    (strcat
        "Layer $(substr,$(getvar,clayer),1,8)"
        "$(if,$(getvar,orthomode), Ortho)"
        "$(if,$(getvar,snapmode), Snap)"
        "$(if,$(=,$(getvar,tilemode),0),"
        "$(if,$(=,$(getvar,cvport),1), P)"
        ")"
    )
  )
)

V následující ukázce je pomocí funkce S::STARTUP načten soubor jazyka AutoLISP s názvem mode1.lsp a k systémové proměnné MODEMACRO je přiřazen řetězec.

;;; S::STARTUP loads the file MODE1.LSP which defines a MODEMACRO string
(defun S::STARTUP ( )
  (load "mode1")
 (princ)
)
;;; Additional AutoLISP files can also be defined or loaded here

Jakmile je soubor jazyka AutoLISP mode1.lsp načten, nastaví systémovou proměnnou MODEMACRO tak, aby se informace zobrazily na stavovém řádku. Zobrazený text začíná řetězcem L:, za ním následuje prvních osm znaků názvu aktuální hladiny, název výkresu a část cesty a poté první písmeno názvu každého aktuálně aktivního režimu. Pozice názvu výkresu je pevná, bez ohledu na délku názvu hladiny.

;;; MODE1.LSP
(setvar "modemacro" 
  (strcat
    "L:$(substr,$(getvar,clayer),1,30)"
    "$(substr,        ,1,$(-,30,$(strlen,$(getvar,clayer)))) "
    ;;            ^^^^^^^^ Note the 8 spaces here
    "<.."
      "$(if,$(eq,$(getvar,dwgname),UNNAMED),UNNAMED,"
        "$(substr,$(getvar,dwgname),"
          "$(if,$(>,$(strlen,$(getvar,dwgprefix)),29),"
            "$(-,$(strlen,$(getvar,dwgprefix)),29),1"
          "),"
          "$(strlen,$(getvar,dwgname))"
        ")"
      ")"
    ">"
    "$(if,$(getvar,orthomode), O, )"
    "$(if,$(getvar,snapmode), S, )"
    "$(if,$(and,"
    "$(=,$(getvar,tilemode),0),$(=,$(getvar,cvport),1)),P)"
  )
)

Výrazy jazyka DIESEL mohou být také vyhodnocovány procedurami jazyka AutoLISP, konkrétně pomocí funkce jazyka AutoLISP menucmd .