En règle générale, très peu de modifications sont nécessaires pour exécuter les programmes AutoLISP sur la version la plus récente.
Toutefois, il se peut qu’un programme AutoLISP ne s’exécute plus correctement dans la version la plus récente car une fonction AutoLISP, une variable système ou une commande de produit basé sur AutoCAD a été modifiée ou est obsolète.
Vérifiez vos programmes personnalisés pour trouver les commandes et variables système qui ont été désignées comme obsolètes. Dans certains cas, une variable système ou une commande obsolète peut toujours être utilisée par vos programmes personnalisés, même s'il est impossible d'y accéder directement à partir de la ligne de commande ou de l'interface utilisateur.
Les techniques suivantes peuvent être utiles lors de l'utilisation d'une commande ou variable système obsolète dans un programme personnalisé :
Les programmes AutoLISP personnalisés qui utilisent une ou plusieurs fonctions des bibliothèques de l’utilitaire Express Tools doivent désormais appeler la fonction acet-load-expresstools avant d’utiliser une fonction définie dans le cadre de ces bibliothèques. La fonction acet-load-expresstools initialise les fonctions de l’utilitaire Express Tools.
L’environnement AutoLISP a été mis à jour pour prendre en charge les caractères Unicode des fonctions utilisées pour manipuler ou renvoyer des valeurs de chaîne. Pour en savoir plus sur les fonctions mises à jour pour prendre en charge le format Unicode, reportez-vous à la rubrique Nouveautés ou et modifications d’AutoLISP.
Selon les fonctions utilisées dans vos programmes, des modifications peuvent être nécessaires pour qu’ils puissent en charge les caractères Unicode. Par exemple, contrairement à ce qui était possible dans les versions précédentes, la valeur retournée de la fonction ASCII peut désormais être supérieure à 255 ou être différente lorsqu'un caractère Unicode est transmis à la fonction. La variable système LISPSYS permet d'identifier et de déterminer l'environnement AutoLISP par défaut qui est chargé dans le programme ; 0 et 2 = prise en charge de MBCS (environnement hérité) et 1 = prise en charge de Unicode.
L’extrait de code suivant montre comment déterminer l’environnement AutoLISP à charger dans le programme et contrôler l’exécution du code en fonction de l’environnement chargé :
(if (= (getvar "LISPSYS") 1) (alert (strcat "Unicode support enabled" "\n(ASCII \"€\") returns 8364" ) ) (alert (strcat "MBCS (Legacy) support enabled" "\n(ASCII \"€\") returns 128" ) ) )
La commande INSERER affiche à présent la palette des blocs, tandis que la nouvelle commande INSERCLASSIQUE affiche la boîte de dialogue Insérer « héritée ». Si votre programme AutoLISP repose sur l'utilisation de la boîte de dialogue Insérer, vous devrez modifier votre programme existant. Auparavant, il se peut que vous ayez utilisé les instructions AutoLISP suivantes pour afficher la boîte de dialogue Insérer :
(initdia) (command "insert")
Pour maintenir l’affichage de la boîte de dialogue Insérer avec vos programmes AutoLISP, vous devrez modifier vos programmes existants de manière à utiliser l’une de ces approches :
(initcommandversion 2) (initdia) (command "insert")
(command "classicinsert")
La variable système LOCALE renvoie désormais un code qui contient une abréviation de deux lettres au minimum représentant la langue actuelle plutôt qu’une abréviation de trois lettres représentant la langue et la sous-langue. L’abréviation de deux lettres au minimum repose sur la fonction Windows GetLocaleInfo utilisant la constanteLOCALE_SISO639LANGNAME.
Dans les versions antérieures à AutoCAD 2019, le code était une abréviation de trois lettres renvoyé par la fonction Windows GetLocaleInfo l’aide de la constante LOCALE_SABBREVLANGNAME. L’abréviation à trois lettres s’appuyait sur deux sortes d’informations ; une abréviation de langue à deux lettres ainsi qu’une abréviation à trois lettres qui indiquait la sous-langue. Par exemple, ENU représentait la combinaison de la langue English (EN) et de la sous-langue United States (U).
Les valeurs stockées dans les variables système CDATE et DATE ne représentent plus la date/l'heure actuelle à la milliseconde ou au centième de seconde près. Les secondes sont désormais la plus petite unité de temps dans laquelle les valeurs de ces deux variables système sont exprimées. Si vous avez besoin de détecter des intervalles de temps inférieurs à une seconde, vous pouvez utiliser la valeur renvoyée par la variable système MILLISECS, qui stocke la différence de temps depuis le démarrage du poste de travail en millisecondes.
Les variables système associées à la date/l'heure suivantes sont également concernées par la suppression des millisecondes :
Si l'un de vos programmes nécessitent des différences de temps à la milliseconde près, vous opourriez obtenir les 2 ou 3 derniers chiffres de la valeur stockée dans la variable système MILLISECS et les ajouter à la valeur renvoyée par la variable système CDATE afin de produire une valeur comparable à celle renvoyée par la variable système CDATE dans les produits AutoCAD 2016 et les versions antérieures. L’exemple de code suivant montre comment vous pouvez obtenir une valeur date/heure qui inclut les millisecondes en fonction de la version AutoCAD cible :
; 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 variable système EPDFSHX introduite avec AutoCAD 2016 Mise à jour 1 a été renommée PDFSHX. En raison de la modification du nom, les instructions AutoLISP qui référencent la variable système EPDFSHX doit être révisées. Voici les fonctions ayant le plus de chances d’être affectées par cette modification dans vos programmes personnalisés :
Les fichiers AutoLISP peuvent désormais être signés numériquement. Cette nouveauté permet de les charger dans l'environnement de dessin AutoCAD sans avertissement informant l'utilisateur que le fichier n'est pas sécurisé. Les fichiers VLX signés numériquement ne peuvent pas être chargés dans AutoCAD 2015 ou antérieurs.
La fonction osnap ne prend plus en charge le mode d’accrochage aux objets rapide (qui). Les références au mode qui doivent être supprimées de toutes les instructions qui utilisent la fonction osnap dans vos programmes AutoLISP. Si le mode n’est pas supprimé, la fonction osnap renvoie nil au lieu d’une valeur de coordonnée pour un point valide de la zone de dessin.