Aller au contenu

Messages recommandés

Posté(e)

Salut,

 

 

Après XDEDIT, je propose une version beta d'un nouvel outil.

 

Cet outil s'adresse plutôt aux développeurs puisque les dictionnaires ne sont accessibles que par programmation.

 

 

Il permet d'inspecter l'arborescence, ajouter des entrées, en supprimer (avec parcimonie), modifier des enregistrements (xrecord) aussi bien dans le dictionnaires des objets nommés (NOD) que dans les dictionnaires d'extension des entités.

 

 

commande : EDICT

 

 

Attention la modification des dictionnaires dont vous n'êtes pas l'auteur peut perturber le fonctionnement d'AutoCAD.

 

 

http://img51.imageshack.us/img51/8079/dialogv.png

 

 

DictionaryEditor.zip

 

Si vous avez des problèmes pour dé-zipper ce fichier, utilisez 7zip (gratuit).

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

Posté(e)

Salut (Gile),

 

zip téléchargé et en-cours d'essai.

 

En tout cas, bravo pour l'interface :). C'est quand même mieux

qu'avec du dcl de base.

 

Un premier détail, enfin, cela ne tient qu'a moi :

le nombre de sous-élément à la fin du nom serai un petit plus.

 

Par exemple dans le dessin de test, j'ai un certain nombre de groupes,

donc une ligne "ACAD_GROUP", si je l'ouvre, pfuu, il y en a une flopée.

Si à la place il y avait "ACAD_GROUP (135)".

 

bon, je continue...

 

a+

 

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Merci pour le retour.

 

 

C'est vrai que les boites de dialogue faites avec Visual Studio n'ont pas grand chose à voir avec celles écrites en DCL.

 

 

J'ai oublié de préciser : pour effacer des entrées ou des données dans les Xrecords il faut passer par le menu contextuel (ou la touche Suppr). Les entrées sont supprimées si on répond "Oui" à la boite d'alerte (il reste encore la possibilité de fermer le dessin sans enregistrer en cas de fausse manip).

 

 

J'ai un peu amélioré certains comportements et réparé certains bugs (nouvelle DLL en téléchargement dans le premier message).

 

 

Pour ceux qui seraient intéressés, les codes source (solution complète).

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

Posté(e)

Salut,

C'a l'air très intéressant.

Pourrais-tu expliquer le rôle d'une "extension". Comment cela fonctionne-t-il ? Est-ce renommable ? Quelle est la fonction ?

 

J'ai des erreurs quelquefois. A priori c'est quand je clique sur Extension et que celui-ci ne devrait pas être allumé (quand je ne suis pas sur un élément qui peut recevoir une extension).

 

Autre question : pourquoi représenter le NOD ?

 

Je n'ai pas essayé l'onglet "entité". Ca viendra ici. J'avais essayé ton outil précédent.

 

En tous cas, c'est sensass' de partager cet outil. Ca me servira puisque je me suis mis tout doucement à comprendre le sens et l'usage de ces dictionnaires pourtant connus depuis toujours.

 

Well done anyway !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Pfuu, si je tente de modifier un truc, je me tape une erreur :

"exception non gérée...",

 

Mais au moins cela ne plante pas :)

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Salut,

 

Je crois que je me suis un peu emmêlé les pinceaux avec les fichiers en téléchargement.

Le numéro de la dernière version (1.01) apparait sur la boite de dialogue principale.

 

Les dictionnaires sont un moyen utilisé par AutoCAD pour stocker des données liées au dessin ou à des objets.

Ils se répartissent en deux groupes :

 

Les dictionnaires liés au dessin ont un nom (clé) et sont tous des descendants du Dictionnaire des Objets Nommés (Named Objects Dictionary ou NOD).

 

Les dictionnaires d'extensions sont liés à un objet (graphique ou nom). Tout objet AutoCAD (entité graphique, calque, dictionnaire, ...) peut avoir un (et un seul) dictionnaire d'extension. Les dictionnaires d'extension n'ont pas de nom, ce qui sert de clé est l'objet auquel ils appartiennent.

En cela ils ressemblent au xdatas, tout en présentant plus de souplesse d'utilisation : pas de limite pour les données qu'ils contiennent, plus grande diversité des types de données, plus grande souplesse dans l'utilisation des codes DXF).

 

Un dictionnaire (quelque soit sont type) peut contenir différent types d'objets :

- un (et un seul) dictionnaire d'extension.

- des dictionnaires nommés.

- des objets personnalisés (custom objects) comme ceux utilisés par AutoCAD ou des applications.

- des enregistrements (XRECORD) qui sont les containers pour les données de type chaine, nombre, point.

 

On voit bien là les multiples imbrications possibles...

 

L'outil que je propose là permet d'inspecter tout ça (il faudrait que je rajoute un onglet pour les tables, chaque objet d'une table (calque, définition de bloc, type de ligne, etc.) étant susceptible d'avoir un dictionnaire d'extension) et de modifier, d'ajouter, de supprimer des entrées ou des données aussi bien dans les dictionnaires du NOD que dans les dictionnaires d'extension d'entités.

 

PS ; si vous avez des erreurs, merci de me dire les circonstances et ce que dit la ligne de commande ou la boite de dialogue (au moins jusqu'à la ligne qui donne la ligne dans le code qui a provoqué l'erreur).

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

Posté(e)

Petite précision concernant les dictionnaires.

 

Les fonction LISP vlax-ldata-* utilisent aussi les dictionnaires (nommés ou d'extension)

 

(vlax-ldata-put "DICO" "clef" 123)

ajoute l'entrée "DICO" (dictionnaire) au NOD "clef" est l'équivalent d'un Xrecord mais c'est en fait un objet de type vlo_VL qui contiient la valeur 123.

 

De même,

(vlax-ldata-put (car (entsel)) "cle" 456)

ajoute au dictionnaire d'extension de l'entité sélectionnée (ou crée ce dictionnaire s'il n'existait pas) et l'objet vlo_VL "cle" qui contient la valeur 456.

 

Dans les deux cas EDICT "verra" les dictionnaires et les entrées vlo_VL mais les considère comme des 'objets personnalisés' parce que les données contenues dans ces objets ne sont accessibles qu'en LISP (et peut-être en ObjectARX/C++ natif).

C'est ce que continue à reprocher certains programmeurs aux "LISP Datas" à savoir n'être pas accessible par tous les langages comme le sont les xdatas, dictionnaires et xrecords.

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

Posté(e)

Salut,

 

Je n'ai pas pris de renseignements sur les extensions mais je le ferai.

 

Problème rencontré :

En attendant, c'est quand on est mal positionné (par exemple, je me suis mis sur "38EAF" de ACAD_BACKGROUND avec la souris) que le message d'erreur apparait. Car j'ai cliqué sur "Extension". Je peux te donner le message d'erreur mais c'est facilement reproduisible.

J'ai bien compris que ca n'était pas possible mais le bouton est allumé, j'ai pas pu résister !

 

Tu dis

Un dictionnaire (quelque soit sont type) peut contenir différent types d'objets :

- un (et un seul) dictionnaire d'extension.

 

Pourtant j'ai pu en ajouter plusieurs et encore en enfants, petits-enfants,....

...en bricolant bien sur. C'est un abus de ma part.

Je vais essayer de mieux comprendre les extensions de mon côté. quand j'aurai un peu le temps.

 

http://img130.imageshack.us/img130/5889/03022011111220.png

 

N'hésites pas si tu as besoin qu'on essaie des manips.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

Salut,

Tu dis

Un dictionnaire (quelque soit sont type) peut contenir différent types d'objets :

- un (et un seul) dictionnaire d'extension.

 

Pourtant j'ai pu en ajouter plusieurs et encore en enfants, petits-enfants,....

...en bricolant bien sur. C'est un abus de ma part.

Quand je dis ça, c'est le comportement d'AutoCAD que je décris : un objet ne peut contenir qu'un seul dictionnaire d'extension mais ce dictionnaire est aussi un objet AutoCAD qui peut lui aussi contenir un dictionnaire d'extension, etc.

 

Le fait de pouvoir ajouter plusieurs dictionnaires d'extension au même objet dans la boite de dialogue est un oubli de ma part dans le code, la case "Extension" devrait être grisée quand l'objet sélectionné en contient déjà un.

J'ai corrigé ça dans la nouvelle version (version 1.02).

 

Par contre, je n'arrive pas à reproduire l'erreur que tu dis : mon dictionnaire est vide.

 

 

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

Posté(e)

Hola

 

De mon côté, j'ai effacé la 1.01. Tout est écrasé chez moi.

Je ne peux plus reproduire l'erreur.

Donc avec la 1.02, plus de problèmes.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
  • 2 mois après...
Posté(e)

Retour après quelques semaines d'utilisation.

 

... et redécouvertes des paradigmes de dicitonnaires. C'est vrai qu'avec ces dictionnaires on doit faire attention à ce qu'on fait m'ais qu'en même temps on est très libre, imbrication, homonymies, etc...

 

Les dicos, c'est sympa, mais là, c'est vendu. Je charge souvent l'utilitaire.

 

Bravo.... et merci !

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
  • 1 an après...
Posté(e)

Un bon outil

Mais j'ai une erreur 'eNotFromThisDocument'(avec AutoCad2010) à partir du moment où j'essaie de le faire marcher sur un 2è fichier ouvert dans la même session : d'abord quand je sélectionne une entrée du NOD ou de l'un de ses dictionnaires, ensuite immédiatement au lancement EDICT ..

 

Veux-tu le rapport ?

Posté(e)

Salut (gile)

 

Ca ne fonctionne pas sur une A2013.

 

@+

 

 

Normal, il y a une rupture de compatibilité des applications .NET avec A2013 qui nécessite de re-compiler en ciblant de nouvelles références.

Je ne l'ai pas fait systématiquement pour tout ce que j'ai pu poster en .NET, préférant attendre une demande. C'est chose faite, j'ai donc modifié le téléchargement dans le premier message qui contient maintenant 2 DLLs : DictionaryEditor_17.dll pour A2007-2012 et DictionaryEditor_19 pour A2013-?.

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

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é