Verwendung von AutoLISP in Makros

Sie können Befehle erstellen, die AutoLISP verwenden. Dies ist eine sehr komplexe und anspruchsvolle Art der Verwendung der Anpassungsfunktion des Programms.

Mithilfe von AutoLISP-Variablen und -Ausdrücken können Sie Makros erstellen, die komplexe Aufgaben ausführen. Wenn das Programm eine CUI-/CUIx-Datei lädt, wird zusätzlich eine MNL-Datei mit demselben Namen und demselben Speicherort geladen. Das Platzieren von AutoLISP-Code in einer MNL-Datei ist eine effiziente Methode zum Laden benutzerdefinierter Befehle, die in Makros verwendet werden können.

Anmerkung:
  • AutoCAD LT unterstützt nicht das automatische Laden von MNL-Dateien, die Dateien können jedoch mit der AutoLISP-Funktion LOAD aus einer anderen LISP-Datei geladen werden.
  • Nur in AutoCAD unter Windows, nicht in AutoCAD LT verfügbar: Sie können zusätzliche AutoLISP-Dateien angeben, die in den Editor für das Anpassen der Benutzeroberfläche (CUI-Editor) geladen werden. Sie können Befehle erstellen, die AutoLISP verwenden. Dies ist eine sehr komplexe und anspruchsvolle Art der Verwendung der Anpassungsfunktion des Programms. Tests und Übungen unterstützen Sie beim effektiven Einsatz dieser Funktion.

Beispiele

Voreinstellen von Werten

Dieses Beispiel besteht aus drei Befehlsmakros, die verwendet werden, um einen Block einzufügen.

Ein Befehlsmakro fordert zur Eingabe der Fensterbreite auf.

^C^C^P(setq WINWID (getreal "\nEnter window width: ")) ^P

Ein Befehlsmakro fordert zur Eingabe der Wandstärke auf.

^C^C^P(setq WALLTHK (getreal "\nEnter wall thickness: ")) ^P

Ein Befehlsmakro fügt einen Block mit dem Namen "window" hinzu und fordert Sie auf, den Einfügepunkt und die Drehung einzugeben.

^C^C_INSERT window XScale !WINWID YScale !WALLTHK

Die X-Achse des Blocks wird auf die aktuelle Fensterbreite und die Y-Achse auf die aktuelle Wandstärke gesetzt.

Anpassen der Größe von Griffen

Dieses Beispiel enthält zwei Befehlsmakros, die den aktuellen Wert der Systemvariablen GRIPSIZE vergrößern oder verkleinern.

Ein Befehlsmakro erhöht den Wert der Systemvariablen GRIPSIZE um 1.

^P(setvar "gripsize"(1+ (getvar "gripsize")))(redraw)(princ)

Ein Befehlsmakro verringert den Wert der Systemvariablen GRIPSIZE um 1.

^P(setvar "gripsize"(1- (getvar "gripsize")))(redraw)(princ)

Um die Gültigkeitsprüfung dieser Befehlsmakros zu ermöglichen, können keine Werte unter 0 und über 255 für die Systemvariable GRIPSIZE verwendet werden.

Anfordern von Benutzereingaben

Das folgende Beispiel fordert zur Eingabe von zwei Punkten auf und zeichnet eine rechteckige Polylinie mit den angegebenen Punkten als Ecken.

^P(setq a (getpoint "Enter first corner: "));\+
(setq b (getpoint "Enter opposite corner: "));\+ 
pline !a (list (car a)(cadr b)) !b (list (car b)(cadr a)) c;^P
Aufrufen von Makros, die Pulldown-Menüelementen zugeordnet sind (nur Windows)

Mit der folgenden Syntax können Sie das Makro eines Pulldown-Menüelements im Programm ausführen:

(menucmd "Gcustomizationgroup.element_ID=|")

Die oben genannte Syntax funktioniert nur dann, wenn das Menüelement Teil eines Menüs ist, das sich in der Menüleiste des Programms befindet und verfügbar ist.