Zgodność programów AutoLISP

Programy AutoLISP zazwyczaj nie wymagają wielu zmian, aby mogły zostać uruchomione na najnowszej wersji.

Jednak program AutoLISP może już nie działać poprawnie w najnowszej wersji w związku ze zmianą lub wycofaniem funkcji AutoLIST albo polecenia lub zmiennej systemowej produktu opartego na programie AutoCAD.

Uwaga: Począwszy od produktów opartych na programie AutoCAD 2014, niestandardowe aplikacje muszą działać w trybie bezpiecznym, gdy zmienna systemowa SECURELOAD jest ustawiona na wartość 1 lub 2. W trybie bezpiecznym produkt oparty na programie AutoCAD może wczytywać i uruchamiać tylko te pliki, które zawierają kod z zaufanych lokalizacji określonych przez zmienną systemową TRUSTEDPATHS. Aby uzyskać więcej informacji, zobacz temat „Informacje na temat bezpieczeństwa i zabezpieczania przed wirusami”.

Informacje ogólne

Nieaktualne polecenia i zmienne systemowe

Przejrzyj niestandardowe programy pod kątem poleceń i zmiennych systemowych, które zostały oznaczone jako wycofywane. W niektórych przypadkach wycofywane polecenie lub zmienna systemowa może być w dalszym ciągu używana przez programy niestandardowe, nawet jeśli nie można jej wprowadzić bezpośrednio w wierszu polecenia ani uzyskać do niej dostępu z poziomu interfejsu użytkownika.

Uwaga: Pomimo tego, że wycofywane polecenie lub zmienna systemowa może nadal działać w programie niestandardowym, nie gwarantuje się jej działania w przyszłej wersji produktu. Zaleca się przepisanie programów niestandardowych, aby wyeliminować z nich użycie wycofywanych poleceń i zmiennych systemowych.

W przypadku próby użycia wycofywanego polecenia lub zmiennej systemowej w programie niestandardowym przydatne mogą okazać się następujące techniki:

  • Poprzedzenie nazwy polecenia kropką. Na przykład .ZNACZNIK umożliwia użycie polecenia ZNACZNIK.
  • Unikanie wykonywania wycofywanej zmiennej systemowej za pomocą funkcji POLECENIE, która może zwrócić komunikat o błędzie Nieznane polecenie, a zamiast niej używanie funkcji GETVAR i ZMSYS. Na przykład funkcja (getvar "ZNACZNIK") zwraca bieżącą wartość zmiennej systemowej ZNACZNIK.
Uwaga: Poleceń i zmiennych systemowych usuniętych z produktu nie można przywrócić za pomocą wspomnianych wcześniej technik.

Produkty oparte na programie AutoCAD 2020

Polecenie WSTAW

Polecenie WSTAW wyświetla teraz paletę Bloki, natomiast nowe polecenie WSTAWKLASYCZNIE wyświetla „klasyczne” okno dialogowe Wstaw. Jeśli używany program AutoLISP wymaga używania okna dialogowego Wstaw, konieczna będzie zmiana istniejącego programu. Wcześniej okno dialogowe Wstaw można było wyświetlać przy użyciu następujących instrukcji programu AutoLISP:

(initdia)
(command "insert")

Aby kontynuować wyświetlanie okna dialogowego Wstaw w używanych programach AutoLISP, programy te należy zmienić tak, aby korzystać w nich z jednego z poniższych sposobów:

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

Produkty oparte na programie AutoCAD 2017 i nowszych

Zmienne systemowe CDATE, DATE i inne dotyczące daty\godziny

Wartości przechowywane w zmiennych systemowych CDATE i DATE nie reprezentują już bieżącej daty/godziny z dokładnością do milisekundy ani jednej setnej sekundy. Najmniejszą jednostką czasu są teraz sekundy i w nich wyrażane są wartości tych obu zmiennych. W razie potrzeby mierzenia przedziałów czasu z dokładnością większą niż jedna sekunda należy rozważyć użycie wartości zwracanej przez zmienną systemową MILLISECS, która reprezentuje czas w milisekundach od momentu ostatniego uruchomienia stacji roboczej.

Usunięcie milisekund miało także wpływ na następujące zmienne systemowe dotyczące daty\godziny:

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

Jeśli którykolwiek z istniejących programów wymaga podawania różnic czasu z dokładnością do najbliższej milisekundy, można pobierać dwie lub trzy ostatnie cyfry wartości przechowywanej w zmiennej systemowej MILLISECS i je dołączać do wartości zwracanej przez zmienną systemową CDATE. Powstawałaby wtedy wartość porównywalna z wartością zwracaną przez zmienną systemową CDATE w produktach opartych na programie AutoCAD w wersji 2016 i wcześniejszych. Poniższy przykładowy kod pokazuje, jak w wybranej wersji oprogramowania AutoCAD można uzyskiwać wartość daty i godziny zawierającą milisekundy:

; 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)))
    )
  )
)
Zmienna systemowa EPDFSHX

Zmienna systemowa EPDFSHX wprowadzona w programie AutoCAD 2016 Update 1 ma nową nazwę PDFSHX. W związku ze zmianą nazwy należy odpowiednio zmodyfikować wszystkie instrukcje języka AutoLISP odwołujące się do zmiennej systemowej EPDFSHX. Zmiana dotyczy najprawdopodobniej następujących funkcji w programach niestandardowych:

  • GETVAR — będzie zwracana wartość nil, a nie liczba całkowita 0 lub 1
  • SETVAR — wykonywanie programu może zostać wstrzymane, czemu towarzyszy komunikat o błędzie ; błąd: odrzucono ustawienia zmiennych programu AutoCAD: „epdfshx”
  • COMMAND — wykonywanie programu może zostać wstrzymane, czemu towarzyszy komunikat o błędzie EPDFSHX Nieznane polecenie „EPDFSHX”

Produkty oparte na programie AutoCAD 2016 i nowszych

Pliki podpisane cyfrowo

Pliki AutoLISP można teraz podpisywać cyfrowo. Dodanie podpisu cyfrowego do pliku AutoLISP pozwala wczytać go do środowiska rysunku w programie AutoCAD bez ostrzeżenia, że plik nie jest zaufany. Podpisanych cyfrowo plików VLX nie można wczytywać do produktów opartych na programie AutoCAD 2015 ani wcześniejszych.

Funkcja osnap

Funkcja obiekt nie obsługuje już trybu lokalizacji względem obiektów Szybki (qui). Odniesienia do trybu qui muszą być usunięte ze wszystkich wyrażeń, które używają funkcji obiekt w swoich programach AutoLISP. Jeśli tryb nie zostanie usunięty, funkcja osnap zwróci wartość nil zamiast wartości współrzędnych dla poprawnego punktu w obszarze rysunku.