AutoLISP

0

AutoLISP est un dialecte du langage de programmation Lisp spécialement conçu pour être utilisé avec la version complète d’ AutoCAD et ses dérivés, notamment AutoCAD Map 3D , AutoCAD Architecture et AutoCAD Mechanical . [1] Ni l’ interface de programmation d’application (API) ni l’ interpréteur pour exécuter le code AutoLISP ne sont inclus dans la gamme de produits AutoCAD LT. [2] Un sous-ensemble de fonctions AutoLISP est inclus dans l’application Web AutoCAD basée sur un navigateur.

AutoLISP

Famille Zézayer
Conçu par David Betz
Développeurs Autodesk , Logiciel de base
Première apparition janvier 1986 ; il y a 36 ans ( 1986-01 )
Version stable 13 / février 1995 ; il y a 27 ans ( 1995-02 )
Discipline de frappe dynamique
Portée dynamique
Plateforme IA-32
SE Linux
Dialectes
Vital-LISP, Visual LISP
Influencé par
Lisp , XLISP

Caractéristiques

AutoLISP est un petit dialecte de langage Lisp à portée dynamique et à typage dynamique avec ramasse -miettes , structure de liste immuable et symboles définissables, dépourvu de fonctionnalités Lisp régulières 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 concernent 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 aux 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 des fichiers .LSP. [3]

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 d’entrer des nombres et d’autres données. AutoLisp dispose également d’un mini-langage ou d’un langage spécifique à un domaine (DSL) d’interface utilisateur graphique (GUI) intégré, le langage de contrôle de dialogue , pour créer des boîtes de dialogue modales avec mise en page automatisée, dans AutoCAD. [3]

Histoire

AutoLISP est dérivé d’une première version de XLISP , créée par David Betz. [4] 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 . pour Applications (VBA), .NET Framework et ObjectARX . Cependant, il est resté le principal langage de personnalisation 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 une prise en charge ActiveX , a été développée et vendue 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, aux réacteurs (gestion des événements pour les objets AutoCAD), à la prise en charge générale d’ActiveX et à certaines autres fonctions Lisp générales. Autodesk l’a acheté, l’a renommé Visual LISP et l’a brièvement vendu en tant que module complémentaire à la version 14 d’AutoCAD publiée en mai 1997. Il a été intégré à AutoCAD 2000 publié en mars 1999, en remplacement d’AutoLISP. Depuis lors, Autodeska cessé d’apporter des améliorations majeures à Visual LISP et s’est concentré davantage sur VBA, .NET et C++ . Depuis le 31 janvier 2014 [mettre à jour], Autodesk ne prend plus en charge les versions VBA antérieures à 7.1. Cela fait partie d’un processus à long terme de passage de VBA à .NET pour la personnalisation de l’utilisateur. [5] [6]

AutoLISP est si bien suivi que d’autres fournisseurs d’applications de conception assistée par ordinateur (CAO) l’ajoutent à leurs produits. Bricscad , IntelliCAD , DraftSight et d’autres disposent de la fonctionnalité AutoLISP, de sorte que les utilisateurs d’AutoLISP peuvent envisager de les utiliser comme alternative à AutoCAD. La plupart des développements impliquant AutoLISP depuis AutoCAD 2000 sont effectués dans Visual LISP puisque le moteur AutoLISP d’origine a été remplacé par le moteur Visual LISP. Des milliers d’utilitaires et d’applications ont été développés à l’aide d’AutoLISP ou de Visual LISP (distribués sous forme de fichiers LSP, FAS et VLX). [7] [8]

Chronologie des dialectes Lisp

  • v
  • t
  • e
1955 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
LISP 1, 1.5, LISP 2 (abandonné)
Maclisp
Interlisp
LMD
Lisp Machine Lisp
Schème R5RS R6RS R7RS petit
NÉANT
ZIL (Langage d’implémentation de Zork)
Franz Lisp
Lisp commun
Le Lisp
Programme MIT
J
Chez Scheme
Emacs LispComment
AutoLISP
PicoLisp
EuLisp
ILISISP
OpenLisp
Régime PLT Raquette
Ruse GNU
LISP visuel
Clojure
Arc
LFE
Hy

Exemples

Un simple programme Hello world dans AutoLISP serait :

Learn more.

( bonjour ( ) _ ( principe ” nHello World!” ) ( principe ) )

Notez la dernière ligne à l’intérieur de la définition de la 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 AutoCAD fonctionne comme une boucle de lecture-évaluation-impression (REPL), cela afficherait normalement “Hello World!” à 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 serait :

Hello World!”nHello World!”

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

Un exemple plus complexe est :

( defun c:pointlabel ( / pnt ) ( if ( setq pnt ( getpoint “nSpécifiez le point : ” )) ( prog ( entmake ( liste ‘ ( 0 . “POINTE” ) ( contre 10 ( trans pnt 1 0 )) ) ) ( entmake ( liste ‘ ( 0 . “TEXTE” ) ( contre 10 ( trans ( contre ( + ( voiture pnt ) 0.6 ) ( cdr pnt )) 1 0 )) ( contre 40 ( getvar ‘taille du texte )) ( contre 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 sur une ligne affichant les coordonnées X et Y à côté. Le nom de la fonction comprend un préfixe spécial “c:”, qui permet à AutoCAD de reconnaître la fonction comme une commande normale. L’utilisateur, en tapant “pointlabel” sur la ligne de commande d’AutoCAD, serait invité à choisir un point, soit en tapant les coordonnées X et Y, soit en cliquant sur un emplacement dans le dessin. La fonction placerait alors un marqueur à ce point et créerait 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 peut également être écrit à l’aide des commandes AutoCAD intégrées pour obtenir le même résultat, mais cette approche est susceptible de modifier les invites de commande entre les versions d’AutoCAD.

Références

  1. ^ “AutoLISP” . Récupéré le 14 avril 2014 .
  2. ^ “AutoCAD LT contre AutoCAD” . Archivé de l’original le 15 avril 2014 . Récupéré le 14 avril 2014 .
  3. ^ un b “le Guide de Développeur d’AutoLISP” (le PDF) . Récupéré le 14 avril 2014 .
  4. ^ “Histoire d’AutoLISP” .
  5. ^ “FAQ du module Microsoft Visual Basic pour Applications” . Récupéré le 14 avril 2014 .
  6. ^ “Prise en charge de VBA dans AutoCAD 2011” . Archivé de l’original le 15 avril 2014 . Récupéré le 14 avril 2014 .
  7. ^ Bricscad Compare les versions” . Archivé de l’original le 15/03/2014 . Récupéré le 14 avril 2014 .
  8. ^ “Plate-forme CAO IntelliCAD – Caractéristiques et avantages” . Récupéré le 14 avril 2014 .

Liens externes

  • FAQ sur AutoLISP
You might also like
Leave A Reply

Your email address will not be published.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More