Nous allons créer un code en VBA sur AutoCAD pour créer et insérer les textes utiles au repérage des éléments sur un plan.
Ouvrir l’éditeur Visual Basic
Sur AutoCAD, dans l’onglet Gérer, cliquer sur le bouton Éditeur Visual Basic pour ouvrir l’éditeur.
Création de la macro
Initialisation de la macro
Tout d’abord, il faut créer les variables qui nous seront utiles dans la macro.
- Text correspond à la zone de texte
- Lettre correspond à la lettre de repérage que nous souhaitons utiliser
- Pointinsertion correspond au point d’insertion de la zone de texte
- Hauteur correspond à la hauteur de texte que nous souhaitons avoir
Dim Text As AcadText Dim Lettre As String Dim PointInsertion(0 To 2) As Double Dim Hauteur As Double
Ensuite, nous créons les boîtes de dialogue qui permettront de saisir la lettre de repérage, le nombre d’éléments à numéroter et la hauteur du texte.
Pour cela, on utilise la commande InputBox comme ci-dessous :
Lettre = InputBox("Quelle lettre correspond à l'objet à numéroter ?", "Lettre repérage", "P") NbElements = InputBox("Combien d'éléments souhaitez-vous numéroter ?", "Nombre d'éléments", 10) Hauteur = InputBox("Quelle hauteur de texte souhaitez-vous ?", "Hauteur de texte", 100)
Le premier paramètre de la commande sera le texte de la boîte de dialogue, le deuxième sera le titre de la boîte de dialogue et le troisième sera une valeur prédéfinie de réponse comme nous pouvons le voir ci-dessous.

La boucle for
Ensuite nous créons la boucle for qui nous permet d’afficher une zone de texte à chaque itération. Le nombre d’itération de la boucle correspond au nombre d’éléments que nous souhaitons annoter.
Voici le code de la boucle for :
For i = 1 To NbElements a = CStr(i) Texteaecrire = Lettre + a PointInsertion(0) = 125 'coordonée x PointInsertion(1) = i * 125 'coordonnée y PointInsertion(2) = 0 'coordonnée z Set Text = ThisDrawing.ModelSpace.AddText(Texteaecrire, PointInsertion, Hauteur) Next
La ligne 2 permet de récupérer le numéro (i) de l’élément à repérer grâce à la commande Cstr qui transforme un entier ou un réel en chaîne de caractère. Ensuite, avec la ligne 3, nous assemblons la lettre de repérage avec le numéro d’annotation dans la variable « Texteaecrire ».
Les lignes 4, 5 et 6 spécifient les coordonnées du point d’insertion. Ici, à chaque itération, la zone de texte sera positionnée 125 unités plus haut que la précédente.
Enfin, la ligne 7 permet d’insérer le texte. Le premier paramètre de la commande correspond au texte à écrire, le deuxième au point d’insertion et le troisième à la hauteur du texte.
Ces étapes sont reproduites pour un nombre d’itérations égal au nombre d’éléments à repérés.
Fin de la macro
Enfin, nous faisons apparaître un message dans une boîte de dialogue qui confirme la bonne exécution du programme à l’aide de la commande MsgBox :
Messagedereussite = MsgBox("Votre texte a bien été inséré", 0, "Succès !")
Le premier paramètre est le message de la boîte de dialogue, le deuxième est le type de boîte de dialogue à utiliser et le troisième est le titre de la boîte de dialogue.
On obtient la boîte de dialogue suivante :

Au final, nous obtenons le code suivant et nous pouvons exécuter la macro :
Sub Numérotation() Dim Text As AcadText Dim Lettre As String Dim PointInsertion(0 To 2) As Double Dim Hauteur As Double Lettre = InputBox("Quelle lettre correspond à l'objet à numéroter ?", "Lettre repérage", "P") NbElements = InputBox("Combien d'éléments souhaitez-vous numéroter ?", "Nombre d'éléments", 10) Hauteur = InputBox("Quelle hauteur de texte souhaitez-vous ?", "Hauteur de texte", 100) ' Hauteur du texte For i = 1 To NbElements a = CStr(i) Texteaecrire = Lettre + a PointInsertion(0) = 125 'coordonée x PointInsertion(1) = i * 125 'coordonnée y PointInsertion(2) = 0 'coordonnée z Set Text = ThisDrawing.ModelSpace.AddText(Texteaecrire, PointInsertion, Hauteur) Next Messagedereussite = MsgBox("Votre texte a bien été inséré", 0, "Succès !") End Sub
Exécution de la macro
Une présentation de l’exécution de la macro est réalisée ci-dessous :
Et maintenant, il ne reste qu’à positionner correctement ces repérages sur votre plan !
0 commentaire