Utilizzo di AutoLISP per impostare MODEMACRO

Impostazione dei valori di MODEMACRO con AutoLISP.

Nota: AutoLISP non è disponibile in AutoCAD LT e la variabile di sistema MODEMACRO non è disponibile in Mac OS.

È possibile utilizzare AutoLISP per assegnare una stringa alla variabile di sistema MODEMACRO e per visualizzare i risultati sulla barra di stato. Utilizzare la funzione strcat di AutoLISP per assemblare la stringa MODEMACRO completa da stringhe di componenti più brevi.

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

Nell'esempio seguente viene utilizzata la funzione S::STARTUP per caricare un file AutoLISP denominato mode1.lsp e viene impostata una stringa per la variabile di sistema 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

Quando il file AutoLISP mode1.lsp viene caricato, la variabile di sistema MODEMACRO viene impostata in modo da visualizzare le informazioni sulla barra di stato. Il testo visualizzato inizia con L:, seguito dai primi otto caratteri del nome del layer corrente, dal nome del disegno e da una parte del percorso, quindi dalla prima lettera di ciascun nome delle modalità al momento attive. La posizione del nome del disegno resta costante, indipendentemente dalla lunghezza del nome del layer.

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

Le espressioni DIESEL possono anche essere calcolate dalle routine AutoLISP mediante la funzione menucmd di AutoLISP.