Le Coin des AutoCADiens

Le site français des développeurs pour AutoCAD

Vous pourrez ici apprendre à programmer en Visual Basic pour AutoCAD.
VBA Le B.A.-BA du VBA

LES CONTROLES
Controles On appelle contrôles les éléments que l'on peut sélectionner dans la boîte à outils et disposer sur une feuille.
Exemple, le bouton de commande déjà utilisé précédemment.
VBA pour AutoCAD charge en standard 15 contrôles, VB5 21 contrôles standard. Mais vous pouvez en ajouter, en créer (avec VB5 ou C++) autant que vous voulez.
Voir l'aide en ligne.
Exemple d'utilisation des Contrôles
Télécharg. Exemple BA1 La manière de construire le programme ci-à coté vous sera expliquée pas à pas. Son but, autre que pédagogique, est de tracer 2 cercles concentriques, le petit en bleu, le plus grand en rouge.
Si vous désirez déjà essayer le programme, cliquez sur l'image pour télécharger le fichier zip (27 Ko) qui contient également les images qui serviront plus tard.
Charger le projet dans AutoCAD par Outils/Macro VBA/Charger le Projet puis lancer le programme comme pour les exemples précédents.
Et maintenant que vous avez vu comment ça se passe, on oublie tout et on repart à zéro. Allons-y ...


La feuille UserForm1
Procéder comme dans le chapître #2 pour obtenir votre feuille, puis,
Dans la fenêtre des Propriétés :
  • Modifier la propriété Height par 200 (hauteur de la feuille en pixtels)
  • Modifier la propriété Width par 260 (largeur de la feuille)
  • Modifier la propriété Caption par BaCAD - Exercice B1. Cette propriété permet de définir un texte pour la barre de titre.
NOTA : Les proprités de dimensions ne sont données que pour rester fidèle au modèle. Vous n'êtes pas obligés de les respecter !
Ensuite nous allons placer les contrôles sur la feuille.

Le cadre Frame1
Cliquez sur le contrôle Cadre ou Frame de la boîte à outils et positionnez-le sur la feuille.
Dans la fenêtre des Propriétés :
  • Modifier la propriété Height par 70 (hauteur de la feuille en pixtels)
  • Modifier la propriété Width par 150 (largeur de la feuille)
  • Modifier la propriété Left par 18 (distance du bord gauche de la feuille)
  • Modifier la propriété Top par 18 (distance du haut de la feuille)
  • Modifier la propriété Caption par Coordonnées du centre. Cette propriété permet de définir un texte pour le cadre.
  • Modifier la propriété Font - Cliquez sur le petit pavé pour obtenir la boîte de dialogue Police et indiquez le style bold ou gras.

La zone de texte txtPosX
Cliquez sur le contrôle zone de texte ou TextBox de la boîte à outils et positionnez-le dans le cadre.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Name : txtPosX (Le nom de cet objet qui servira dans le code)
  • Propriété Height : 15 (hauteur de la zone en pixtels)
  • Propriété Width : 72 (largeur de la zone de texte)
  • Propriété Left : 60 (distance du bord gauche du cadre)
  • Propriété Top : 6 (distance du haut du cadre)
  • Propriété TextAlign : 3 - fmTextAlignRight. Le texte entré sera aligné à droite.

Les zones de texte txtPosY et txtPosZ
Procéder de la même manière que pour txtPosX.
Seules les propriétés Name et Top (24 et 42) sont différentes.

L'intitulé Label1
Cliquez sur le contrôle Intitulé ou Label de la boîte à outils et positionnez-le dans le cadre, devant la zone de texte txtPosX.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Caption : En X : Cette propriété permet de définir le texte de l'intilé.
  • Propriété Height : 12 (hauteur de la zone en pixtels)
  • Propriété Width : 24 (largeur de la zone de texte)
  • Propriété Left : 12 (distance du bord gauche du cadre)
  • Propriété Top : 10 (distance du haut du cadre)

Les intitulés Label2 et Label3
Procéder de la même manière que pour Label1.
Seules les propriétés Caption et Top (27 et 45) sont différentes.

Le titre - intitulé Label4
Cliquez sur le contrôle Intitulé de la boîte à outils et positionnez-le sur la feuille, au-dessus du cadre.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Caption : Dessin de 2 cercles concentriques - Définition du texte du titre.
  • Propriété Height : 18 (hauteur de la zone en pixtels)
  • Propriété Width : 200 (largeur de la zone de texte)
  • Propriété Left : 30 (distance du bord gauche de la feuille)
  • Propriété Top : 0 (distance du haut de la feuille)
  • Propriété TextAlign : 2 - fmTextAlignCenter. Le texte entré sera aligné au centre.
  • Propriété Font - Cliquez sur le petit pavé pour obtenir la boîte de dialogue Police et changer la police (arial), indiquez le style gras italique et la taille 10.

Les zones de texte txtPRayon et txtGrayon
Pour chacune des 2 zones, cliquez sur le contrôle zone de texte de la boîte à outils et positionnez-le sous le cadre.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Name : txtPRayon ou txtGRayon
  • Propriété Height : 18 (hauteur des zones en pixtels)
  • Propriété Width : 72 (largeur de la zone de texte)
  • Propriété Left : 35 ou 150
  • Propriété Top : 108
  • Propriété TextAlign : 3 - fmTextAlignRight. Le texte entré sera aligné à droite.

Les intitulés Label5 et Label6
Pour chacun des 2 textes,cliquez sur le contrôle Intitulé de la boîte à outils et positionnez-le au-dessus des zones de texte txtPRayon et txtGRayon.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Caption : Petit Rayon ou Grand Rayon.
  • Propriété Height : 12
  • Propriété Width : 72
  • Propriété Left : 35 ou 150
  • Propriété Top : 96
  • Propriété Font - Cliquez sur le petit pavé pour obtenir la boîte de dialogue Police et indiquez le style bold (gras).
  • Propriété TextAlign : 2 - fmTextAlignCenter. Le texte est centré.

L'image Image1
Cliquez sur le contrôle Image de la boîte à outils et positionnez-le sur la feuille, près du cadre.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Height : 44 (hauteur de la zone en pixtels)
  • Propriété Width : 72 (largeur de la zone de texte)
  • Propriété Left : 174 (distance du bord gauche de la feuille)
  • Propriété Top : 36 (distance du haut de la feuille)
  • Propriété Picture : - Cliquez sur le petit pavé pour obtenir la boîte de dialogue Charger une image - Sélectionnez le fichier vba.gif que vous avez trouvé dans le fichier baex1.zip.
  • Propriété SpecialEffect : Choisir 6 - fmSpecialEffectBump. L'image est encadrée.

Le bouton de commande cmdAction
Cliquez sur le contrôle Bouton de commande de la boîte à outils et positionnez-le sur la feuille.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Name : cmdAction - C'est le nom de l'objet.
  • Propriété Caption : Dessiner Texte sur le bouton.
  • Propriété Height : 24 (hauteur du bouton en pixtels)
  • Propriété Width : 100 (largeur du bouton)
  • Propriété Left : 12
  • Propriété Top : 140
  • Propriété Font - Dans la boîte de dialogue Police indiquez le style bold ou gras et la taille 10.
  • Propriété Picture : - Cliquez sur le petit pavé pour obtenir la boîte de dialogue Charger une image - Sélectionnez le fichier BtnAct.gif que vous avez trouvé dans le fichier baex1.zip.
  • Propriété PicturePosition : Choisissez l'option 1 A gauche, au centre.

Le bouton de commande cmdFin
Cliquez sur le contrôle Bouton de commande de la boîte à outils et positionnez-le sur la feuille.
Dans la fenêtre des Propriétés, modifiez les valeurs :
  • Propriété Name : cmdFin Nom de l'objet.
  • Propriété Caption : Fermer Texte sur le bouton.
  • Propriété Height : 24 (hauteur du bouton en pixtels)
  • Propriété Width : 100 (largeur du bouton)
  • Propriété Left : 144
  • Propriété Top : 140
  • Propriété Font - Dans la boîte de dialogue Police indiquez le style bold ou gras et la taille 10.
  • Propriété Picture : - Cliquez sur le petit pavé pour obtenir la boîte de dialogue Charger une image - Sélectionnez le fichier BtnFin.gif que vous avez trouvé dans le fichier baex1.zip.
  • Propriété PicturePosition : Choisissez l'option 4 A droite, au centre.

-----

Fin du 1er round. Vous devriez, normallement avoir une boîte identique au modèle.
Si ce n'est déjà fait, vous auriez intérêt à sauvegarder votre magnifique travail !

On va maintenant passer au code source.

-----

Le bouton de commande BoutonFin
On commence par le plus simple :
Double-cliquez sur le bouton de commande Fermer.
La feuille de code s'affiche à l'endroit adéquat.
Il ne vous reste qu'à taper Unload Me comme ci-dessous :

      Private Sub cmdFin_Click()
        Unload Me
      End Sub



Le bouton de commande cmdAction
Double-cliquez sur le bouton de commande Dessiner.
La feuille de code s'affiche à l'endroit désiré.
Il vous faut maintenant taper le code ci-dessous, ou plus simple, faire un copier-coller.

Private Sub cmdAction_Click()
 
     ' Gestin des erreurs d'Entree de donnees
    On Error GoTo Probleme
    If txtPosX.Text = "" Or txtPosY.Text = "" Then
        MsgBox "Coordonnées du centre incomplètes"
        Exit Sub
    End If
    If txtPosZ.Text = "" Then txtPosZ.Text = 0
    If txtPRayon.Text = "" Then
        MsgBox "Valeur du petit rayon incorrecte"
      Exit Sub
    End If
     If txtGRayon.Text = "" Then
       MsgBox "Valeur du grand rayon incorrecte"
       Exit Sub
    End If
     
    'Initialisation des variables
  
    Dim BaCercleP As AcadCircle  ' Nom arbitraire de la variable objet petit cercle
    Dim BaCercleG As AcadCircle  ' Nom arbitraire de la variable objet grand cercle
    
    Dim PtCentre(0 To 2) As Double
    Dim PRay As Double
    Dim GRay As Double
    
    'Gestion des données
    'CDbl transforme les chaines en nombre type double
    PtCentre(0) = CDbl(txtPosX.Text)      ' Coordonnee en X du centre
    PtCentre(1) = CDbl(txtPosY.Text)      ' Coordonnee en Y du centre
    PtCentre(2) = CDbl(txtPosZ.Text)      ' Coordonnee en Z du centre
    
    PRay = CDbl(txtPRayon.Text)           ' Longueur du rayon du cercle
    GRay = CDbl(txtGRayon.Text)           ' Longueur du rayon du cercle
 
    'Creation des cercles
    Set BaCercleP = ThisDrawing.ModelSpace.AddCircle(PtCentre, PRay)
    BaCercleP.Color = acBlue
    BaCercleP.Update         ' Mise a jour de l'affichage
    Set BaCercleG = ThisDrawing.ModelSpace.AddCircle(PtCentre, GRay)
    BaCercleG.Color = acRed
    BaCercleG.Update         ' Mise a jour de l'affichage
  
Probleme:
    If Err Then
      MsgBox Err.Description
    End If

End Sub

Et maintenant, il ne reste plus qu'à tester...

-----

On continue avec une vraie routine, vraiment utile, qui se lance d'une icône dans AutoCAD ... et qui cette fois ne contient aucun contrôle !
La boutonnière !

--

© 1998-2009 FASOFT - Roger Rosec Tous droits réservés.
Google
 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------