Aller au contenu

Sélection nom-verbe


(gile)

Messages recommandés

Pour ceux qui, comme moi, aiment bien pouvoir sélectionner un (ou des) objet(s) avant ou après avoir lancé une commande de modification et pouvoir mettre cette commande dans un menu contextuel (sélection -> clic droit -> commande dans le menu).

 

Voici deux petites sous-routines qui retiennent la sélection d'une entité (ou un jeu de sélection) faite avant le lancement du LISP, sinon, invitent l'utilisateur à choisir un (ou des) objet(s).

 

Les arguments requis sont une liste de filtres de sélection (ou nil) et un message d'invite (ou "").

Par exemple : (setq ent (presel_ent '((0 . "CIRCLE")) "\nSélectionnez un cercle.")) pour un LISP nécessitant une entité "cercle".

 

Pour une seule entité :

;;; Presel_ent
;;; Retourne le nom d'une entité sélectionnée avant ou après le lancement de la commande
;;; fltr_lst : la liste des filtres de sélection pour ssget (ou nil)
;;; msg : l'invite pour le choix des objets (ou "")

(defun presel_ent (fltr_lst msg / set1 ent)
 (if (and (= 1 (getvar "pickfirst"))
   (setq set1 (ssget "_i" fltr_lst))
   (eq 1 (sslength set1))
     )
   (sssetfirst nil nil)
   (progn
     (sssetfirst nil nil)
     (princ msg)
     (while (not (setq set1 (ssget "_:S" fltr_lst)))
(princ msg)
     )
   )
 )
 (setq ent (ssname set1 0))
 ent
)

 

Pour un jeu de sélection :

;;; Presel_jsel
;;; Retourne un jeu de sélection établi avant ou après le lancement de la commande
;;; fltr_lst : la liste des filtres de sélection pour ssget (ou nil)
;;; msg : l'invite pour le choix des objets (ou "")

(defun presel_jsel (fltr_lst msg / jsel)
 (if (and (= 1 (getvar "pickfirst"))
   (setq jsel (ssget "_i" fltr_lst))
     )
   (sssetfirst nil nil)
   (progn
     (sssetfirst nil nil)
     (princ msg)
     (while (not (setq jsel (ssget fltr_lst)))
(princ msg)
     )
   )
 )
 jsel
) 

 

PS : il peut être avantageux de les mettre (avec d'autres) dans un fichier "Mes_Utils.lsp" chargé à chaque démarrage, pour les appeler dans différents LISP sans avoir à les redéfinir à chaque fois.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité