La Lozère Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Bonjour,Alors, juste en intro, là où je suis, j'ai un débit très très faible, et une recherche dans les fils existant me prendrais trop de temps. Alors désolé si je part au plus pressé. ;) Voilà, je cherche une routine ou un truc qui permettrait de dégrouper x groupes d'un seul coup. J'utilise autopiste, et quand on dessine les profil en travers, il créait forcément un groupe pour chaque profil. Donc 200 profils = 200 groupes. Et si on doit reprendre, il faut les effacer, ce qui prend un temps monstrueux. Et j'ai remarquer que si ce n'est plus des groupes, c'est plus rapide. Voilà, merci. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
didier Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 coucou si tu utilise le Ctrl+H ça devrait dégrouper en bloc. (variable PICKSTYLE à zéro) amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
La Lozère Posté(e) le 21 octobre 2011 Auteur Posté(e) le 21 octobre 2011 Salut,Ctrl+H ne dégroupe pas, cela inactive la sélection global d'un groupe, mais le groupe existe toujours.Merci. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
didier Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Coucou Ctrl+H ne dégroupe pas??????? Éternel débutant... Mon site perso : Programmer dans AutoCAD
bryce Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Bonjour, Je n'ai pas bien compris le pourquoi du comment, mais voici un petit lisp que j'avais déjà écrit: (defun c:ungroup (/ acdoc groups group ) (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) groups (vla-get-groups acdoc) ) (vla-startundomark acdoc) (vlax-for group groups (vla-delete group) ) (vla-endundomark acdoc) (princ) ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
La Lozère Posté(e) le 21 octobre 2011 Auteur Posté(e) le 21 octobre 2011 Pour répondre Didier, si tu fais Ctrl+H, tu "dégroupes" ton groupe, C'est à dire que tu peux sélectionner individuellement chaque éléments du groupe. Mais si tu refait Ctrl+H, le groupe se reforme. Autrement dis, Ctrl+H ne détruit pas les groupes. Vous pouvez sélectionner un groupe en indiquant son nom à l'invite Choix des objets. Si la variable système PICKSTYLE a pour valeur 1 ou 3, et que vous sélectionnez un membre d'un groupe sélectionnable, tous les objets du groupe répondant au critère de sélection sont sélectionnés. L'activation et la désactivation de la sélection de groupes peut s'effectuer en appuyant sur les touches CTRL+H ou CTRL+MAJ+A. Merci Bryce, cela pourrait convenir, mais ta routine traite tous les groupes du dessin. Serait-il possible de faire une sélection par fenetre des groupe que l'on veut? A plus. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
didier Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Coucou je ne comprends pus ta demande tu dis vouloir EFFACERdonc tu Ctrl+H et tu effaces tu dis que lorsque les entités sont groupées ça prend un temps monstrueuxdonc tu dégroupes et et effaces... c'est pas ça ? Éternel débutant... Mon site perso : Programmer dans AutoCAD
PHILPHIL Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 hello avec experience je prendrais la solution de didieret jouer avec pickstyle à 0 (control +h) les entites reste des groupes, mais tu peux bosser entité par entitéet la c'est aussi rapide que si c'etait degroupé il y a aussi un LISP qui groupe / degroupe sur le siteun *.VLX fonction "degrp" "grp" http://www.delicad.com/autocad/sommaire_divers.htm a+ phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal
(gile) Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Salut, Voir ce message, la commande DGRP supprime les groupes auxquels appartient l'objet sélectionné. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
vincentp010 Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Je viens de faire ça vite fait (defun c:dgrp (/ lst lst2 nb grou pts) (vl-load-com) ;---liste des groupes--- (setq grou (dictsearch (namedobjdict) "ACAD_GROUP")) (setq lst (vl-remove-if 'vl-symbolp (mapcar '(lambda (x) (if (or (= (car x) 3) (= (car x) 350)) (cdr x) T)) grou))) (setq nb 0 lst2 nil pts nil) (if (= lst nil) (progn (print "Pas de groupes dans le dessin") (exit))) (while (<= nb (length lst)) (if (< (length pts) 2) (progn (setq pts (append pts (list (nth nb lst)))) (setq nb (+ nb 1)) ) (progn (setq lst2 (append lst2 (list pts))) (setq pts nil) ) ) ) ;----------- ;; DCL load (setq tmp (WriteDcl)) (setq dcl_id (load_dialog tmp)) (if (not (new_dialog "dial" dcl_id)) (exit)) (start_list "lstg") (mapcar 'add_list (mapcar '(lambda (x) (car x)) lst2)) (end_list) (action_tile "degr" "(degroup (get_tile\"lstg\") lst2)") (start_dialog) (unload_dialog dcl_id) (vl-file-delete tmp) ) (defun degroup (lnb lst / a l lst2 nb) (setq l '()) (while (/= lnb "") (setq a (read lnb)) (setq l (cons a l)) (setq lnb (vl-string-left-trim " " lnb)) (setq lnb (vl-string-left-trim (itoa a) lnb)) ) (setq nb 0 lst2 lst) (while (< nb (length l)) (setq pos (nth nb l)) (entdel (cadr (nth pos lst))) (setq lst2 (vl-remove (nth pos lst) lst2)) (setq nb (+ nb 1)) ) (start_list "lstg") (mapcar 'add_list (mapcar '(lambda (x) (car x)) lst2)) (end_list) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun WriteDcl () (setq fichier (vl-filename-mktemp "tmp.dcl")) (setq file (open fichier "w")) (write-line "dial : dialog { label = \"Multi degroupage\" ; : boxed_column { label = \"Selectionnez les groupes\"; : list_box { multiple_select = true; value = \"0\"; key = \"lstg\"; height = 15; fixed_height = true; width = 40; fixed_width = true; } : button { key = \"degr\"; label = \"Degrouper\"; width = 10; fixed_width = true; } spacer; } ok_only ; }" file ) (close file) fichier ) Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
bryce Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 (modifié) Voici ma proposition :http://www.creao.fr/uploads/lisp/dg.lsp Le code (obsolète, voir nouvelle version plus bas):(defun c:dg (/ *error* oldcmdecho acdoc groups group ss e i) ; Décompose les groupes auxquels appartiennent les objets sélectionnés. ; Brice Studer, ocobre 2011 (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) groups (vla-get-groups acdoc) ) (defun *error* (msg) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (vla-delete ss)) (setvar "cmdecho" oldcmdecho) (vla-endundomark acdoc) (princ) ) (vla-startundomark acdoc) (setq oldcmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (princ "\nSélectionnez les groupes à décomposer <entrée pour tous> : ") (if (setq ss (ssget)) (progn (setq ss (vla-get-activeselectionset acdoc)) (vlax-for e ss (vlax-for group groups (vlax-for i group (if (eq (vlax-vla-object->ename e) (vlax-vla-object->ename i)) (vla-delete group)) ) ) ) ) (vlax-for group groups (vla-delete group) ) ) (*error* nil) (princ) ) (princ "\nCommande à utiliser : DG") (princ) 3 boucles vlax-for imbriquées, j'espère que (gile) ne va pas faire une attaque ! :P Modifié le 21 octobre 2011 par bryce Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
La Lozère Posté(e) le 21 octobre 2011 Auteur Posté(e) le 21 octobre 2011 Merci les gars,Bryce, chez moi, je sélectionne mes groupes et quand je valide, il ne finit pas la commande. Vincentp010, nickel ça marche. Du coup, j'ai remarqué une chose, pour revenir à la discussion, d'avec didier. Si on efface tout les éléments d'un groupe (si on utilise uniquement Ctrl+H), cela ne détruit pas le groupe. Donc ceci expliquant peut-être cela avec Autopiste. Encore merci de vous être penché sur mon souci. PS: (Gile), je connais très bien ta routine, chez moi, elle est même chargée au démarrage avec icônes associés. Mais, sauf si elle a évoluée, il faut relancer la commande pour chaque groupe. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
bryce Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Bryce, chez moi, je sélectionne mes groupes et quand je valide, il ne finit pas la commande.C'est-à-dire ? :unsure: Je viens de retester sur un fichier contenant à peu près 5000 objets, et certes ça mouline quelques secondes, mais ça fonctionne... Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
didier Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Coucou je m'excuse d'insister mais il faut clarifiertu veux :EFFACER les entités ?SUPPRIMER les groupes ? on ne sait toujours pas. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Patrick_35 Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 3 boucles vlax-for imbriquées, j'espère que (gile) ne va pas faire une attaque ! :PSalut Pour éviter d'imbriquer les groupes, tu peux faire une liste des groupes et ensuite utiliser la fonction member pour la liste dans la recherche des groupes. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
La Lozère Posté(e) le 21 octobre 2011 Auteur Posté(e) le 21 octobre 2011 Bryce: Chez moi, je sélectionne par exemple 2-3 objets correspondant à 2-3 groupes différents. Ce qui à pour effet de sélectionner 2-3 groupes à détruire. Et donc quand je valide par "Entrée", il ne se passe rien, cela ne lance pas a commande. Je suis obligé de faire "Echap". Et du coup, je n'ai qu'un groupe de détruit. Didier: Pas de problème on est là pour discuter. Mon but final, est d'effacer les objets de mes groupes. Mais, j'ai remarqué que cela était plus rapide si les objets ne faisaient plus parti d'un groupe. Du coup, avec la routine de (gile) je les détruisais un par un. Mon projet Autopiste comporte 200 profils avec chacun environ 400 objets. Soit 200 groupes et 80000 objets. Voilà, à plus. PS: Je suis sur Autocad 2010 www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
didier Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 coucou bien sûr qu'il n'y a pas de problème, qui a dit le contraire ? tu veux effacer les entités, non ? tu n'as pas besoin de toutes ces fiorituresqui peuvent servir à ceux qui n'ont pas Covadis. je dis que Ctrl+H est efficaceet si vraiment tu veux supprimer les groupes (devenus vides)CovEdition > Purger > Groupes Vides amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
bryce Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Mon projet Autopiste comporte 200 profils avec chacun environ 400 objets. Soit 200 groupes et 80000 objets.Ça doit être pour ça que la commande semble ne pas se terminer.Mon lisp n'est pas optimisé pour la rapidité, il parcourt pour chaque objet sélectionné l'ensemble du contenu de chaque groupe, donc vu le nombre d'objets dans ton dessin ça doit prendre un temps certain... <_<Je suppose qu'en étant très patient, il finirait par y arriver... :P Pour éviter d'imbriquer les groupes, tu peux faire une liste des groupes et ensuite utiliser la fonction member pour la liste dans la recherche des groupes.Patrick, le problème c'est que je ne vois pas comment faire pour trouver les groupes auxquels appartient chaque objet de la sélection sans parcourir à chaque fois le contenu de chaque groupe.Si tu as une astuce, ça m'intéresse ! :) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
bryce Posté(e) le 21 octobre 2011 Posté(e) le 21 octobre 2011 Bon, en fait j'avais complètement zappé le code 330 qui permet de savoir à quel(s) groupe(s) appartient un objet... :blink: Voici donc une nouvelle version de mon lisp, beaucoup plus rapide:http://www.creao.fr/uploads/lisp/dg.lsp (defun c:dg (/ *error* oldcmdecho acdoc groups ss i li g gl) ; Décompose les groupes auxquels appartiennent les objets sélectionnés. ; Brice Studer, ocobre 2011 (vl-load-com) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object)) groups (vla-get-groups acdoc) ) (defun *error* (msg) (and msg (or (member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON")) (princ (strcat "\nErreur : " msg)) ) ) (if ss (setq ss nil)) (setvar "cmdecho" oldcmdecho) (vla-endundomark acdoc) (princ) ) (vla-startundomark acdoc) (setq oldcmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (princ "\nSélectionnez les groupes à décomposer <entrée pour tous> : ") (if (setq ss (ssget)) (progn (setq i 0) (repeat (sslength ss) (setq li (entget (ssname ss i))) (while li (if (setq g (cdr (assoc 330 li))) (or (member g gl) (and (= (cdr (assoc 0 (entget g))) "GROUP") (setq gl (cons g gl)) ) ) ) (setq li (cdr li)) ) (setq i (1+ i)) ) (foreach g gl (entdel g) ) ) (vlax-for g groups (setq gl (cons g gl)) (vla-delete g) ) ) (princ (strcat "\n" (itoa (length gl)) " groupes décomposés !")) (*error* nil) (princ) ) (princ "\nCommande à utiliser : DG") (princ) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
La Lozère Posté(e) le 22 octobre 2011 Auteur Posté(e) le 22 octobre 2011 Et voilà, comme d'hab, vous avez assuré.Merci à vous. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
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