AutoLISP-Kompatibilität

Für AutoLISP-Programme sind in der Regel sehr wenige Änderungen erforderlich, damit sie in der aktuellen Version ausgeführt werden können.

Ein AutoLISP-Programm wird jedoch möglicherweise in der neuesten Version nicht mehr richtig ausgeführt, da eine AutoLISP-Funktion oder ein Befehl des AutoCAD-basierten Produkts oder eine Systemvariable geändert wurde oder nicht mehr unterstützt wird.

Anmerkung: In den AutoCAD-basierten Produkten ab Version 2014 müssen benutzerdefinierte Anwendungen im sicheren Modus ausgeführt werden. Die Systemvariable SECURELOAD ist auf den Wert 1 oder 2 festgelegt. Wenn der sichere Modus ausgeführt wird, kann das AutoCAD-basierte Produkt Dateien mit Code nur aus vertrauenswürdigen Speicherorten laden und ausführen. Vertrauenswürdige Speicherorte werden durch die Systemvariable TRUSTEDPATHS angegeben. Weitere Informationen finden Sie unter "Sicherheit und Virenschutz".

Allgemeine Informationen

Veraltete Befehle und Systemvariablen

Überprüfen Sie Ihre benutzerdefinierten Programme auf Befehle und Systemvariablen, die als veraltet gekennzeichnet wurden. In einigen Fällen funktionieren veraltete Befehle oder Systemvariablen möglicherweise weiterhin mit ihren benutzerdefinierten Programmen, obwohl sie nicht direkt in der Befehlszeile eingegeben oder über die Benutzeroberfläche aufgerufen werden können.

Anmerkung: Selbst wenn veraltete Befehle und Systemvariablen in einigen benutzerdefinierten Programmen funktionieren, bedeutet das nicht, dass sie auch in einer zukünftigen Produktversion funktionieren werden. Sie sollten Ihre benutzerdefinierten Programme neu schreiben, um die Verwendung veralteter Befehle und Systemvariablen zu vermeiden.

Die folgenden Techniken können nützlich sein, wenn Sie veraltete Befehle oder Systemvariablen in einem benutzerdefinierten Programm verwenden möchten:

  • Stellen Sie dem Befehlsnamen einen Punkt voran. Beispiel: .BLIPMODE ermöglicht die Verwendung des Befehls BLIPMODE.
  • Vermeiden Sie das Ausführen einer veralteten Systemvariablen mit der Funktion COMMAND, was zur Fehlermeldung Unbekannter Befehl führen kann. Verwenden Sie stattdessen die Befehle GETVAR und SETVAR. Beispiel: (getvar "BLIPMODE") gibt den aktuellen Wert der Systemvariablen BLIPMODE zurück.
Anmerkung: Aus dem Produkt entfernte Befehle und Systemvariablen können nicht mit den zuvor beschriebenen Techniken wiederhergestellt werden.

AutoCAD 2026-basierte Produkte und höher

Asynchrones Laden von Rasterbildern
Programme, die Zeichnungen mit Rasterbildern ändern oder plotten, müssen möglicherweise aktualisiert werden, damit sie warten, bis die Bilder vollständig geladen sind. Der Befehl BILDSYNC stellt sicher, dass Rasterbilder, die beim Öffnen einer Datei im Hintergrund geladen werden, vollständig sind, bevor Sie fortfahren können.
Verbundene Support-Dateien
Support-Dateien sind jetzt verbunden, d. h., alle Zeichnungen und Teamkollegen in einem Autodesk Docs-Projekt können gemeinsam einen Satz Support-Dateien nutzen. Bei benutzerdefinierten Programmen kann sich dies darauf auswirken, wo die Programme die referenzierten Dateien speichern. Wenn noch kein Autodesk Docs-Projekt für Support-Dateien eingerichtet wurde, werden die Speicherorte für alle Support-Dateien durch das aktuelle AutoCAD-Benutzerprofil definiert.

AutoCAD 2025-basierte Produkte und höher

Benutzerdefinierte AutoLISP-Programme, die eine oder mehrere Funktionen aus den Bibliotheken der Express Tools-Dienstprogramme verwenden, müssen jetzt die Funktion acet-load-expresstools aufrufen, bevor eine Funktion verwendet werden kann, die als Teil dieser Bibliotheken definiert ist. Die Funktion acet-load-expresstools initialisiert die Funktionen der Express Tools-Dienstprogramme.

AutoCAD 2021-basierte Produkte und höher

Unicode-Unterstützung

Die AutoLISP-Umgebung wurde aktualisiert und unterstützt jetzt Unicode-Zeichen, was sich auf Funktionen auswirkt, die zum Bearbeiten oder Zurückgeben von Zeichenfolgenwerten verwendet werden. Weitere Informationen zu den Funktionen, die für die Unicode-Unterstützung aktualisiert wurden, finden Sie unter Neue Funktionen oder Änderungen in AutoLISP.

Basierend auf den in Ihren Programmen verwendeten Funktionen müssen Sie möglicherweise Änderungen vornehmen, damit Unicode-Zeichen verwendet werden können. Der Rückgabewert der ASCII-Funktion kann nun beispielsweise größer als 255 sein oder im Vergleich zu früheren Versionen einen anderen Wert aufweisen, wenn ein Unicode-Zeichen an die Funktion übergeben wird. Sie können die Systemvariable LISPSYS verwenden, um die in das Programm geladene vorgabemäßige AutoLISP-Umgebung zu identifizieren und zu steuern; 0 und 2 = MBCS-Unterstützung (alte Umgebung) und 1 = Unicode-Unterstützung.

Das folgende Code-Snippet zeigt, wie Sie bestimmen, welche AutoLISP-Umgebung derzeit in das Programm geladen ist, und wie die Code-Ausführung auf Grundlage der geladenen Umgebung gesteuert wird:

(if (= (getvar "LISPSYS") 1)
  (alert (strcat 
             "Unicode support enabled"
             "\n(ASCII \"€\") returns 8364"
         )
  )
  (alert (strcat 
             "MBCS (Legacy) support enabled"
             "\n(ASCII \"€\") returns 128"
         )
  )
)
Anmerkung: Beim Kompilieren von AutoLISP-Quelldateien (LSP-Dateien) mit Visual LISP Integrated Development Environment (VL IDE) oder dem Befehl LISPAPPERST steuert der aktuelle Wert der Systemvariablen LISPSYS das Format, in dem Dateien kompiliert werden. Dateien, die mit der Einstellung 1 für die Systemvariable LISPSYS im Unicode-Format kompiliert wurden, können nicht in AutoCAD 2020 oder frühere Versionen geladen werden. Stellen Sie vor dem Kompilieren von Dateien für LISPSYS den Wert 0 oder 2 ein, um sicherzustellen, dass diese auch in frühere Versionen geladen werden können. Dadurch wird jedoch die Unicode-Unterstützung eingeschränkt.

AutoCAD 2020-basierte Produkte und höher

EINFÜGE (Befehl)

Der Befehl EINFÜGE zeigt jetzt die Blockpalette an, während der neue Befehl KLASSISCHEINFÜG jetzt das "alte" Dialogfeld Einfügen anzeigt. Wenn die Verwendung des Dialogfelds Einfügen für Ihr AutoLISP-Programm wichtig ist, müssen Sie das vorhandene Programm ändern. Bisher haben Sie möglicherweise die folgenden AutoLISP-Anweisungen verwendet, um das Dialogfeld Einfügen anzuzeigen:

(initdia)
(command "insert")

Um das Dialogfeld Einfügen auch weiterhin mit Ihren AutoLISP-Programmen anzuzeigen, müssen Sie Ihre vorhandenen Programme so ändern, dass einer dieser Ansätze genutzt wird:

  • (initcommandversion 2)
    (initdia)
    (command "insert")
  • (command "classicinsert")

AutoCAD 2019-basierte Produkte und höher

LOCALE (Systemvariable)

Die Systemvariable LOCALE gibt jetzt einen Code zurück, der eine Abkürzung aus mindestens zwei Buchstaben enthält, die die aktuelle Sprache darstellt, und nicht eine Abkürzung aus drei Buchstaben, die eine Sprache und Sprachvariante darstellt. Die aus mindestens zwei Buchstaben bestehende Abkürzung basiert auf der Windows-Funktion GetLocaleInfo und verwendet die Konstante LOCALE_SISO639LANGNAME.

In Vorgängerversionen von AutoCAD 2019-basierten Produkten bestand der Code aus einer Abkürzung mit drei Buchstaben, die von der Windows-Funktion GetLocaleInfo unter Verwendung der Konstanten LOCALE_SABBREVLANGNAME zurückgegeben wurde. Die aus drei Buchstaben bestehende Abkürzung bestand aus zwei Datenquellen; einem aus zwei Buchstaben bestehenden Sprachenkürzel und einem dritten Buchstaben, der die Sprachvariante angab. Beispiel: ENU stellte die Kombination der englischen Sprache (EN) und den Vereinigten Staaten (United States, U) als Sprachvariante dar.

AutoCAD 2017-basierte Produkte und höher

CDATE, DATE und andere datums-\zeitbezogene Systemvariablen

Die in den Systemvariablen CDATE und DATE gespeicherten Werte stellen nicht mehr das/die auf eine Millisekunde oder eine Hundertstelsekunde genaue aktuelle Datum/Uhrzeit dar. Sekunden stellen nun die kleinste Zeiteinheit dar, in der die Werte dieser beiden Systemvariablen ausgedrückt werden. Wenn Sie die Zeitintervalle in einer kleineren Einheit als eine Sekunde nachverfolgen müssen, sollten Sie den von der Systemvariable MILLISECS zurückgegebenen Wert berücksichtigen, der die Zeitdifferenz seit dem Start der Arbeitsstation in Millisekunden speichert.

Die folgenden datums-\zeitbezogenen Systemvariablen waren auch durch das Entfernen der Millisekunden betroffen:

  • TDCREATE
  • TDINDWG
  • TDUCREATE
  • TDUPDATE
  • TDUSRTIMER
  • TDUUPDATE

Wenn Sie bei einem Ihrer vorhandenen Programme den Zeitunterschied bis zur nächsten Millisekunde benötigen, können Sie die letzten zwei oder drei Ziffern des in der Systemvariable MILLISECS gespeicherten Werts abrufen und diese an den von der Systemvariable CDATE ausgegebenen Wert anhängen. So entsteht ein Wert, der mit dem von der Systemvariable CDATE bei AutoCAD 2016-basierten Produkten und Produkten einer früheren Version vergleichbar ist. Das folgende Codebeispiel zeigt, wie Sie basierend auf der Ziel-AutoCAD-Version einen Wert für Datum/Zeit mit Millisekunden abrufen können:

; Returns a CDATE value that includes milliseconds based on release
; Usage: (CDate)
; Replaces (rtos (getvar "CDATE") 2 8)
(defun CDate ( / ms)
  ; Check to see which AutoCAD release is being used
  (if (<= (atof (getvar "ACADVER")) 22.0)
    (rtos (getvar "CDATE") 2 8)
    (progn
      ; Get the current milliseconds and append it to the CDATE value
      (setq ms (itoa (getvar "MILLISECS")))
      (strcat (rtos (getvar "CDATE") 2 6)(substr ms (- (strlen ms) 2)))
    )
  )
)
Systemvariable EPDFSHX

Die Systemvariable EPDFSHX auf AutoCAD 2016 Update 1 eingeführt wurde in PDFSHX umbenannt. Aufgrund dieser Namensänderung müssen alle AutoLISP-Anweisungen, die auf die Systemvariable EPDFSHX verweisen, überarbeitet werden. Dies sind die Funktionen, die höchstwahrscheinlich durch diese Änderung in Ihren benutzerdefinierten Programmen betroffen sind:

  • GETVAR – Anstelle einer Ganzzahl von 0 oder 1 wird der Wert Null zurückgegeben.
  • SETVAR – Die Ausführung des Programms wird möglicherweise angehalten, und die Fehlermeldung ; Fehler: Einstellung für AutoCAD-Variable zurückgewiesen: "epdfshx" wird ausgegeben.
  • COMMAND – Die Ausführung des Programms wird möglicherweise angehalten, und die Fehlermeldung EPDFSHX Unbekannter Befehl "EPDFSHX" wird ausgegeben.

AutoCAD 2016-basierte Produkte und höher

Digital signierte Dateien

Jetzt können AutoLISP-Dateien digital signiert werden. Durch das digitale Signieren kann eine AutoLISP-Datei ohne Warnung der Benutzer, dass die Datei nicht vertrauenswürdig ist, in die AutoCAD-Zeichnungsumgebung geladen werden. Digital signierte VLX-Dateien können nicht in auf AutoCAD 2015 oder früher basierende Produkte geladen werden.

OFang-Funktion

Die Funktion Ofang unterstützt nicht mehr den Objektfangmodus Schnell (qui). Referenzen auf den Modus qui müssen aus allen Anweisungen in Ihren AutoLISP-Programmen entfernt werden, die die Funktion Ofang verwenden. Wenn der Modus nicht entfernt wird, gibt die Funktion Ofang Null anstelle eines Koordinatenwerts für einen gültigen Punkt im Zeichenbereich zurück.