On manipule les listes en AutoLISP (les choses se corsent!)

Prêt pour le Niveau 2 ? :rocket:

On a vu comment disséquer une liste. Maintenant, on va apprendre à les construire, les trier, les modifier et même les cloner. C’est ici que la magie d’AutoLISP opère vraiment.

Accroche ta ceinture, on passe aux choses sérieuses (mais toujours avec le sourire).


1. QUOTE (ou l’apostrophe ') : Le bouton « Pause » :pause_button:

En Lisp, si tu écris (A B C), AutoCAD® pense que A est une fonction et essaie de l’exécuter. Panique à bord !

QUOTE sert à dire : « Touche pas à ça ! C’est juste des données, pas du code. »

Le raccourci clavier est l’apostrophe '.

;; Sans quote : AutoCAD cherche la fonction "Pomme" et plante.
(setq fruits (Pomme Poire)) ; ERREUR !

;; Avec quote : AutoCAD comprend que c'est une liste de mots.
(setq fruits '(Pomme Poire)) ; OK !

2. LENGTH : Le Compteur :1234:

Simple, basique. Il te dit combien d’éléments il y a dans ta liste.

(setq mesCalques '("Mur" "Porte" "Fenetre"))
(length mesCalques)
;; Résultat : 3

3. REVERSE : Le Miroir :mirror:

Il retourne la liste comme une crêpe. Le dernier devient le premier.

(reverse '(1 2 3 4))
;; Résultat : (4 3 2 1)

4. ACAD_STRLSORT : Le Bibliothécaire :books:

Un nom à coucher dehors pour une fonction très utile. Elle trie une liste de textes par ordre alphabétique.

Attention : Elle ne marche qu’avec des chaînes de caractères (Strings).

(acad_strlsort '("Zèbre" "Avion" "Banane"))
;; Résultat : ("Avion" "Banane" "Zèbre")

5. CONS : Le Constructeur (La Brique) :brick:

C’est la fonction fondamentale. Elle ajoute un nouvel élément au DÉBUT d’une liste.

Imagine que tu resquilles dans la file d’attente et que tu te places tout devant.

(setq liste '("B" "C"))
(cons "A" liste)
;; Résultat : ("A" "B" "C")

Note : C’est aussi utilisé pour créer des paires pointées (10 . 50.0) dans les données DXF, mais c’est une autre histoire !

6. APPEND : La Super Glue :link:

Contrairement à CONS qui ajoute un élément, APPEND colle deux listes ensemble pour n’en faire qu’une seule.

(setq liste1 '(1 2))
(setq liste2 '(3 4))
(append liste1 liste2)
;; Résultat : (1 2 3 4)

7. ASSOC : Le Chercheur de Clés :key:

Indispensable pour modifier des entités AutoCAD® !

Il cherche dans une « liste de listes » (comme un annuaire). Il regarde le premier élément de chaque sous-liste (la clé) et te renvoie la ligne correspondante.

Imagine une liste de propriétés d’un cercle (Code DXF) :

(setq entite '((0 . "CIRCLE") (8 . "CALQUE_MUR") (40 . 5.0)))

Tu veux le rayon (code 40) ?

(assoc 40 entite)
;; Résultat : (40 . 5.0) -> "J'ai trouvé ! Le code 40 vaut 5.0"

8. SUBST : Le Remplaçant :counterclockwise_arrows_button:

Il prend une liste, cherche un élément précis et le remplace par un nouveau.

La syntaxe : (subst NOUVEAU ANCIEN LISTE)

Reprenons notre cercle. On veut changer le rayon de 5.0 à 10.0.

(setq ancienRayon '(40 . 5.0))
(setq nouveauRayon '(40 . 10.0))
(setq entite (subst nouveauRayon ancienRayon entite))
;; La liste 'entite' contient maintenant le rayon 10.0 !

9. MAPCAR : L’Usine à la Chaîne (Le Boss Final) :factory:

C’est la fonction qui fait peur aux débutants, mais qui est géniale.

Elle prend une fonction et l’applique à chaque élément de la liste, d’un seul coup.

Tu veux ajouter +1 à toute une liste de nombres ?

  • Méthode débutant : Faire une boucle repeat… c’est long.

  • Méthode MAPCAR :

(setq maListe '(10 20 30))
(mapcar '1+ maListe)
;; Résultat : (11 21 31) -> BAM ! Tout le monde a pris +1.

Traduction : « Applique la fonction 1+ à chaque soldat de maListe ».

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP