Comment créer une boîte de dialogue personnalisée dans AutoCAD pour saisir des données spécifiques (nom, pays, dimensions, etc.) afin de les associer à un bloc dynamique, comme pour la description d’un bateau ?
Pour créer une boîte de dialogue personnalisée permettant de saisir des informations pour un bloc dynamique dans AutoCAD, vous pouvez utiliser plusieurs approches. La méthode la plus courante et flexible implique la création d’un formulaire (dialog box) à l’aide de Visual Basic for Applications (VBA) ou de .NET, puis son association avec le bloc dynamique.
Voici une démarche générale basée sur l’utilisation de VBA, qui était une méthode courante pour ce type d’automatisation à l’époque de la discussion (AutoCAD 2012) :
Approche 1 : Utilisation de VBA pour créer une boîte de dialogue et gérer les propriétés du bloc
-
Création du Bloc Dynamique :
- Dessinez les éléments géométriques de votre bloc (par exemple, la forme d’un bateau).
- Définissez les paramètres dynamiques nécessaires (visibilité, étirements, rotations, etc.).
- Associez des propriétés personnalisées (attributs) au bloc pour stocker les données textuelles (Nom, Pays, Longueur, Largeur, etc.). Ces attributs seront les champs de saisie de votre boîte de dialogue.
-
Création du Formulaire VBA (UserForm) :
- Ouvrez l’éditeur VBA dans AutoCAD (
VBAIDE). - Insérez un nouveau
UserForm. - Ajoutez des contrôles sur le formulaire pour chaque donnée à saisir :
TextBoxpour les champs textuels (Nom, Pays),TextBoxouLabelavec desTextBoxpour les champs numériques (Longueur, Largeur, etc.). Assurez-vous de nommer clairement chaque contrôle (ex:txtNom,txtLongueur). - Ajoutez des boutons comme ‹ OK › et ‹ Annuler ›.
- Ouvrez l’éditeur VBA dans AutoCAD (
-
Programmation VBA pour lier le formulaire au bloc :
- Dans le code du formulaire, au clic sur le bouton ‹ OK ›, vous devrez :
- Récupérer les valeurs saisies dans les contrôles (
TextBox). - Utiliser les objets et méthodes de l’API AutoCAD pour modifier les attributs du bloc dynamique sélectionné. Cela implique de trouver le bloc, puis de parcourir ses attributs pour mettre à jour leurs valeurs avec celles saisies dans le formulaire.
- Récupérer les valeurs saisies dans les contrôles (
- Pour insérer le bloc avec la boîte de dialogue qui s’affiche automatiquement, vous pouvez créer une commande AutoCAD personnalisée (
Sub MaCommandeBlocDynamique()) qui insère le bloc, puis déclenche l’affichage du formulaire pour la saisie des propriétés.
- Dans le code du formulaire, au clic sur le bouton ‹ OK ›, vous devrez :
-
Enregistrement et Association :
- Enregistrez le projet VBA (
.dvb). - Vous pouvez ensuite lancer votre commande personnalisée depuis AutoCAD.
- Enregistrez le projet VBA (
Approche 2 : Utilisation des étiquettes de nomenclature (mentionnée par Steven)
Steven suggère une approche plus simple si l’objectif est de lister les propriétés des blocs dans un tableau :
- Créer des étiquettes de nomenclature : AutoCAD permet de créer des étiquettes (Tags) qui peuvent afficher des propriétés de blocs, y compris des attributs. Ces étiquettes peuvent être configurées pour extraire et afficher des informations spécifiques de chaque instance de bloc.
- Générer une table de nomenclature : Vous pouvez ensuite utiliser la commande
BATTABLE(ouATTSYNCpuisBATTABLE) pour générer une table récapitulative des propriétés de vos blocs dans le dessin. Cette table peut servir de liste de nomenclature.
Conseils d’expert :
- Complexité : La création d’une boîte de dialogue personnalisée via VBA est une solution puissante mais demande des compétences en programmation. Si vos besoins sont plus simples (juste afficher des données), l’approche par étiquettes et tables de nomenclature est plus rapide.
- Versions : Pour des versions plus récentes d’AutoCAD, .NET (C# ou VB.NET) offre des possibilités encore plus avancées pour la création d’interfaces utilisateur.
- Gestion des erreurs : Dans votre code VBA, prévoyez des contrôles pour valider les entrées utilisateur (par exemple, s’assurer que les champs numériques contiennent bien des nombres).
L’idée de Steven avec les étiquettes est une excellente première étape pour visualiser les données associées à vos blocs, et peut suffire si vous n’avez pas besoin d’une interface de saisie interactive.