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 4 VBA


ExplorAcad Nota :
Par souci de simplification, les explications de ce programme ont été sectionnées en quatre parties. Les sections correspondent aux différentes versions :
  1. La partie 1, 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.
  2. La partie 2 explique comment mettre le programme en petite icône, et comment y attacher un menu.
  3. La partie 3, le code de la version 2.2, explique comment avoir des informations sur un fichier et comment mettre un fichier dans la poubelle.
  4. Cette dernière partie, le code de la version 3, explique comment afficher les clichés (ou slides) AutoCAD, y compris ceux qui sont dans des bibliothèques.
    Le code ci-dessous est à rajouter au code des versions 1, 2 et 2,2.

La version 3

Cette partie va permettre de choisir entre 3 types de fichiers :
  • Les fichiers .dwg (rien de changé).
  • Les fichiers .sld : cliché simple.
  • Les fichiers .slb : bibliothèque de clichés .
Pour visionner les clichés on utilisera un ocx spécialisé.
On décodera la première ligne des fichiers bibliothèques pour lire la liste des clichés y figurant.

VB5 ou VB6 - Non testé en VB4.


Le contrôle AutoCAD Slide

Pour afficher les clichés AutoCAD vous aurez besoin du contrôle AutoCAD Slide.
C'est un shareware dont j'ignore complètement les conditions d'utilisation. Je l'ai trouvé sur le newsgroup d'Autodesk :
news://adesknews.autodesk.com/autodesk.autocad.customer-files
en date du 07/02/99, titre de l'article Slide viewer. C'est un autre visualiseur de slides qui vous est proposé et vous pourrez ainsi comparer les deux styles de programmation.
Si vous avez déjà installé la version 3 d'ExplorAcad, vous avez le contrôle qui est déjà installé dans le répertoire System de Windows. Sinon, pour registrer Slide vous devrez lancer la commande :
regsvr32 <c:\votre_Répertoire_ou_est_placé_l'OCX>\slide.ocx
Vous devrez avoir un message du genre "AutoCAD Slide registered successfully".
Cette opération n'est à faire qu'une seule fois.
A chaque nouvelle création d'une application avec ce contrôle, il faudra cocher la case AutoCAD Slide OLE Control Module de la boîte Composants du menu Projet.

Du nouveau sur la feuille ExplorAcad

Le contrôle Slide

Propriété (Name) : Cliche1
Les autres propriétés : valeurs par défaut.
Si vous voulez rester identique au modèle, placer ce contrôle sur le DwgThumbnail avec les mêmes dimensions.
A noter : L'apperçu DwgThumbnail étant un bitmap, s'il est trop grand, on perdra en qualité. On n'a pas cette restriction pour les clichés qui peuvent être très grands parce que dessinés. J'ai choisi de les visualiser en petite taille, ce n'est pas une obligation.


La zone de liste (ListBox)

Propriété (Name) : lstSld1
Propriété Sorted : True ou False selon que vous désiriez une liste triée ou au contraire dans l'ordre original.
Ce contrôle sert à afficher la liste des clichés insérés dans une bibliothèque. Je l'ai placé sur les indications de caractéristiques de fichier puisqu'elles ne servent pas au moment où la liste est affichée.


Liste des Fichiers filFich1 - Modification

Propriété Pattern : *.dwg;*.sld;*.slb
A modifier pour pouvoir sélectionner également les clichés et les bibliothèques de clichés.


Le code du module ExplorAcad.bas
Le Module1 (ExplorAcad.bas) reste inchangé

Le code à modifier dans Form1

Modification de la Procédure filFich1_Click()
Selon la dernière lettre de l'extension du fichier sélectionné,
  • Affichage du contrôle cliche1 ou du contrôle DwgVignette1

  • Affichage ou non de la liste de clichés en bibliothèque lstSld1

  • Affichage d'un message différent.

  • Appel de la fonction de lecture des noms de clichés si 'b' ou 'B'.

  • Affichage du cliché ou de l'apperçu du dessin.



Public Sub filFich1_Click()
  lblMessage.Caption = " "
  Chemin = dirDisc1.Path
  If Right$(Chemin, 1) <> "\" Then
    Chemin = Chemin + "\"
  End If
  Fichier = filFich1.FileName
  FichVi$ = Chemin + filFich1.FileName
  FichInfo (FichVi$)
  strTaille = Str(FileLen(FichVi$))
  lblTaille.Caption = Format(strTaille, " ### ### ###") + " octets"
  If UCase(Right(FichVi$, 1)) = "B" Then
     BibCliche
     DwgVignette1.Visible = False
     Cliche1.Visible = True
     Cliche1.FileName = FichVi$ + "(" + lstSld1.List(lstSld1.ListIndex) + ")"
     lblMessage.Caption = "Cliché AutoCAD dans une bibliothèque"
  End If
  If UCase(Right(FichVi$, 1)) = "D" Then
     lstSld1.Visible = False
     DwgVignette1.Visible = False
     Cliche1.Visible = True
     Cliche1.FileName = FichVi$
     lblMessage.Caption = "Cliché AutoCAD indépendant"
  End If
  On Error GoTo Erreur1
  If UCase(Right(FichVi$, 1)) = "G" Then
     lstSld1.Visible = False
     DwgVignette1.Visible = True
     Cliche1.Visible = False
     DwgVignette1.DwgFileName = FichVi$
     lblMessage.Caption = "Cliquez sur l'image pour lancer le dessin"
     DwgVignette1.Refresh
  End If

  Exit Sub
Erreur1:
  DwgVignette1.Refresh
  lblMessage.Caption = "Ce fichier n'est pas au format R13 ou R14"
End Sub


Modification de la Procédure Sub Form_Load()
  • Ajout des deux dernières lignes pour ne pas afficher les contrôles pour les clichés.



Private Sub Form_Load()
  'Préparation de la variable IconeT
  IconeT.cbSize = Len(IconeT) 'Taille de l'icône en octet
  IconeT.hwnd = Me.hwnd       'Handle de ExplorAcad (pour qu'elle reçoive les messages
                              'envoyés lors d'un clic, double-clic...
  IconeT.uID = 1&             'Identificateur de l'icône
  IconeT.uFlags = Icone Or TIP Or MESSAGE
  IconeT.uCallbackMessage = MOUSEMOVE     'Renvoie les messages concernant l'action de la souris
  IconeT.hIcon = Form1.Icon               'Met en icône l'image qui est dans le contrôle "Image1"
  IconeT.szTip = "ExplorAcad" & Chr$(0)    'Texte de la bulle d'aide
  Me.Hide
  Shell_NotifyIcon AJOUT, IconeT
  lstSld1.Visible = False 			' << nouveau
  Cliche1.Visible = False			' << nouveau
End Sub



Procédure Sub BibCliche
Procédure de lecture de la liste des clichés d'une bibliothèque.
  • Lecture du fichier bibliothèque en mode binary, octet par octet

  • Les noms des clichés sont inscrits dans la 1ère ligne du fichier.

  • Le premier nom commence au 33ème octet.

  • Chaque définition de cliché se fait sur 36 octets

  • On lit les 10 premiers caractères.

  • Si le nom du cliché est AutoCAD Sl, la liste est terminée




Public Sub BibCliche()
   Dim strDef(0 To 200) As String
   Dim Octet As Byte
   Dim Caract As String
   Dim Chaine1 As String
   Dim NomCli(0 To 200) As String
   Dim X As Integer
   Dim Y As Integer
   Dim A As Integer
   Dim NumCli As Integer
   Dim Z As Integer

   ' On rend visible le contrôle de la liste des clichés 
   lstSld1.Visible = True
   lstSld1.Clear
   NumCli = 1

   Open FichVi$ For Binary As #1
   ' Lecture des noms de slide sur la première ligne
   For A = 0 To 10000 Step 36
     For X = A + 33 To A + 68
       Get #1, X, Octet
       Caract = Str$(Octet)
       Caract = Right(Str$(Octet), Len(Caract) - 1)
       Caract = Right("000000" + Caract, 4)
       strDef(NumCli) = strDef(NumCli) + Caract + " "
     Next X
     'exemple de résultat : 0067 0065 0051 0048 0055 0000 0000 0000  ... pour CA307
     'traduction du résultat précédent en chaîne
     For Y = 1 To 50 Step 5          ' 1O fois 4 octets + un espace
        ' s'il y a 4 zéros, cliché suivant
       If Mid(strDef(NumCli), Y, 4) = "0000" Then GoTo Suivant
       Chaine1 = Chr$(Val(Mid(strDef(NumCli), Y, 4)))
       NomCli(NumCli) = NomCli(NumCli) + Chaine1
       If NomCli(NumCli) = "AutoCAD Sl" Then GoTo FinListe
     Next Y
Suivant:
    NumCli = NumCli + 1
    Next A
FinListe:
    Close #1
    For Z = 1 To NumCli - 2
      lstSld1.AddItem NomCli(Z)
    Next Z
End Sub



Procédure Sub lstSld1_Click()
  • Action sur un élément de la liste des clichés de la bibliothèque.



Private Sub lstSld1_Click()
     Cliche1.FileName = FichVi$ + "(" + lstSld1.List(lstSld1.ListIndex) + ")"
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.


-----

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

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