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 BEFEHL, die zu einer 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 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 ein Wert nil Wert 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 erstellt.
  • COMMAND – Die Ausführung des Programms wird möglicherweise angehalten und die Fehlermeldung EPDFSHX Unbekannter Befehl "EPDFSHX" wird erstellt.

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 15 oder früher basierende Produkte geladen werden.

OFang-Funktion

Die Funktion OFang unterstützt nicht mehr den Objektfangmodus qui. Verweise auf die qui entfernt werden muss, verwenden Sie die alle OFANG-Funktionen in Ihren AutoLISP-Anwendungen verwenden. Wenn der Modus nicht entfernt wird, geben die OFang-Funktionen NULL anstelle eines Koordinatenwerts für einen gültigen Punkt im Zeichenbereich zurück.