Lancer un script a partir de VBA sur autocad

sindy1986 Messages postés 6 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 10 avril 2008 - 9 avril 2008 à 17:26
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 - 10 avril 2008 à 11:03
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

lolokun Messages postés 1241 Date d'inscription mardi 10 octobre 2006 Statut Membre Dernière intervention 27 août 2013 7
9 avril 2008 à 17:35
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..
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
10 avril 2008 à 08:41
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
0
sindy1986 Messages postés 6 Date d'inscription lundi 3 mars 2008 Statut Membre Dernière intervention 10 avril 2008
10 avril 2008 à 10:29
C koi l'API c'est dans VBA ou autoCAD, j'ai tapé Shellexecute dans l'aide des 2 logiciel et g rien trouvé!!!
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
10 avril 2008 à 10:49
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
10 avril 2008 à 10:57
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
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
10 avril 2008 à 11:03
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
0
Rejoignez-nous