I programmi AutoLISP richiedono in genere poche modifiche per essere eseguiti nell'ultima release.
È tuttavia possibile che nell'ultima release un programma AutoLISP non venga più eseguito correttamente perché una funzione AutoLISP o un comando di un prodotto basato su AutoCAD è stato modificato o non è più supportato.
Esaminare i programmi personalizzati per ricercare eventuali variabili di sistema e comandi che sono stati designati come obsoleti. In alcuni casi, una variabile di sistema o un comando obsoleto può comunque essere utilizzato con i programmi personalizzati, anche se non può essere immesso nella riga di comando o non è accessibile dall'interfaccia utente.
Le seguenti tecniche potrebbero essere utili durante l'utilizzo di una variabile di sistema o un comando obsoleto in un programma personalizzato:
L'ambiente AutoLISP è stato aggiornato per supportare i caratteri Unicode che influiscono sulle funzioni utilizzate per manipolare o che restituiscono valori di stringa. Per ulteriori informazioni sulle funzioni che sono state aggiornate per il supporto Unicode, vedere What's New or Changed with AutoLISP.
In base alle funzioni utilizzate nei programmi, potrebbe essere necessario apportare modifiche per gestire i caratteri Unicode. Ad esempio, il valore restituito della funzione ASCII ora può essere maggiore di 255 o diverso quando un carattere Unicode viene passato alla funzione rispetto alle release precedenti. È possibile utilizzare la variabile di sistema LISPSYS per identificare e controllare l'ambiente AutoLISP di default caricato nel programma; 0 e 2 = supporto di MBCS (ambiente esistente) e 1 = supporto di Unicode.
Il seguente frammento di codice mostra come determinare quale ambiente AutoLISP è attualmente caricato nel programma e come controllare l'esecuzione del codice in base all'ambiente caricato:
(if (= (getvar "LISPSYS") 1) (alert (strcat "Unicode support enabled" "\n(ASCII \"€\") returns 8364" ) ) (alert (strcat "MBCS (Legacy) support enabled" "\n(ASCII \"€\") returns 128" ) ) )
Il comando INSER ora visualizza la tavolozza Blocchi, mentre il nuovo comando INSERCLASSICO visualizza la finestra di dialogo Inserisci tradizionale. Se il programma AutoLISP dipende dall'uso della finestra di dialogo Inserisci, sarà necessario modificare il programma esistente. In precedenza, potrebbero essere state utilizzate le seguenti istruzioni AutoLISP per visualizzare la finestra di dialogo Inserisci:
(initdia) (command "insert")
Per continuare la visualizzazione della finestra di dialogo Inserisci con i programmi AutoLISP, sarà necessario modificare i programmi esistenti per utilizzare uno di questi metodi:
(initcommandversion 2) (initdia) (command "insert")
(command "classicinsert")
La variabile di sistema LOCALE ora restituisce un codice che contiene un'abbreviazione di due o più lettere che rappresenta la lingua corrente anziché un'abbreviazione di tre lettere che rappresentava lingua e sottolingua. L'abbreviazione di due o più lettere è basata sulla funzione GetLocaleInfo di Windows tramite la costante LOCALE_SISO639LANGNAME.
Prima dei prodotti basati su AutoCAD 2019, il codice era un'abbreviazione di tre lettere restituita dalla funzione GetLocaleInfo di Windows tramite la costante LOCALE_SABBREVLANGNAME. L'abbreviazione di tre lettere era basata su due informazioni: un'abbreviazione della lingua di due lettere insieme ad una terza lettera che indicava la sottolingua. Ad esempio, ENU rappresentava una combinazione di lingua inglese (EN) e Stati Uniti (U) come sottolingua.
I valori memorizzati nelle variabili di sistema CDATE e DATA non rappresentano più la data/l'ora corrente al millisecondo o al centesimo di un secondo più vicino. I secondi sono ora l'unità di tempo più piccola in cui sono espressi i valori di queste due variabili di sistema. Se è necessario tenere traccia di intervalli di tempo minori di un secondo, si consiglia di utilizzare il valore restituito dalla variabile di sistema MILLISECS che memorizza la differenza temporale da quando è stata avviata la stazione di lavoro in millisecondi.
Le seguenti variabili di sistema correlate alla data/all'ora sono influenzate anche dalla rimozione di millisecondi:
Se uno qualsiasi dei programmi esistenti richiede differenze temporali arrotondate al millisecondo più vicino, si potrebbero ottenere le ultime 2 o 3 cifre del valore memorizzato nella variabile di sistema MILLISECS e aggiungerle al valore restituito dalla variabile di sistema CDATE che produce un valore confrontabile con quello restituito dalla variabile di sistema CDATE nei prodotti basati su AutoCAD 2016 e versioni precedenti. Nel seguente codice di esempio è mostrato come ottenere un valore di data/ora che includa i millisecondi in base alla release AutoCAD di destinazione:
; 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))) ) ) )
La variabile di sistema EPDFSHX introdotta con AutoCAD 2016 Update 1 è stata rinominata PDFSHX. Come risultato del cambio del nome, eventuali dichiarazioni relative ad AutoLISP che fanno riferimento alla variabile di sistema EPDFSHX devono essere riviste. Queste sono le funzioni che più probabilmente saranno interessate da questa modifica nei programmi personalizzati:
Ai file AutoLISP può essere ora applicata una firma digitale. L'apposizione della firma digitale ad un file AutoLISP consente di caricarlo nell'ambiente di disegno AutoCAD senza alcun avvertimento per l'utente che il file non è attendibile. I file VLX con firma digitale non possono essere caricati in prodotti basati su AutoCAD 2015 o versioni precedenti.
La funzione Osnap non supporta più la modalità di snap ad oggetto Quick qui. I riferimenti alla modalità qui devono essere rimossi da tutte le istruzioni che utilizzano la funzione Osnap nei programmi AutoLISP. Se la modalità non viene rimossa, la funzione OSNAP restituisce nil anziché il valore delle coordinate di un punto nell'area di disegno.