Synthèse d’une discussion du forum CADxp : Remplacement de texte dans plusieurs fichiers
1. Introduction : Contexte et Enjeux de la Discussion
Ce document propose une synthèse d’une discussion technique issue du forum spécialisé CADxp. L’échange illustre un défi récurrent pour les administrateurs et utilisateurs CAO : l’automatisation de modifications en masse sur un grand nombre de fichiers. Le cas d’étude est la recherche d’une méthode pour remplacer une chaîne de texte spécifique dans de multiples dessins (.dwg), une tâche simple en apparence mais qui révèle rapidement les limites des scripts standards. La discussion met en évidence l’incompatibilité des scripts (.scr) avec les commandes ouvrant des boîtes de dialogue, orientant les participants vers des solutions plus robustes. Les thèmes connexes explorés incluent l’exploitation des fonctionnalités avancées d’AutoCAD® Map 3D et le recours à une programmation sur mesure via LISP, positionnant ce document comme une analyse de cas sur les stratégies d’automatisation en environnement Autodesk®. La section suivante retrace le déroulement chronologique des échanges.
2. Résumé Chronologique de la Discussion
Cette section retrace, étape par étape, le cheminement de la conversation sur le forum CADxp. Elle met en lumière la progression collective, depuis l’identification précise du besoin de l’utilisateur jusqu’aux différentes solutions techniques proposées par la communauté, en passant par les retours d’expérience et les difficultés rencontrées.
2.1. L’Exposé du Problème Initial par l’Utilisateur « JVC »
L’utilisateur JVC initie la discussion en exprimant son incertitude sur le forum approprié (« VBA, LISP ou Ici ? »), soulignant d’emblée que son problème se situe à l’intersection de plusieurs domaines techniques. Sa problématique est de remplacer en masse le code de contrôle %%C (utilisé par AutoCAD® pour générer le symbole diamètre) par le caractère ø. Sa première approche, un script (.scr), a échoué car la commande RECHERCHER, bien qu’adéquate, ouvre une boîte de dialogue qui interrompt l’exécution automatisée. Le contexte de JVC est précisé : il travaille sur AutoCAD® Map 3D 2022 avec l’applicatif Covadis®.
2.2. Les Premières Réponses et la Confirmation du Diagnostic
L’utilisatrice Luna intervient rapidement pour confirmer que RECHERCHER est la bonne commande, mais valide le diagnostic de JVC quant à son incompatibilité avec une automatisation par script standard en raison de sa nature interactive. Cette intervention a permis de valider le diagnostic et d’écarter définitivement la piste d’un script standard, orientant ainsi la discussion vers des solutions de contournement.
2.3. L’Émergence de Deux Solutions Avancées
La discussion atteint son cœur technique avec deux propositions de membres expérimentés. Les deux solutions proposées incarnent deux philosophies distinctes de l’automatisation : l’une, intégrée et exploitant la puissance d’un outil spécialisé (Map 3D), l’autre, agnostique et reposant sur des outils de programmation externes pour une flexibilité maximale.
a) La Solution via les Fonctionnalités d’AutoCAD® Map 3D
L’utilisateur Olivier Eckmann propose une méthode tirant parti des capacités spécifiques d’AutoCAD® Map 3D. Cette approche intégrée se décompose en plusieurs étapes clés :
- Association des dessins : Regrouper tous les fichiers
.dwgà modifier en les associant en tant que « dessins source » dans un dessin de travail. - Requête globale : Exécuter une requête pour sélectionner la totalité des objets texte concernés à travers l’ensemble des dessins source.
- Remplacement centralisé : Lancer la fonction
RECHERCHERsur cette sélection globale pour effectuer le remplacement en une seule opération. - Enregistrement des modifications : Utiliser la fonctionnalité de ré-enregistrement vers les dessins sources pour propager les changements dans chaque fichier d’origine.
Cette méthode se distingue par son intégration native à l’environnement Map 3D, ne nécessitant pas de programmation externe.
b) L’Alternative Technique via LISP et AcCoreConsole
En parallèle, l’utilisateur bonuscad présente une solution plus technique mais aussi plus universelle. Confirmant l’incompatibilité de RECHERCHER avec les scripts, il suggère un contournement basé sur une chaîne d’outils de programmation :
- Fonction LISP : Une fonction LISP qui non seulement recherche et remplace le texte, mais qui est également conçue pour générer dynamiquement les fichiers de script et de batch nécessaires à l’automatisation.
- Console AutoCAD® (
AcCoreConsole.exe) : Utilisation de l’exécutable de la console en ligne de commande d’AutoCAD® pour exécuter des opérations sur des fichiers.dwgsans ouvrir l’interface graphique complète. - Fichier batch (
.bat) : Un fichier batch (.bat), généré par la routine LISP, pour orchestrer le processus en appliquant la routine à tous les fichiers.dwgd’un dossier spécifié.
Cette approche représente une solution de traitement par lots robuste, bien que sa mise en œuvre soit techniquement plus complexe.
2.4. Le Retour d’Expérience : Implémentation et Difficultés
JVC indique sa préférence pour la solution d’Olivier Eckmann, la jugeant a priori plus simple et adaptée à d’autres tâches qu’il souhaite automatiser, comme « décomposer des blocs » et « importer un état de calque ».
Cependant, sa tentative de mise en œuvre rencontre plusieurs difficultés :
- Le fichier de travail principal (« global ») s’est retrouvé quasiment vierge.
- Les modifications de texte n’ont pas été correctement propagées aux fichiers sources.
- Des fichiers
.dwk(fichiers de verrouillage) ont été générés à la place des.dwgmis à jour.
Cet échec met en évidence un point crucial de la méthode Map 3D : sa puissance est contrebalancée par une complexité dans le processus d’enregistrement des modifications, qui peut s’avérer non-intuitif pour un utilisateur non averti. Face à ces difficultés, JVC envisageait d’être contraint d’effectuer les manipulations manuellement.
2.5. Perspective Finale : La Validation de la Méthode Map 3D
Plus tard, la modératrice lili2006 intervient pour apporter une clarification décisive. Elle réaffirme la validité de la solution d’Olivier Eckmann, précisant l’avoir elle-même utilisée avec succès « pour modifier le nom d’un bloc pour ensuite pouvoir faire des requêtes ». Cette intervention finale est cruciale : elle confirme que la méthode est éprouvée, déplaçant la cause probable de l’échec de la théorie (la solution elle-même) à la pratique (une erreur dans son application).
Cette chronologie des échanges met en lumière plusieurs enseignements clés, qui sont résumés ci-après.
3. Conclusion et Points Clés à Retenir
La discussion sur CADxp illustre une bifurcation critique dans l’automatisation CAO : soit capitaliser sur les fonctionnalités intégrées et puissantes d’un logiciel spécialisé, soit construire une solution plus universelle basée sur du code. Le choix dépend entièrement de l’environnement technique et des compétences disponibles. L’échange a permis de documenter deux approches viables pour répondre à ce besoin courant.
Les principaux points à retenir sont les suivants :
- La limite des scripts standards : Il est confirmé que les scripts
.scrd’AutoCAD® sont inefficaces pour automatiser des commandes qui ouvrent une boîte de dialogue. Leur usage est réservé aux commandes s’exécutant intégralement en ligne de commande. - La puissance de Map 3D : La méthode des requêtes sur dessins sources est une solution intégrée et performante. Cependant, son succès dépend d’une maîtrise rigoureuse du workflow d’enregistrement des modifications en retour (
saveback). - La flexibilité de la programmation : L’approche combinant LISP,
AcCoreConsole.exeet un script batch constitue une alternative robuste et universelle. Bien que plus technique, elle offre un contrôle total sur le traitement, s’affranchit des contraintes de l’interface graphique et de la dépendance à une version spécifique d’AutoCAD® (comme Map 3D).
Pour une lecture détaillée des échanges et pour consulter les extraits de code fournis, les lecteurs peuvent se référer à la discussion originale sur le site CADxp via le lien source.