CADxp: Editeur de dictionnaires - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Editeur de dictionnaires

#1 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10687
  • Inscrit(e) : 02-septembre 05

Posté 01 février 2011 - 19:02

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.



Image IPB


DictionaryEditor.zip

Si vous avez des problèmes pour dé-zipper ce fichier, utilisez 7zip (gratuit).
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#2 L'utilisateur est hors-ligne   bseb67 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 27-avril 07

Posté 02 février 2011 - 08:38

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!
0

#3 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10687
  • Inscrit(e) : 02-septembre 05

Posté 02 février 2011 - 15:09

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

#4 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8306
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 02 février 2011 - 16:26

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 !
0

#5 L'utilisateur est hors-ligne   bseb67 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 814
  • Inscrit(e) : 27-avril 07

Posté 02 février 2011 - 16:54

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!
0

#6 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10687
  • Inscrit(e) : 02-septembre 05

Posté 02 février 2011 - 19:06

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

#7 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10687
  • Inscrit(e) : 02-septembre 05

Posté 02 février 2011 - 19:45

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

#8 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8306
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 03 février 2011 - 11:19

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

Citation

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.

Image IPB

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

#9 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10687
  • Inscrit(e) : 02-septembre 05

Posté 03 février 2011 - 12:01

Salut,

Citation

Tu dis

Citation

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

#10 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8306
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 03 février 2011 - 17:12

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.
0

#11 L'utilisateur est hors-ligne   Tramber 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8306
  • Inscrit(e) : 29-mars 03
  • LocationStrasbourg

Posté 04 avril 2011 - 14:47

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 !
0

#12 L'utilisateur est hors-ligne   krunch 

  • ceinture marron
  • Groupe : Membres
  • Messages : 233
  • Inscrit(e) : 25-janvier 03
  • LocationLyon

Posté 02 octobre 2012 - 17:44

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 ?
0

#13 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10687
  • Inscrit(e) : 02-septembre 05

Posté 02 octobre 2012 - 18:14

Merci pour le retour, c'est réparé. Le lien est mis à jour dans le premier message.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#14 L'utilisateur est hors-ligne   Patrick_35 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 6136
  • Inscrit(e) : 06-janvier 03

Posté 03 octobre 2012 - 08:20

Salut (gile)

Ca ne fonctionne pas sur une A2013.

@+
Les Lisps de Patrick
Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.
Joseph Joubert, 1754-1824
0

#15 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 10687
  • Inscrit(e) : 02-septembre 05

Posté 03 octobre 2012 - 09:12

Voir le messagePatrick_35, le 03 octobre 2012 - 08:20 , dit :

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 -
Développements sur mesure pour AutoCAD
Image IPB
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)