Aller au contenu

Status AutoCAD en VBA


micc

Messages recommandés

Bonsoir à tous

 

J’ai fais une application vba dans Excel et dans la partie « ouverture du fichier dwg » je cherche le moyen en vba de détecter si autocad est déjà ouvert, ceci pour mettre dans mon code la condition suivante :

[si AutoCAD est ouvert j’ouvre le fichier]

[sinon je démarre AutoCAD puis j’ouvre le fichier]

 

Tout ça pour éviter d’ouvrir plusieurs fois AutoCAD bien sur

 

Merci d’avance pour votre aide

A+

 

Lien vers le commentaire
Partager sur d’autres sites

Salut micc

 

Voici le code que j'utilise en VB6

 

dim acadApp As AcadApplication

On Error Resume Next

Set acadApp = GetObject(, "AutoCAD.Application")

If Err Then

Err.Clear

Set acadApp = CreateObject("AutoCAD.Application")

If Err Then

MsgBox Err.Description

Exit Sub

End If

End If

 

Regarde devant, derrière apporte des regrets, les côtés envies et jalousie

Lien vers le commentaire
Partager sur d’autres sites

eagle4,

 

Je déclarerais acadApp global afin de pouvoir utiliser l'objet partout. e même, il faudrait penser à fermer cet objet à la sortie de la routine, sans quoi tu pourrais avoir consommation de mémoire inutilement.

 

Exemple: Public acadApp As AcadApplication

 

Autre chose, il te manque un Else entre

Err.Clear

Set acadApp = CreateObject("AutoCAD.Application")

 

Exemple:

Err.Clear

Else

Set acadApp = CreateObject("AutoCAD.Application")

 

Serge

Lien vers le commentaire
Partager sur d’autres sites

Salut Serge, eagle4 et le forum

 

Voici les quelques lignes du code que j’utilise pour ouvrir le fichier dans AutoCAD, mais je ne comprend pas très bien comment utiliser votre methode, vous pouvez faire un exemple d’apres le code suivant ? histoire de ne pas fondre les neurones. :)

 

Private Sub CommandButton1_Click()

 

Dim AcadApp As AutoCAD.AcadApplication

 

' On lance AutoCAD

Set AcadApp = New AutoCAD.AcadApplication

AcadApp.Visible = True

AcadApp.WindowState = acMax

 

' On ouvre le fichier dans AutoCAD

AcadApp.Documents.Open (mon_fichier_dwg)

AcadApp.Documents.Application.ZoomExtents

 

End Sub

 

Merci A+

 

Lien vers le commentaire
Partager sur d’autres sites

micc,

 

Tu ne peux simplement faire un New. Tu aurais un objet compatible mais avec rien dedans. Le GetObject demande à Windows de retrouver l'objet ouvert.

 

Je te conseille d'examiner le fichier C:\Program Files\AutoCAD 200xx\Sample\ActiveX\ExtAttr\ExtAttr.xls qui contient une macro faisant exactement ce que tu cherche.

 

Serge

 

Lien vers le commentaire
Partager sur d’autres sites

If Err Then

Err.Clear

Set acadApp = CreateObject("AutoCAD.Application")

If Err Then

MsgBox Err.Description

Exit Sub

End If

End If

 

Salut Serge et micc

 

Le "ELSE" ne manque pas :

je teste si AUTOCAD est ouvert par getobject

si il y a erreur j'efface celle-ci ET j'ouvre AUTOCAD : createobject.

Si il y a de nouveau erreur alors j'imprime l'erreur et je sort du Sub

 

Pour la déclaration d'acadApp, tu as raison il vaut mien la rendre "Public"

 

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

 

Pour micc

 

Voici le code que j'utilise :

 

Public acadApp As AcadApplication

Public acadDoc As AcadDocument

On Error Resume Next

Set acadApp = GetObject(, "AutoCAD.Application")

If Err Then

Err.Clear

Set acadApp = CreateObject("AutoCAD.Application")

If Err Then

MsgBox Err.Description

Exit Sub

End If

End If

acadDoc.Open courant ' ouvre le dessin dont le nom est contenu dans la variable "courant"

acadDoc.Application.ZoomExtents

 

Eagle4

 

 

Regarde devant, derrière apporte des regrets, les côtés envies et jalousie

Lien vers le commentaire
Partager sur d’autres sites

Intéressant comme sujet !

 

Il serait intéressant de pouvoir entré la tabulation dans l'éditeur du forum. Mais d'après le webmaster , cela n'existe pas, dommage !

 

.....Public acadApp As AcadApplication

.....Public acadDoc As AcadDocument

 

.....On Error Resume Next

 

.....Set acadApp = GetObject(, "AutoCAD.Application")

.....If Err Then

..........Err.Clear

 

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

.....If Err Then

..........MsgBox Err.Description

 

.....End If

.....End If

.....Exit Sub

 

 

Ça facilité la lecture ......

 

 

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité