Ustawianie zmiennej systemowej MODEMACRO za pomocą AutoLISP

Ustaw wartości MODEMACRO za pomocą AutoLISP.

Uwaga: Język AutoLISP jest niedostępny w programie AutoCAD LT for Mac OS, a zmienna systemowa MODEMACRO jest niedostępna w systemie Mac OS.

Języka AutoLISP można użyć w celu przypisania ciągu do zmiennej systemowej MODEMACRO i wyświetlania wyników na pasku stanu. Aby złożyć cały ciąg MODEMACRO z krótszych ciągów składowych, można użyć funkcji strcat języka AutoLISP.

(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)"
        ")"
    )
  )
)

W poniższym przykładzie użyto funkcji S::STARTUP w celu wczytania pliku AutoLISP o nazwie mode1.lsp oraz ustawienia ciągu w zmiennej MODEMACRO.

;;; 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

Podczas wczytywania pliku AutoLISP mode1.lsp zmienna systemowa MODEMACRO jest tak ustawiana, aby wyświetlać informacje na pasku stanu. Wyświetlany tekst zaczyna się od ciągu L:, po którym następuje pierwsze osiem znaków nazwy bieżącej warstwy, nazwa rysunku i część ścieżki oraz pierwsza litera nazwy każdego z obecnie aktywnych trybów. Położenie nazwy rysunku nie ulega zmianie, niezależnie od długości nazwy warstwy.

;;; 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)"
  )
)

Wyrażenia języka DIESEL mogą być także analizowane przez procedury języka AutoLISP za pomocą funkcji menucmd.