Aller au contenu

Remplacement bloc masse


Messages recommandés

Posté(e)

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.A

Je veux en faire un fichier ind.A mais avec tout les blocs ind.B

Par 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."
Posté(e)

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

Posté(e)

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."
Posté(e)

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."
Posté(e)

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 Charles

Developpeur Revit, RV/RA - Formateur Revit

PIRO CIE

Posté(e)

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érer

Choix des éléments : 2000 blocs

Voulez 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."
Posté(e)

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 Charles

Developpeur Revit, RV/RA - Formateur Revit

PIRO CIE

Posté(e)

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."
Posté(e)

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

Salut

 

@Hbs69

Tu 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.

 

@laud69

un petit - devant la commande pour ne pas avoir la boite de dialogue.

Par exemple -inserer

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour,

 

@laud69

un petit - devant la commande pour ne pas avoir la boite de dialogue.

Par exemple -inserer

Pour 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

 

./__\.
(.°=°.)
Posté(e)

Je dois être débile .. mais j'ai du mal à comprendre laugh.gif

Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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."
Posté(e)

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 lisp

2-mixer du lisp et un auto-script

3-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

 

./__\.
(.°=°.)
Posté(e)

Salut

 

Un lisp vite fait

Tous 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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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.

Posté(e)

Salut

Puissant ton lisp, Patrick_35 http://www.smileys-gratuits.com/smiley-content/content-3.gif

Merci.

 

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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.

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité