taiki-f Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Bonjour, je voudrais un peut d'aide mon but est de sélectionner tous les blocs contenant le bloc nomme "grille" à l’intérieur. Pouvez vous m'aider car la je sèche. merci d'avance
La Lozère Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Bonjour et bienvenue,A tester, mais en passant par la commande filter tu dois pouvoir arriver à quelque chose.Tu définis un "nom du bloc" à rechercher avec comme critère *grille*. Mais bon, je viens de tester vite fais, et ça ne marche apparemment pas si il y a des attributs :blink: www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
taiki-f Posté(e) le 21 décembre 2018 Auteur Posté(e) le 21 décembre 2018 Bonjour et merci, En fait je voudrais creer un set de selection avec ssget comprenant uniquement les blocs ( ayant different nom) contenant un autre bloc s'appelant "grille" pour ensuite les extraire de mon plan.
La Lozère Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Ha oui, j'avais pas vu que tu avais posté dans lisp... :( Désolé, mais là, je ne peux rien pour toi. www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
lecrabe Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Hello Allons voir (et admirer) un Dieu US du Lisp/VLisp ! Certaines de CES Routines pourraient t'aider !? **** BlockCount **** http://www.lee-mac.com/nestedblockcounter.html La routine BlockCount defile dans l'Ecran texte (et/ou dans un fichier TXT/CSV)le decompte de Blocs y compris les Blocs imbriques ! Donc tu verras combien de Blocs GRILLE sont utilises au 1er niveau et aussi au niveau N ... **** ExtractNestedBlock **** (Convert Nested Block to Primary Block)http://www.lee-mac.com/extractnestedblock.html **** Count ***http://www.lee-mac.com/blockcounter.html RAPPEL : Cette routine sort un joli tableau quantitatif des Blocs "simples" donc au 1er niveau seulement ... Aucun traitement des Blocs imbriques ! LA SANTE, Bonnes Fetes, Bye, lecrabe (En mode "je retrouve encore les Bons Vieux LSP") Autodesk Expert Elite Team
lecrabe Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Hello SINON SVP il serait SYMPA de signaler que tu postes dans de multiples forums !! https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/select-block-with-a-nested-block/td-p/8483344 MERCI, Bye, lecrabe Autodesk Expert Elite Team
lecrabe Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Hello Cette routine de notre Maitre Francais Gilles du Lisp/VLisp affiche sur l'ecran texte l'arborescence de TOUS les Blocs du Dessin ... SYMPA pour retrouver des Blocs imbriques parfois PROFOND !! ScanBlocks de Gilles - Exemple de resultat >>>Commande: SCANBLOCKS _"GRILLE" _"C+Grille" |_"GRILLE" _"Ellipse_2_Niveaux" |_"C+Grille" |_"GRILLE" Bye, lecrabe (defun c:ScanBlocks (/ foo efName name def) (vl-load-com) (defun foo (pref blk) (vlax-for o blk (if (and (= (vla-get-ObjectName o) "AcDbBlockReference") (setq name (vla-get-Name o) efName (vlax-get o (if (vlax-property-available-p o 'EffectiveName) 'EffectiveName 'Name ) ) ) (setq def (vla-item *blocks* efName)) (= (vla-get-IsXref def) :vlax-false) ) (progn (princ (strcat "\n" pref "\"" name "\"" (if (/= name efName) (strcat "(" efName ")") "" ) ) ) (foo (strcat " " pref) def) ) "" ) ) ) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*))) (vlax-for b *blocks* (if (and (= (vla-get-IsXref B) :vlax-false) (= (vla-get-IsLayout B) :vlax-false) ) (progn (princ (strcat "\n\n_\"" (vla-get-Name B) "\"")) (foo " |_" B) ) ) ) (textscr) (princ) ) Autodesk Expert Elite Team
taiki-f Posté(e) le 21 décembre 2018 Auteur Posté(e) le 21 décembre 2018 Ok je suis désolée de pas avoir prévenus mais comme je l'ai dit sur mon premier poste je cherche à comprendre comment faire, sur le forum d' Autodesk on parle anglais du coup j'ai décidé de poster sur un forum Français pour avoir des explications plus claires. Mais bon si personne ne veut m'aider je continuerai à chercher par moi même ce que j'ai fait jusqu'à présent. Sur ce Joyeux Noël et merci pour l'accueil
lecrabe Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Hello Je pense que à aucun moment, j'ai été impoli ! Je t'ai simplement indiqué qu'il serait sympa de signaler le Multi-Post !! Tu remarqueras que j'ai passé du temps à retrouver des routines LSP qui pourraient t'aider !!! Bye, lecrabe Autodesk Expert Elite Team
La Lozère Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Cool... Ne pas oublier... On est sur un forum. Et les mots ne remplacerons jamais l’intonation de la voie dans une conversation, alors il faut savoir lire entre les lignes. Et sinon joyeuses fêtes à tout le monde. Profitez bien.http://www.bazincourt.fr/wp-content/uploads/2015/01/COTILLON_1-272x300.png www.cad-is.fr Autocad Map 2021 - Covadis/Autopiste V18.0c Pisser sous la douche ne suffira pas
taiki-f Posté(e) le 21 décembre 2018 Auteur Posté(e) le 21 décembre 2018 Je n'ai en aucun cas dis que tu as été impoli. Comme dis LA Lozère pas d'intonation sur le forum.Je suis vraiment sincère en vous remerciant de votre accueil et je comprends très bien pour le multi post.Je me suis beaucoup débrouiller seul et j'ai apprécié votre aide. En tout cas encore merci et Bon Noël
lecrabe Posté(e) le 21 décembre 2018 Posté(e) le 21 décembre 2018 Hello OK MERCI ! Je suis le fil sur le Forum French AutoCAD Autodesk ... J ai vu que Moshe-A te prépare une routine de compétition = SUPER Joyeux Noel à TOUS et LA SANTÉBye, lecrabe Autodesk Expert Elite Team
Patrick_35 Posté(e) le 7 janvier 2019 Posté(e) le 7 janvier 2019 Salut Comme c'est la nouvelle année, voici une fonction qui sélectionne le/les blocs, même imbriqués.L'idée est de parcourir la table des blocs, de regarder dans chaque bloc si tu as un bloc recherché imbriqué --> Oui, je le mémorise et je relance la recherche pour voir si le bloc trouvé n'est pas lui-même imbriqué dans un autre bloc.Voici la fonction et si tu as des questions, n'hésite pas.(defun rech(bl / doc ent js lst obj old sel tab nombl) (defun nombl(bl) (if (vlax-property-available-p bl 'effectivename) (strcase (vla-get-effectivename bl)) (strcase (vla-get-name bl)) ) ) (setq doc (vla-get-activedocument (vlax-get-acad-object)) bl (mapcar 'strcase bl) old bl js (ssadd) ) (while bl (setq lst nil) (vlax-for obj (vla-get-blocks doc) (and (eq (vla-get-islayout obj) :vlax-false) (eq (vla-get-isxref obj) :vlax-false) (not (wcmatch (vla-get-name obj) "*|*")) (vlax-for ent obj (and (eq (vla-get-objectname ent) "AcDbBlockReference") (vl-position (nombl ent) bl) (not (vl-position (nombl obj) lst)) (setq lst (cons (nombl obj) lst) tab (cons (vla-get-name obj) tab) ) ) ) ) ) (setq bl lst) ) (setq tab (append tab old)) (and (ssget "_x" (list (cons 0 "insert") (cons 2 (strcat (apply 'strcat (mapcar '(lambda(x)(strcat x ",")) tab)) "`*U*")))) (progn (vlax-for obj (setq sel (vla-get-activeselectionset doc)) (and (vl-position (nombl obj) tab) (ssadd (vlax-vla-object->ename obj) js) ) ) (vla-delete sel) (sssetfirst nil js) ) ) js ) Pour lancer la fonction. Tu peux indiquer une liste de blocs.La sélection est effectuée dans Autocad et tu as comme message de retour, la sélection.Par exemple(rech '("grille")) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Steven Posté(e) le 7 janvier 2019 Posté(e) le 7 janvier 2019 Hello Cette routine de notre Maitre Francais Gilles du Lisp/VLisp affiche sur l'ecran texte l'arborescence de TOUS les Blocs du Dessin ... SYMPA pour retrouver des Blocs imbriques parfois PROFOND !! ScanBlocks de Gilles - Exemple de resultat >>>Commande: SCANBLOCKS _"GRILLE" _"C+Grille" |_"GRILLE" _"Ellipse_2_Niveaux" |_"C+Grille" |_"GRILLE"<<< Bye, lecrabe (defun c:ScanBlocks (/ foo efName name def) (vl-load-com) (defun foo (pref blk) (vlax-for o blk (if (and (= (vla-get-ObjectName o) "AcDbBlockReference") (setq name (vla-get-Name o) efName (vlax-get o (if (vlax-property-available-p o 'EffectiveName) 'EffectiveName 'Name ) ) ) (setq def (vla-item *blocks* efName)) (= (vla-get-IsXref def) :vlax-false) ) (progn (princ (strcat "\n" pref "\"" name "\"" (if (/= name efName) (strcat "(" efName ")") "" ) ) ) (foo (strcat " " pref) def) ) "" ) ) ) (or *acad* (setq *acad* (vlax-get-acad-object))) (or *acdoc* (setq *acdoc* (vla-get-ActiveDocument *acad*))) (or *blocks* (setq *blocks* (vla-get-Blocks *acdoc*))) (vlax-for b *blocks* (if (and (= (vla-get-IsXref B) :vlax-false) (= (vla-get-IsLayout B) :vlax-false) ) (progn (princ (strcat "\n\n_\"" (vla-get-Name B) "\"")) (foo " |_" B) ) ) ) (textscr) (princ) ) Salut le décapode, Je viens d'essayer ce Lisp qui est bien mais il me trouve un bloc imbriqué qui n'existe pas dans un bloc. _"Bur_160x120-60_G" |_"Siège_Travail" |_"Cais_bas" Le bloc Cais_bas existe bien dans la base des blocs mais il n'est pas imbriqué dans le bloc Bur_160x120_G.A quoi est-ce dû? Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
x_all Posté(e) le 7 janvier 2019 Posté(e) le 7 janvier 2019 une bonne purge? quelques trucs sur autocad
Steven Posté(e) le 7 janvier 2019 Posté(e) le 7 janvier 2019 une bonne purge? Salut x_all, J'avais déjà purger le dessin mais tu m'as mis la puce à l'oreille. Lorsque j'insère le bloc Cais_bas, pas de problème, il est bien là. Lorsqu'on regarde le bloc Bur_160x120-60_G, on ne voit que le plan de travail et le bloc imbriqué Siège_Travail.Du fait que dans le dessin, il n'y que le bloc Bur_160x120-60_G en un seul exemplaire, je me suis demandé, après avoir lu ta réponse, pourquoi, après avoir purgé mon dessin, le bloc Cais_bas était toujours dans la base de blocs du dessin. Je suis donc aller dans l'éditeur de bloc en allant voir dans le bloc Bur_160x120-60_G et j'ai lancé la commande de sélection rapide en choisissant comme type d'objet, Référence de bloc puis comme propriété, le nom. Je suis donc allé cherché dans la valeur, Cais_bas et AutoCAD a bien sélectionné le bloc en question mais ô surprise, je ne vois rien. Même pas un grip bleu ou quoi que ce soit. je fais un zoom étendu et toujours rien. Tous les calques sont actifs et libérés. Je lance la commande inserer pour insérer le bloc Cais_bas et je le vois bien au bout de mon réticule. Je l'insère quand même.Je relance la sélection rapide avec les même critères que plus haut et AutoCAD me sélectionne 2 blocs Cais_bas. Je ne vois toujours pas le premier alors que le second est en surbrillance. Les deux blocs ont bien les échelles X, Y et Z à 1. Bref, quoiqu'il en soit, je les efface puis je re-teste le lisp SCANBLOCKS et tout est normal, il n'y a plus ce bloc Cais_bas en tant que bloc imbriqué.Ce qui est bizarre, c'est que le bloc Cais_bas était complètement invisible Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
x_all Posté(e) le 7 janvier 2019 Posté(e) le 7 janvier 2019 il y a JAV aussi qui purge des trucs zarbi... il eût pu t'aider... quelques trucs sur autocad
Patrick_35 Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 Salut En lisp, il est possible de rendre un bloc invisible.Par exemple(defun c:test(/ ent) (setq ent (vlax-ename->vla-object (car (entsel)))) (vla-put-visible ent :vlax-false) (princ "\nLe bloc est maintenant invisible.") (getstring "\nAppuyez sur entrée pour continuer...") (vla-put-visible ent :vlax-true) (princ "\nLe bloc est maintenant visible.") (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Steven Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 il y a JAV aussi qui purge des trucs zarbi... il eût pu t'aider... J'avais bien évidemment passer le dessin au JAV et au Batchpurge de Gile. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
lecrabe Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 Hello Patrick 1) MERCI pour ton petit programme demonstratif ! 2) Ci-apres une routine ALLVISI de Gilles que j'aime bien !Surtout quand il y a des objets invisibles par programmation ... LA SANTE, Bonne Annee, Bye, lecrabe ;; Par GC - Rendre TOUS les objets / entites visibles ;; Flag d Invisibilite d AutoCAD = 60 ;; Chargement par : APPLOAD ;; Commande au clavier : ALLVISI (vl-load-com) (defun c:ALLVISI () (vlax-for blk (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vlax-for obj blk (if (vlax-property-available-p obj 'Visible) (vla-put-Visible obj :vlax-true) ) ) ) ) Autodesk Expert Elite Team
Steven Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 Salut En lisp, il est possible de rendre un bloc invisible.Par exemple(defun c:test(/ ent) (setq ent (vlax-ename->vla-object (car (entsel)))) (vla-put-visible ent :vlax-false) (princ "\nLe bloc est maintenant invisible.") (getstring "\nAppuyez sur entrée pour continuer...") (vla-put-visible ent :vlax-true) (princ "\nLe bloc est maintenant visible.") (princ) ) @+ Salut Patrick_35, En fait, ce Lisp ne fonctionne qu'en sélectionnant un bloc déjà visible.Or, dans mon cas, celui-ci est invisible. Je ne peux donc pas le sélectionner. Hello Patrick 1) MERCI pour ton petit programme demonstratif ! 2) Ci-apres une routine ALLVISI de Gilles que j'aime bien !Surtout quand il y a des objets invisibles par programmation ... LA SANTE, Bonne Annee, Bye, lecrabe ;; Par GC - Rendre TOUS les objets / entites visibles ;; Flag d Invisibilite d AutoCAD = 60 ;; Chargement par : APPLOAD ;; Commande au clavier : ALLVISI (vl-load-com) (defun c:ALLVISI () (vlax-for blk (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object) ) ) (vlax-for obj blk (if (vlax-property-available-p obj 'Visible) (vla-put-Visible obj :vlax-true) ) ) ) ) Salut le décapode, Nickel, ce Lisp ! Je vois enfin ce putain de bloc invisible et j'ai enfin compris pourquoi ce phénomène se produisait.A la base, le bloc Bur_160x120-60_G était un bloc dynamique avec un paramètre de visibilité.Une visibilité avec caisson et une visibilité sans caisson. A un moment donné, je ne sais plus quand, exactement, le paramètre de visibilité a été supprimer lorsque le bloc était en visibilité sans caisson.Le bloc n'était donc plus dynamique. Toutefois, il y a avait toujours la référence de bloc Cais_bas en tant que bloc imbriqué. En conclusion: Lorsqu'on décide de supprimer un paramètre de visibilité, dans un bloc dynamique, il faut prendre soins d'effacer, aussi, ce qui est sensé ne pas se voir. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
Patrick_35 Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 Salut Patrick_35, En fait, ce lisp ne fonctionne qu'en sélectionnant un bloc déjà visible.Oui, c'est pour montrer d'où vient le problème.On peut très bien voir des objets invisible dans le dessin sans que cela dépendent des calques. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Steven Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 J'ai expliqué en vidéo ce qui s'est passé. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
lecrabe Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 Hello Steven Tu as osé "douter" d'une Routine de Gilles !? Ta punition sera :- 10 Notre Pere - 10 Je vous salue Marie Bye, lecrabe Autodesk Expert Elite Team
Steven Posté(e) le 8 janvier 2019 Posté(e) le 8 janvier 2019 Hello Steven Tu as osé "douter" d'une Routine de Gilles !? Ta punition sera :- 10 Notre Pere - 10 Je vous salue Marie Bye, lecrabe En aucun cas, je n'ai douté du Lisp de Gilles. C'est ce qui m'a justement fait comprendre d'où venait le souci et je l'ai tout simplement expliqué Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
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