Aller au contenu

[Résolu] DUMP en c# ?


didier

Messages recommandés

Bonjour à Toutes et à Tous

 

Certes il vaut mieux UN qui sait que DIX qui cherchent, nonobstant j'ai cherché et recherché et re-recherché.

J'ai trouvé des sites anglophones, russophones et d'autres choses aussi exotiques.

Je cherche quoi me direz-vous ?

 

Je cherche un équivalent à DUMP en VisualLisp qui permet de savoir tout ce qu'on peut faire avec telle ou telle autre entité ?

Il me semble que MDGDBG.dll correspondrait à mes souhaits...

Mais je n'ai rien trouvé de récent

J'ai même pris connaissance des messages de (Gile) à ce sujet sur TheSwamp mais ça date maintenant et ça a l'air problématique

Et comme j'ai eu pas mal de souci pour lancer démarrer mon environnement à cause de MAP (encore merci pour la solution)

Je ne voudrais pas casser quelque chose.

 

Aussi, je vous remercie de me mettre sur le voie si c'est vraiment cette dll qui est intéressante.

Puisque je suis le benêt de base je vous remercie aussi de me donner la marche à suivre pour l'installer qu'il y a des spécificités.

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

On peut faire un "dump" assez facilement en utilisant la "réflexion" :

 

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Reflection;
using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;

[assembly: CommandClass(typeof(DumpEntityProperties.Commands))]

namespace DumpEntityProperties
{
   public class Commands
   {
       [CommandMethod("Dump")]
       public void Dump()
       {
           Document doc = AcAp.DocumentManager.MdiActiveDocument;
           Database db = doc.Database;
           Editor ed = doc.Editor;
           var entRes = ed.GetEntity("\nSélectionnez une entité: ");
           if (entRes.Status == PromptStatus.OK)
               PrintDump(entRes.ObjectId, ed);
           AcAp.DisplayTextScreen = true;
       }

       private void PrintDump(ObjectId id, Editor ed)
       {
           var flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;

           using (var tr = id.Database.TransactionManager.StartTransaction())
           {
               var dbObj = tr.GetObject(id, OpenMode.ForRead);
               var types = new List<Type>();
               types.Add(dbObj.GetType());
               while (true)
               {
                   var type = types[0].BaseType;
                   types.Insert(0, type);
                   if (type == typeof(RXObject))
                       break;
               }
               foreach (Type t in types)
               {
                   ed.WriteMessage($"\n\n - {t.Name} -");
                   foreach (var prop in t.GetProperties(flags))
                   {
                       ed.WriteMessage("\n{0,-40}: ", prop.Name);
                       try
                       {
                           ed.WriteMessage("{0}", prop.GetValue(dbObj, null));
                       }
                       catch (System.Exception e)
                       {
                           ed.WriteMessage(e.Message);
                       }
                   }
               }
               tr.Commit();
           }
       }
   }
}

 

Mais je pense que MgdDbg est un outil de développement assez incontournable (malgré ses imperfections). Il est plus convivial et plus complet.

 

J'ai mis à jour le lien vers la version que j'utilise.

Elle est compatible avec AutoCAD 2012 à 2017.

Elle n'est pas entièrement déboguée donc certaines fonctionnalités peuvent générer des erreurs.

 

  • Télécharger MgdDbg.zip
  • Débloquer le ZIP
  • Placer le dossier "Autodesk DWG MgdDBG.bundle" dans : "%appdata%\Autodesk\ApplicationPlugins".

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

Lien vers le commentaire
Partager sur d’autres sites

Coucou

Il me serait bien pratique que je me fasse un petit fichier texte sur mon bureau, pour que je puisse en copier-coller le contenu à l'envi.

 

Ce fichier texte contiendrait quelque chose du genre :

 

Je te remercie (Gille)

Pour la rapidité de ta réponse

Pour la qualité de ta réponse

Pour ta disponibilité

 

Si j'avais ce genre de fichier je m'en servirais bien souvent pour te féliciter.

Toujours est-t’il que tu as encore répondu pile-poil, bravo.

 

J'ai bien fait comme tu as dis et ça marche,un menu s'est ajouté sur le clic droit et je peux effectivement obtenir bien des renseignements.

 

Maintenant une nouvelle question se pose : Que faire de ces renseignements ?J

e vais décortiquer tout ça et me permettrai, sans vergogne, de venir questionner si je ne trouve pas la réponse par moi-même.

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

Ça c'était pour le MgdDgb

Pour ce qui est de la réflexion c'est très bien aussi.

 

Je copie-colle mes propos liminaires

 

Amicalement

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é