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.
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.
W przypadku próby użycia wycofywanego polecenia lub zmiennej systemowej w programie niestandardowym przydatne mogą okazać się następujące techniki:
Środowisko AutoLISP zostało zaktualizowane w celu obsługi znaków Unicode, co wpływa na funkcje używane do manipulowania ciągami lub zwracające ich wartości. Aby uzyskać dodatkowe informacje na temat funkcji zaktualizowanych w celu obsługi znaków Unicode, zobacz Co nowego lub zmiany w środowisku AutoLISP.
W zależności od funkcji używanych w programach w celu obsługi znaków Unicode mogą być potrzebne zmiany. Na przykład w porównaniu z wcześniejszymi wersjami, gdy znak Unicode zostanie przekazany do funkcji, zwrócona wartość funkcji ASCII może być teraz większa niż 255 lub inna. Zmienna systemowa LISPSYS umożliwia identyfikację domyślnego środowiska AutoLISP wczytanego do programu oraz sterowanie nim; 0 i 2 = obsługa MBCS (środowisko starszego typu) i 1 = obsługa Unicode.
Poniższy fragment kodu pokazuje, jak określić, które środowisko AutoLISP jest aktualnie wczytane do programu, oraz jak sterować uruchamianiem kodu na podstawie wczytanego środowiska:
(if (= (getvar "LISPSYS") 1) (alert (strcat "Unicode support enabled" "\n(ASCII \"€\") returns 8364" ) ) (alert (strcat "MBCS (Legacy) support enabled" "\n(ASCII \"€\") returns 128" ) ) )
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")
Zmienna systemowa LOCALE zwraca obecnie kod zawierający skrót składający się z dwóch lub większej liczby liter, który reprezentuje bieżący język, a nie trzyliterowy skrót, który reprezentował język i podjęzyk. Ten skrót składający się z dwóch lub większej liczby liter jest oparty na funkcji GetLocaleInfo systemu Windows używającej stałej LOCALE_SISO639LANGNAME.
Przed produktami opartymi na programie AutoCAD 2019 kod był trzyliterowym skrótem zwracanym przez funkcję GetLocaleInfo systemu Windows używającą stałej LOCALE_SABBREVLANGNAME. Ten trzyliterowy skrót był oparty na dwóch informacjach: dwuliterowym skrócie, który wskazywał język i trzeciej literze, która wskazywała podjęzyk. Skrót ENU reprezentował na przykład kombinację języka angielskiego (EN) i Stanów Zjednoczonych (U) jako podjęzyka.
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:
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 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:
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 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.