Comment modifier automatiquement les valeurs d’attributs dans GEOGEXFR CAD avec Covadis, sans passer par l’interface graphique de la commande _EATTEDIT ?
Pour modifier automatiquement les valeurs d’attributs dans GEOGEXFR CAD avec Covadis, sans l’intervention manuelle de la fenêtre _EATTEDIT, vous pouvez utiliser une approche basée sur des scripts ou des commandes personnalisées.
Voici une démarche experte pour y parvenir :
-
Comprendre la limitation de _EATTEDIT : La commande _EATTEDIT est conçue pour une modification interactive. Elle n’est pas directement scriptable pour des modifications en masse sans intervention utilisateur.
-
Utilisation de la commande
ATTEDIT(ou_ATTEDIT) : Bien que similaire à _EATTEDIT, la commandeATTEDITpeut parfois être utilisée dans des scripts plus complexes, mais elle reste interactive par défaut. Son usage direct pour une automatisation complète est limité sans développement supplémentaire. -
Approche par script LISP ou C# (Recommandé) : La méthode la plus robuste pour automatiser la modification d’attributs est de développer un script personnalisé.
- Script LISP : Vous pouvez écrire une routine LISP qui parcourt les entités (blocs avec attributs) dans votre dessin, identifie les attributs à modifier par leur nom ou tag, et leur assigne de nouvelles valeurs. Cela implique l’utilisation de fonctions comme
entget,assoc,subst, etentmod. - Développement .NET (C#) : Pour une flexibilité maximale et une intégration plus poussée avec les fonctionnalités de Covadis et AutoCAD, le développement d’une application .NET (utilisant l’API AutoCAD) est la solution la plus puissante. Cela permet de manipuler les objets de manière programmatique, y compris les attributs de blocs, avec une grande efficacité.
- Script LISP : Vous pouvez écrire une routine LISP qui parcourt les entités (blocs avec attributs) dans votre dessin, identifie les attributs à modifier par leur nom ou tag, et leur assigne de nouvelles valeurs. Cela implique l’utilisation de fonctions comme
-
Exemple conceptuel de script LISP (pour illustration) :
(defun c:MODIFATTRIBUT (/ ss ent att_data new_value) (vl-load-com) (setq ss (ssget "X" '((0 . "INSERT") (2 . "NomDeVotreBloc")))) (if ss (progn (setq i 0) (repeat (sslength ss) (setq ent (ssname ss i)) (setq ent_obj (vlax-ename->vla-object ent)) (if (vlax-property-available-p ent_obj 'HasAttributes) (if (/= (vla-get-count ent_obj) 0) (progn (setq att_coll (vla-get-Attributes ent_obj)) (setq j 0) (repeat (vla-get-count att_coll) (setq att (vla-item att_coll j)) (if (eq (vla-get-TagString att) "NomDeVotreAttribut") (progn (setq new_value "NouvelleValeur") ; Définir la nouvelle valeur (vla-put-TextString att new_value) (princ (strcat "\nAttribut modifié : " (vla-get-TagString att))) ) ) (setq j (1+ j)) ) ) ) ) (setq i (1+ i)) ) ) (princ "\nAucun bloc trouvé.") ) (princ) )Note : Ce script est un exemple et nécessite une adaptation précise (nom du bloc, nom de l’attribut, nouvelle valeur) et une gestion des erreurs plus poussée pour une utilisation en production.
-
Intégration avec Covadis : Si vos attributs sont spécifiques à Covadis (par exemple, des attributs liés aux objets de voirie ou de réseau), il est crucial de vérifier si l’API de Covadis expose des méthodes spécifiques pour la manipulation de ces attributs. Dans la plupart des cas, l’API AutoCAD standard pour les attributs de blocs sera suffisante, mais il est bon de consulter la documentation Covadis pour des cas particuliers.
En résumé : Pour une modification automatique et scriptée des attributs dans GEOGEXFR CAD avec Covadis, privilégiez le développement d’une routine LISP ou, idéalement, d’une application .NET qui interagit avec les objets AutoCAD et leurs attributs. La commande _EATTEDIT n’est pas adaptée à l’automatisation de ce type de tâche.