Aller au contenu

Liste des types de ligne depuis Excel


DenisHen

Messages recommandés

Bonjour à la communauté.
Voilà, je tombe sur un problème que je n'arrive pas à identifier.
Je cherche la liste des types de ligne définis dans le dessin courant d'AutoCAD et ce, depuis Excel.
J'ai donc écris ça :

Public Sub ImpTypLignCAD()
    Dim AcadApp As Object
    Set AcadApp = GetObject(, "AutoCAD.Application")
    Dim DocAutoCad As Object
    Set DocAutoCad = AcadApp.ActiveDocument

    Dim entry As Object
    For Each entry In DocAutoCad.Linetypes
        MsgBox "Calq=" & entry.name
        Lign = Lign + 1
    Next
End Sub

Mais je n'obtiens que trois types de ligne : ByBlockByLayer et Continuous. Sachant qu'il y en a d'autres dans le dessin.
J'ai le même problème pour tous les autres dessins.

Si quelqu'un a une astuce, un conseil... Je suis preneur...

Bien à toi, la communauté.
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @DenisHen

Es-tu ABSOLUMENT CERTAIN de ne pas avoir chargé d'autres types de lignes ?
Je viens de faire un test de ton code et dès que je charge un type de ligne il apparaît bien au lancement de la routine...

Attention, ça ne signifie pas pour autant qu'il est utilisé, il peut être chargé, mais non utilisé donc si je comprends bien à ne pas prendre en compte dans ta liste.

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

J'ai pas l'impression que ce bout de code récupére le "bon" dessin dans autocad...

Si Didier a ouvert un seul dessin il va effectivement charger les types de lignes dans la collection que tu lui as indiquer mais si ton programme voit dessin1 ou juste l'objet autocad oui il ne t'en sortiras que 3...

 

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @didier et @Curlygoth.
Merci pour votre retour.
Je suis en train de continuer mes recherches.
Et je viens de découvrir une chose très curieuse, le programme me sort ces trois types de ligne, même sans AutoCAD.
Je ne comprend pas pourquoi ce programme ne s'arrête pas à : "Set AcadApp = GetObject(, "AutoCAD.Application")" si AutoCAD n'est pas lancé...
Mais je continu de chercher.
Encore merci à vous...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

 

Regarde tes processus en cours...

Attend il n'y a pas le create reprend le code que gile(s) t'avais donné pour ouvrir / cibler un dwg !

L'aide VBA https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/createobject-function

 

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Salut @Curlygoth, et merci pour ton aide.
Il me semble que le "CreateOgject" créer le lencament de l'application, mais le code que m'a écrit @(gile), il créer ou retourne l'application lancée.
Mais j'ai du retouché son code, car si je le colle dans le VBA d'Excel, ça me donne ça (et je n'aime pas le rouge) : 

Pour CurlyGoth.jpg
Je pense que c'est exactement ce qu'il me faux, mais je doute que ce que j'ai fais soit convenable...
Encore merci à toi...
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Ok, c'est fait.
J'avais aussi pris le deuxième code de (gile). Mais il lance systématiquement une nouvelle session d'AutoCAD.
Ce code ne voit pas l'AutoCAD déjà en instance...:
 

Pour CadXP.jpg

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Par contre, maintenant, AutoCAD se lance en moins d'une seconde...
Curieux...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Stoppez tout ! ! !
Je pense avoir un début de solution, et je ne voudrais pas vous faire perdre de temps, je continu de chercher...
Je pense que j'ai un début de solution avec ça, qui à l'air de fonctionner :

    Dim acadApp As Object
    On Error Resume Next
    Set acadApp = GetObject(, "AutoCAD.Application")
    On Error GoTo 0
    If acadApp Is Nothing Then MsgBox "Aucun AutoCAD en cours a été trouvé": Exit Sub
    acadApp.Visible = True

Bien à toi, la communauté...
Denis...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Oui, merci @Curlygoth pour ta confiance et ton soutient...
C'est bon, je commence à avoir des résultats...
Voici un code qui fonctionne :

Public Sub ImpTypLignCAD_CadXP()
    Dim AcadApp As Object
    On Error Resume Next
    Set AcadApp = GetObject(, "AutoCAD.Application")
    If AcadApp Is Nothing Then MsgBox "Aucun AutoCAD en cours a été trouvé": Exit Sub
    Dim DocAutoCad As Object
    Set DocAutoCad = AcadApp.ActiveDocument
    Dim TypLign As Object
    Debug.Print "*Début*"
    For Each TypLign In DocAutoCad.Linetypes
        Debug.Print TypLign.name
    Next
    Debug.Print "*Fin*"
End Sub

Je suis content, et vous remercie par la même occasion.
Bien à toi, la communauté.
Denis (très content)...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

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é