IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

piloter autocad depuis excel


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Homme Profil pro
    mairise d oeuvre
    Inscrit en
    Avril 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : mairise d oeuvre

    Informations forums :
    Inscription : Avril 2022
    Messages : 11
    Points : 6
    Points
    6
    Par défaut piloter autocad depuis excel
    bonjour,

    je connais un peu le VBA sur excel , je viens de demander au service info de m'ajouter le module vba d autocad.
    Depuis une liste de references et de plans, je cherche a :
    -chercher la referencce sur le plan
    -zoomer dessus en precisant je suppose des valeurs de cadrage
    - faire une capture d'ecran de ce qui est affiché (quitte à rogner ensuite sur excel à la main pour affiner)
    -la recuperer sur excel

    je suis preneurde toute aide

  2. #2
    Membre actif Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 411
    Points : 205
    Points
    205
    Par défaut Même 2 ans après...
    Salut chnoub.
    je suis aussi sous AutoCAD et je bidouille en VBA...
    Qu'entends tu par "références de plans" ?
    Des Xref ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    mairise d oeuvre
    Inscrit en
    Avril 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : mairise d oeuvre

    Informations forums :
    Inscription : Avril 2022
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Pardon. Ouvrir un fichier dans un dossier Windows. Les noms des fichiers sont plutôt des références pour moi

  4. #4
    Membre actif Avatar de DenisHen
    Homme Profil pro
    Dessinateur / projeteur
    Inscrit en
    Novembre 2013
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Dessinateur / projeteur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Novembre 2013
    Messages : 411
    Points : 205
    Points
    205
    Par défaut
    Citation Envoyé par chnoub Voir le message
    Pardon. Ouvrir un fichier dans un dossier Windows. Les noms des fichiers sont plutôt des références pour moi
    Pour un Windows, de façon empirique; oui...

    Mais tu parles d'AutoCAD, et là, les références changes...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    mairise d oeuvre
    Inscrit en
    Avril 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : mairise d oeuvre

    Informations forums :
    Inscription : Avril 2022
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Ok. Donc Excel ouvre un fichier qui se trouve être un fichier autocad, cherche un texte, zoom dessus, fait une copie écran autour et la récupère dans Excel, et passe au texte suivant, voir au fichier suivant

  6. #6
    Membre émérite Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 502
    Points : 2 299
    Points
    2 299
    Par défaut
    Bonjour,
    Voici le fil d'Ariane entre l'objet `AutoCAD.Application` et le plus petit objet utilisable dans AutoCAD, qui est souvent une entité graphique comme une ligne, un cercle, ou un autre objet de dessin :

    1. **AutoCAD.Application**
    - Représente l'application AutoCAD elle-même.

    2. **Application.Documents**
    - Représente la collection de tous les documents (dessins) ouverts dans AutoCAD.

    3. **Documents.Item**
    - Représente un document (dessin) spécifique. On accède à un dessin particulier via son index ou son nom.

    4. **Document.ModelSpace (ou Paperspace)**
    - Représente l'espace modèle ou l'espace papier du dessin, où les entités sont créées.

    5. **ModelSpace (ou Paperspace).Items**
    - Représente la collection d'entités dans l'espace modèle ou l'espace papier.

    6. **Items (Entities)**
    - Représente une entité spécifique dans l'espace modèle ou l'espace papier, comme une ligne, un cercle, etc.

    Ainsi, le fil d'Ariane serait :

    `AutoCAD.Application -> Documents -> Document -> ModelSpace (ou Paperspace) -> Items (Entities)`

    Voici un exemple de code VBA utilisant l'instruction `With` pour accéder à chaque niveau d'objets depuis `AutoCAD.Application` jusqu'à une entité spécifique dans l'espace modèle (ModelSpace) :{with facilitera la vie pour faire des boucles For Each sur chaque niveau !}
    Code Autocad : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Sub AccessAutoCADObjects()
        ' Déclaration des variables
        Dim acadApp As Object
        Dim acadDocs As Object
        Dim acadDoc As Object
        Dim modelSpace As Object
        Dim acadEntity As Object
     
        ' Initialisation de l'application AutoCAD
        Set acadApp = GetObject(, "AutoCAD.Application")
     
        ' Utilisation de With pour parcourir les objets
        With acadApp
            ' Accès à la collection de documents
            Set acadDocs = .Documents
     
            ' Accès au document actif
            With acadDocs
                Set acadDoc = .Item(0) ' On suppose qu'on accède au premier document ouvert
            End With
     
            ' Accès à l'espace modèle du document
            With acadDoc
                Set modelSpace = .ModelSpace
            End With
     
            ' Accès à une entité spécifique dans l'espace modèle
            With modelSpace
                ' Ajout d'une ligne d'exemple
                Set acadEntity = .AddLine(.Item(0).StartPoint, .Item(0).EndPoint)
     
                ' Ici, on pourrait manipuler l'entité acadEntity comme nécessaire
            End With
        End With
     
        ' Nettoyage des variables
        Set acadEntity = Nothing
        Set modelSpace = Nothing
        Set acadDoc = Nothing
        Set acadDocs = Nothing
        Set acadApp = Nothing
    End Sub

    Dans cet exemple, nous avons utilisé l'instruction `With` à chaque niveau pour accéder aux objets successifs. Notez que l'objet `acadEntity` est ajouté en tant que ligne d'exemple, mais vous pouvez adapter cela à toute autre entité nécessaire (comme des cercles, arcs, etc.).

    Veuillez ajuster les paramètres (comme les indices des documents ou des entités) en fonction de vos besoins spécifiques.

    Petite astuce ; toutes commandes exécuter manuellement dans Autocad est sauvegardé dans l'espace linge de commande afin de pouvoir la reexecuter plusieurs fois. Il suffit d'agrandir la zone de saisie pour récupérer le script voici un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    acadDoc.SendCommand "ZOOM E " & vbCr

  7. #7
    Futur Membre du Club
    Homme Profil pro
    mairise d oeuvre
    Inscrit en
    Avril 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : mairise d oeuvre

    Informations forums :
    Inscription : Avril 2022
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    bon... j'arrive pas a grand chose... j'ouvre bien une fenetre de recherche mais la macro n'ecrit pas dedans, et ne valide pas la recherche; independament de ca, je sais pas trop comment avancer ensuite : selectionner la reponse, zoomer dessus, appliquer un coefficient pour elargir un peu, creer une copie d ecran soit dans le presse papier soit dans un fichier en ecrasant le précedent, que je saurai recuperer ensuite sur excel ... sur excel je me debrouille mais les commandes autocad.....

  8. #8
    Futur Membre du Club
    Homme Profil pro
    mairise d oeuvre
    Inscrit en
    Avril 2022
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : mairise d oeuvre

    Informations forums :
    Inscription : Avril 2022
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    aidé par les pseudos IA ui ne sont que des programmes (...) j'avance un peu, mais j'ai toujours des bugs... le code suivant me genere une erreur : la methode GetBoundingBox de l'objet AcDbMText a echoué...
    quand GPT corrige cette erreur il m en fait d autres..... si vous avez des tuyaux....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    Sub RechercherEtZoomerTexteAutoCAD()
        Dim acadApp As Object  
        Dim acadDoc As Object  
        Dim texteRecherche As String  
        Dim cheminFichier As String  
        Dim entity As Object  
        Dim found As Boolean  
        Dim minPoint(0 To 2) As Double  
        Dim maxPoint(0 To 2) As Double  
        Dim margin As Double  
        Dim docAlreadyOpen As Boolean
     
        ' Spécifiez le chemin du fichier AutoCAD à ouvrir  
        cheminFichier = "C:\Chemin\Vers\Votre\Fichier.dwg"
     
        ' Définir le texte à rechercher  
        texteRecherche = "VotreTexteIci" ' Remplacez par le texte que vous voulez rechercher
     
        ' Définir la marge autour de la boîte englobante  
        margin = 10 ' Vous pouvez ajuster cette valeur selon vos besoins
     
        ' Démarrer AutoCAD si ce n'est pas déjà fait  
        On Error Resume Next  
        Set acadApp = GetObject(, "AutoCAD.Application")
        If acadApp Is Nothing Then  
            Set acadApp = CreateObject("AutoCAD.Application")
        End If  
        On Error GoTo 0
     
        ' Rendre AutoCAD visible  
        acadApp.Visible = True
     
        ' Vérifier si le fichier est déjà ouvert  
        docAlreadyOpen = False  
        For Each acadDoc In acadApp.Documents  
            If acadDoc.FullName = cheminFichier Then  
                docAlreadyOpen = True  
                Exit For  
            End If  
        Next acadDoc
     
        ' Ouvrir le fichier AutoCAD s'il n'est pas déjà ouvert  
        If Not docAlreadyOpen Then  
            Set acadDoc = acadApp.Documents.Open(cheminFichier)
        End If
     
        ' Vérifier si le fichier a bien été ouvert  
        If acadDoc Is Nothing Then  
            MsgBox "Erreur lors de l'ouverture du fichier AutoCAD."
            Exit Sub  
        End If
     
        ' Sélectionner l'onglet "Objet"
        acadDoc.SendCommand "_tilemode 1 "
     
        ' Parcourir toutes les entités du dessin pour rechercher le texte spécifié  
        found = False  
        For Each entity In acadDoc.ModelSpace  
            If entity.ObjectName = "AcDbText" Or entity.ObjectName = "AcDbMText" Then  
                If InStr(1, entity.TextString, texteRecherche, vbTextCompare) > 0 Then  
                    ' Obtenir les points de la boîte englobante  
                    entity.GetBoundingBox minPoint, maxPoint
     
                    ' Ajouter une marge autour de la boîte englobante  
                    minPoint(0) = minPoint(0) - margin  
                    minPoint(1) = minPoint(1) - margin  
                    maxPoint(0) = maxPoint(0) + margin  
                    maxPoint(1) = maxPoint(1) + margin
     
                    ' Zoomer sur la zone du texte avec marge  
                    acadApp.ZoomWindow minPoint, maxPoint
     
                    found = True  
                    Exit For  
                End If  
            End If  
        Next entity
     
        ' Vérifier si le texte a été trouvé ou non  
        If found Then  
            MsgBox "Le texte '" & texteRecherche & "' a été trouvé et affiché à l'écran."
        Else  
            MsgBox "Le texte '" & texteRecherche & "' n'a pas été trouvé dans le fichier."
        End If
     
        ' Fermer le fichier si nous l'avons ouvert  
        If Not docAlreadyOpen Then  
            acadDoc.Close False  
        End If
     
        ' Détruire les objets pour libérer la mémoire  
        Set acadDoc = Nothing  
        Set acadApp = Nothing  
    End Sub

Discussions similaires

  1. Piloter SAS depuis Excel
    Par Lameth dans le forum SAS Base
    Réponses: 1
    Dernier message: 31/08/2009, 14h22
  2. piloter outlook depuis Excel avec VB
    Par PacoE dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/05/2008, 22h12
  3. piloter IE depuis excel: petit probème
    Par biggione dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/08/2006, 23h05
  4. piloter powerpoint depuis excel
    Par cocktails dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 28/07/2006, 10h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo