Verwenden von AutoLISP zum Festlegen von MODEMACRO

Festlegen von MODEMACRO-Werten mit AutoLISP

Anmerkung: AutoLISP steht in AutoCAD LT for Mac OS nicht zur Verfügung, und die Systemvariable MODEMACRO ist in Mac OS nicht verfügbar.

AutoLISP-Anwendungen können verwendet werden, um eine Zeichenfolge zu der Systemvariablen MODEMACRO zuzuweisen und die Ergebnisse in der Statusleiste anzuzeigen. Mithilfe der AutoLISP-Funktion strcat können Sie die vollständige MODEMACRO-Zeichenfolge aus kürzeren Teilzeichenfolgen zusammenfügen.

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

Im folgenden Beispiel wird die Funktion S::STARTUP verwendet, um die AutoLISP-Datei mode1.lsp zu laden und eine Zeichenfolge für die Systemvariable MODEMACRO festzulegen.

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

Wenn die AutoLISP-Datei mode1.lsp geladen ist, wird die Systemvariable MODEMACRO so eingestellt, dass sie Informationen in der Statusleiste anzeigt. Der angezeigte Text beginnt mit L:, gefolgt von den ersten acht Zeichen des aktuellen Layernamens, dem Zeichnungsnamen und einem Teil des Pfads sowie dem ersten Buchstaben des jeweiligen Namens der derzeit aktiven Modi. Der Zeichnungsname steht unabhängig von der Länge des Layernamens immer an der gleichen Position.

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

DIESEL-Ausdrücke können von AutoLISP-Routinen auch mit der AutoLISP-Funktion menucmd evaluiert werden.