Informace o kompatibilitě jazyka AutoLISP

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.

Poznámka: Počínaje produkty založenými na aplikaci AutoCAD 2014 musí uživatelské aplikace pracovat v zabezpečeném režimu, pokud je systémová proměnná SECURELOAD nastavena na hodnotu 1 nebo 2. Při práci v zabezpečeném režimu je načítání a spouštění souborů obsahujících kód v produktu založeném na aplikaci AutoCAD omezeno na důvěryhodná umístění. Důvěryhodná umístění jsou určena systémovou proměnnou TRUSTEDPATHS. Další informace naleznete v tématu Informace o zabezpečení a ochraně před viry.

Obecné informace

Zastaralé příkazy a systémové proměnné

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í.

Poznámka: I když zastaralý příkaz nebo systémová proměnná může v uživatelském programu i nadále fungovat, není k dispozici žádná záruka, že bude fungovat v budoucí verzi produktu. Doporučuje se přepsat uživatelské programy a vyhnout se použití všech zastaralých příkazů nebo systémových proměnných.

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ů:

  • Před název příkazu přidejte tečku. Například .ZNAČKY umožňuje použít příkaz ZNAČKY.
  • Vyhněte se použití zastaralé systémové proměnné pomocí funkce COMMAND, což může mít za následek chybové hlášení Neznámý příkaz. Místo toho použijte funkce GETVAR a SYSPAR. Například ( getvar "ZNAČKY" ) vrací aktuální hodnotu systémové proměnné ZNAČKY.
Poznámka: Příkazy a systémové proměnné, které byly z produktu odstraněny, nemohou být obnoveny pomocí dříve zmíněných technik.

AutoCAD 2021 a novější

Podpora Unicode

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"
         )
  )
)
Poznámka: Při kompilaci zdrojových souborů jazyka AutoLISP (LSP) pomocí příkazu integrovaného vývojového prostředí Visual LISP (VL IDE) nebo LISPAPL řídí aktuální hodnota systémové proměnné LISPSYS formát, ve kterém budou soubory kompilovány. Soubory kompilované se systémovou proměnnou LISPSYS nastavenou na hodnotu 1, neboli kódování Unicode, nemohou být načteny do aplikace AutoCAD 2020 a starších verzí. Před kompilací souborů nastavte systémovou proměnnou LISPSYS na hodnotu 0 nebo 2, abyste zajistili, že je bude možné načíst také v dřívějších verzích, omezíte tím však podporu znaků Unicode.

AutoCAD 2020 a novější

příkaz VLOŽ

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")

Produkty založené na aplikaci AutoCAD 2019 a novější

LOCALE (systémová proměnná)

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.

Produkty založené na aplikaci AutoCAD 2017 a novější

CDATE, DATE a další systémové proměnné související s datem nebo časem

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:

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

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

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:

  • GETVAR – bude vrácena hodnota nil místo celočíselné hodnoty 0 nebo 1.
  • SYSPAR – spuštění programu se může zastavit a vznikne chybové hlášení ; Chyba: Nastavení AutoCAD proměnné odmítnuto: "epdfshx".
  • COMMAND – spuštění programu se může zastavit a vznikne chybové hlášení EPDFSHX: Neznámý příkaz "EPDFSHX".

Produkty založené na aplikaci AutoCAD 2016 a novější

Digitálně podepsané soubory

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

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.