Maîtriser les conditions IF, PROGN, COND pour programmer en AutoLISP

J’aimerais apprendre à intégrer des logiques de décision dans mes scripts AutoLISP pour qu’AutoCAD puisse exécuter des actions différentes selon certaines conditions. Quelles sont les fonctions clés pour gérer ces conditions et grouper des actions ?

Pour permettre à AutoCAD de prendre des décisions et d’exécuter des actions conditionnelles via AutoLISP, vous utiliserez principalement les fonctions IF, PROGN et COND. Chacune répond à un besoin spécifique de logique décisionnelle.

  1. La fonction (IF) :

    • C’est la base pour un choix binaire : « Si une condition est vraie, fais ceci ; sinon, fais cela. »
    • Syntaxe : (if <condition> <action-si-vrai> [<action-si-faux>])
    • Exemple : (if (= maVariable 10) (princ "La variable est 10") (princ "La variable n'est pas 10"))
    • Note importante : IF n’accepte qu’une seule action pour action-si-vrai et action-si-faux.
  2. La fonction (PROGN) :

    • Utilisez PROGN lorsque vous avez besoin d’exécuter plusieurs actions après une condition IF. IF est « radin » et n’accepte qu’une seule expression.
    • PROGN agit comme un « sac » qui regroupe plusieurs expressions en une seule, permettant à IF de les traiter comme une unique action.
    • Syntaxe : (progn <action1> <action2> ... <actionN>)
    • Exemple :
      (if (= a 10)
        (progn
          (princ "\nA est égal à 10.")
          (command "._CIRCLE" "0,0" 5)
          (setvar "CLAYER" "0")
        )
        (princ "\nA n'est pas égal à 10.")
      )
      
    • Astuce mnémotechnique : PROGN = « PROGramme N » actions.
  3. La fonction (COND) :

    • Pour gérer des choix multiples ou des conditions complexes, COND est plus propre et lisible que des IF imbriqués.
    • COND teste les conditions séquentiellement. Dès qu’une condition est vraie, les actions associées sont exécutées, et COND s’arrête (les conditions suivantes ne sont pas évaluées).
    • Syntaxe : (cond (<condition1> <action1.1> <action1.2> ...) (<condition2> <action2.1> ...) ... (T <action-par-defaut>))
    • Exemple (analyse de note) :
      (setq note 15) ; Supposons une note de 15
      (cond
        ((>= note 18) (princ "\nExcellent !"))
        ((>= note 14) (princ "\nTrès bien."))
        ((>= note 10) (princ "\nBien."))
        ((>= note 7) (princ "\nPeut mieux faire."))
        (T (princ "\nInutile.")) ; Le T final agit comme un "Sinon" par défaut
      )
      
    • Le T à la fin est une condition toujours vraie, servant de clause « sinon » si aucune des conditions précédentes n’a été satisfaite.