Aller au contenu

Comment connaitre les versions d'AutoCAD installées et comment charger la bonne librairie sous Excel.


DenisHen

Messages recommandés

Un grand bonjour à la communauté.

Je suis en train de développer un classeur Excel (.XLSM) qui créé des calques directement dans AutoCAD.

Mon problème est en deux partie, causé par un futur partage. Sachant que tout le monde n'a pas la même version d'Excel que moi ni la même version d'AutoCAD que moi :
 - Comment, en VBA bien-sur, connaitre la et/ou les versions d'AutoCAD installées sur le poste ?
 - Comment charger le ou les "AutoCAD XXXX Type Library" correspondants aux AutoCAD lancées et/ou installés ?
(il faut aussi tenir compte aussi que, grâce à une lumineuse idée de @rebcao, je compte créer aussi une macro qui créera un fichier script (.SCR), donc, sans AutoCAD sur la machine)

Actuellement, je lance mon Excel 365 depuis mon poste et contrôle mon AutoCAD 2022, mais si je partage mon classeur avec un utilisateur d'AutoCAD 2019 (par exemple), mes macros ne fonctionnerons pas, car je ne charge que la librairie d'AutoCAD 2022 et non celle d'AutoCAD 2019.

Mon but étant de partager ce classeur (qui sera autant pour les versions "complètes" que les versions LT), comment charger le ou les "AutoCAD * Type Library" existantes dans le système ?

Si quelqu'un a une astuce, un conseil, un lien, une solution... 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

Salut (gile), et un grand merci pour ton aide.

Mais j'ai toujours hésiter à fouiller la base de registre (car j'ai lu que, même en lecture seule (en consultation), ça pouvait être dangereux, cela réveille certains logiciels latents (lu sur www.developpez.net mais je ne sais plus où), surtout que je ne sais pas comment faire...
Et, comme tu me le conseilles, je n'ai pas trouvé comment : 
 - fouiller la totalité de cette clef, et en VBA, sans autorisation "utilisateur" ou "administrateur",
 - et ensuite, comment faire pour, éventuellement, charger tous les "Type Library" existants, dans le système trouvés dans cette clef..

Je pense à un "Do While" tant qu'il existe une clef (mais laquelle), ou à un "For...Next" du nombre de clef.

Encore un grand merci à toi, mais je vais fouiller...

Bien à toi (gile).

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

Hello

HKEY_CURRENT_USER / Software / Autodesk / AutoCAD / R1x.x


Cle : R17.0 pour MAP/CIVIL 2007
Cle : R17.1 pour MAP/CIVIL 2008
Cle : R17.2 pour MAP/CIVIL 2009
Cle : R18.0 pour MAP/CIVIL 2010
Cle : R18.1 pour MAP/CIVIL 2011
Cle : R18.2 pour MAP/CIVIL 2012
Cle : R19.0 pour MAP/CIVIL 2013
Cle : R19.1 pour MAP/CIVIL 2014
Cle : R20.0 pour MAP/CIVIL 2015
Cle : R20.1 pour MAP/CIVIL 2016
Cle : R21.0 pour MAP/CIVIL 2017
Cle : R22.0 pour MAP/CIVIL 2018
Cle : R23.0 pour MAP/CIVIL 2019
Cle : R23.1 pour MAP/CIVIL 2020
Cle : R24.0 pour MAP/CIVIL 2021

Cle : R24.1 pour MAP/CIVIL 2022

Bon WE, La Sante, Bye, lecrabe

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Salut à toi, Ô Décapode.

Mais tu ne me proposes que les version "Civil", qu'en est-il des autres version (LT, MAP...), et sans les librairies disponibles à charger, quel "Type Library" charger, si elles sont "disponibles", sur le système courant...

En tous cas, mille mercis...

Bon week-end à toi aussi...

Moi, Nous, Et malheureusement encore triste, même si on ne le dit plus...☹️

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

Le 06/11/2021 à 19:05, DenisHen a dit :

Mais tu ne me proposes que les version "Civil", qu'en est-il des autres version (LT, MAP...)

Ces numéros de version (release number) valent pour toutes les versions d'AutoCAD (LT, Vanilla et verticaux).

Les clés enfant donne les identifiants locaux (LocaleId) et de produit (ProductId). Par exemple AutoCAD-5101:40C pour AutoCAD 2020(5), Vanilla (01), français (40C). Voir ce sujet.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Ok. Merci à toi, LeCrabe et à toi aussi Ô (gile).

Donc, je suis allé dans ma base de registre et j'ai trouvé "une" clef : "Ordinateur\HKEY_CURRENT_USER\SOFTWARE\Autodesk\AutoCAD\R24.1\CurVer", qui semble être le centre de mon intérêt.

Mais comment obtenir la totalité de ces clefs et surtout, comment charger les "Type Library" de ces versions existantes en VBA ?

Merci encore, je fouille actuellement pour une solution grâce à votre aide...

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

Hello

Remarque du vieux Decapode NUL en développement !

Si tu fais du Dev en VBA sur AutoCAD 20XX, comment peux tu savoir si le VBA AutoCAD 20XX a ete installe ou pas sur le PC concerne qui va tenter d'exécuter ta routine VBA ??

Bon WE, la Sante, Bye, lecrabe 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Salut à toi, Ô  Décapode...

C'est justement ce que je recherche...

Je ne cherche pas la version du VBA, mais la/les version(s) d'AutoCAD installés(es), et en VBA...

Et ensuite, quel est l'AutoCAD en cours d'exécution...

PS : tu dois être loin du NUL, sérieusement...

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

Salut à toutes et à tous.

Bon, je viens de faire un tour de plusieurs heures, sur "Registry values for ProductID and LocaleID for AutoCAD and the vertical products".

J'ai bien compris que je n'entravais rien... Je ne sais pas quoi faire avec ça...

Comment faire ? ? ?

Je cherche juste à connaitre les éventuelles version d'AutoCAD installées sur un poste et, charger les "Type Library" présent le cas échéant.

Je suis novice en tout et débutant pour le reste... Et là, @(gile) tu m'as nettement surestimé ! ! !

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

Denis, j'ai vraiment le sentiment que tu te compliques la vie parce que tu prends problème dans le mauvais sens.

Si tu veux utiliser le VBA pour faire communiquer AutoCAD et Excel, il serait beaucoup plus simple de le faire depuis AutoCAD, ce qui résoudrait tes soucis de version de bibliothèque (qui serait forcément installée sur le poste pour pouvoir utiliser le programme).

Sinon, depuis Excel, la solution de générer un script est, à mon sens, la plus simple et elle permettrait de lancer ce script dans les versions LT comme dans les versions pleines sur lesquelles le module VBA n'est pas installé (ce qui représente très probablement la grande majorité).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @(gile), je commence à comprendre ta remarque (ö combien) et celle de @rebcao et aussi de @Curlygoth, je viens de tomber sur plusieurs problèmes dans Excel (presque insolubles)... :
 - la distribution, quelles versions (AutoCAD 20XXX,  LT..., Excel...) avec laquelle interagir.
 - vos remarques importantes (et toujours judicieuses, donc, systématiquement donnant à réflexion),
 - effectivement, le lien Excel<->AutoCAD restent discutables (je me souvient des interventions de @Curlygoth entre autres, (et pour lequel j'ai un grand respect) et je vous comprends maintenant (car je travaille sur mon projet en ce moment et me heurte à plusieurs problèmes qui seraient bien plus simple à résoudre dans AutoCAD/VBA que dans Excel/VBA),
 - la notion de script m'a été proposée par @rebcao et j'ai tellement été souvent d'accord avec lui presque toujours, et si souvent, (j'en rajoute ?) que je ne me pose plus la question : s'il le dit, c'est que c'est bien.
Il m'a orienté dans mes projets de développement, comme toi @(gile) ou d'autres ( @didier, @Patrick Emin, Autodesk, @Patrick_35, @Tramber, @rebcao et j'en oublie forcément, autant dans le VBA que dans le Lisp...).

Et c'est pour toutes ces raisons (que je commence à comprendre que rester sur Excel me pose plusieurs soucis et dont je n'en vois pas l'issus), que je vais maintenant m'orienter vers un DVB. Je pense que les complications ne seront pas les mêmes, mais elles devraient être plus simple à résoudre, bien que...).

Mon seul problème est, que si je fais un DVB, les utilisateurs de LT ne pourront pas en profiter (peut-être aussi pour les utilisateur de ZWCad ou autres...)...

Je vous remercie toutes et tous pour votre soutient, votre aide, vos conseils et vos remarques.

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

@DenisHen Il me semble bien que :

1. Comme dit plus haut, tu n'as pas besoin de connaître la version d'AutoCAD, ni si le module VBA est installé sur cette version. Comme avec d'autre langages (.NET, Python, ...), tu peux accéder l'application AutoCAD via ActiveX sans spécifier la version :

Dim acadApp As Object
 
On Error Resume Next
 
Set acadApp = CreateObject("AutoCAD.Application")

If 0 < Err.Number Then
	Err.Clear()
	MsgBox("Impossible de créer une instance de 'AutoCAD.Application'.")
	Exit Sub
End If

Dim ThisDrawing As Object = acadApp.ActiveDocument


2. Un programme VBA, que ce soit du VBA Excel ou de VBA AutoCAD, ne fonctionnera pas sur une version LT. Ces versions sont bridées pour ne supporter aucune programmation.

Ceci dit, je persiste à penser que créer des calques dans AutoCAD devrait logiquement se faire depuis AutoCAD...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Je suis têtu, j'ai testé.

La macro suivante dans Excel ouvre une nouvelle session d'AutoCAD (dernière version utilisée sur le poste), crée le calque "TOTO" et le rend courant ; et ceci sans aucune référence aux bibliothèques AutoCAD.

Sub Test()
    Dim acadApp As Object
 
    On Error Resume Next
 
    Set acadApp = CreateObject("AutoCAD.Application")

    If 0 < Err.Number Then
        Err.Clear
        MsgBox ("Impossible de créer une instance de 'AutoCAD.Application'.")
        Exit Sub
    End If

    acadApp.Visible = True

    Dim doc As Object
    Set doc = acadApp.ActiveDocument

    Dim color As Object
    Set color = acadApp.GetInterfaceObject("AutoCAD.AcCmColor." & Left(acadApp.Version, 2))
    color.SetRGB 80, 100, 244

    Dim layer As Object
    Set layer = doc.layers.Add("TOTO")
    layer.TrueColor = color
    doc.ActiveLayer = layer

End Sub

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

@DenisHen

 

Citation

Ceci dit, je persiste à penser que créer des calques dans AutoCAD devrait logiquement se faire depuis AutoCAD...

content de ne pas etre le seul à te le répéter ^^

 

Comme je te l'ai toujours dit : j'utilise excel pour gérer mes dossiers et c'est tout (j'ai aucune données enregistrer dans excel maintennant) !

mais pour mémoriser variable, données utilisateur (donne stats), gérer calque, gérer objet via handle (je te remercie car tu m'a donner des idées avec ça) je stocke tout dans des bases de données

et l'avantage (je trouve du VBA) ce que tu peux gérer TOUTES la suite office d'une facilité déconcertante contrairement au lisp

je générer des rapports dans word, des extractions dans excel pour mes collègues ou clients...

Envoie d'un document par mail via autocad ou excel automatiquement

et pour tes calques ou chartre graphique :

Les règles de chartre graphiques ? dans une base via prpogramme! et je vais les chercher via autocad ! ne t’embête pas avec excel pour ça...

sinon utilise excel comme base de données dans un premier temps mais tu verras que l'ouverture et au bout d'un moment est longue à supporter

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à la communauté.

@(gile) : un grand merci pour ton aide, toujours aussi précieuse. j'avais écris ça :

    Dim AcadApp As AcadApplication
    Dim DocAutoCad As Object
    -------------
    On Error Resume Next
    Set AcadApp = GetObject(, "AutoCAD.Application")
    On Error GoTo 0
    If AcadApp Is Nothing Then
        Set AcadApp = New AutoCAD.AcadApplication
    End If
    Select Case MsgBox("Créer un nouveau DWG [Oui] ?" & vbCrLf & "Ou mettre à jour le DWG courant [Non] ?", vbYesNo, "Confirmation")
        Case vbYes
            Set DocAutoCad = AcadApp.Documents.Add
        Case vbNo
            Set DocAutoCad = AcadApp.ActiveDocument
    End Select
    AcadApp.visible = True

Ton exemple va beaucoup m'aider, et aussi pour les couleurs RGB.

Mais je ne savais absolument pas que les macros VBA d'Excel ne fonctionnaient pas pour les versions LT d'AutoCAD. Je vais donc prévoir de créer un script pour ces versions.

J'ignorais aussi qu'il n'était pas nécessaire de charger les "Type Librairy" dans le VBA d'Excel...

Encore un grand 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

Voila la regles pour les couleurs   

 

Dim table(0 To 2)
    table(0) = Int(COULEUR_LONG Mod 256)  'rouge
    table(1) = Int((COULEUR_LONG Mod 65536) / 256) 'Vert
    table(2) = Int(COULEUR_LONG / 65536) 'Bleu
RVB = table

Lien vers le commentaire
Partager sur d’autres sites

Salut @Curlygoth.

Merci pour ton aide, j'en prends bien note...

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 à la communauté.
Voilà, j'ai un mal fou pour créer des "As Objet" pour les calques, le type de ligne, la couleur... Mais j'ai un autre petit souci, que faire avec

        'Création des filtres ------------------------------
        NomFiltre = Sheets(NomFeuille).Cells(Lign, 54).Value
        If NomFiltre <> "" Then
            DaType(0) = 1: DaValue(0) = NomFiltre
            DaType(1) = 1: DaValue(1) = NomFiltre & "*"
            DaType(2) = 1: DaValue(2) = "*"
            DaType(3) = 1: DaValue(3) = "*"
            DaType(4) = 70: DaValue(4) = 0
            DaType(5) = 1: DaValue(5) = "*"
            DaType(6) = 1: DaValue(6) = "*"

            Set Dict1 = DocAutoCad.Layers.GetExtensionDictionary
            Set Dict2 = Dict1.AddObject("ACAD_LAYERFILTERS", "AcDbDictionary")
            Set DaRec = Dict2.AddXRecord(NomFiltre)
            DaRec.SetXRecordData DaType, DaValue
        End If

Faut-il le "Type Library" ? Ou, comment faire ? Car là, je ne sais absolument pas quoi faire... Je me noie déjà dans un verre d'eau pour suivre les conseils (toujours très avisés) de (gile), mais là...

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

Difficile de répondre à tes dernières questions avec si peu d'information (on n'est pas dans ta tête).

Si tu as du mal à coder avec la liaison tardive (As Object), tu peux le faire en liaison anticipée (As AcadApplication, As AcadDocument, As AcadLayer, etc) avec les bibliothèques (ou directement dans AutoCAD) et quand tu es satisfait avec le fonctionnement de ton code, tu remplaces tous les types AutoCAD* par Object et tu peux supprimer les références aux bibliothèques. (CF Liaison anticipée et liaison tardive et Early ou Late Binding).

 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Encore merci à toi @(gile) pour ton aide.

Mais je pense, pour mon projet, devoir tout remettre en cause...

Je pense faire un Classeur Excel pour gérer la nomination de calque (avec couleur, type de ligne...) et d'y inclure un export script (je pense toujours aux utilisateurs de LT) et ne rien faire d'autre, en fait... Et le fichier script sera toujours disponible dans toutes les versions d'AutoCAD...

Mais j'aimerais garder le lien entre AutoCAD<->Excel pour récupérer les types de lignes, par exemple, au moins dans un classeur Excel...

Qu'en pensez-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

Et surtout

        'Création des filtres ------------------------------
        NomFiltre = Sheets(NomFeuille).Cells(Lign, 54).Value
        If NomFiltre <> "" Then
            DaType(0) = 1: DaValue(0) = NomFiltre
            DaType(1) = 1: DaValue(1) = NomFiltre & "*"
            DaType(2) = 1: DaValue(2) = "*"
            DaType(3) = 1: DaValue(3) = "*"
            DaType(4) = 70: DaValue(4) = 0
            DaType(5) = 1: DaValue(5) = "*"
            DaType(6) = 1: DaValue(6) = "*"

            Set Dict1 = DocAutoCad.Layers.GetExtensionDictionary
            Set Dict2 = Dict1.AddObject("ACAD_LAYERFILTERS", "AcDbDictionary")
            Set DaRec = Dict2.AddXRecord(NomFiltre)
            DaRec.SetXRecordData DaType, DaValue
        End If

 

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é