KERLOM Samuel Johnson

Le langage LISP

Il s'agit ici d'une brève introduction au LISP et non pas d'un cours ! Je suis loin d'être un expert et je ne souhaite pas reproduire ce qui est déjà très bien expliqué sur d'autres sites ! (voir les liens en bas de cette page)

En LISP, il existe un principe élémentaire : toute action se formule en "préfixe" à l'intérieur de parenthèses :

(action argument1 argument2 ...)

Il est donc important de retenir que toute parenthèse ouverte doit être fermée !
Vous trouverez ci-dessous quelques exemples d'action :

Additionner les deux valeurs "a" et "b"

(+ a b)

Définir une nouvelle variable "x" égale à 14

(setq x 14)

Sélectionner un objet et le stocker dans la variable "ent"

(setq ent (car (entsel "\n Sélectionnez un objet : ")))

Vous trouverez ci-dessous quelques enchainements d'actions :

Cliquez un point et récupérer ses coordonnées

(setq pnt (getpoint "\n Cliquez un point : "))
(setq X (car pnt))
(setq Y (cadr pnt))
(setq Z (caddr pnt))

Condition SI... ALORS...

(if (= z 0)
(prompt "\nL'altitude Z est nulle")
(prompt "\nL'altitude Z n'est pas nulle")
)

Pour définir une nouvelle fonction, on utilise l'action DEFUN, et pour obtenir une nouvelle commande sous AutoCAD, il suffit de rajouter C: devant son nom. Vous trouverez ci-dessous quelques exemples de commande :

Dessiner une ligne entre deux points

(defun c:DessinerLigne ()
(setq a (getpoint "\n Cliquez le premier point : "))
(setq b (getpoint "\n Cliquez le deuxième point : "))
(command "_line" a b "")
(princ)
)

Afficher les codes DXF d'un objet

(defun c:EcrireCodesDXF ()
(entget(car(entsel)))
)

Quelques fonctions

> "STRCAT" Concaténer une série de textes
(strcat [TEXTE1] [TEXTE2] ...)

> "RTOS" : convertir un réel NOMBRE en texte
(rtos [NOMBRE])

> "SSNAME" : Retourne le nom de l'entité à la position INDEX dans la sélection SS
(ssname [SS] [INDEX])

> "CDR" : Retourne la liste mais sans le premier élément
(cdr [LISTE])

> "CONS" : Construire une nouvelle liste par ajout d'un premier élément
(cons [PREMIER ELEMENT] [LISTE])

Pour aller plus loin...

- Cours :
PDF "Introduction à AutoLISP" de Gilles Chanteau (source)
Explications de (gile) sur CadXP
Cours de Maxence Delannoy
AutoLISP Developer's Guide (PDF)
"The Ultimate AutoLisp Tutorial" (tutoriel en anglais)
Un livre sur le LISP (en français)
"The ABC's of AutoLISP" (en anglais)

- Dictionnaires :
Codes DXF pour une polyligne (en anglais)
"AfraLISP" (liste des fonctions en anglais)
"ProgCAD" (détail des principales fonctions en anglais)
"DOSLib" (librairie de fonctions LISP en anglais)

▲ Haut