PHILPHIL Posté(e) le 25 juillet 2007 Posté(e) le 25 juillet 2007 SALUT BRED si j'ai bein compris ton bout de LISPon ne peut pas trouver le nom d'un groupe pour une entite mais faut d'abord faire la liste des groupes et verifier ensuite si cette entite fait partie de la listec'est ca ?? y'a bcp d'autre truc comme ca, ou il faut résonner a l'envers ?? En LISP bon sinon avec ton LISP j'en ai fait ca ; ------------------------------ ; AJOUTE DES ENTITES A UN GROUPE ; ------------------------------ (defun C:AGRP (/ GROUPES LST LSTF NG VLA-SEL X) ;;; listes (Groupes (objet1 objet2 ...)) (setq GROUPES (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) LSTF NIL ) (vlax-for N GROUPES (setq NG (vla-get-name N) LST NIL ) (vlax-for I (vla-item GROUPES NG) (setq LST (cons I LST))) (setq LSTF (append (list (cons NG LST)) LSTF)) ) (setq VLA-SEL (vlax-ename->vla-object (car (entsel "\nCHOIX DU GROUPE AUQUEL RAJOUTER DES ENTITES :")))) (repeat (setq X (length LSTF)) (if (member VLA-SEL (nth (setq X (1- X)) LSTF)) (progn ;;; (setq NOGR (car (nth X LSTF))) ;;; (princ (strcat "\n Groupe : " (car (nth X LSTF)))) (prompt "\nCLIQUER SUR LE(S) ENTITE(S) A AJOUTER AU GROUPE :") (command "-GROUPE" "A" (car (nth X LSTF)) (while (> (getvar "cmdactive") 0) (command PAUSE))) ) ) ) (princ) ) ; -------------------------------- ; SUPPRIME DES ENTITES A UN GROUPE ; -------------------------------- (defun C:SGRP (/ GROUPES LST LSTF NG VLA-SEL X) ;;; listes (Groupes (objet1 objet2 ...)) (setq GROUPES (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) LSTF NIL ) (vlax-for N GROUPES (setq NG (vla-get-name N) LST NIL ) (vlax-for I (vla-item GROUPES NG) (setq LST (cons I LST))) (setq LSTF (append (list (cons NG LST)) LSTF)) ) (setq VLA-SEL (vlax-ename->vla-object (car (entsel "\nCHOIX DU GROUPE AUQUEL RAJOUTER DES ENTITES :")))) (repeat (setq X (length LSTF)) (if (member VLA-SEL (nth (setq X (1- X)) LSTF)) (progn ;;; (setq NOGR (car (nth X LSTF))) ;;; (princ (strcat "\n Groupe : " (car (nth X LSTF)))) (prompt "\nCLIQUER SUR LE(S) ENTITE(S) A SUPRIMER DU GROUPE :") (command "-GROUPE" "S" (car (nth X LSTF)) (while (> (getvar "cmdactive") 0) (command PAUSE))) ) ) ) (princ) ) bon regroupage degroupagesi ca peux servir phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Bred Posté(e) le 25 juillet 2007 Posté(e) le 25 juillet 2007 BRED si j'ai bein compris ton bout de LISPon ne peut pas trouver le nom d'un groupe pour une entite mais faut d'abord faire la liste des groupes et verifier ensuite si cette entite fait partie de la listec'est ca ?? y'a bcp d'autre truc comme ca, ou il faut résonner a l'envers ?? En LISP C'est ça, en effet, tu as compris...Mais savoir si c'est la bonne méhode, et la seule, j'avoues ne pas le savoir (mais on va vite l'apprendre : je vois quelqu'un qui est connecté qui va nous sauter dessus !)J'apprends aussi, je cherche...J'étais au début passé par les codes dxf, mais je trouvais le code trop long.... ... pour une fois que j'utilise (vlax-for .... Par contre tu pourrais chercher à ne pas passer pas (command "-GROUPE" ... pour ajouter ou retirer une entitée d'un groupe .... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
PHILPHIL Posté(e) le 25 juillet 2007 Auteur Posté(e) le 25 juillet 2007 salut baaa ca marche comme ca c'est le principal et ca met en surbrillance le groupe comme ca avec la commande "groupre" mais faut faire la selection un par un tu proposes plutot de sélectionner le groupeensuite toutes les entites a enlever ou ajouteret ensuite de le programme fait la manip d'ajouter ou soustraire les entites avec l'avantage de pouvoir selectionner les entites par plusieurs a la fois ??? phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Bred Posté(e) le 25 juillet 2007 Posté(e) le 25 juillet 2007 baaa ca marche comme ca c'est le principal Oui, mais j'apprends et j'essaye de faire le mieux possible... le plus "programmation".... Ci-dessous une commande pour ajouter une selection d'objet à un groupe.;;; ajouter selection à un groupe (defun c:[b]ajoutagr[/b] (/ GROUPES I NOM-GROUPE SEL G) (setq nom-groupe nil) (while (not nom-groupe) (setq nom-groupe (Get-Nom-Groupe (car (entsel "\n Choix du Groupe :")))) ) (princ (strcat "\n Groupe " nom-groupe " sélectionné.")) (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for n groupes (if (equal (vla-get-name n) nom-groupe) (progn (setq g n)(vla-Highlight g :vlax-false)))) (princ (strcat "\nChoix des Objets à rajouter au Groupe " nom-groupe)) (setq sel (ssget)) (vla-Highlight g :vlax-True) (repeat (setq i (sslength sel)) (vlax-invoke g 'AppendItems (list (vlax-ename->vla-object (ssname sel (setq i (1- i)))))) ) (princ (strcat "\n"(rtos (sslength sel)) " objet(s) ajouté au groupe " nom-groupe)) (princ) ) ; routine retournant le nom du groupe de l'objet sélectionné (defun Get-Nom-Groupe (sel / GR GROUPES LST LSTF NG VLA-SEL X) (if sel (progn (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) lstF nil) (vlax-for n groupes (setq ng (vla-get-name n) lst nil) (vlax-for i (vla-item groupes ng) (setq lst (cons i lst)) ) (setq lstF (append (list (cons ng lst)) lstF)) ) (setq vla-sel (vlax-ename->vla-object sel)) (repeat (setq x (length lstF)) (if (member vla-sel (nth (setq x (1- x)) lstF)) (setq gr (car (nth x lstF))) ) ) ) ) gr ) [Edité le 25/7/2007 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
PHILPHIL Posté(e) le 9 août 2007 Auteur Posté(e) le 9 août 2007 hello bred super super mieux ta version du lispca va bcp plus vite pour la selection tu aurais le meme en enlevant des entites ??? merci phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Bred Posté(e) le 11 août 2007 Posté(e) le 11 août 2007 Salut,A tester (j'ai mis une gestion d'erreur dans les routines précédentes, je les répetes ici.) ;;; [b]ajouter selection à un groupe[/b] (defun c:[b]ajoutagr[/b] (/ GROUPES I NOM-GROUPE SEL G) (setq nom-groupe nil ex-error *error* *error* err-groupe) (while (not nom-groupe) (setq nom-groupe (Get-Nom-Groupe (car (entsel "\n Choix du Groupe :")))) ) (princ (strcat "\n Groupe " nom-groupe " sélectionné.")) (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for n groupes (if (equal (vla-get-name n) nom-groupe) (progn (setq g n)(vla-Highlight g :vlax-false)))) (princ (strcat "\nChoix des Objets à rajouter au Groupe " nom-groupe)) (setq sel (ssget)) (vla-Highlight g :vlax-True) (repeat (setq i (sslength sel)) (vlax-invoke g 'AppendItems (list (vlax-ename->vla-object (ssname sel (setq i (1- i)))))) ) (setq *error* ex-error ex-error nil) (princ (strcat "\n"(rtos (sslength sel)) " objet(s) ajouté au groupe " nom-groupe)) (princ) ) ;;; [b]Choix des objets à dégrouper[/b] (defun c:[b]enlevagr[/b] (/ GROUPES I NOM-GROUPE SEL G) (setq nom-groupe nil lst-sel nil sel 1 ex-error *error* *error* err-groupe) (while (not nom-groupe) (setq nom-groupe (Get-Nom-Groupe (car (entsel "\n Choix du Groupe :")))) ) (princ (strcat "\n Groupe " nom-groupe " sélectionné.")) (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for n groupes (if (equal (vla-get-name n) nom-groupe) (progn (setq g n)(vla-Highlight g :vlax-false)))) (princ (strcat "\nChoix des Objets à Enlever au Groupe " nom-groupe)) (while sel (setq sel (car (entsel "\n Choix de l'objet :"))) (if sel (progn (redraw sel 4) (setq lst-sel (append (list (vlax-ename->vla-object sel)) lst-sel)) ) ) ) (vlax-invoke g 'RemoveItems lst-sel) (vla-Highlight g :vlax-True) (setq *error* ex-error ex-error nil) (princ (strcat "\n"(rtos (length lst-sel)) " objet(s) Enlevé au groupe " nom-groupe)) (princ) ) ;;; [b]nom du groupe de l'objet selectionné.[/b] (defun c:[b]grob[/b] (/ GROUPES LST LSTF NG VLA-SEL X) ;;; listes (Groupes (objet1 objet2 ...)) (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) lstF nil) (vlax-for n groupes (setq ng (vla-get-name n) lst nil) (vlax-for i (vla-item groupes ng) (setq lst (cons i lst)) ) (setq lstF (append (list (cons ng lst)) lstF)) ) (setq vla-sel (vlax-ename->vla-object (car (entsel "\n Choix de l'objet :")))) (repeat (setq x (length lstF)) (if (member vla-sel (nth (setq x (1- x)) lstF)) (princ (strcat "\n Groupe : " (car (nth x lstF)))) ) ) (princ) ) ; routine retournant le nom du groupe de l'objet sélectionné (defun Get-Nom-Groupe (sel / GR GROUPES LST LSTF NG VLA-SEL X) (if sel (progn (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) lstF nil) (vlax-for n groupes (setq ng (vla-get-name n) lst nil) (vlax-for i (vla-item groupes ng) (setq lst (cons i lst)) ) (setq lstF (append (list (cons ng lst)) lstF)) ) (setq vla-sel (vlax-ename->vla-object sel)) (repeat (setq x (length lstF)) (if (member vla-sel (nth (setq x (1- x)) lstF)) (setq gr (car (nth x lstF))) ) ) ) ) gr ) ; Gestion d'erreur (defun err-groupe (msg) (if (or (= msg "Fonction annulée")(= msg "Function cancelled") (= msg "quitter / sortir abandon")(= msg "quit / exit abort")) (princ) (princ (strcat "\nErreur: " msg))) (vla-Highlight g :vlax-True) (setq *error* ex-error ex-error nil) (princ) ) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lili2006 Posté(e) le 12 août 2007 Posté(e) le 12 août 2007 Bonjour à tous, Excusez mon ignorance, mais à quoi sert ce lisp puisque la commande "groupe" de AutoCAD permet à tous moments de rajouter des entités à un groupe nommé ???. Bon Dimanche. Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Bred Posté(e) le 19 août 2007 Posté(e) le 19 août 2007 Salut,Excusez mon ignorance, mais à quoi sert ce lisp puisque la commande "groupe" de AutoCAD permet à tous moments de rajouter des entités à un groupe nommé ???.Tu as plusieurs routine, permettant de ne pas passer par la boite de dialogue, et permettant d'aller plus vite je pense.Test les. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
lili2006 Posté(e) le 19 août 2007 Posté(e) le 19 août 2007 Bonjour à tous, Ok Bred, je vais regarder. Merci de ta réponse. @+, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
PHILPHIL Posté(e) le 19 août 2007 Auteur Posté(e) le 19 août 2007 hello bred j'ai tester tes derniers lispje sais pas ou mais il y a un tit bug je crois mais je ne suis tjrs pas assez callé pour le corrigerca doit venir du systeme de recherche d'erreur ca fait tourner "autocad" sans jamais rien faire: ni grouper ni degrouper merci bred phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Bred Posté(e) le 19 août 2007 Posté(e) le 19 août 2007 Pour être plus précis, pourrais-tu me dire sous quelle version tu es ? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
PHILPHIL Posté(e) le 20 août 2007 Auteur Posté(e) le 20 août 2007 salut bred apres un nouvel essai le lispe pour rajouter des entites au groupe marche tres biensoit avec la selection entite par entirersoit avec le rectangle de selection: cp sp tout les modes de selection en fait mais pour enlever des entites au groupe apparement on ne peut enlever que entite par entite je crois avoir piger tu ne peux pas faire une selection comme pour ajouter car sinon le programe reselectionne le groupe et ne peux pas s'autoeliminer ok ok sinon autocad architecture 2008 phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
Bred Posté(e) le 21 août 2007 Posté(e) le 21 août 2007 je crois avoir piger tu ne peux pas faire une selection comme pour ajouter car sinon le programe reselectionne le groupe et ne peux pas s'autoeliminerExactement.ssget selectionne le groupe, alors que entsel me permet de récupérer l'entité selectionné, qu'elle fasse partis d'un groupe ou pas..... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
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