Lancer un script a partir de VBA sur autocad

Signaler
Messages postés
6
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
10 avril 2008
-
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
-
Bonjours,
Je rencontre actuellement un probléme avec vba, j'arrive à ouvrir autocad a partir de ce dernier et a ouvrir un fichier précis (que je dois compléter) ainsi qu a créer un script, mais je n'arrive pas à exécuter mon script directement sans devoir passer pas autocad
quelqu un aurait la commande???

merci.

6 réponses

Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
6
Bonjour,


Pour exécuter un script, notamment par exemple les fichiers vbs, fais
une petite recherche avec l'API Shellexecute et tu devrais trouver ton
bonheur.

L'expérience, c'est une connerie par jour, mais jamais la même..
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
bonjour
qu'entends tu par  script ?
l'éxécution d'un lisp ????
ci c'est bien cela oublie tout de suite !!!!
autocad ayant depuis la version 2000 un vba intégré tu peux lui faire faire ce que tu veux sans changer de langage (à quelques détails près)
quand à la façon de faire bosser autocad par automation il suffit d'aller se balader dans l'aide vba d'autocad qui te propose presque à toutes les pages un lien (en haut à droite) pour l'explication concernant l'éxécution d'une fonction depuis une autre application
Messages postés
6
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
10 avril 2008

C koi l'API c'est dans VBA ou autoCAD, j'ai tapé Shellexecute dans l'aide des 2 logiciel et g rien trouvé!!!
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
pas besoin d'APi pour piloter autocad à partir de VB6 puisque autocad integre VBA qio est très très proche de VB6
pour initialiser une cession autocad depuis VB6 il faut créer l'objet

    Set acadApp = GetObject(, "AutoCAD.Application.17")    'j'utilise autocad2008 d'où le 17 pour autocad 2004 c'était 16
    If Err Then
       Err.Clear

       Set acadApp = CreateObject("AutoCAD.Application.17")

    end if
    Set Acaddoc = acadApp.Documents
    Acaddoc.Open (chemin complet du fichier *.dwg à ouvrir)
    acadApp.Visible = True

    ensuite tu copie ta macro autocad (si tu en as une qui fait déja ce que tu veux) et tu utilise AcadDoc à la place de ThisDrawing

avec ce bout de code tu n'as pas besoin d'ouvrir manuellement autocad  il s'en charge pour toi
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
bien sûr quand tu as fini il faut penser à refermer l'objet avec
set AcadDoc = nothing
set AcadApp = nothing

mais éventuellement tu pourrais aussi fermer autocad juste avant et dans ce cas tu feras
    If Acaddoc.count > 0 Then     'boucle pour fermer ,en les sauvegardant , tous les .dwg ouverts
        Set Acaddoc = acadApp.ActiveDocument
        Acaddoc.Save
        Do Until Acaddoc.Saved = True
        Loop
        AcadDoc.close
    End If
    acadApp.Quit
    set AcadDoc = nothing
    set AcadApp = nothing
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
oups ! j'ai oublié une boucle dans le dernier bout de code
      If Acaddoc.count > 0 Then
        For I = Acaddoc.count To 1 Step -1
            Set docu = Acaddoc(I - 1)
            docu.Activate
            docu.Save
            Do Until docu.Saved = True
            Loop
            docu.Close
        Next I
    end if
    acadApp.Quit
    set docu = nothing
    set AcadDoc = nothing
    set AcadApp = nothing