Aller au contenu

Remplacement de bloc


Messages recommandés

Posté(e)

Bonsoir à tous,

 

 

Je suis à la recherche d'une méthode, Lisp ou script pour remplacer un bloc dans plusieurs fichiers.

 

Je m'explique : J'ai 250 fichiers dans lesquels le cartouche (bloc "CART_01" avec attributs) n'est plus à jour. J'ai donc récupérer ce cartouche et fait les modifications demandées et sauvé en "CART_01".

 

J'insère "CART_01" dans un de mes fichiers, AutoCAD me dit que ce bloc existe déjà et me demande si je veux le remplacer. Je réponds que oui et le tour est joué, mon dessin a bien le nouveau cartouche, les attributs sont bien renseignés et je passe au fichier suivant ...

 

Compte tenu de ce travail répétitif, je me disais qu'il devait bien exister un moyen d'effectuer cette opération de façon automatique.

 

Alors merci pour les infos !!

Posté(e)

Salut.

Si j'ai bien compris, tu souhaites changer les attributs du cartouche sur plusieurs fichiers en même temps. C'est bien ça?

Si c'est le cas, il existe le lisp PAT de Patrick_35 qui te permettra de changer les attributs d'un bloc sur plusieurs fichies en même temps sans devoir les ouvrir.

Bonne soirée.

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)

En effet ce n'est pas une simple mise à jour d'attributs. Pour cela j'utilise le super Lisp "Pat".

Dans mon cas il s'agit bien de modifier le contenu du cartouche ne faisant pas appel à des attributs (géométrie, organisation générale,...).

L'objectif est donc bien d'automatiser une insertion et remplacement de bloc sur les fichiers d'un répertoire complet.

Posté(e)

Quelqu'un a une petite idée sur le contenu de ce script ?? J'en ai écrit voici quelques années lors d'une formation, et j'avoue être un peu démuni !!

 

Merci beaucoup

Posté(e)

Bonsoir,

 

Probablement quelque chose comme ceci:

_-insert
nomdubloc_à_remplacer=nouveaubloc.dwg
_s 1
0,0
0
_erase
_l
(ligne vide)

Pour que AutoCAD puisse trouver nouveaubloc.dwg, le fichier devra se trouver dans un chemin de support (dans le même dossier que les dessins à traiter, dans un chemin de recherche d'AutoCAD...).

Tu peux aussi indiquer un chemin complet (C:\mes_blocs\nouveaubloc.dwg), s'il ne contient pas d'espaces.

 

Pour générer le script, tu peux utiliser le bien connu SuperAutoScript de Caderix.

 

Si tu veux, tu peux aussi tester Sequence, que je suis en train de mettre au point.

Dans ce cas, tu pourras dans le 2e onglet importer le fichier remplacer_bloc.seq pour récupérer la séquence de commandes toute faite. ;)

Posté(e)

Merci pour ces infos. J'ai un peu galéré, mais le script à fonctionné. En voici un extrait.

la série de retour ligne correspond à des attributs.

 

_open
chemin\xx.dwg
_-insert
cart1=chemin\Cart2.dwg
0,0
1
1
0









_erase
_l

zoom
et
projectname
toto
_qsave
fermer

 

 

Connaissez-vous un moyen pour faire une sélection par type d'objet (seulement les rouge pour les basculer dans un calque spécifique) et ceci toujours dans un script ? Faut-il plutôt passer par un lisp ? CMDDIA n'a pas d'effet sur la commande filter.

Posté(e)

Bonjour,

 

Pour les attributs, tu aurais pu mettre ATTREQ à 0 avant de lancer le script pour éviter d'avoir à ajouter des lignes vides. ;)

Pour info, tu as utilisé quel logiciel pour créer ton script ?

 

Concernant la sélection, on ne peut pas désactiver la boîte de dialogue des commandes FILTER ou Sélection rapide.

Il faut donc passer par du Lisp, sachant qu'on peut très bien utiliser du Lisp dans un script (à condition bien sûr d'avoir un AutoCAD complet).

Posté(e)

J'ai d'abord fait un "dir/B" pour récupérer dans un fichier texte la liste des fichiers en format abrégé, puis testé le script sur 1 fichier de la liste. Le plus long a été de faire les copié/collé ! J'ai 3 fichier script pour éviter de m'embrouiller !!

Posté(e)

Tu m'étonnes ! :D

Tu aurais gagné beaucoup de temps en utilisant SAS ou Sequence... ;)

 

"Séquence" semble en effet adapté à mon besoin. Un lien vers SAS ??

 

Je risque d'avoir de nouveau ce type d'opérations à faire, je prends les devants.

 

En tout cas merci beaucoup pour cette aide précieuse.

Posté(e)

Tu m'étonnes ! :D

Tu aurais gagné beaucoup de temps en utilisant SAS ou Sequence... ;)

Salut

 

Je tiens le pari, pour 250,3000 ou 10000 fichiers, le même temps de saisie, même avec des sous-répertoires ;)

 

Il suffit, comme l'indique JMBZ38, d'utiliser la commande ms-dos dir avec les options /s et /b (voir /on pour les puristes)

Ensuite, avec un éditeur de texte, de faire deux rechercher/remplacer pour obtenir le script souhaité

Le 1er en remplaçant le C:\ (par exemple) avec _open C:\

Le second en remplaçant le .dwg par .dwg et ma/mes commandes qui suive(nt)

 

Une autre solution est d'utiliser Excel, d'ouvrir le fichier texte (créé avec la commande dir) et d'utiliser la formule CONCATENER puis de sauvegarder au format texte

 

@+

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)

Je sais tout ça, j'ai même déjà posté ici des vidéos pour faire des scripts avec Excel. ;)

Mais ça prend forcément plus de temps et de réflexion pour écrire la formule de concaténation, avec dans certains cas l'obligation d'insérer un saut de ligne avec la fonction CHAR(), etc.

Quand au copier-coller pour remplacer le .dwg par une chaîne, j'ai un gros doute si celle-ci contient des sauts de ligne (en tout cas avec le Notepad)... :unsure:

 

J'ai également inclus dans Sequence la possibilité d'utiliser des variables et même des fonctions DIESEL (sans interactivité avec AutoCAD bien sûr), pour réussir à faire des choses impossibles avec SAS ou un éditeur de texte.

 

Dans tous les cas, même si toi tu n'aurais pas forcément gagné beaucoup de temps, c'est un fait que JMBZ38 lui en aurait gagné beaucoup, en évitant des centaines de copier-coller ! ;)

Posté(e)
Mais ça prend forcément plus de temps et de réflexion pour écrire la formule de concaténation, avec dans certains cas l'obligation d'insérer un saut de ligne avec la fonction CHAR(), etc.

Perso, je fais un lisp que je teste sur un dessin et qu'ensuite j'appelle depuis le script.

C'est pour moi le plus simple

 

Quand au copier-coller pour remplacer le .dwg par une chaîne, j'ai un gros doute si celle-ci contient des sauts de ligne (en tout cas avec le Notepad)... :unsure:

Et le bon et vieux edit du ms-dos ;)

 

J'ai également inclus dans Sequence la possibilité d'utiliser des variables et même des fonctions DIESEL (sans interactivité avec AutoCAD bien sûr), pour réussir à faire des choses impossibles avec SAS ou un éditeur de texte.

Je suis curieux de voir ton prog, surtout si on peux jouer avec des variables et des expressions diesels (et aussi celles des express-tools comme rtext, xref, etc... ?)

 

Dans tous les cas, même si toi tu n'aurais pas forcément gagné beaucoup de temps, c'est un fait que JMBZ38 lui en aurait gagné beaucoup, en évitant des centaines de copier-coller ! ;)

C'est le principal

 

@+

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)

Perso, je fais un lisp que je teste sur un dessin et qu'ensuite j'appelle depuis le script.

C'est pour moi le plus simple

 

Il faut penser à ceux qui ont LT aussi... ;)

Par la force des choses, ce sont souvent eux qui ont besoin de faire appel aux scripts, faute de lisp justement.

 

Je suis curieux de voir ton prog, surtout si on peux jouer avec des variables et des expressions diesels (et aussi celles des express-tools comme rtext, xref, etc... ?)

 

Non, il n'y a que les fonctions Diesel standard, et forcément elles sont évaluées à la création du script et non durant son exécution.

Ça limite donc l'intérêt, mais ça peut quand même servir.

Le lien pour le télécharger était dans un message précédent, le revoici:

Sequence

Posté(e)

Salut

 

Ca a l'air pal mal, mais pas mal du tout ton prog :D

J'ai vite regardé ce qu'il donnait et la 1er impression est très bonne

J'ai quand même remarqué qu tu faisais une sauvegarde à chaque fois, c'est vrai dans 95% des cas.

Mais dans les 5% restant, tu peux par exemple lancer une impression et ne pas vouloir sauvegarder afin de conserver la date de la dernière modification du/des dessin(s)

On peut manuellement enlever la sauvegarde, mais sur 500 fichiers, cela devient vite lourd.

J'ai remarqué aussi dans la fenêtre du script, que les options du clic droit sont désactivées

De plus, on n'a pas la possibilité de faire une recherche, voir de remplacer.

 

Voila un 1er jet en attendant de travailler un peu plus avec ton outil

 

@+

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)

Merci du retour ! :)

 

Dans le 2e onglet, il suffit de décocher la case "Ouvrir" pour gérer soi même l'ouverture des fichiers (ça permet d'utiliser la commande _recover à la place par ex.).

De même, en décochant la case "Sauver et fermer", c'est à l'utilisateur de gérer la fermeture du fichier, en enregistrant ou non. ;)

 

Le 3e onglet montre le script pour info, on peut faire des modifs mais elles seront perdues si quoi que ce soit provoque la "régénération" du script (ajout d'un fichier, modif de la séquence de commandes, etc.).

Je pense donc qu'il vaut mieux que je n'ajoute pas trop de fonctions qui pousseraient à bidouiller le script dans cet onglet...

Normalement je ne vois pas ce qui pourrait nécessiter de faire un rechercher remplacer, puisqu'il suffit de modifier la liste des fichiers (1er onglet) ou la séquence de commandes pour que le script se mette à jour dynamiquement.

 

Pour les options du clic droit, effectivement il faut que je corrige, mais les raccourcis clavier fonctionnent.

 

Mais si tu penses à des cas qui pourraient nécessiter des améliorations, je suis tout ouïe ! :)

Posté(e)

Les programmes SAS et Séquence sont vraiment incontournables !!

En association avec le super Lisp "PAT" pour modifier les attributs sur un répertoire complet les AutoCADiens disposent d'outils très puissants.

 

Cependant je reste surpris qu'il n'existe pas une commande permettant de remplacer un bloc par un autre sur plusieurs fichiers sans passer par un script. C'est une manip assez courante lorsqu'on édite des cahiers des plans (schéma électriques, serrurerie ...).

Posté(e)

La question n'est pas très claire, mais voilà la démarche en gros:

- on insère le bloc cartouche dans un dessin vide, et on renseigne les infos du cartouche qui sont communes à tous les folios

- on insère ensuite ce fichier en XRef dans tous les folios

- quand il faut modifier une info commune, on ouvre ce fichier et on édite les attributs du cartouche

- pour les infos du cartouche qui sont spécifiques à chaque folio, on peutt dans chaque folio les ajouter sous la forme d'un bloc (constitué uniquement d'attributs) qui se superpose au cartouche en XRef (ou éventuellement en tant que textes).

Posté(e)

Voila qui éclaircira un peu :

 

Jusqu'à présent mes cartouches étaient constitués d'un seul fichier avec des attributs d'où mes interrogations.

Ceci explique le besoin de remplacer le blocs dans tous mes fichiers en cas de modif.

 

Je testerai ta solution pour la suite, merci du coup de main.

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é