Comment configurer un attribut de bloc dynamique AutoCAD (par exemple, ‹ PM-RA ›) pour qu’il affiche le résultat d’une formule basée sur la valeur d’un autre attribut (‹ PM-FZ ›) ou sur des paramètres d’étirement (‹ PM-PFS Cote1 ›, ‹ PM-PFS Cote2 ›) ?
Pour automatiser le calcul et l’affichage de la valeur d’un attribut de bloc en fonction d’autres attributs ou de paramètres dynamiques, les méthodes les plus efficaces dans AutoCAD sont l’utilisation des Champs (Fields) et, pour des logiques plus complexes ou des personnalisations avancées, les expressions DIESEL ou la programmation (LISP/VBA/C#).
1. Utilisation des Champs (Fields) - Méthode Recommandée
Les Champs sont la méthode la plus moderne et la plus robuste pour lier dynamiquement des données dans AutoCAD. Ils permettent de créer des liens directs vers des propriétés d’objets, des attributs ou des paramètres de blocs dynamiques, et peuvent inclure des formules.
Procédure pour lier un attribut à un autre ou à un paramètre de bloc dynamique :
- Ouvrir l’Éditeur de blocs : Sélectionnez le bloc concerné et utilisez la commande
BEDIT(ou double-cliquez sur le bloc) pour l’ouvrir dans l’Éditeur de blocs. - Modifier l’attribut cible : Double-cliquez sur l’attribut
PM-RApour ouvrir la boîte de dialogue « Modifier la définition d’attribut ». - Insérer un Champ dans la valeur par défaut :
- Dans le champ « Valeur par défaut », faites un clic droit et sélectionnez « Insérer un champ… ».
- Dans la boîte de dialogue « Champ », choisissez la catégorie « Objet ».
- Sous « Type de champ », sélectionnez « Objet ».
- Cliquez sur le bouton « Sélectionner un objet » (le petit carré avec un curseur) et sélectionnez le bloc lui-même dans la zone de dessin de l’éditeur de blocs.
- Dans la liste des propriétés, vous verrez les attributs du bloc (ex:
PM-FZ) et les paramètres de bloc dynamique (ex:PM-PFS Cote1,PM-PFS Cote2). - Pour
PM-RA = PM-FZ: SélectionnezPM-FZdans la liste des propriétés et choisissez « Valeur » comme propriété à afficher. Validez. - Pour une formule avec des paramètres dynamiques : Si vous souhaitez une formule comme
PM-RA = PM-FZ + PM-PFS Cote1, vous pouvez insérer le premier champ (PM-FZ), puis taper+et insérer un second champ (PM-PFS Cote1). AutoCAD évaluera cette expression. Pour des formules plus complexes, il est parfois nécessaire d’utiliser la fonctionFORMULAdans les champs ou de passer par LISP.
- Fermer l’Éditeur de blocs : Enregistrez les modifications du bloc.
- Mettre à jour les blocs existants : Utilisez la commande
ATTSYNCpour synchroniser les définitions d’attributs des blocs existants avec la nouvelle définition.
Les champs se mettront à jour automatiquement lors de l’ouverture du dessin, de la régénération (REGEN) ou de la modification des valeurs liées.
2. Expressions DIESEL - Pour la Personnalisation et les Macros
Le langage DIESEL (Direct Interpretively Evaluated String Expression Language) est puissant pour la personnalisation des interfaces, des menus et des macros. Bien qu’il ne soit pas idéal pour des calculs dynamiques complexes entre attributs sans assistance, il peut être utilisé pour des valeurs par défaut d’attributs ou intégré dans des champs pour des logiques spécifiques.
- Dans la valeur par défaut d’un attribut : DIESEL peut être utilisé pour définir une valeur initiale ou un formatage conditionnel simple basé sur des variables système ou des entrées utilisateur. Cependant, il ne peut pas directement lire la valeur d’un autre attribut de bloc dynamique pour un calcul post-insertion sans l’aide d’un script.
- Intégré dans un Champ : Les expressions DIESEL peuvent être utilisées au sein d’un champ pour manipuler la chaîne de caractères résultante ou appliquer des conditions. Par exemple, un champ pourrait afficher
$(upper, %<[Champ vers PM-FZ]>)pour afficher la valeur dePM-FZen majuscules. - Dans les Macros LISP/C# : C’est là que DIESEL révèle sa pleine puissance pour les attributs. Une macro LISP ou un programme C# peut lire les valeurs des attributs et paramètres, effectuer des calculs complexes, puis utiliser DIESEL pour formater la chaîne de résultat avant de l’écrire dans l’attribut cible. Par exemple, une routine LISP pourrait lire
PM-FZetPM-PFS Cote1, calculerPM-RA, puis mettre à jourPM-RAavec la valeur formatée via DIESEL.
3. Programmation LISP / VBA / C# - Pour les Cas Avancés
Pour des logiques de calcul très complexes, des interactions avec des bases de données externes, ou des mises à jour automatiques déclenchées par des événements spécifiques (par exemple, après chaque modification d’un paramètre de bloc dynamique), la programmation est la solution la plus robuste.
- LISP : Un script LISP peut être écrit pour parcourir les entités de bloc, lire les valeurs d’attributs et de paramètres (via
VLAXouENTGET/ENTMOD), effectuer les calculs, puis mettre à jour l’attributPM-RA. Ce script peut être déclenché manuellement ou via un événement. - VBA / C# (.NET) : Ces langages offrent un contrôle plus granulaire et des performances accrues. Un plugin .NET peut s’abonner aux événements de modification de bloc (
BlockReference.Modified) pour recalculer et mettre à jourPM-RAen temps réel, offrant une expérience utilisateur fluide et entièrement automatisée.
Bonnes Pratiques :
- Toujours modifier les définitions d’attributs dans l’Éditeur de blocs (
BEDIT). - Utiliser
ATTSYNCaprès toute modification de la définition d’un attribut pour mettre à jour les blocs existants. - Tester minutieusement les formules et les scripts pour s’assurer de leur exactitude et de leur réactivité.