Les conditions en AutoLISP

Aujourd’hui, on va apprendre à ton AutoCAD® à prendre des décisions tout seul. Fini le temps où il exécutait bêtement tes ordres ! On va lui donner un cerveau (ou presque). :brain:

Pour ça, on a besoin de trois mousquetaires : IF, PROGN et COND.


1. La fonction IF (Le Carrefour :vertical_traffic_light:)

C’est la base. « Si c’est vrai, fais ça. Sinon, fais autre chose. »

C’est binaire : Oui ou Non. Pas de « peut-être ».

La syntaxe :

(if (Condition)
    (Action-Si-Vrai)
    (Action-Si-Faux)  ; Optionnel
)

Exemple :

Imaginons qu’on vérifie si la variable a est égale à 10.

(if (= a 10)
    (alert "Bravo, c'est un 10 !")    ; Si Vrai
    (alert "Raté, essaie encore.")    ; Si Faux
)

2. La fonction PROGN (Le Sac de Courses :shopping_bags:)

Alors lui, c’est le sauveur.

Pourquoi ? Parce que la fonction IF est radine. Elle n’autorise qu’UNE SEULE action après la condition.

Si tu veux dire : « Si a = 10, alors affiche un message ET dessine un cercle ET change de calque », IF va paniquer et te jeter une erreur après la première action.

C’est là qu’intervient PROGN. Il sert à emballer plusieurs actions dans un seul « sac ». Pour IF, ce sac ne compte que pour une seule action. Malin, non ?

Exemple :

(if (= a 10)
    ;; Début du sac PROGN (Action Si Vrai)
    (progn
        (alert "C'est gagné !")
        (setq a 0)
        (princ "\nOn a remis le compteur à zéro.")
    ) 
    ;; Fin du sac
    
    (alert "Perdu !") ;; Action Si Faux (ici, une seule action, donc pas besoin de progn)
)

Astuce mnémotechnique : PROGN = « PROGramme N », faire N choses.


3. La fonction COND (Le Menu du Resto :scroll:)

Parfois, la vie n’est pas juste « Oui ou Non ». Parfois, il y a plein d’options.

Tu pourrais empiler des IF dans des IF dans des IF… mais ça devient vite un plat de spaghettis illisible. :spaghetti:

COND (pour Condition) est beaucoup plus propre. Il teste les conditions l’une après l’autre. Dès qu’il en trouve une vraie, il l’exécute et s’arrête (il ne regarde pas la suite).

La syntaxe :

(cond
    ((Test-1) (Action-1))
    ((Test-2) (Action-2))
    (t        (Action-Par-Défaut)) ; Le filet de sécurité
)

Exemple :

On analyse la note d’un élève.

(setq note 15)

(cond
    ((= note 20) (alert "Génie !"))           ; Test 1
    ((> note 10) (alert "Pas mal du tout."))  ; Test 2
    ((= note 0)  (alert "Oups..."))           ; Test 3
    (t           (alert "Moyenne..."))        ; Si rien d'autre ne marche (t = toujours vrai)
)

Note : Le t à la fin, c’est comme le « Sinon » final. Si aucune condition au-dessus n’a marché, celle-là s’exécute forcément.


En résumé

  • IF : Pour un choix simple (Pile ou Face).

  • PROGN : Pour grouper plusieurs actions quand IF fait son radin.

  • COND : Pour gérer plein de cas différents sans devenir fou.

  • Utile
  • Peut mieux faire
  • Inutile
0 votant

:right_arrow: Tous les tutos AutoLISP