CADxp: Piloter AutoCAD depuis VBA Excel - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Piloter AutoCAD depuis VBA Excel

#1 L'utilisateur est hors-ligne   DenisHen 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2462
  • Inscrit(e) : 17-décembre 05
  • LocationSAINT FLORENTIN (Yonne)

Posté 10 janvier 2014 - 09:35

Bonjours à tous,

J'ai créé une macro VBA sous Excel qui fait des fichiers script (.scr) très gros, donc, très long à traiter dans AutoCAD...

J'aimerai savoir s'il existe un FAQ ou des "Trucs et astuces" pour piloter AutoCAD depuis ma macro VBA Excel.

Le script dessine des points, des textes, des textes multilignes, des polylignes 3D....

D'avence merci...

Denis...
LinkedIn et mon site...
Windows 10 Pro 64bits / AutoCAD MAP 3D 2018.0.2
Covadis 16 / Microstation V8i

Un clavier azerty en vaut deux...
Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres...
Davantage d'avantages, avantagent davantage (Bobby Lapointe)
0

#2 L'utilisateur est hors-ligne   Maxence DELANNOY 

  • ceinture bleue
  • Groupe : Membres
  • Messages : 140
  • Inscrit(e) : 12-mars 03
  • LocationSaint Omer, France (62)

Posté 12 janvier 2014 - 13:03

Tu peux piloter AutoCAD (version complète) depuis Excel via l'API COM d'AutoCAD en "out-of-process".

Il faut ajouter la référence à AutoCAD (AutoCAD 20xx Type Library) dans ton projet VBA Excel, puis tu peux te connecter avec AutoCAD et utiliser l'API pour créer des entités.

Public Sub StartAutoCAD()
    Dim acadApp As AcadApplication
    On Error Resume Next
    ' Essaie de se connecter à une instance d'AutoCAD en cours d'exécution
    Set acadApp = GetObject(, "AutoCAD.Application")
    If Err Then
        Err.Clear
        ' Pas d'AutoCAD en cours d'exécution, on en démarre un
        Set acadApp = CreateObject("AutoCAD.Application")
        If Err Then
            MsgBox Err.Description
            Exit Sub
        End If
    End If
    On Error GoTo 0
    MsgBox "Now running " + acadApp.Name + " version " + acadApp.Version
    ' On affiche la fenêtre sinon elle reste invisible
    acadApp.Visible = True
    ' Crée une ligne du point 0,0 au point 10,10
    Dim p1(2) As Double
    Dim p2(2) As Double
    p2(0) = 10: p2(1) = 10
    acadApp.ActiveDocument.ModelSpace.AddLine p1, p2
End Sub


La documentation de l'API était fournie avec AutoCAD jusqu'à la version 2010 au moins mais dans les dernières versions, elle est en ligne par défaut et elle est difficile à trouver (ils ont eu la bonne idée chez Autodesk de créer une aide sans table des matières ! : http://docs.autodesk.../FRA/index.html)
Maxence DELANNOY
Développement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAO
WIIP - http://wiip.fr
0

#3 L'utilisateur est hors-ligne   DenisHen 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2462
  • Inscrit(e) : 17-décembre 05
  • LocationSAINT FLORENTIN (Yonne)

Posté 13 janvier 2014 - 07:44

Salut,

Merci Maxence, je vais potasser ta réponse...

Denis...
LinkedIn et mon site...
Windows 10 Pro 64bits / AutoCAD MAP 3D 2018.0.2
Covadis 16 / Microstation V8i

Un clavier azerty en vaut deux...
Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres...
Davantage d'avantages, avantagent davantage (Bobby Lapointe)
0

#4 L'utilisateur est hors-ligne   a.faurie 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 3
  • Inscrit(e) : 07-février 14

Posté 13 février 2014 - 10:07

Bonjour,
j'ai un peu les mêmes besoins,
je souhaite pouvoir mettre à jour les propriétés du dessin "PROPDESS" depuis excel.
comment je peux faire ?
0

#5 L'utilisateur est hors-ligne   a.faurie 

  • ceinture blanche
  • Groupe : Membres
  • Messages : 3
  • Inscrit(e) : 07-février 14

Posté 07 juillet 2017 - 11:04

J'ai trouver avec le code suivant !

    ' Création de la propriété personalisée
        AcadPlan.SummaryInfo.AddCustomInfo "titre_affaire", titre_affaire
    'Si la propriété existe déjà, il y aura une erreur -2145386475
        If Err.Number = -2145386475 Then
    's'il y a une erreur -2145386475 on mets à jour la veleur
        AcadPlan.SummaryInfo.SetCustomByKey "titre_affaire", titre_affaire
        ElseIf Err.Number = 0 Then
    'Si une autre erreur se produit on continue comme si de rien
        Else
        End If

0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)