Article de reference

AutoLISP

AutoLISP est un dialecte du langage de programmation Lisp conçu spécifiquement pour être utilisé avec la version complète d' AutoCAD et ses dérivés, qui incluent AutoCAD Civil 3...

AutoLISP est un dialecte du langage de programmation Lisp conçu spécifiquement pour être utilisé avec la version complète d' AutoCAD et ses dérivés, qui incluent AutoCAD Civil 3D , AutoCAD Map 3D , AutoCAD Architecture et AutoCAD Mechanical . Ni l' interface de programmation d'application (API) ni l' interpréteur permettant d'exécuter le code AutoLISP ne sont inclus dans la gamme de produits AutoCAD LT (jusqu'à la version 2023, AutoCAD LT 2024 inclut AutoLISP). Un sous-ensemble de fonctions AutoLISP est inclus dans l'application Web AutoCAD basée sur un navigateur.

Caractéristiques

AutoLISP est un petit dialecte de langage Lisp à portée et typage dynamiques avec ramasse-miettes , structure de liste immuable et symboles paramétrables, dépourvu de fonctionnalités Lisp classiques telles que le système de macros , les fonctions de définition d'enregistrements, les tableaux, les fonctions avec un nombre variable d'arguments ou les liaisons let. Outre le langage de base, la plupart des fonctions primitives sont destinées à la géométrie, à l'accès à la base de données DWG interne d'AutoCAD ou à la manipulation d'entités graphiques dans AutoCAD. Les propriétés de ces entités graphiques sont révélées à AutoLISP sous forme de listes d'associations dans lesquelles les valeurs sont associées à des codes de groupe AutoCAD qui indiquent des propriétés telles que les points de définition, les rayons, les couleurs, les calques, les types de ligne, etc. AutoCAD charge le code AutoLISP à partir de fichiers .LSP.

Le code AutoLISP peut interagir avec l'utilisateur via l'éditeur graphique d'AutoCAD en utilisant des fonctions primitives qui permettent à l'utilisateur de sélectionner des points, de choisir des objets à l'écran et de saisir des nombres et d'autres données. AutoLisp dispose également d'une interface utilisateur graphique (GUI) intégrée ou d'un langage spécifique à un domaine (DSL), le Dialog Control Language , pour créer des boîtes de dialogue modales avec une mise en page automatisée, dans AutoCAD.

Histoire

AutoLISP est dérivé d'une première version de XLISP , créée par David Betz. Le langage a été introduit dans la version 2.18 d'AutoCAD en janvier 1986 et a continué à être amélioré dans les versions successives jusqu'à la version 13 en février 1995. Après cela, son développement a été négligé par Autodesk au profit d'environnements de développement plus à la mode comme Visual Basic for Applications (VBA), .NET Framework et ObjectARX . Cependant, il est resté le principal langage de personnalisation utilisateur d'AutoCAD.

Vital-LISP , une version considérablement améliorée d'AutoLISP comprenant un environnement de développement intégré (IDE), un débogueur , un compilateur et un support ActiveX , a été développé et vendu par le développeur tiers Basis Software. Vital LISP était un sur-ensemble du langage AutoLISP existant qui ajoutait un accès de type VBA au modèle d'objet AutoCAD, des réacteurs (gestion des événements pour les objets AutoCAD), un support ActiveX général et quelques autres fonctions générales de Lisp. Autodesk l'a acheté, l'a renommé Visual LISP et l'a brièvement vendu comme module complémentaire à la version 14 d'AutoCAD publiée en mai 1997. Il a été incorporé à AutoCAD 2000 publié en mars 1999, en remplacement d'AutoLISP. Depuis lors, Autodesk a cessé d'apporter des améliorations majeures à Visual LISP et a concentré ses efforts sur VBA, .NET et C++ . Depuis le 31 janvier 2014 , Autodesk a mis fin à la prise en charge des versions VBA antérieures à 7.1, dans le cadre d'un processus à long terme de passage de VBA à .NET pour la personnalisation par l'utilisateur.

AutoLISP a tellement de succès que d'autres fournisseurs d'applications de conception assistée par ordinateur (CAO) l'ajoutent à leurs produits. Bricscad , IntelliCAD , DraftSight et d'autres ont la fonctionnalité AutoLISP, de sorte que les utilisateurs d'AutoLISP peuvent envisager de les utiliser comme une alternative à AutoCAD. La plupart des développements impliquant AutoLISP depuis AutoCAD 2000 sont effectués dans Visual LISP depuis que le moteur AutoLISP d'origine a été remplacé par le moteur Visual LISP. Il existe des milliers d'utilitaires et d'applications qui ont été développés à l'aide d'AutoLISP ou de Visual LISP (distribués sous forme de fichiers LSP, FAS et VLX).

Exemples

Un simple programme Hello world en AutoLISP serait :

( bonjour fun ( )
( princ " Bonjour le monde !" )
( principe )
)

Notez la dernière ligne à l'intérieur de la définition de fonction : lorsqu'elle est évaluée sans argument, la princfonction renvoie un symbole nul, qui n'est pas affiché par l' interface de ligne de commande d'AutoCAD . Comme la ligne de commande d'AutoCAD fonctionne comme une boucle de lecture-évaluation-impression (REPL), cela afficherait normalement « Hello World ! » sur la ligne de commande, suivi immédiatement de la valeur de retour de l'appel à princ. Par conséquent, sans l'appel final à la princfonction, le résultat de ceci serait :

Hello World!" Hello World!"

La prin1fonction peut également être utilisée pour obtenir le même résultat.

Un exemple plus complexe est :

( defun c:pointlabel ( / pnt )
( si ( setq pnt ( getpoint " Spécifiez le point : " ))
( programme
( entmake
( liste
' ( 0 . "POINT" )
( cons 10 ( trans pnt 1 0 ))
)
)
( entmake
( liste
' ( 0 . "TEXTE" )
( cons 10 ( trans ( cons ( + ( pnt voiture ) 0,6 ) ( pnt cdr )) 1 0 ))
( cons 40 ( getvar 'textsize ))
( cons 1 ( strcat "X:" ( rtos ( car pnt )) "Y:" ( rtos ( cadr pnt ))))
)
)
)
)
( principe )
)

Le code ci-dessus définit une nouvelle fonction qui génère un objet point AutoCAD à un point donné, avec un objet texte d'une ligne affichant les coordonnées X et Y à côté. Le nom de la fonction inclut un préfixe spécial « c: », qui permet à AutoCAD de reconnaître la fonction comme une commande normale. L'utilisateur, lorsqu'il tape « pointlabel » sur la ligne de commande AutoCAD, est invité à choisir un point, soit en tapant les coordonnées X et Y, soit en cliquant sur un emplacement dans le dessin. La fonction place alors un marqueur à ce point et crée un objet texte d'une ligne à côté de celui-ci, contenant les coordonnées X et Y du point exprimées par rapport au système de coordonnées utilisateur (UCS) actif. La fonction ne nécessite aucun paramètre et contient une variable locale (« pnt »).

L'exemple ci-dessus pourrait également être écrit à l'aide de commandes AutoCAD intégrées pour obtenir le même résultat. Toutefois, cette approche est susceptible de subir des modifications des invites de commande entre les versions d'AutoCAD.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index