Grasshopper : conditions qui s’empilent ? Centralise la décision avec l’encodage binaire

Grasshopper_Encodage_Binaire

Sommaire

Problème que ça résout

Quand plusieurs conditions doivent piloter un même comportement (orientation, choix de stratégie, exceptions…), les définitions finissent en spaghetti de branchements :

  • logique éclatée sur toute la canvas ;
  • cas oubliés/incohérents aux intersections ;
  • maintenance pénible dès qu’on ajoute un critère ;
  • débogage flou (on ne sait pas “qui décide quoi”).

Solution (en une ligne)

Convertir chaque test en bit (0/1) → composer un index unique → router l’action depuis un point central (souvent un Sift Pattern ou un List item).

Quand l’utiliser

  • Orientation ou comportement discret selon position/quadrant/plan;
  • Sélection de stratégie (usinage, rendu, variante géométrique) selon 2–4 critères ;
  • Gestion d’états (OK/KO, collision, tolérance, présence de matière, etc.) ;
  • Matrices de cas où les If imbriqués deviennent illisibles.

Avant / Après

Avant : 4–8 branchements, fils croisés, décisions dupliquées.
Après : 1 bloc “Encode Logic” qui sort un index clair (0..N). Toute la décision se lit au même endroit.

Bénéfices concrets

  • Lisibilité : un index explique “quel cas est actif”.
  • Prévisibilité : table de vérité complète, pas d’implicite.
  • Évolutivité : un critère en plus = un bit en plus (les cas existants ne bougent pas).
  • Débogage : un Panel suffit (on affiche l’index et on voit la ligne active).

Exemple éclair (2 critères)

Critères : x ≥ 0 et y ≥ 0
Index : 2*A + B → {0,1,2,3}
Usage : router un flux puis opérer une série d’opération.

Limites (à connaître)

  • Seuils continus et tolérances mouvantes : traiter d’abord la robustesse des tests (snap/epsilon) avant d’encoder.

  • One-liner évident : si une seule expression calcule directement la sortie, pas besoin d’index.

  • Trop de critères (>5–6) : préférez une factorisation ou un diagramme d’états pour rester lisible.

Limites (à connaître)

Conclusion

Dès qu’il y a au moins deux cas à gérer, l’encodage binaire permet de prendre la décision au même endroit et d’éviter le spaghetti de conditions. Résultat : une définition plus lisible, plus simple à maintenir, et qui grandit sans tout recâbler.

En pratique :

  • Si c’est un critère → fais simple (une expression suffit).

  • Si la décision est multi-critère → encode en 0/1, 0..N et route depuis un point central.

Envie de tester ? Commence par un petit cas à 2 critères, affiche l’index dans un Panel, et regarde la définition respirer. Si besoin, on ajoute un encadré “2 cas — trois façons de faire” avec captures et blocs prêts à coller.

Ces articles peuvent aussi vous intéresser :)

Découvrir d'autres articles

Téléchargez le programme détaillé