Programy jazyka AutoLISP obvykle vyžadují velmi málo změn, aby je bylo možné spustit v nejnovější verzi.
Program jazyka AutoLISP však nemusí správně pracovat v nejnovější verzi, protože v ní mohlo dojít ke změně nebo vyřazení nějaké funkce jazyka AutoLISP nebo příkazu či systémové proměnné produktu založeného na aplikaci AutoCAD.
Zkontrolujte uživatelské programy, zda neobsahují příkazy a systémové proměnné, které byly označeny jako zastaralé. V některých případech je možné zastaralý příkaz nebo systémovou proměnnou ve vlastních programech použít i přesto, že je nelze zadat přímo na příkazovém řádku nebo spustit z uživatelského rozhraní.
Pokud chcete ve vlastních programech vyzkoušet zastaralý příkaz nebo systémovou proměnnou, použijte jeden z následujících postupů:
Prostředí jazyka AutoLISP bylo aktualizováno tak, aby podporovalo znaky kódování Unicode, což ovlivní funkce používané k manipulaci s řetězci nebo vracející řetězcové hodnoty. Další informace o tom, které funkce byly aktualizovány tak, aby podporovaly Unicode, naleznete v části Co je nového nebo změněného v jazyce AutoLISP.
Podle použitých funkcí v programech, může být nutná úprava těchto programů, aby mohly znaky Unicode zpracovat. Například návratová hodnota funkce ASCII může nyní být větší než 255 nebo se může lišit v porovnání se staršími verzemi, pokud je funkci předán znak Unicode. Pomocí systémové proměnné LISPSYS je možné identifikovat a řídit výchozí prostředí jazyka AutoLISP, které se načte do programu; 0 a 2 = podpora MBCS (starší prostředí) a 1 = podpora Unicode.
Následující fragment kódu ukazuje, jak určit, které prostředí jazyka AutoLISP je aktuálně načteno do programu, a jak řídit provádění kódu podle načteného prostředí:
(if (= (getvar "LISPSYS") 1)
(alert (strcat
"Unicode support enabled"
"\n(ASCII \"€\") returns 8364"
)
)
(alert (strcat
"MBCS (Legacy) support enabled"
"\n(ASCII \"€\") returns 128"
)
)
)
Příkaz VLOŽ nyní zobrazí paletu Bloky, zatímco příkaz KLASICKÝVLOŽ zobrazí „starší“ dialog Vložit. Pokud váš program v jazyce AutoLISP závisí na použití dialogu Vložit, je potřeba změnit existující program. Dříve bylo možné zobrazit dialog Vložit pomocí následujících výrazů jazyka AutoLISP:
(initdia) (command "insert")
Chcete-li i nadále zobrazovat dialog Vložit pomocí vašich programů v jazyce AutoLISP, bude potřeba změnit existující programy tak, aby používaly jeden z následujících přístupů:
(initcommandversion 2) (initdia) (command "insert")
(command "classicinsert")
Systémová proměnná LOCALE nyní vrací kód, který obsahuje dvou nebo vícepísmennou zkratku reprezentující jazyk místo třípísmenné zkratky reprezentující jazyk a dílčí jazyk. Dvou nebo vícepísmenná zkratka je založena na funkci systému Windows GetLocaleInfo, která využívá konstantu LOCALE_SISO639LANGNAME.
Před produkty založenými na aplikaci AutoCAD 2019 byl kód třípísmenná zkratka, kterou vracela funkce systému Windows GetLocaleInfo pomocí konstanty LOCALE_SABBREVLANGNAME. Třípísmenná zkratka byla založena na dvou informacích: dvoupísmenné zkratce jazyka společně s třetím písmenem značícím dílčí jazyk. Například zkratka ENU představovala kombinaci anglického jazyka (EN) a Spojených států (U) jako dílčí jazyk.
Hodnoty uložené v systémových proměnných CDATE a DATE nepředstavují aktuální datum a čas s přesností na nejbližší milisekundu nebo setinu sekundy. Nejmenší časovou jednotkou, ve které jsou hodnoty těchto dvou systémových proměnných vyjádřeny, jsou nyní sekundy. Pokud potřebujete sledovat časové intervaly kratší než jedna sekunda, zvažte použití hodnoty vrácené systémovou proměnnou MILLISECS, ve které se ukládá rozdíl v čase od spuštění pracovní stanice v milisekundách.
Odebrání milisekund proběhlo také u následujících systémových proměnných souvisejících s datem nebo časem:
Pokud některé z existujících programů vyžadují rozdíly časů až k nejbližší milisekundě, můžete získat poslední 2 nebo 3 číslice hodnoty uložené v systémové proměnné MILLISECS a připojit je k hodnotě vrácené systémovou proměnnou CDATE, což by v produktech založených na aplikaci AutoCAD 2016 a starších vytvořilo hodnotu srovnatelnou s hodnotou vrácenou systémovou proměnnou CDATE. Následující ukázkový kód ukazuje jak získat hodnotu data nebo času, která obsahuje milisekundy, v závislosti na verzi cílové aplikace AutoCAD:
; 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)))
)
)
)
Systémová proměnná EPDFSHX zavedená s aktualizací 1 aplikace AutoCAD 2016 byla přejmenována na PDFSHX. V důsledku přejmenování musí být všechny výrazy jazyka AutoLISP, které se odkazují na systémovou proměnnou EPDFSHX, příslušně upraveny. Tyto funkce ve vašich programech byly změnou nejpravděpodobněji ovlivněny:
Nyní je možné digitálně podepsat soubory jazyka AutoLISP. Digitální podpis souboru jazyka AutoLISP umožňuje načtení daného souboru do výkresového prostředí aplikace AutoCAD bez zobrazení upozornění pro uživatele, že soubor není považován za důvěryhodný. Soubory VLX, které jsou digitálně podepsané, není možné načítat do produktů založených na aplikaci AutoCAD 2015 nebo starších verzích.
Funkce uchop již nepodporuje režim uchopení objektu Rychlý (qui). Ve všech programech AutoLISP je nutné odebrat reference na režim qui ze všech výrazů, které používají funkci uchop. Pokud režim neodstraníte, funkce uchop vrátí hodnotu nil místo hodnoty souřadnice pro platný bod v kreslicí oblasti.