Titifonky Posté(e) le 5 avril 2005 Posté(e) le 5 avril 2005 Bonjour, Je cherche à faire un menu contextuel qui me permettrai de selectionner, dans le cas ou plusieurs objets sont superposés, l'objet que je veux dans le menu qui apparaît. :P Je recherche le réacteur qui réagit à la selection. J'ai trouvé le réacteur pour la souris "vlr-mouse-reactor" mais il ne réagit pas au clic gauche. J'ai également trouvé le réacteur ":vlr-pickfirstModified" mais il ne me renvoie aucune selection et aucun position de pointeur. Peut-être y a t-il un moyen de recuperer la selection en cours mais je ne connait pas la fonction. Si quelq'un à un idée cela pourrai m'avançer énormément parce qu'il ne me manque plus que ça. Merci www.le-metal.net, sur la métallerie
Patrick_35 Posté(e) le 6 avril 2005 Posté(e) le 6 avril 2005 Peut-être avec un vlr-reaction-set @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 6 avril 2005 Posté(e) le 6 avril 2005 Je me sens perdu avec le sens de ta question.Le principe du réacteur, me semble t-il, ne peut avoir lieu que s'il y a une sélection pour pouvoir entrainer une modification réactive. Donc je ne voit pas trop comment mettre une réaction sur le mode de sélection. Mais je me trompe peut être, mais la démarche me parait illogique. L'appui de la touche en mode selection active le "cycle de sélection" même a travers un lisp, mais tu le sais déjà je suppose.Il est vrai que cette façon ne te renseigne aucunement sur l'entité sélectionnéee . Je te propose donc quelques lignes qui font la même chose que l'appui de pendant la sélection, mais le cycle est effectué avec le click-gauche et les informations (type entité et calque) sont affiché dans la barre d'état,Voilà une réponse qui va peut être ne pas te sastifaire, ou te permettrre d'avancer. (defun c:what_select ( / l_ent e_sel pt_sel js l_js l_ent e_sel dxf_ent key) (setq e_sel (entsel)) (cond (e_sel (setq pt_sel (osnap (cadr e_sel) "_nearest") js (ssget "_C" pt_sel pt_sel) l_js (ssnamex js) ) (foreach n l_js (if (eq (type (cadr n)) 'ENAME) (setq l_ent (cons (cadr n) l_ent)))) (setq e_sel (ssadd)) (sssetfirst nil (ssadd (car l_ent) e_sel)) (if (> (length l_ent) 1) (progn (setq dxf_ent (entget (car l_ent))) (grtext -1 (strcat (cdr (assoc 0 dxf_ent)) " " (cdr (assoc 8 dxf_ent)))) (princ "\n[Click+gauche] pour faire défiler entité suivante; [Entrée]/[Espace]/[Click+droit] pour finir!.") (while (and (not (member (setq key (grread T 4 2)) '((2 13) (2 32)))) (/= (car key) 25)) (cond ((eq (car key) 3) (setq l_ent (append (cdr l_ent) (list (car l_ent))) e_sel (ssadd)) (sssetfirst nil (ssadd (car l_ent) e_sel)) (setq dxf_ent (entget (car l_ent))) (grtext -1 (strcat (cdr (assoc 0 dxf_ent)) " " (cdr (assoc 8 dxf_ent)))) ) ) ) (grtext) ) ) ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Titifonky Posté(e) le 6 avril 2005 Auteur Posté(e) le 6 avril 2005 Merci bonuscad pour ton programme,je ne connaissais pas la fonction ssgetfirst. Avec le reacteur ":vlr-pickfirstModified" je peux recuperer la selection courante en temps réel.En fait, pour repondre à bonuscad, la reaction ne doit se faire que si on selectionne un objet.Une fonction doit verifier, à l'appel du reacteur, s'il n'y a pas d'objet en dessous de celui selectionné.Maintenant, il me faudrait connaitre la position du curseur au moment de la selection pour savoir s'il y a d'autres objets en dessous. ;) www.le-metal.net, sur la métallerie
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant