AutoLISP : Basculer des états binaires (0/1, +/-) sans conditions IF

Je cherche une méthode plus élégante et performante pour gérer des bascules d’état (comme la visibilité ou le gel de calques) dans mes routines AutoLISP, sans utiliser de multiples conditions if.

Pour gérer efficacement les bascules d’état binaires (0/1 ou positif/négatif) en AutoLISP, il est possible d’utiliser des opérations mathématiques simples, ce qui rend le code plus concis et souvent plus performant que les structures conditionnelles if.

Voici les deux méthodes principales :

  1. Bascule entre 0 et 1 (type Gelé/Dégelé)
    Cette méthode est idéale pour les variables qui alternent entre les valeurs 0 et 1.

    • Principe : Soustraire la valeur actuelle de 1 pour obtenir l’état opposé.
    • Formule : (setq ma_variable (- 1 ma_variable))
    • Explication :
      • Si ma_variable vaut 1 (ex: calque gelé), (- 1 1) donnera 0 (calque dégelé).
      • Si ma_variable vaut 0 (ex: calque dégelé), (- 1 0) donnera 1 (calque gelé).
    • Application : Parfait pour le code DXF 70 des calques, où 0 = Dégelé et 1 = Gelé.
  2. Bascule entre Positif et Négatif (type Actif/Inactif)
    Cette méthode est adaptée aux variables qui alternent entre une valeur positive et sa version négative.

    • Principe : Inverser simplement le signe de la valeur actuelle.
    • Formule : (setq ma_variable (- ma_variable))
    • Explication :
      • Si ma_variable est positive (ex: 7 pour actif), (- 7) donnera -7 (inactif).
      • Si ma_variable est négative (ex: -7 pour inactif), (- -7) donnera 7 (actif).
    • Application : Idéal pour le code DXF 62 des calques, où une valeur positive indique un calque actif et une valeur négative un calque inactif.

Ces techniques permettent de simplifier considérablement le code AutoLISP, le rendant plus lisible et plus rapide, en évitant l’encombrement des parenthèses conditionnelles.