Bienvenue dans le club très sélect des Jeux de Sélection ! ![]()
Dans AutoCAD®, dessiner c’est bien, mais modifier ce qui existe, c’est mieux. Pour cela, il faut attraper des objets. En AutoLISP, on ne prend pas les objets un par un (ce serait trop long), on les met dans un « panier » virtuel qu’on appelle un Selection Set (d’où le préfixe ss).
Voici comment gérer ton panier de courses comme un chef.
1. ssget : Le Ramasse-Miettes (Le Boss) 
C’est la fonction la plus puissante. Elle sert à remplir le panier.
A. La méthode « Libre-Service »
Si tu l’écris tout nu, AutoCAD® redonne la main à l’utilisateur. Le curseur devient un carré et l’utilisateur clique ce qu’il veut.
(setq monPanier (ssget))
;; L'utilisateur sélectionne des objets...
;; 'monPanier' contient maintenant la liste des objets (ou nil si l'utilisateur a annulé).
B. La méthode « Le Videur de Boîte » (Filtres) 
Tu peux dire à ssget : « Laisse entrer l’utilisateur, mais il n’a le droit de choisir QUE les Cercles ». C’est génial pour éviter les erreurs de clic.
;; Ne sélectionne que les CERCLES
(setq monPanier (ssget '((0 . "CIRCLE"))))
C. La méthode « Aspirateur Total » ("_X")
Là, on ne demande rien à l’utilisateur. On prend TOUT ce qui existe dans le dessin qui correspond aux critères. C’est radical.
;; Prends TOUS les textes du dessin, même ceux qui sont cachés !
(setq monPanier (ssget "_X" '((0 . "TEXT"))))
2. sslength : L’Inventaire 
Une fois que tu as ton panier, la première chose à faire est de savoir combien d’objets il y a dedans.
(setq nombre (sslength monPanier))
;; Résultat : 12 (par exemple)
Règle de survie : Toujours vérifier que
monPaniern’est pas vide (nil) avant de demander sa longueur, sinon AutoCAD® plante !
3. ssname : La Pince à Linge 
C’est bien d’avoir un panier, mais pour modifier les objets, il faut les sortir un par un.
ssname sert à dire : « Donne-moi l’objet numéro X du panier ».
ALERTE DÉBUTANT : En informatique, on commence à compter à 0.
- Le 1er objet est le n°0.
- Le 2ème objet est le n°1.
;; Donne-moi le tout premier objet du panier
(setq premierObjet (ssname monPanier 0))
4. ssadd & ssdel : Les Gestionnaires
Tu peux modifier le contenu de ton panier manuellement.
-
ssadd: Ajoute un objet au panier (ou crée un panier vide si tu ne lui donnes rien). -
ssdel: Vire un objet du panier (sans le supprimer du dessin, juste du groupe).
(setq nouveauPanier (ssadd)) ; Crée un panier vide
(ssadd uneEntite nouveauPanier) ; Ajoute l'entité dedans
L’Exercice Classique : La Boucle (Le « Loop »)
C’est le code que tu écriras le plus souvent dans ta vie de programmeur Lisp.
Objectif : Parcourir tout le panier pour traiter chaque objet.
(if (setq jeu (ssget)) ; 1. On demande la sélection (et on vérifie qu'elle n'est pas vide)
(progn
(setq i 0) ; On initialise le compteur à 0
;; 2. On répète autant de fois qu'il y a d'objets
(repeat (sslength jeu)
;; 3. On récupère l'objet au numéro 'i'
(setq ent (ssname jeu i))
;; --- ICI TU FAIS TON TRAVAIL SUR L'OBJET 'ent' ---
(princ "\nJ'ai trouvé un objet !")
;; 4. On passe au numéro suivant (TRES IMPORTANT !)
(setq i (1+ i))
)
)
(princ "\nPas de sélection, pas de chocolat.") ; Sinon
)
Et voilà ! Tu sais manipuler des groupes d’objets.
- Utile
- Peut mieux faire
- Inutile
Tous les tutos AutoLISP
