Informazioni sulla compatibilità AutoLISP

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.

Nota: A partire dai prodotti basati su AutoCAD 2014, le applicazioni personalizzate devono essere eseguite in modalità sicura. La variabile di sistema SECURELOAD deve essere impostata su 1 o su 2. Quando si lavora in modalità sicura, i file che il prodotto basato su AutoCAD può caricare ed eseguire sono limitati a quelli che contengono codice proveniente da percorsi attendibili. I percorsi attendibili sono specificati dalla variabile di sistema TRUSTEDPATHS. Per ulteriori informazioni, vedere Informazioni sulla sicurezza e protezione dai virus.

Informazioni generali

Variabili di sistema e comandi obsoleti

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.

Nota: Anche se una variabile di sistema o un comando obsoleto potrebbe essere ancora utilizzato per un programma personalizzato, non vi è alcuna garanzia che continuerà a funzionare nelle prossime release del prodotto. Si consiglia di riscrivere i programmi personalizzati per evitare l'uso di variabili di sistema o comandi obsoleti.

Le seguenti tecniche potrebbero essere utili durante l'utilizzo di una variabile di sistema o un comando obsoleto in un programma personalizzato:

  • Aggiungere come prefisso un punto al nome del comando. Ad esempio, .PUNTINI consente l'utilizzo del comando PUNTINI.
  • Evitare di eseguire una variabile di sistema obsoleta con la funzione COMMAND che potrebbe determinare la visualizzazione del messaggio di errore Comando sconosciuto; utilizzare invece le funzioni GETVAR e SETVAR. Ad esempio, (getvar "BLIPMODE") restituisce il valore corrente della variabile di sistema BLIPMODE.
Nota: Le variabili di sistema e i comandi che sono stati rimossi dal prodotto non possono essere ripristinati utilizzando le tecniche descritte in precedenza.

Prodotti basati su AutoCAD 2021 e versioni successive

Supporto di Unicode

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"
         )
  )
)
Nota: Durante la compilazione di file di origine AutoLISP (LSP) con l'ambiente di sviluppo integrato di Visual LISP (IDE di Visual LISP) o il comando CREAAPPLISP, il valore corrente della variabile di sistema LISPSYS controlla il formato in cui vengono compilati i file. I file compilati con LISPSYS impostato su un valore di 1, formato Unicode, non possono essere caricati in AutoCAD 2020 e release precedenti. Impostare LISPSYS su un valore pari a 0 o 2 prima di compilare i file per assicurarsi che possano essere caricati anche nelle release precedenti, ma questa operazione limiterà il supporto di Unicode.

Prodotti basati su AutoCAD 2020 e versioni successive

Comando INSER

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

Prodotti basati su AutoCAD 2019 e versioni successive

LOCALE (variabile di sistema)

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.

Prodotti basati su AutoCAD 2017 e versioni successive

CDATE, DATE e altre variabili di sistema correlate alla data/all'ora

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:

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

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)))
    )
  )
)
Variabile di sistema EPDFSHX

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:

  • GETVAR - Verrà restituito un valore nil anziché un valore intero di 0 o 1.
  • SETVAR - L'esecuzione del programma potrebbe essere interrotta e verrà visualizzato il messaggio di errore ; errore: impostazione della variabile AutoCAD rifiutata: "epdfshx".
  • COMMAND - L'esecuzione del programma potrebbe essere interrotta e verrà visualizzato il messaggio di errore EPDFSHX Comando sconosciuto "EPDFSHX".

Prodotti basati su AutoCAD 2016 e versioni successive

File con firma digitale

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.

Funzione OSNAP

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.