Le Coin des AutoCADiens

Le site français des développeurs pour AutoCAD

Vous pourrez ici apprendre à programmer en Visual Basic pour AutoCAD.
VBA ExplorAcad - Partie 1 VBA


ExplorAcad Nota :
Par souci de simplification, les explications de ce programme ont été sectionnées en trois parties. Les sections correspondent aux différentes versions :
  1. Cette partie, le code de la version 1, explique
    • Comment choisir un fichier en VB.
    • Comment créer les aperçus.
    • Comment implémenter les protocoles pour Internet.

Le contrôle AutoCAD DwgThumbnail

Pour afficher les 'aperçus' des dessins AutoCAD vous aurez besoin du contrôle AutoCAD DwgThumbnail.
Ecrit par Albert Szilvasy <albert.szilvasy@autodesk.com > d'Autodesk, il est gratuit.
Vous pourrez télécharger la dernière version sur le newsgroup d'Autodesk :
news://adesknews.autodesk.com/autodesk.autocad.customer-files
ou, à défaut ici en cliquant sur l'icône.
Téléchargement Pour registrer DwgThumbnail vous devrez lancer la commande :
regsvr32 <c:\votre_Répertoire_ou_est_placé_l'OCX>\dwgthumbnail.ocx
Vous devrez avoir un message du genre "AutoCAD DwgThumbnail registered successfully".
Cette opération n'est à faire qu'une seule fois.
Si vous avez un message d'erreur, vous devrez utiliser la version 1.4.
En effet, la version 1.5 ayant été compilée avec C++6.0, elle nécessite certains fichiers DLL récents, que vous avez si vous avez installé VB6.
A chaque nouvelle création d'une application avec ce contrôle, il faudra cocher la case AutoCAD DwgThumbnail Control module de la boîte Composants du menu Projet.

Inet, un autre contrôle

Le contrôle Inet ou Microsoft Internet Transfert Control n'est pas vraiment nécessaire dans cette application. Néammoins nous allons le conserver par souci pédagogique.
Le contrôle Inet permet principalement d'implémenter les deux protocoles le plus utilisés sur Internet, HTTP et FTP.
Nous l'utilisons ici pour ouvrir le navigateur par défaut et le diriger vers vôtre site Internet préféré :-).
Il faudra donc cocher la case Microsoft Internet Transfert Control (5.0 ou 6.0 selon votre version VB) de la boîte Composants du menu Projet.

La feuille ExplorAcad

Forme ExplorAcad Sous Visual Basic, commencez par créer un exe standard, et sur la nouvelle feuille "Form1" placez les contrôles suivant le modèle et les indications ci-dessous.

NOTA : La liste ci-dessous donne le nom des contrôles ; respectez ces noms qui sont donnés ici, ils doivent correspondre au code source, sinon modifiez-les dans le code également.
La feuille Form1
  • On conserve le nom Form1
  • Modifiez la propriété Caption par ExplorAcad
  • Propriété Icon : Sélectionnez le fichier de votre choix ou ExplorAcad.ico qui se trouve dans le fichier source.zip ci-joint
Liste des lecteurs (DriveListBox)
Propriété (Name) : drvLecteurs

Liste des dossiers (DirListBox)
Propriété (Name) : dirDisc1

Liste des fichiers (FileListBox)
Propriété (Name) : filFich1
Propriété Pattern : *.dwg - le filtre de sélection des fichiers.

Transfert Internet (Inet) - Il n'est pas obligatoire
Propriété (Name) : netLienPub
Placez le contrôle n'importe où sur la feuille ; l'endroit n'a aucune importance.
Vous pouvez conserver toutes les valeurs par défaut ou remplir directement l'URL par la zone (Personnalisé)

Le contrôle DwgThumbnail
Propriété (Name) : dwgVignette1
Règler les dimensions de l'image comme vous le souhaitez ainsi que les couleurs et la présentation. Autres valeurs par défaut.

L'intitulé pour les messages
Propriété (Name) : lblMessage
Propriété Alignment : 2 - Center
Pour le reste, c'est à vôtre convenance.

Le bouton de commande d'activation du transfert Internet
C'est le bouton au dessin @CAD+
Propriété (Name) : cmdURL
Propriété Appearance : 1 - 3D - selon vôtre goût !
Propriété Style 1 - Graphical pour insérer une image sur le bouton.
Propriété Picture : Sélectionnez le fichier de votre choix ou acad.gif si vous voulez conserver @CAD+. Vous avez toutes les chances de le trouver dans le répertoire cache de votre navigateur.
Propriété Caption à laisser vide si vous y mettez une image

'Offert par' et Le Coin des AutoCADiens sont des Intitulés.
Ils n'ont aucune incidence sur le programme.

Un code mini pour Form1 !

Déclarations dans Form1
Il nous faut une fonction API :
  • En cliquant sur l'aperçu on doit pouvoir ouvrir le dessin dans le programme qui est associé à l'extension du fichier sélectionné, AutoCAD ou LT suivant le cas. Pour lancer ce programme on utilisera la fonction API ShellExecuteA.
    Pour que la fonction API puisse être utilisée, il faut qu'elle soit déclarée comme Private dans la partie Général de la feuille.
  • Les variables Chemin et Fichier sont elles déclarées Public pour être accessibles par la fonction ShellExecuteA.



Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
  (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
   ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Chemin As String
Public Fichier As String


Procédures Sub drvLecteurs_Change() et Sub dirDisc1_Change() pour le choix du fichier
  • La mise à jour du fichier sélectionné est assurée par l'évènement Change



Private Sub drvLecteurs_Change()
  ' pour qu'un manque de disquette ne puisse pas bloquer le programme.
  On Error Resume Next
  ' le changement de lecteur est répercuté sur la liste des dossiers.
  dirDisc1.Path = drvLecteurs.Drive
End Sub

Private Sub dirDisc1_Change()
  ' pour signaler un nouveau dossier à la liste des fichiers
  filFich1.Path = dirDisc1.Path
End Sub


Procédure Sub filFich1_Click() si on clique sur un fichier
  • Pour l'appel de la fonction API ShellExecute on a besoin des chemin et nom de fichier séparés en 2 variables.
  • Pour afficher l'apperçu le chemin et le nom doivent être regroupés.



Public Sub filFich1_Click()
  lblMessage.Caption = " "		' on efface le message
  Chemin = dirDisc1.Path		' chemin disque + répertoire
  If Right$(Chemin, 1) <> "\" Then	' si nécessaire, 
    Chemin = Chemin + "\"		' ajouter le backslash
  End If
  Fichier = filFich1.FileName		' nom du fichier seul (avec l'extension)
  FichVi$ = Chemin + filFich1.FileName	' chemin complet avec fichier
  On Error GoTo Erreur1
  ' Donne le nom du fichier au contrôle dwgThumbnail
  DwgVignette1.DwgFileName = FichVi$
  ' Affiche le message dans l'intitulé sous l'aperçu
  lblMessage.Caption = "Cliquez sur l'image pour lancer le dessin"
  DwgVignette1.Refresh			' Mise à jour de l'apperçu
  Exit Sub
Erreur1:
  ' si les dessins sont créés avec un format antérieur à R13, il y aura une erreur
  ' qui est captée ici pour afficher un message
  DwgVignette1.Refresh			' efface l'apperçu précédent
  lblMessage.Caption = "Ce fichier n'est pas au format R13 ou R14"
End Sub


Procédure Sub DwgVignette1_Click() et Sub cmdURL_Click()
  • La procédure Sub DwgVignette1_Click appelle la fonction ShellExecute pour lancer AutoCAD.


  • Et la procédure Sub cmdURL_Click() pour aller surfer quand on clique sur le bouton adéquat.



Private Sub DwgVignette1_Click()
 R& = ShellExecute(Me.hwnd, vbNullString, Fichier, vbNullString, Chemin, 1)
 If R& = 31 Then
   MsgBox "Ni AutoCAD ni LT ne sont associés aux fichiers .dwg !", _
   vbInformation, "Absence d'association de fichier"
End If
End Sub

Private Sub cmdURL_Click()
 netLienPub.URL = "http://acadplus.free.fr/"
 netLienPub.Execute
End Sub
 


Récapitulatif du code

La partie 1 - Comment choisir un fichier en VB, comment créer les aperçus, comment implémenter les protocoles pour Internet.

La partie 2 - Comment placer le programme en 'tite icône', comment attacher un menu à la 'tite icône'.

La partie 3 - Comment récupérer les informations sur un fichier, comment placer un fichier dans la corbeille.

La partie 4 - Comment afficher les clichés AutoCAD en VB, comment lire la liste des clichés d'une bibliothèque.


-----

Le code d'Exploracad - Partie 2

-----

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

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