Synthèse de la discussion du forum CADxp : Automatisation d’une addition de niveaux

Synthèse de la discussion du forum CADxp : Automatisation d’une addition de niveaux

Ce document présente une synthèse d’une discussion technique issue du forum en ligne CADxp. Son objectif est de distiller les solutions et les étapes clés partagées par les membres de la communauté pour résoudre un problème d’automatisation de calculs dans AutoCAD®. La problématique principale concerne l’addition automatique de niveaux, impliquant des concepts connexes tels que l’utilisation des Champs (Fields), la création de blocs à attributs et l’emploi de macros DIESEL pour aboutir à une solution à la fois robuste et dynamique, dont l’intégralité des échanges est accessible via la discussion originale sur Addition automatique - Personnalisation, macros, DIESEL - CadXP

1. La Problématique Initiale : Calculer et Afficher des Niveaux NGF

La compréhension précise du besoin initial de l’utilisateur est cruciale pour évaluer la pertinence des solutions proposées par la communauté. L’enjeu de l’automatisation est ici central, car il vise à garantir la cohérence des données sur l’ensemble d’un plan tout en réduisant drastiquement les risques d’erreurs liés à une saisie manuelle.

Dans ses messages du 18 avril 2011, l’utilisateur « Invité Mat58 » expose un besoin de calcul récurrent pour des plans de réseaux techniques. Ses exigences clés peuvent être synthétisées comme suit :

  • Objectif du calcul : Additionner une hauteur de réseau variable (par exemple, 2.00m) à un niveau de référence constant pour une zone donnée (NGF, par exemple, 210.00).
  • Format d’affichage souhaité : Un texte unique doit afficher à la fois la hauteur variable saisie et le résultat du calcul (par exemple : Ai : +2.00 / 212.00).
  • Exigence fondamentale : La mise à jour doit être automatique. Si la valeur NGF de base (210.00) est modifiée, tous les niveaux calculés sur le plan doivent se mettre à jour instantanément sans intervention manuelle sur chaque texte.

Cette demande claire et bien définie a déclenché une série de propositions de la part des membres expérimentés du forum, chacune présentant ses propres avantages et inconvénients.

2. Le Cheminement Chronologique vers la Solution

La force d’un forum technique réside dans le dialogue et l’itération collective qui permettent d’affiner progressivement une solution. Cette section retrace de manière chronologique comment la discussion a évolué d’une première suggestion fonctionnelle mais limitée vers une solution optimale, dynamique et parfaitement adaptée au besoin de l’utilisateur.

2.1. Première Piste : Macros et Expressions DIESEL

La première solution concrète est proposée par l’utilisateur « rvpas » le 19 avril 2011. Sa méthode consiste à utiliser des macros sur des boutons de barre d’outils pour stocker les valeurs NGF et de hauteur dans des variables système (userr1, userr2). Une troisième macro insère ensuite un objet TEXT simple dont le contenu est le résultat du calcul effectué par une expression DIESEL au moment de sa création.

Toutefois, comme le souligne rapidement l’utilisateur « bryce », cette approche présente une limitation majeure : les textes générés sont statiques. Ils ne se mettent pas à jour automatiquement si la valeur NGF de base est modifiée ultérieurement, ce qui ne répond pas à l’exigence fondamentale de l’utilisateur.

2.2. L’Évolution Clé : L’Utilisation des Champs (Fields)

Reconnaissant que la nature statique du texte généré par la macro DIESEL était le défaut critique, l’utilisateur « bryce » a réorienté la conversation vers une technologie conçue spécifiquement pour la gestion de données dynamiques : les Champs (Fields) d’AutoCAD®. Le concept est le suivant :

  1. Créer une propriété de dessin personnalisée pour stocker de manière centralisée la valeur du NGF de base (ex: 210.00).
  2. Insérer dans les textes un champ de type « Formule ». Cette formule récupère la valeur de la propriété de dessin et y additionne la hauteur du réseau.

L’avantage stratégique de cette méthode est qu’elle répond directement au besoin de mise à jour automatique. Toute modification de la propriété NGF dans le dessin se répercute sur tous les champs qui y font référence après une simple régénération du dessin (REGEN).

2.3. La Solution Optimale : Le Bloc à Attributs et Champs (Fields) Intégrés

La discussion converge finalement vers la solution la plus robuste suite à une nouvelle contrainte de « Mat58 » : éviter la double saisie de la hauteur. Cette évolution représente un changement de paradigme, passant de l’utilisation d’objets texte et de champs dispersés à la création d’un composant intelligent et autonome. Il s’agit de la transition d’une solution ad hoc vers un véritable atout d’ingénierie, réutilisable et fiable.

Le concept, initialement proposé par « bryce », consiste à encapsuler toute la logique dans un bloc à attributs. C’est ensuite « Patrick_35 » qui a fourni le premier exemple fonctionnel et les étapes techniques détaillées, rendant la solution tangible. La structure finale est la suivante :

  1. Création d’un bloc qui servira de point d’annotation de niveau.
  2. Ce bloc contient un premier attribut, visible et éditable, destiné à la saisie manuelle de la hauteur variable du réseau (ex: +2.00).
  3. Le bloc contient également un second attribut, dont la valeur est un Champ (Field). Ce champ contient une formule qui additionne la valeur du premier attribut (la hauteur) et la valeur du NGF de base.

Cette méthode est la plus efficace car elle simplifie drastiquement le flux de travail : l’utilisateur n’a qu’une seule valeur à saisir dans un objet unique. Le calcul et l’affichage sont entièrement automatisés et la mise à jour est garantie.

3. Points Clés de la Mise en Œuvre et Résolution du Problème

Bien que le concept d’un bloc avec des champs soit puissant, son implémentation réussie repose sur le référencement correct des objets dans la formule du champ — un point de défaillance courant que la discussion du forum a méticuleusement résolu. Cette section distille les instructions techniques qui ont permis à l’utilisateur de surmonter ces difficultés.

Basées sur les interventions de « Patrick_35 », voici les étapes clés pour configurer le champ de formule :

  1. Lors de la définition de l’attribut destiné au résultat calculé, effectuez un clic droit pour afficher le menu contextuel et choisissez Insérer un champ. Cette opération est généralement réalisée dans le champ Valeur par défaut de la boîte de dialogue de définition d’attribut.
  2. Dans la boîte de dialogue, sélectionnez la catégorie de champ Formule.
  3. Dans la zone de formule, insérez un premier champ. Définissez la Catégorie de champ sur Objet, cliquez sur le bouton « Sélectionner un objet » pour choisir physiquement l’instance de bloc dans le dessin, puis, dans la liste des propriétés, sélectionnez l’étiquette de l’attribut de hauteur (ex: HAUTEUR) et choisissez sa propriété Valeur.
  4. Ajoutez manuellement le symbole d’addition (+) dans la formule.
  5. Insérez un second champ pointant soit vers une Propriété du dessin (pour le NGF de base, comme suggéré par « bryce »), soit vers une Variable système (comme elevation, utilisée dans l’exemple de « Patrick_35 »).

Le choix entre ces deux méthodes de stockage du NGF dépend du flux de travail : une Propriété du dessin est idéale pour une valeur constante dans tout le fichier, tandis qu’une Variable système comme elevation offre plus de flexibilité si le niveau de base doit être modifié fréquemment pour différentes opérations.

Le point de dépannage final, soulevé par « Patrick_35 » le 29 avril 2011, s’est avéré crucial. L’utilisateur constatait que la mise à jour ne fonctionnait plus, car, selon les termes exacts de l’expert : "Tu n'as pas choisit le bon objet". Le problème venait du fait que la formule du champ faisait référence à un ObjectID codé en dur de l’attribut du bloc d’origine, qui devenait invalide lors de l’insertion d’une nouvelle copie du bloc. « Patrick_35 » a illustré ce point en montrant comment, dans son exemple, l’ObjectID passait de 1839248656 à 1840428960 une fois le bon attribut sélectionné, soulignant la nature précise de cette référence d’objet.

4. Conclusion : La Valeur de l’Entraide Communautaire

Cette discussion illustre parfaitement le processus d’intelligence collective à l’œuvre sur un forum spécialisé. Partant d’une question précise, le dialogue a permis de passer d’une première ébauche fonctionnelle (macros DIESEL) à une solution intermédiaire plus adaptée (Champs), pour finalement aboutir à une méthode optimale et intégrée (blocs à attributs avec champs). Ce parcours met en valeur l’efficacité du partage de connaissances et l’importance de l’expertise croisée des membres d’une communauté comme CADxp pour résoudre des problématiques techniques complexes.

Pour une compréhension exhaustive des échanges, des nuances de chaque proposition et pour télécharger les fichiers d’exemples fournis par les membres, il est vivement recommandé de consulter l’intégralité de la discussion originale sur le site CADxp, via le lien fourni en début de ce document.