Információk az AutoLISP használatáról a MODEMACRO beállításához

Adja meg a MODEMACRO rendszerváltozó értékét az AutoLISP használatával.

Megjegyzés: Az AutoLISP nem érhető el az AutoCAD LT programban, a MODEMACRO rendszerváltozó pedig nem támogatott a Mac OS rendszeren.

Az AutoLISP segítségével egy karakterláncot rendelhet a MODEMACRO rendszerváltozóhoz, és az eredményeket az állapotsoron jelenítheti meg. A végső MODEMACRO karakterláncot a rövidebb összetevőkből az AutoLISP strcat függvényével kell összeállítani.

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

A következő példa a S::STARTUP funkció használatával betölti a mode1.lsp nevű AutoLISP fájlt, majd egy karakterláncot rendel a MODEMACRO rendszerváltozóhoz.

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

Az AutoLISP fájl mode1.lsp betöltése után a MODEMACRO rendszerváltozó információt jelenít meg az állapotsorban. A megjelenített szövegben az L: karakter után a fólianév, a rajznév és az elérési útvonal első nyolc karaktere, valamint az éppen aktív módnevek kezdőbetűi szerepelnek. A rajz nevének helye a fólianév hosszúságától függetlenül állandó.

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

A DIESEL-kifejezéseket AutoLISP-rutinok is értékelhetik ki az AutoLISP menucmd függvény használatával.