Le Coin des AutoCADiens
Le site français des développeurs pour AutoCAD
Vous pourrez ici apprendre à programmer en Visual Basic pour AutoCAD.
LES 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
|
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.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|