(gile) Posté(e) le 11 novembre 2021 Partager Posté(e) le 11 novembre 2021 As-tu lu les liens données dans mon dernier message ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Curlygoth Posté(e) le 15 novembre 2021 Partager Posté(e) le 15 novembre 2021 moi oui, c'est le principe que j'appelle vulgairement : "Tout est OBJET" Mon site Web (en cours de construction) : Site DA-CODE de @didier Lien vers le commentaire Partager sur d’autres sites More sharing options...
DenisHen Posté(e) le 15 novembre 2021 Auteur Partager Posté(e) le 15 novembre 2021 Bonjour à la communauté. @(gile) : de quels liens tu parles ? Je n'ai pas saisi. En outre, je progresse lentement, car je suis plus que débordé en ce moment. Mais je vais m'orienter, je pense, vers un classeur Excel qui gèrera les calques et avec une commande pour créer un fichier script (merci à @rebcao ), ce qui servira au plus grand nombre, je l'espère (pour les versions complètes comme des LT) et un DVB pour les autres qui lira un classeur Excel (merci à @(gile), à @Curlygoth...)... Car je n'ai pas encore trouvé comment remplacer tous mes appels au VBA AutoCAD dans Excel par des objets, comme dans : Dim layerObj As AcadLayer Dim DaRec As AcadXRecord Dim Dict1 As AcadDictionary, Dict2 As AcadDictionary Je cherche encore les renseignements pour changer tous les "DIM xxxx as AutoCAD..." et les remplacer par les mots clefs en faire des objets... Comme pour les types de ligne, la notion d'impression du calque, les couleurs (mais (gile) m'a donné la solution) et surtout les filtres de propriété de calques. Je continu de vous remercier, tous et toute la communauté... 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 More sharing options...
(gile) Posté(e) le 16 novembre 2021 Partager Posté(e) le 16 novembre 2021 Le 11/11/2021 à 15:44, (gile) a dit : 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 More sharing options...
(gile) Posté(e) le 16 novembre 2021 Partager Posté(e) le 16 novembre 2021 Il y a 7 heures, DenisHen a dit : Car je n'ai pas encore trouvé comment remplacer tous mes appels au VBA AutoCAD dans Excel par des objets As-tu attentivement lu, décortiqué, analysé le code donné ici ? les réponses à tes question y sont. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
DenisHen Posté(e) le 16 novembre 2021 Auteur Partager Posté(e) le 16 novembre 2021 Bonjour @(gile) et merci pour ton aide. Oui, j'ai bien lu tes liens sur les liaisons anticipées et les liaisons tardives. J'air bien compris la différence entre les deux, mais je n'arrive pas tellement à les mettre en œuvre. Je pense qu'il me manque les "mots clefs autocadiens" pour la création des liens et surtout des objets, mais je continu de chercher dans l'aide AutoCAD. Tu m'avais envoyé un lien sur tout ce qu'il fallait savoir pour faire du Lisp dans AutoCAD, je cherche la même chose pour le VBA. Mais je vais trouver... 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 More sharing options...
(gile) Posté(e) le 16 novembre 2021 Partager Posté(e) le 16 novembre 2021 Toute la documentation du développeur AutoCAD : https://help.autodesk.com/view/OARX/2018/ENU/ Tu peux remplacer 2018 par 2019, 2020, 2021 ou 2022 pour les versions d'AutoCAD plus récentes (mais ça ne devrait pas changer grand chose en VBA). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
DenisHen Posté(e) le 18 novembre 2021 Auteur Partager Posté(e) le 18 novembre 2021 Merci mille fois @(gile)... Mais je me rend compte qu'il faut que je me familiarise avec l'Orientation Objet, que je n'utilise absolument pas ! ! ! Et je vais corriger ça, j'ai déjà lu pas mal de trucs là-dessus (comme sur developpez.com, pas exemple)... Encore merci à toi... 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 More sharing options...
DenisHen Posté(e) le 29 novembre 2021 Auteur Partager Posté(e) le 29 novembre 2021 Salut à tous... J'ai bien fouillé le Orienté Object... Sur plein de site (le meilleur reste, à mon avis, Developpez.com) Mais j'ai beaucoup de mal avec ça... Je pense peut-être être à mon maximum de mes compétences, d'intelligences... J'ai bien lu, et longuement, les liaisons anticipées et les liaisons tardives... Mais j'ai beaucoup de mal à trouver les "mots clefs" VBA pour créer les bons Objets Orientés, tels que type de ligne, épaisseurs de ligne... J'ai fouillé l'aide AutoCAD VBA... Mais elle n'est pas très explicite... Je vais donc continuer à faire tel que je peut (et la sais, un peu) le faire, et vous me direz comment me passer de la librairie, si toutes fois est votre volonté... Je continu donc l'élaboration de mon fichier Excel, et je le posterais pour que vous puissiez me dire là où j'ai un manque... Ca vous tente ? Êtes-vous d'accord ? 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 More sharing options...
(gile) Posté(e) le 29 novembre 2021 Partager Posté(e) le 29 novembre 2021 Ce n'est pas compliqué, en liaison anticipée, dans le code, on déclare les objets avec leur type fort : Dim layerObj As AcadLayer Ça aide le compilateur (ou l'interpréteur) à exécuter le code plus rapidement et ça permet à l'IDE de contrôler que les propriétés et méthodes sont bien applicables à ce type d'objet et, suivant l'IDE d'aider à coder avec des infobulles, des signalements d'erreur au moment de l'édition, etc. Mais ceci nécessite de référencer les bibliothèques qui, en VBA, sont dépendantes de la version. En liaison tardive, dans le code, en VB(A), on déclare les objets avec le type Object : Dim layerObj As Object Là, l'éditeur ne peut plus donner aucune aide et les erreurs ne seront détectées qu'au moment de l'exécution. C'est le lot de tous les langages dits "à typage dynamique" (LISP, Python, Ruby, etc). Mais avec les langages basé objet (VBA) ou orienté objet (VB.NET, C#) on n'a plus de bibliothèque à référencer. Dans la pratique, comme dit précédemment, on commence en codant en liaison anticipée avec les bibliothèques nécessaires (celles d'AutoCAD quand on code depuis Excel ou inversement) jusqu'à ce qu'on soit satisfait du fonctionnement. Puis, pour diffuser le programme, on supprime les références et on remplace tous les types fort par le type Object. Un bon IDE soulignera les erreurs de type dès qu'on aura supprimé les références. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
DenisHen Posté(e) le 1 décembre 2021 Auteur Partager Posté(e) le 1 décembre 2021 Ok, je ne connaissais pas l'astuce de coder en premier en liaison anticipée, et, une fois le code satisfaisant, on le modifie pour l'adapter en liaison tardive... Je pense que c'est lors de cette phase que j'aurais sans doute besoin d'un peu d'aide... Car en liaison anticipé, je me débrouille, mais pas en liaison tardive... D'où mon post... Et c'est bien mon envie, ne faire que de la liaison tardive pour que mon projet puisse être utilisé par n'importe quelle version "complète" d'AutoCAD. Sans devoir référencer une bibliothèque... Donc, d'après ce que j'ai compris, la liaison anticipé est comprise par l'IDE, avec des aides sur la correction des objets, les propositions de méthodes, les infos bulles... Alors que dans les liaisons tardives, ça n'existe pas... Dans ton code "exemple", tu écris : Set color = acadApp.GetInterfaceObject("AutoCAD.AcCmColor." & Left(acadApp.Version, 2)) J'ai longtemps cherché la liste des "GetInterfaceObject", mais je n'ai trouvé que des trucs sur "Save & Restore layers", mais rien sur, par exemple, "AutoCAD.AcCmColor." ou autres, comme le type de ligne, l'épaisseur... Encore un grand merci @(gile) pour ton aide... Denis... PS : je pense avoir trouvé quelque chose, je peux partir de 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 More sharing options...
DenisHen Posté(e) le 11 décembre 2021 Auteur Partager Posté(e) le 11 décembre 2021 Salut la communauté... J'ai longtemps contemplé les différentes discutions sur les liaisons "anticipée" et les liaisons "tardives"... Et j'ai appris beaucoup, j'ai même réussi à faire un classeur Excel qui commande à AutoCAD des créations de calques... uniquement par liaisons tardives... J'arrive même à récupérer les types de ligne d'un dessin dans AutoCAD depuis un classeur Excel... @(gile), comment te remercier ! ! ! Mais j'ai encore une toute petite question, comment faire de ce code une relation tardive ? J'ai saisi, maintenant, la notion de relation, et je comprend de plus en plus la différence entre tardive et anticipée... Mais je ne sais pas comment transcrire ce code en relation anticipé vers une relation tardive... Je pense que le "dictionary" pose problème... Sub ExpAutoCAD_TestSansLib() NomFeuille = ActiveSheet.name 'Création des filtres ------------------------------ Do While OnFouilleLesLignes <> "" NomFiltre = Sheets(NomFeuille).Cells(OnFouilleLesLignes, 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 OnFouilleLesLignes = OnFouilleLesLignes + 1 Loop End Sub Car, je le répète, @(gile) m'a été d'une grande aide... Incroyable... Mais après une multitude de recherche, je n'arrive pas à transformer ce code "anticipé" vers un code "tardif"... 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 More sharing options...
(gile) Posté(e) le 11 décembre 2021 Partager Posté(e) le 11 décembre 2021 Dans le code que tu montres, tu affectes les valeurs aux variables Dict1, Dict2 et DaRec mais on ne voit pas comment ce variables sont déclarées. Encore une fois, je connais très mal le VB(A), mais il me semble qu'il devrait y avoir des déclarations du style: Dim Dict1 As Object Dim Dict2 As Object Dim DaRec As Object Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
DenisHen Posté(e) le 13 décembre 2021 Auteur Partager Posté(e) le 13 décembre 2021 Bonjour @(gile) et mille mercis. Effectivement, j'étais passé à coté. Maintenant, ça fonctionne super. 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 More sharing options...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant