Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 11 sur 11
  1. #1
    Candidat au titre de Membre du Club
    Profil pro A B
    Inscrit en
    novembre 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Nom : A B

    Informations forums :
    Inscription : novembre 2009
    Messages : 112
    Points : 10
    Points
    10

    Par défaut Autocad 2010 et vba

    Bonjour tous le monde.

    Je ne sais pas si c'est le bon endroit pour poser ma question.
    je cherche à automatisé une commande qui je pense est hyper simple à faire.
    Sur Autocad 2010 et vba:

    Je souhaite faire par exemple
    3 lignes de 10 colonnes de rectangle 1000mm x 1700mm avec comme équart 200 sur l'axe X et 100 sur Y.

    Par la suite je voudrais demander par le biais d'un inputbox par exemple le nombre de lignes et de colonne.

    Je voulais me servir de ce post.

    mais comment faire un "réseau" répéter ce rectangle avec un certain nombre de ligne et de colonne ?

    merci à vous

  2. #2
    Rédacteur/Modérateur
    Avatar de fring
    Homme Profil pro Fred Thomas
    Engineering
    Inscrit en
    février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred Thomas
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : février 2008
    Messages : 3 900
    Points : 7 047
    Points
    7 047

    Par défaut

    Bonjour,

    Pour piloter Autocad à partir d'Excel, tu peux tester le code ci-dessous
    N'ayant pas Autocad sous la main le code est fait à l'aveugle...
    Code :
    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
    Sub Envoi_Cmd()
    'Nécessite d'activer la référence Autocad xxxx type library
    Dim L As Single, H As Single
    Dim X As Single, Y As Single
    Dim ptX As Single, ptY As Single
    Dim posX As Single, posY As Single
    Dim nbLig As Integer, nbCol As Integer
    Dim repLig As Integer, repCol As Integer
    Dim NomDWG As String
     
    'paramètres à définir
    NomDWG = "NomPlan.dwg" '<-- nom du plan dwg
    L = 1000 '<-- Largeur du rectangle
    H = 1700 '<-- Hauteur du rectangle
    X = 200 '<-- écart axe X
    Y = 100 '<-- écart axe Y
    ptX = 0 '<-- point de départ de l'ensemble axe X
    ptY = 0 '<-- point de départ de l'ensemble axe Y
     
    'choix du nombre de ligne via InputBox
    nbLig = Application.InputBox("Veuillez introduire le nombre de lignes", "NOMBRE DE LIGNES", , , , , , 1)
    If nbLig <= 0 Then Exit Sub '<-- on quitte la procédure si le nombre de lignes est inférieur ou égal à 0
     
    'choix du nombre de colonne via InputBox
    nbCol = Application.InputBox("Veuillez introduire le nombre de colonnes", "NOMBRE DE COLONNES", , , , , , 1)
    If nbCol <= 0 Then Exit Sub '<-- on quitte la procédure si le nombre de colonnes est inférieur ou égal à 0
     
    posX = ptX '<-- position sur l'axe X du premier rectangle
    posY = ptY '<-- position sur l'axe Y du premier rectangle
     
    For repLig = 1 To nbLig
        For repCol = 1 To nbCol
            'le fichier Autocad doit être ouvert
            AutoCAD.Documents(NomDWG).SendCommand "_rectang" & vbCr & posX & "," & posY & vbCr & L & "," & H & vbCr
            posX = posX + L + X
        Next repCol
        posX = ptX
        posY = posY + H + Y
    Next repLig
     
    End Sub
    Je suppose que tu sais que sur Autocad il y a une fonction toute faite pour réaliser la copie d'un objet sur X colonnes et Y lignes ?
    LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

    Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
    En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)

  3. #3
    Candidat au titre de Membre du Club
    Profil pro A B
    Inscrit en
    novembre 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Nom : A B

    Informations forums :
    Inscription : novembre 2009
    Messages : 112
    Points : 10
    Points
    10

    Par défaut

    Merci beaucoup.

    Oui oui je sais cela s'appelle un réseau mais je ne sais pas du tout le piloter via Autocad en vba.

    Et c'est possible de fonctionner cette macro sans excel ? Juste par Autocad. ?
    Le topic a été déplacer dans ce forum car il pensais avoir plus de réponse ici.
    Je le remercie car il ne s'est pas trompé :-).

    Merci a toi :-)

  4. #4
    Candidat au titre de Membre du Club
    Profil pro A B
    Inscrit en
    novembre 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Nom : A B

    Informations forums :
    Inscription : novembre 2009
    Messages : 112
    Points : 10
    Points
    10

    Par défaut

    est-il possible de donner en nom de document Autocad Active drawing ? ou alors tout simplement de relever le nom du document actif ?

    J'ai un souci sinon quand l’input box s'ouvre impossible d'écrire dedans.
    Sa se dé-sélectionne faut cliquer plusieurs fois et appuyer sur la touche numérique pour pouvoir écrire dedans. Bizarre...

    Merci à toi fring

  5. #5
    Rédacteur/Modérateur
    Avatar de fring
    Homme Profil pro Fred Thomas
    Engineering
    Inscrit en
    février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred Thomas
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : février 2008
    Messages : 3 900
    Points : 7 047
    Points
    7 047

    Par défaut

    Directement via VBA Autocad, tu peux tester ceci :
    Code :
    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
    Option Base 1 '<-- permet de commencer les variables tableaux à 1 au lieu de 0
     
    Sub Trace_Rectangle()
    '*** déclaration des variables ***
    Dim docAcad As AcadDocument
    Dim objPoly As AcadLWPolyline
    Dim Pts(1 To 10) As Double
    Dim RetVal As Variant
    Dim L As Single, H As Single
    Dim X As Single, Y As Single
    Dim ptX As Single, ptY As Single
    Dim nbLig As Long, nbCol As Long
     
    '*** définition des paramètres ***
    L = 1000 '<-- Largeur du rectangle
    H = 1700 '<-- Hauteur du rectangle
    X = 200 '<-- écart axe X
    Y = 100 '<-- écart axe Y
    ptX = 0 '<-- point de départ de l'ensemble axe X
    ptY = 0 '<-- point de départ de l'ensemble axe Y
    nbLig = 3 '<-- nombre de lignes
    nbCol = 10 '<-- nombre de colonnes
     
    '*** définition du plan dwg ***
    Set docAcad = AutoCAD.ActiveDocument 'plan actif
     
    '*** traçage du premier rectangle
    'coordonnées X:Y du point de départ
    Pts(1) = ptX: Pts(2) = ptY
    'coordonnées X:Y du 2ème point formant la 1ère ligne verticale
    Pts(3) = ptX: Pts(4) = ptY + H
    'coordonnées X:Y du 3ème point formant la 2ème ligne horizontale
    Pts(5) = ptX + L: Pts(6) = ptY + H
    'coordonnées X:Y du 4ème point formant la 3ème ligne verticale
    Pts(7) = ptX + L: Pts(8) = ptY
    'coordonnées X:Y du 5ème point formant la 4ème ligne horizontale
    Pts(9) = 0: Pts(10) = 0
    'traçage du rectangle
    Set objPoly = docAcad.ModelSpace.AddLightWeightPolyline(Pts)
     
    'création du réseau de rectangles
    RetVal = objPoly.ArrayRectangular(nbLig, nbCol, 1, Y + H, X + L, 1)
     
    End Sub
    Concernant l'InputBox j'ai le même problème, elle ne semble pas fonctionner correctement

    Une solution moins rigide serait de créer un UserForm avec plusieurs TextBox dans lesquelles tu pourras introduire toutes les valeurs nécessaires (largeur rectangle, hauteur rectangle, positions de départ, nombre de lignes et de colonnes, décalages, etc...)

    Mais je me répète, c'est un peu réinventer la roue et je ne vois pas trop l'intérêt de réaliser cela vu que la fonction existe en base dans Autocad
    LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

    Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
    En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)

  6. #6
    Rédacteur/Modérateur
    Avatar de fring
    Homme Profil pro Fred Thomas
    Engineering
    Inscrit en
    février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred Thomas
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : février 2008
    Messages : 3 900
    Points : 7 047
    Points
    7 047

    Par défaut

    Citation Envoyé par toniob44 Voir le message
    J'ai un souci sinon quand l’input box s'ouvre impossible d'écrire dedans.
    Je viens de constater que se problème se produit lorsqu'on lance la macro via l'éditeur VBA. En la lançant directement d'Autocad (Alt+F8) ça fonctionne.

    Ci-dessous le code adapté avec des InputBox
    Code :
    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
    Option Base 1 '<-- permet de commencer les variables tableaux à 1 au lieu de 0
     
    Sub Trace_Rectangle()
    '*** déclaration des variables ***
    Dim docAcad As AcadDocument
    Dim objPoly As AcadLWPolyline
    Dim Pts(1 To 10) As Double
    Dim RetVal As Variant
    Dim L As Single, H As Single
    Dim X As Single, Y As Single
    Dim ptX As Single, ptY As Single
    Dim nbLig As Long, nbCol As Long
     
    '*** définition des paramètres ***
    L = 1000 '<-- Largeur du rectangle
    H = 1700 '<-- Hauteur du rectangle
    X = 200 '<-- écart axe X
    Y = 100 '<-- écart axe Y
    ptX = 0 '<-- point de départ de l'ensemble axe X
    ptY = 0 '<-- point de départ de l'ensemble axe Y
    nbLig = Val(InputBox("Veuillez définir le nombre de lignes", "NOMBRE DE LIGNES")) '<-- nombre de lignes
    nbCol = Val(InputBox("Veuillez définir le nombre de colonnes", "NOMBRE DE COLONNES")) '<-- nombre de colonnes
     
    '*** définition du plan dwg ***
    Set docAcad = AutoCAD.ActiveDocument 'plan actif
     
    '*** traçage du premier rectangle
    'coordonnées X:Y du point de départ
    Pts(1) = ptX: Pts(2) = ptY
    'coordonnées X:Y du 2ème point formant la 1ère ligne verticale
    Pts(3) = ptX: Pts(4) = ptY + H
    'coordonnées X:Y du 3ème point formant la 2ème ligne horizontale
    Pts(5) = ptX + L: Pts(6) = ptY + H
    'coordonnées X:Y du 4ème point formant la 3ème ligne verticale
    Pts(7) = ptX + L: Pts(8) = ptY
    'coordonnées X:Y du 5ème point formant la 4ème ligne horizontale
    Pts(9) = 0: Pts(10) = 0
    'traçage du rectangle
    Set objPoly = docAcad.ModelSpace.AddLightWeightPolyline(Pts)
     
    'création du réseau de rectangles
    RetVal = objPoly.ArrayRectangular(nbLig, nbCol, 1, Y + H, X + L, 1)
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

    Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
    En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)

  7. #7
    Candidat au titre de Membre du Club
    Profil pro A B
    Inscrit en
    novembre 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Nom : A B

    Informations forums :
    Inscription : novembre 2009
    Messages : 112
    Points : 10
    Points
    10

    Par défaut

    Merci beaucoup.

    Est-il possible de demander à l'utilisateur la position de départ ?
    En cliquant par exemple dans l'espace objet ?

    Merci de ton aide en tout cas

  8. #8
    Rédacteur/Modérateur
    Avatar de fring
    Homme Profil pro Fred Thomas
    Engineering
    Inscrit en
    février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred Thomas
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : février 2008
    Messages : 3 900
    Points : 7 047
    Points
    7 047

    Par défaut

    Oui c'est possible, teste ceci :
    Code :
    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
    Option Base 1 '<-- permet de commencer les variables tableaux à 1 au lieu de 0
     
    Sub Trace_Rectangle()
    '*** déclaration des variables ***
    Dim docAcad As AcadDocument
    Dim objPoly As AcadLWPolyline
    Dim Pts(1 To 10) As Double
    Dim RetVal As Variant, RetPos As Variant
    Dim L As Single, H As Single
    Dim X As Single, Y As Single
    Dim ptX As Single, ptY As Single
    Dim nbLig As Long, nbCol As Long
     
    '*** définition des paramètres ***
    L = 1000 '<-- Largeur du rectangle
    H = 1700 '<-- Hauteur du rectangle
    X = 200 '<-- écart axe X
    Y = 100 '<-- écart axe Y
    nbLig = Val(InputBox("Veuillez définir le nombre de lignes", "NOMBRE DE LIGNES")) '<-- nombre de lignes
    nbCol = Val(InputBox("Veuillez définir le nombre de colonnes", "NOMBRE DE COLONNES")) '<-- nombre de colonnes
     
    '*** définition du plan dwg ***
    Set docAcad = AutoCAD.ActiveDocument 'plan actif
     
    '*** définition du point de départ
    MsgBox "Veuillez sélectionner un point de départ"
    RetPos = docAcad.Utility.GetPoint
    ptX = RetPos(0)
    ptY = RetPos(1)
     
    '*** traçage du premier rectangle
    'coordonnées X:Y du point de départ
    Pts(1) = ptX: Pts(2) = ptY
    'coordonnées X:Y du 2ème point formant la 1ère ligne verticale
    Pts(3) = ptX: Pts(4) = ptY + H
    'coordonnées X:Y du 3ème point formant la 2ème ligne horizontale
    Pts(5) = ptX + L: Pts(6) = ptY + H
    'coordonnées X:Y du 4ème point formant la 3ème ligne verticale
    Pts(7) = ptX + L: Pts(8) = ptY
    'coordonnées X:Y du 5ème point formant la 4ème ligne horizontale
    Pts(9) = ptX: Pts(10) = ptY
    'traçage du rectangle
    Set objPoly = docAcad.ModelSpace.AddLightWeightPolyline(Pts)
     
    'création du réseau de rectangles
    RetVal = objPoly.ArrayRectangular(nbLig, nbCol, 1, Y + H, X + L, 1)
     
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

    Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
    En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)

  9. #9
    Candidat au titre de Membre du Club
    Profil pro A B
    Inscrit en
    novembre 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Nom : A B

    Informations forums :
    Inscription : novembre 2009
    Messages : 112
    Points : 10
    Points
    10

    Par défaut

    Niquel
    Merci beaucoup Fring !

    Une dernière question est-il possible de garder la macro tout le temps dans autocad ? un peu comme avec excel avec le normal.dot. car il me demande à chaque fois d'enregistrer la macro en .dvb à chaque fois ?

    Merci à toi.

  10. #10
    Rédacteur/Modérateur
    Avatar de fring
    Homme Profil pro Fred Thomas
    Engineering
    Inscrit en
    février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Nom : Homme Fred Thomas
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : février 2008
    Messages : 3 900
    Points : 7 047
    Points
    7 047

    Par défaut

    Tu enregistres la macro une seule fois au format dvb et ensuite à chaque fois que tu en as besoin dans un nouveau plan, tu fais glisser le fichier dvb dans la fenêtre du plan autocad
    LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

    Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
    En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)

  11. #11
    Candidat au titre de Membre du Club
    Profil pro A B
    Inscrit en
    novembre 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Nom : A B

    Informations forums :
    Inscription : novembre 2009
    Messages : 112
    Points : 10
    Points
    10

    Par défaut

    Citation Envoyé par fring Voir le message
    Tu enregistres la macro une seule fois au format dvb et ensuite à chaque fois que tu en as besoin dans un nouveau plan, tu fais glisser le fichier dvb dans la fenêtre du plan autocad
    Merci beaucoup c'est très gentil.

    Mon problème est donc résolu.
    Je pense que je ferai appel à tes connaissances une nouvelle fois si tu le veux bien avec Autocad.

    Encore une fois merci beaucoup.
    C'est super d'avoir des gens comme toi qui partage leur savoir

    A bientôt sur le fofo

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •