nG! Hebus Posté(e) le 29 janvier 2016 Posté(e) le 29 janvier 2016 Bonjour, Je cherche à savoir sil quelqu'un a un LISP pour remplacer des blocs en masse.En gros : Fichier ind.A avec tout les blocs ind.AJe veux en faire un fichier ind.A mais avec tout les blocs ind.BPar contre je souhaite que la redéfinition ne change ni l'orientation ni le point d'insertion du bloc.Il va toujours chercher les blocs ind.B dans le même dossier. Merci pour vos réponses/questions si je ne suis pas clair. Cordialement "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
didier Posté(e) le 29 janvier 2016 Posté(e) le 29 janvier 2016 Coucou Tu n'es pas très clair, du moins à mes yeux, malgré tout je vais tenter de l'être en t'expliquant ce que j'ai compris comme finalité Dans ton Ind A tu as des blocs (fichiers externes qui deviennent références de bloc dans le dessin)Dans ton ind B (créé à partir de l'indice A (enregistré sous) il faut insérer un de tes fichiers (nouveau bloc) dans l'ind B pour que ça devienne une référence de bloc dans le dessin Ind B. Puis tu lances la commande "blockreplace" (Express) En souhaitant ne pas être hors-sujet Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
bryce Posté(e) le 29 janvier 2016 Posté(e) le 29 janvier 2016 Bonjour, J'ai pas tout compris à la question moi non plus, mais peut-être que ce Lisp pourra te servir:http://cadxp.com/topic/36299-remplacement-blocs-avec-excel/ Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
nG! Hebus Posté(e) le 1 février 2016 Auteur Posté(e) le 1 février 2016 Salut, Ha, désolé j'ai été un peu vite en explication... Bon en gros, j'ai un ancien gabarit avec environ 2000 blocs "fournisseur" qui ont un nom bien définit et des attributs (fournisseur, réf, notre réf, matière,etc) et j'ai 200 montages types pour ces blocs (station de vannes, équipement de pompes, de compresseur,etc) avec dans ces montages plusieurs blocs "fournisseur". Afin d'éviter de devoir redessiner les montages types (avec mes nouveau blocs "fournisseur" mis à jour) je souhaiterai savoir si il existe une commande ou un LISP Dans mon nouveau gabarit, j'ai ces mêmes blocs "fournisseur" non modifiés mais que j'ai mis à jour dans un autre fichier pour plus de facilité. Je voudrai donc réinsérer dans mon nouveau gabarit mes montages types avec mes nouvelles références fournisseurs. je sais pas si du coup c'est plus clair... PS: je précise que ce sont des blocs dynamiques avec champs dynamiques, sinon c'est pas drôle... @Bryce: merci pour le lisp mais mes blocs ont le même nom... (pour pas perturber les gens qui les utilisent :) ) "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Patrick_35 Posté(e) le 1 février 2016 Posté(e) le 1 février 2016 Salut Je pense que RBLOC répond à ton besoin.Par contre, il faudra exporter (wbloc) tes blocs du second dessin pour ensuite les utiliser via RBLOC @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
nG! Hebus Posté(e) le 1 février 2016 Auteur Posté(e) le 1 février 2016 Merci de vos réponses :) Même avec Rbloc, je ne peux pas changer un bloc qui comporte le même nom car il se réfère à lui même... Tant pis :unsure: NOTA: pour le prochain coup, FAIRE DES INDICES ! "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Goldorak44 Posté(e) le 1 février 2016 Posté(e) le 1 février 2016 Merci de vos réponses :) Même avec Rbloc, je ne peux pas changer un bloc qui comporte le même nom car il se réfère à lui même... Tant pis :unsure: NOTA: pour le prochain coup, FAIRE DES INDICES ! Salut, tu renomme tous tes blocs fournisseurs (commande renommer) avec un suffixe (*old par exemple) et ensuite tu utilise Rbloc. Ptite purge pour supprimer tous les blocs ayant le suffixe et hop c'est fini ! ;) PIRO CharlesDeveloppeur Revit, RV/RA - Formateur RevitPIRO CIE
nG! Hebus Posté(e) le 1 février 2016 Auteur Posté(e) le 1 février 2016 Salut, Alors le LISP Rbloc ne permet pas de définir les blocs par nom comme la commande renommer ( le fameux " * ", de sélection multiples) Mais j'ai une question est ce que quelqu'un a un truc pour insérer et redéfinir en masse?Car finalement c'est plus de ce coté que je cherche du coup... Commande : _insérerChoix des éléments : 2000 blocsVoulez vous insérer et redéfinir les "2000 blocs"? l'orientation ne change pas ni le pont d'insertion. et hop c'est fait :) Je suis preneur de tout ce que vous avez comme idée "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Goldorak44 Posté(e) le 1 février 2016 Posté(e) le 1 février 2016 Alors le LISP Rbloc ne permet pas de définir les blocs par nom comme la commande renommer ( le fameux " * ", de sélection multiples) ??? Pas compris ce que tu veux dire. Perso, dans les cas comme le tien (ça m'arrive régulièrement), j'utilise d'abord la commande renommer. Ainsi le bloc "bidule" devient "biduleold".Ensuite je lance Rbloc et je défini comme bloc d'origine "biduleold" et comme bloc remplaçant "nouveau bloc". Dans mon dessin tous les blocs "biduleold" sont remplacé, il ne me reste qu'a purger. PIRO CharlesDeveloppeur Revit, RV/RA - Formateur RevitPIRO CIE
Patrick_35 Posté(e) le 1 février 2016 Posté(e) le 1 février 2016 Salut Je suis comme Goldorak44, dans l'expectative de tes explications. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
nG! Hebus Posté(e) le 1 février 2016 Auteur Posté(e) le 1 février 2016 J'ai 200 blocs avec des noms différents... et j'en ai dans plusieurs dessins. En gros j'ai une dizaine de fichiers avec chacun des éléments type par applicatif (froid, chaud, traitement,etc) Donc si je vous suis il faut que dans chaque fichier : -Sélection filtre => blocs-mettre en *-OLD-insérer tout les nouveaux blocs-Lancer Rblock-Me palucher les 200 blocs : -bloc 1-OLD vers bloc 1-new -bloc 2-OLD vers bloc 2-new... -bloc 200-OLD vers bloc 200-new Sur 10 fichiers. Ou alors peut t'on faire comme pour la commande renommer? CàD, faire un *-OLD vers un *-new ?Si oui j'ai pas vu comment... un petit screen? Cordialement "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
didier Posté(e) le 1 février 2016 Posté(e) le 1 février 2016 Coucou désolé, je lâche l'affaire, manque de clarté je suis convaincu que tu n'as pas besoin de lisp mais je ne comprends plus, si tant est que j'aie compris un jour. Éternel débutant... Mon site perso : Programmer dans AutoCAD
sbosarl Posté(e) le 2 février 2016 Posté(e) le 2 février 2016 bonjour ,je pose une piste (pas forcement une solution)tu crée un dwg avec tes nouveaux blocs la tu insère ton ancien fichier.par défaut autocad garde la définition des premier bloc imbriquer
Tramber Posté(e) le 2 février 2016 Posté(e) le 2 février 2016 je suis convaincu que tu n'as pas besoin de lisp mais je ne comprends plus, si tant est que j'aie compris un jour.Moi aussi (convaincu), ce genre de trucs, j'essaie souvent de le traiter par scripts.En +, Excel, qui m'aide à les bâtir permet de prendre des notes. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
laud69 Posté(e) le 2 février 2016 Posté(e) le 2 février 2016 J'aurais pensé à un script aussi, mais la commande insert bloc ne semble fonctionner qu'en mode fenêtre.
Patrick_35 Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 Salut @Hbs69Tu n'as pas 50 solutions.Il faut insérer tous les nouveaux blocs (en renommant ou pas) dans le dessin via un lisp ou script.Je peux te faire quelque chose mais il faut que tous les nouveaux blocs soient dans un répertoire. @laud69un petit - devant la commande pour ne pas avoir la boite de dialogue.Par exemple -inserer @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 Bonjour, @laud69un petit - devant la commande pour ne pas avoir la boite de dialogue.Par exemple -insererPour mettre au point le script dans l'interface ok, mais ne pas mettre le "-" dans les fichiers scripts svp B) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Raph_38 Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 Je dois être débile .. mais j'ai du mal à comprendre Raph. Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !
Tramber Posté(e) le 3 février 2016 Posté(e) le 3 février 2016 Mais non, tu n'es pas débile ! ;) Moi j'ai du mal à comprendre ce que tu as du mal à comprendre : la problématique de Hbs69 ou les règles du script ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
nG! Hebus Posté(e) le 4 février 2016 Auteur Posté(e) le 4 février 2016 Salut à tous, je vais tester la solution de sbosarl, j'avais tester dans l'autre sens pas dans le bon... j'avis mis les nouveaux dans les anciens... Oui bah, j'aurais du réfléchir avant de vous poser la question... je test et je reviens. Merci à vous. EDIT: Alors la solution de sbosarl, ne fonctionne pas...sniff: -Les blocs ne gardent pas leur propriétés (rotation, état) @Patrick : les blocs sont des blocs dynamiques, donc pour les montages types il faut qu'ils conservent leurs états.Pour ce qui est des blocs, ils sont dans un seul fichier. Est ce que je dois faire un dossier avec un fichier par bloc? Merci aux autres d'avoir proposé des solutions. "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
Tramber Posté(e) le 4 février 2016 Posté(e) le 4 février 2016 Voici ce que je ferais pour ma part.un script comme ceci :INSERER bloc1=bloc1indB 0,0 1 1 0 EFFACER D INSERER bloc2=bloc2indB 0,0 1 1 0 EFFACER D INSERER bloc3=bloc3indB 0,0 1 1 0 EFFACER D .... Achtung : il y a un espace à la fin de chaque ligne avant le retour chariot.Au besoin, passer EXPERT à 2 pour ne pas avoir le message de rédéfinition du bloc mais je pense que la syntaxe anciennom=nouveaunom rend a priori la manipulation inutile. Bien entendu, les blocs avec l'indice B seront présents dans un dossier déclaré comme dossier de support valable.Comme difficulté, je n'en vois qu'une : recenser dans chaque dessin, les blocs à mettre à jour, les blocs en présence.Charger ces quelques lignes dans l'éditeur Vlisp sera pratique car le résultat se copie-colle facilement depuis la console vers Excel.(ou alors taper -I ? et *) (vl-load-com) (vlax-for bl (setq *blocks* (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))) (and (eq (vla-get-islayout bl) :vlax-false) (princ (strcat"\n"(vla-get-Name bl)))) ) Comme tu as l'air d'avoir beaucoup de fichiers il faudrait automatiser en seconde intention.Deux solutions ou trois :1-faire tout en lisp2-mixer du lisp et un auto-script3-tout en script avec tous les blocs et purger, utiliser SAS, par exemple.Problème pour cette méthode : tous les blocs ne sont pas forcément présents dans chaque dessin. Un premier passage d'un premier script qui les insère tous (dans leur première définition) en un point, quitte à les effacer, peut paraitre barbare mais efficace. Cette solution 3 devient compatible LT B) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 4 février 2016 Posté(e) le 4 février 2016 Salut Un lisp vite faitTous les blocs à redéfinir doivent être dans un dossier et doivent avoir le même nom que ceux du dessin. J'ai essayé avec des blocs dynamique et cela à l'air d'être ok (defun c:rtb(/ blo esp lay lck lst rep dirbox) (defun dirbox(txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) (setq doc (vla-get-activedocument (vlax-get-acad-object)) esp (vla-get-modelspace doc) lay (vla-get-activelayer doc) lck (vla-get-lock lay) ) (vla-startundomark doc) (and (setq rep (dirbox "Choisissez un répertoire contenant tous les blocs à redéfinir.")) (setq lst (vl-directory-files rep "*.dwg")) (progn (vla-put-lock lay :vlax-false) (foreach blo lst (and (tblsearch "block" (vl-filename-base blo)) (vla-delete (vla-insertblock esp (vlax-3d-point '(0.0 0.0 0.0)) (findfile (strcat rep "/" blo)) 1 1 1 0)) ) ) (vla-put-lock lay lck) (vla-regen doc acallviewports) ) ) (vla-endundomark doc) (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 4 février 2016 Posté(e) le 4 février 2016 Salut à tous, Puissant ton lisp, Patrick_35 http://www.smileys-gratuits.com/smiley-content/content-3.gif Cependant, il y a intérêt à ce que les blocs de remplacements aient les mêmes points de base d'insertion que les blocs à remplacer parce que sinon, je vous raconte pas l'emplacement des nouveaux blocs. Aussi, j'ai fais un essai avec des attributs et voici ce qu'il en suit: Dans un dossier, j'ai les blocs de remplacement sans attributs.Dans mon dessin, j'ai des blocs avec attributs.Je remplace les blocs du dessin, avec attributs par les autres blocs, sans attributs. Résultat: Les blocs du dessin ont toujours leurs attributs, mais; lorsqu'on double-clique dessus, on peut modifier la valeur de l'attribut. Par contre, lorsqu'on va dans l'éditeur de bloc, il n'y a aucune étiquette :blink: Cependant, lorsque sur le dessin, il y a un bloc sans attributs et que celui-ci est remplacer par un bloc avec attributs, il faut le synchroniser pour que les attributs soient présent. Toutefois, serait-il possible d'ajouter à ce lisp, une boîte de dialogue à l'image de Rbloc, par exemple, de manière à parcourir les dossiers sur le disque dur ou le serveur plus facilement que le boîte de dialogue actuelle? Avoir une fenêtre de recherche de dossier comme celle-ci: http://img11.hostingpics.net/thumbs/mini_596004acadRechercherundossier2.png plutôt qu'une fenêtre de recherche de dossier comme celle-là? http://img11.hostingpics.net/thumbs/mini_643837acadRechercherundossier1.png 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 4 février 2016 Posté(e) le 4 février 2016 SalutPuissant ton lisp, Patrick_35 http://www.smileys-gratuits.com/smiley-content/content-3.gifMerci. Cependant, il y a intérêt à ce que les blocs de remplacements aient les mêmes points de base d'insertion que les blocs à remplacer parce que sinon, je vous raconte pas l'emplacement des nouveaux blocs. Aussi, j'ai fais un essai avec des attributs et voici ce qu'il en suit: Dans un dossier, j'ai les blocs de remplacement sans attributs.Dans mon dessin, j'ai des blocs avec attributs.Je remplace les blocs du dessin, avec attributs par les autres blocs, sans attributs. Résultat: Les blocs du dessin ont toujours leurs attributs, mais; lorsqu'on double-clique dessus, on peut modifier la valeur de l'attribut. Par contre, lorsqu'on va dans l'éditeur de bloc, il n'y a aucune étiquette :blink: Cependant, lorsque sur le dessin, il y a un bloc sans attributs et que celui-ci est remplacer par un bloc avec attributs, il faut le synchroniser pour que les attributs soient présent.Ce qui est tout à fait normal.Le lisp revient à faire à la main la commande insérer. Si tu insères en manuel un bloc déjà défini (avec ou sans attributs), tu auras exactement le même résultat que tes tests. Toutefois, serait-il possible d'ajouter à ce lisp, une boîte de dialogue à l'image de Rbloc, par exemple, de manière à parcourir les dossiers sur le disque dur ou le serveur plus facilement que le boîte de dialogue actuelle?Pour te faire plaisir(defun c:rtb(/ blo esp lay lck lst rep) (setq doc (vla-get-activedocument (vlax-get-acad-object)) esp (vla-get-modelspace doc) lay (vla-get-activelayer doc) lck (vla-get-lock lay) ) (vla-startundomark doc) (and (setq rep (getfiled "Choisissez un fichier dans un répertoire contenant tous les blocs à redéfinir." (getvar "dwgprefix") "DWG" 8)) (setq rep (vl-filename-directory (findfile rep))) (setq lst (vl-directory-files rep "*.dwg")) (progn (vla-put-lock lay :vlax-false) (foreach blo lst (and (tblsearch "block" (vl-filename-base blo)) (vla-delete (vla-insertblock esp (vlax-3d-point '(0.0 0.0 0.0)) (findfile (strcat rep "/" blo)) 1 1 1 0)) ) ) (vla-put-lock lay lck) (vla-regen doc acallviewports) ) ) (vla-endundomark doc) (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 4 février 2016 Posté(e) le 4 février 2016 C'est beau http://www.smileys-gratuits.com/smiley-merci/merci-1.gif 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