CADxp: Les dictionnaires - CADxp

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Les dictionnaires

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

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

Posté 21 octobre 2011 - 22:45

Généralités

Les dictionnaires fournissent un moyen de lier des données au dessin ou à des entités graphique.
Ils peuvent contenir des données arbitraires et des objets non graphiques. De plus, contrairement aux objets Xdata, leur taille n'est pas limitée.
Les données dans un dictionnaire sont stockées dans des objets Xrecord.
Chaque dictionnaire peut contenir d'autres dictionnaires ainsi que plusieurs entrées Xrecord.
Les dictionnaires se répartissent en deux types : les dictionnaires nommés et les dictionnaires d'extension.

Les dictionnaires nommés
Tout fichier DWG possède un "objet dictionnaire nommé" Named Object Dictionary (NOD) qui est la racine de tous les dictionnaires nommés. AutoCAD (et plus encore les applications verticales) utilise ces dictionnaires pour stocker des données et des objets non graphiques (présentations, groupes, styles de multiligne, styles visuels, etc.).
Chaque dictionnaire peut être considéré comme une entrée de son dictionnaire parent que ce soit le NOD ou un autre dictionnaire où son nom sert de clé pour le retrouver.

Les dictionnaires d'extension
Tout objet AutoCAD, graphique ou non, peut avoir un et un seul dictionnaire d'extension. Les dictionnaires d'extension n'ont pas de nom, c'est l'objet auquel ils sont lié qui sert de clé pour les retrouver.
On retrouve le nom d'entité d'un dictionnaire d'extension dans la liste de données DXF de l'objet auquel il appartient, c'est la donnée du groupe 360 suivant le groupe (102 . "{ACAD_XDICTIONARY"). AutoCAD utilise aussi les dictionnaires d'extension, comme dans l'exemple ci-dessous, pour les objets annotatifs.
((-1 . <Nom d'entité: 7ffff706280>)
 (0 . "TEXT") 
 (5 . "1D78") 
 (102 . "{ACAD_XDICTIONARY") 
 (360 . <Nom d'entité: 7ffff706290>) ; dictionnaire d'extension
 (102 . "}") 
 (330 . <Nom d'entité: 7ffff7039f0>) 
 (100 . "AcDbEntity") 
 ...)


Les objets XRecord
Ce sont les conteneurs dans les quels sont stockées les données. Ce sont aussi des entrées nommées dans le dictionnaire parent, et là encore, leur nom qui sert de clé pour les retrouver dans l'arborescence.
En LISP, les données dans un XRecord apparaissent sous forme de liste d'association dont les paires pointées utilisent les mêmes codes de groupe que les données DXF.

Ce système offre une très grande souplesse et sa structure en arborescence avec un système de clés permet un accès très rapide aux données.
En résumé, chaque dictionnaire (d'extension ou nommé) peut avoir plusieurs entrées de type Dictionary ou XRecord et chaque XRecord contenir plusieurs données.

Les fonctions AutoLISP dédiées
AutoLISP fournit des fonctions qui permettent d'accéder à ces dictionnaires et à leurs données, mais aussi d'en créer de nouveaux.

namedobjdict
Ne requiert aucun argument et retourne le nom d'entité du NOD du dessin courant.

dictadd (dictadd dictkey entry)
Ajoute une entrée de type Dictionary ou Xrecord à un dictionnaire.
dict : le nom d'entité du dictionnaire auquel est ajouté l'objet.
key : le nom de l'entée du nouvel objet, ce nom doit être unique.
entry : le nom d'entité de l'objet ajouté.

;; Créer un objet dictionnaire
(setq xname (entmakex '((0 . "DICTIONARY") (100 . "AcDbDictionary"))))

;; Ajouter le dictonnaire au dictionnaire des objets nommés
(dictadd (namedobjdict) "MON_SUPER_DICO" xname)

;; créer un objet XRECORD avec des données
(setq xrec (entmakex '((0 . "XRECORD")
		       (100 . "AcDbXrecord")
		       (1 . "Ceci est un test")
		       (40 . 3.14159)
		      )
	   )
)

;; ajouter l'objet XRecord au dictionnaire
(dictadd xname "SUPER_DATA_1" xrec)


dictsearch (dictsearch dict key [setnext])
Cherche l'entrée spécifiée dans le dictionnaire, et retourne sa liste DXF s'il existe (sinon nil).
dict : le nom d'entité du dictionnaire
key : le nom de l'entrée
setnext : (optionnel) si spécifié et non nil, initialise dictnext avec cette entrée.

;; retrouver le dictionnaire
(setq dict  (dictsearch (namedobjdict) "MON_SUPER_DICO"))

;; retrouver les données
(setq data (dictsearch (cdr (assoc -1 dict)) "SUPER_DATA_1"))


(cdr (assoc 1 data))
retourne : "Ceci est un test"

(cdr (assoc 40 data))
retourne : 3.14159

dictnext (dictnext dict[first])
Retourne la liste DXF de l'entrée suivante du dictionnaire si elle existe, sinon nil.
dict : le nom d'entité du dictionnaire propriétaire.
Si l'argument first est spécifié et non nil, dictnext retourne la première entrée.

Ajoutons une nouvelle entrée XRecord à notre dictionnaire.

(setq xname (cdr (assoc -1 (dictsearch (namedobjdict) "MON_SUPER_DICO")))
      xrec  (entmakex '((0 . "XRECORD")
		           (100 . "AcDbXrecord")
		           (70 . 256)
		          )
	     )
)
(dictadd xname "SUPER_DATA_2" xrec)


(cdr (member '(280 . 1) (dictnext xname T)))
retourne : ((70 . 256))

(cdr (member '(280 . 1) (dictnext xname)))
retourne : ((1 . "Ceci est un test") (40 . 3.14159))

dictrmove (dictremove dict key)
Supprime l'entrée key du dictionnaire et retourne le nom d'entité de l'objet supprimé ou nil si un des arguments n'est pas valide.
dict : nom d'entité du dictionnaire parent
key : nom de la clé de lentrée à supprimer

dictrename (dictrename dict oldKey newKey)
Renomme une entrée d'un dictionnaire. Si tous les arguments sont valides, l'entrée oldKey est renommée newKey,et newKey est retourné, sinon nil est retourné.
dict : nom d'entité du dictionnaire parent
oldKey : clé à renommer
newKey : nouvelle clé pour l'entrée

Avec les dictionnaires d'extension
Comme vu ci-dessus, on retrouve le dictionnaire d'extension d'un objet en interrogeant sa liste de données DXF et on ajoute un dictionnaire d'extension à un objet en modifiant sa liste de données DXF avec entmod :
Deux petites routines pour illustrer ça (une petite bibliothèque de routines ici) :

;; gc:GetExtDict (gile)
;; Retourne le dictionnaire d'extension de l'entité (ou nil)
;;
;; Argument : ent (ENAME)

(defun gc:GetExtDict (ent)
  (cdadr (member '(102 . "{ACAD_XDICTIONARY") (entget ent)))
)

;; gc:GetOrCreateExtDict (gile)
;; Retourne le dictionnaire d'extension de l'entité
;; Le dictionnaire est créé s'il n'existe pas
;;
;; Argument : ent (ENAME)

(defun gc:GetOrCreateExtDict (ent / dict)
  (cond
    ((gc:GetExtDict ent))
    ((setq dict	(entmakex
		  '((0 . "DICTIONARY") (100 . "AcDbDictionary"))
		)
     )
     (setq elst (entget ent))
      (entmod
	(vl-list*
	  (car elst)
	  (cadr elst)
	  (caddr elst)
	  '(102 . "{ACAD_XDICTIONARY")
	  (cons 360 dict)
	  '(102 . "}")
	  (cdddr elst)
	)
      )
      dict
    )
  )
)



Pour clore cette première partie, une autre petite routine pour lister toutes les entrées dans un dictionnaire :

;; gc:GetDictEntries
;; Retourne la liste des entrées du dictionnaire
;; sous forme de paires pointées (key . ename)
;;
;; Argument : dict le dictionnaire (ENAME ou liste DXF)

(defun gc:GetDictEntries (dict / result)
  (and (= (type dict) 'ENAME) (setq dict (entget dict)))
  (while
    (setq dict (vl-member-if (function (lambda (x) (= (car x) 3))) (cdr dict)))
     (setq result (cons (cons (cdar dict) (cdadr dict)) result))
  )
  (reverse result)
)


Exemple d'utilisation :
(gc:GetDictEntries (dictsearch (namedobjdict) "ACAD_LAYOUT"))


À suivre...
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
2

#2 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2156
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 21 octobre 2011 - 23:23

Très intéressant, merci beaucoup !

Par contre je n'ai pas vraiment compris le rôle de la paire (280 . 1) dans la liste DXF d'une entrée de dictionnaire... :huh:
A priori tu considères que les données sont forcément après cette paire, mais peut-on être sûr qu'elle existe toujours, et qu'elle aura toujours cette valeur ?

L'aide indique pour le code 280 :

Citation

Drapeau de propriétés matérielles. S'il a pour valeur 1, indique que les éléments du dictionnaire doivent être traités comme des propriétés matérielles

Tu saurais traduire ? :unsure:
Ça voudrait dire que si ce code existe et qu'il a pour valeur 1, tout ce qui suit dans la liste doit être considéré comme des données stockées dans l'entrée ?
0

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

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

Posté 21 octobre 2011 - 23:52

C'est exactement ça (si l'entrée est de type Xrecord).
Essaye de créer un dictionnaire et un ou deux Xrecord (en utilisant les codes donnés si tu veux) et fait un dictnext sur ce dictionnaire, tu verras la liste DXF complète.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

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

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

Posté 22 octobre 2011 - 08:27

Les données LISP ou ldata

Avec Visual LISP ce nouveau type de dictionnaire a été implémenté.
On a reproché et on reproche encore deux choses aux ldata.
La première était un problème de compatibilité entre les différentes version d'AutoCAD, mais ce défaut de jeunesse semble complètement corrigé depuis la version 2002.
La seconde est que les ldatas ne sont accessibles qu'en LISP (et ObjectARX/C++ bien sûr), contrairement aux dictionnaires classiques et aux Xrecords qui sont accessibles pour tous les langages de programmation supportés par AutoCAD.

Le principal avantage des ldatas par rapport aux dictionnaires classiques est leur plus grande facilité de mise en œuvre.
Comme les dictionnaires classiques, les ldatas peuvent être nommées ou attachées à une entité AutoCAD.
Une donnée LISP correspond à une paire clé/donnée où la clé est une chaîne et la donnée peut être tout type d'expression LISP.

Là encore, des fonctions sont fournies pour attribuer, retrouver, supprimer ces ldatas.

vlax-ldata-put (vlax-ldata-put dict key data [private])
Stocke une donnée LISP dans un dictionnaire ou une entité. Le dictionnaire est créé s'il n'existe pas.
Retourne la valeur de data ou nil.
dict : une entité AutoCAD (ename ou vla-object) ou un nom (clé primaire)
key : la clé (secondaire) pour récupérer la donnée.
data : tout type de donnée LISP
private : (optionnel) si vlax-ldata-put est exécuté depuis un VLX dans un espace de nom séparé et que cet argument est spécifié et non nil, la donnée ne sera récupérable que par ce VLX.

;; créer une donnée LISP
(vlax-ldata-put "VL_DICO" "data1" "test")
(vlax-ldata-put "VL_DICO" "data2" '(1 2 3))


vlax-ldata-get (vlax-ldata-get dict key [default-data] [private])
Récupère une donnée LISP dans un dictionnaire ou une entité.
Retourne la donnée si elle est existe sinon la valeur de default-data si elle a été spécifiée, sinon nil.
dict : une entité AutoCAD (ename ou vla-object) ou un nom (clé primaire)
key : la clé (secondaire) pour récupérer la donnée.
default-data : (optionnel) la donnée à retourner si la clé n'est pas trouvée
private : (optionnel, default-data doit être spécifié) si vlax-ldata-get est exécuté depuis un VLX dans un espace de nom séparé et que cet argument est spécifié et non nil, vlax-ldata-get récupère la donnée.

(vlax-ldata-get "VL_DICO" "data1")
retourne "test"
(vlax-ldata-get "VL_DICO" "data2")
retourne (1 2 3)

vlax-ldata-list (vlax-ldata-list dict [private])
Liste les données LISP pour le dictionnaire ou l'entité.
Retourne une liste paire pointées (key . data) pour toutes les entrées.
dict : une entité AutoCAD (ename ou vla-object) ou un nom
private : (optionnel) si vlax-ldata-list est exécuté depuis un VLX dans un espace de nom séparé et que cet argument est spécifié et non nil, vlax-ldata-list ne récupère que les données de cet espace de nom.

(vlax-ldata-list "VL_DICO")
retourne (("data2" 1 2 3) ("data1" . "test"))

vlax-ldata-delete (vlax-ldata-delete dict key [private])
Supprime une donnée LISP dans un dictionnaire.
Retourne T si l'opération a réussi, sinon nil.
dict : une entité AutoCAD (ename ou vla-object) ou un nom (clé primaire)
key : la clé (secondaire) pour récupérer la donnée.
data : n'importe quelle donnée LISP (y compris une liste)
private : (optionnel) si vlax-ldata-delete est exécuté depuis un VLX dans un espace de nom séparé et que cet argument est spécifié et non nil, la donnée sera supprimée.

(vlax-ldata-delete "VL_DICO" "data1")
retourne T
(vlax-ldata-get "VL_DICO" "data1")
retourne nil
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

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

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

Posté 22 octobre 2011 - 08:33

On trouvera ici, un outil écrit en C# qui permet de visualiser et de modifier les dictionnaires.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

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

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

Posté 22 octobre 2011 - 14:14

Aller encore plus loin avec les ldatas

La fonctionnalité décrite ici est issue d'un procédé montré par Luis Esquiviel (LE) sur TheSwamp.

Le propos est de lier un VLX avec un dessin de façon à ce qu'il se charge automatiquement à chaque ouverture de ce dessin. Comportement que l'utilisation des ldatas permet de faire assez facilement.

Il suffit de définir une ldata dans le fichier LISP avec l'argument private à T (la donnée peut être nil). Puis de compiler le LISP en un VLX en cochant l'option "Espace de nom différent".
Ensuite, charger le VLX dans un fichier et enregistrer ce fichier dans le même répertoire que le VLX.
À chaque ouverture du dessin, si le VLX est bien dans le même répertoire, il sera automatiquement chargé.

Petit exemple avec un LISP inoffensif.

Le code du LISP
(vl-load-com)

(vlax-ldata-put "SelfLoadDict" "test" nil T)

(alert "La commande 'Hello' est chargée.")

(defun c:hello ()
  (alert "Salut le monde")
  (princ)
)


Extraire le fichier SelfLoad.vlx (compilation du LISP ci dessus dans un espace de nom séparé) du ZIP.
Ouvrir un nouveau dessin.
Charger le VLX.
Enregistrer le dessin dans le même répertoire que le VLX et le fermer.
Ré ouvrir le dessin, le VLX est automatiquement chargé.

Fichier(s) joint(s)

  • Fichier joint  SelfLoad.zip (634 octets)
    Nombre de téléchargements : 21

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#7 L'utilisateur est hors-ligne   Tramber 

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

Posté 22 octobre 2011 - 16:12

Magnifique résumé francophone ! (comme d'hab.)
En plus c'est déjà épinglé :)

Toutes ces possibilités d'attacher à un dessin ou à ses objets des données sont bien passées en revue on dirait.(et j'encourage l'usage d'XDEDIT.)

Pardonne la question qui n'est pas forcement la suite ou l'extension de ce sujet mais, si l'on veut attacher des données cette fois-ci à un profil AutoCAD, un menu (?) ou encore un profil Windows, alors là on passe par les registres ? Et ca devient un autre sujet ou il reste des possibilités type dictionnaire ?

J'espère qu'il n'y a pas de question idiote... puisque on ne parlerait plus de dessin DWG proprement dit ;)
Image IPB

Bureau d'études dessin.
Spécialiste Escaliers
Développement - Formation

./__\.
(.°=°.)
0

#8 L'utilisateur est hors-ligne   azer 

  • ceinture verte
  • Groupe : Membres
  • Messages : 78
  • Inscrit(e) : 06-octobre 11

Posté 23 octobre 2011 - 10:31

bonjour
je suis un primate.
0

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

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

Posté 23 octobre 2011 - 10:55

Voir le messageazer, le 23 octobre 2011 - 10:31 , dit :

bonjour
je suis un primate.


???
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#10 L'utilisateur est hors-ligne   Patrick 

  • grand gourou
  • Groupe : En attente de validation
  • Messages : 5565
  • Inscrit(e) : 06-novembre 02
  • LocationLyon

Posté 23 octobre 2011 - 11:07

Voir le messageazer, le 23 octobre 2011 - 10:31 , dit :

bonjour
je suis un primate.


Un primaire? Un débutant? :unsure:
Bienvenue quand même! :huh:
Image IPB

Patrick Emin animateur de la communauté francophone

Image IPBImage IPBImage IPBImage IPBImage IPB
0

#11 L'utilisateur est hors-ligne   azer 

  • ceinture verte
  • Groupe : Membres
  • Messages : 78
  • Inscrit(e) : 06-octobre 11

Posté 23 octobre 2011 - 13:28

je n est pas atteins votre stade évolution.
0

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

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

Posté 23 octobre 2011 - 17:09

Voir le messageazer, le 23 octobre 2011 - 13:28 , dit :

je n est pas atteins votre stade évolution.


Il ne tiens qu'à toi.
Mais commence par faire un effort avec l'orthographe. À mon sens, on peut pas envisager d'écrire du code si on n'est pas extrêmement rigoureux à ce niveau.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#13 L'utilisateur est hors-ligne   VDH-Bruno 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 898
  • Inscrit(e) : 29-avril 10

Posté 25 octobre 2011 - 20:56

+1 (à voté) :D
(gile)merci pour les explications, grâce à toi ce soir j’ai comblé des lacunes :)
Apprendre => Prendre => Rendre
0

#14 L'utilisateur est hors-ligne   sbosarl 

  • ceinture marron
  • Groupe : Membres
  • Messages : 246
  • Inscrit(e) : 10-décembre 05
  • LocationAnnecy

Posté 27 octobre 2011 - 16:16

boujour,
merci "gile" pour ces renseignements ,dans ton post #5 tu te réfère à une cde (en c++)
windows :charger et renommer en DictionaryEditor.dll
autocad 2012 je l'ai charger en netload et la : mesage d'erreur
Impossible de charger l'assemblage. Détails de l'erreur: 
System.BadImageFormatException: Impossible de charger le fichier ou l'assembly 
'file:///C:\plansl\stok-zip-plt\DictionaryEditor.dll' ou une de ses 
dépendances. Le module était censé contenir un manifeste de l'assembly.
Nom de fichier : 'file:///C:\plansl\stok-zip-plt\DictionaryEditor.dll'
   à System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String 
codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, 
StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean 
forIntrospection, Boolean suppressSecurityChecks)
   à System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String 
codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, 
StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean 
forIntrospection, Boolean suppressSecurityChecks)
   à System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName 
assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean 
forIntrospection, Boolean suppressSecurityChecks)
   à System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, 
Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm 
hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, 
StackCrawlMark& stackMark)
   à System.Reflection.Assembly.LoadFrom(String assemblyFile)
   à Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
   à loadmgd()

AVT : la journalisation de liaison d'assembly est désactivée.
Pour activer la journalisation des échecs de liaison d'assembly, attribuez la 
valeur 1 à la valeur de Registre [HKLM\Software\Microsoft\Fusion!EnableLog] 
(DWORD).
Remarque : une certaine perte de performance est associée à l'enregistrement 
dans le journal des échecs de liaison d'assembly.
Pour désactiver cette fonctionnalité, supprimez la valeur de Registre 
[HKLM\Software\Microsoft\Fusion!EnableLog]

J'ai recherché sur le registe sans rien trouvé , serait il possible de savoir ce que je n'est pas fait correctement.
0

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

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

Posté 27 octobre 2011 - 18:55

Salut,

Citation

charger et renommer en DictionaryEditor.dll


Il faut extraire le fichier DictionaryEditor.dll qui est dans le fichier DictionaryEditor.zip.
Comme dit dans le sujet en lien, si tu as des problèmes avec l'explorateur Windows pour extraire le fichier utilise 7zip.

PS : c'est écrit en C#, pas C++.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#16 L'utilisateur est hors-ligne   sbosarl 

  • ceinture marron
  • Groupe : Membres
  • Messages : 246
  • Inscrit(e) : 10-décembre 05
  • LocationAnnecy

Posté 28 octobre 2011 - 09:15

bonjour,
pour info j'ai télécharger le zip , puis je l'ai extrait du fichier zip , puis renommer en dll,
ouvert autocad sur les "cde" taper "netload" , suivant même "cde" netload j'ai ouvert le fichier sur la racine C:\plansl\stok-zip-plt\DictionaryEditor.dll .
(répertoire stok-zip-plt qui me sert de zone d'essai ou de transfere )
j'ai même copie le fichier DictionaryEditor.dll dans un répertoire lu par défaut dans les options (C:\Program Files\Autodesk\AutoCAD 2012 – French\)
et relance netload avec comme chemin C:\Program Files\Autodesk\AutoCAD 2012 – French\ DictionaryEditor.dll

et la même message d'erreur avec autre chemin . Bon t'en pis je doit avoir un fichier manquant ou une limitation sur se poste
merci quand même
0

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

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

Posté 28 octobre 2011 - 09:35

Citation

renommer en dll

C'est ça que je ne comprends pas.
Le ZIP contient la DLL (DictionaryEditor.dll) et un dossier "en" qui sert uniquement pour avoir l'interface en anglais sur un Windows anglais.
Il n'y a rien à renommer.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#18 L'utilisateur est hors-ligne   sbosarl 

  • ceinture marron
  • Groupe : Membres
  • Messages : 246
  • Inscrit(e) : 10-décembre 05
  • LocationAnnecy

Posté 28 octobre 2011 - 10:54

vu avec gile en direct :
probleme de dezipper sur mon pc
0

#19 L'utilisateur est hors-ligne   Bortch59 

  • ceinture verte
  • Groupe : Membres
  • Messages : 79
  • Inscrit(e) : 09-octobre 06

Posté 26 février 2012 - 22:20

Bonjour,

est t'on obligé de passer par un objet Xrecord pour ajouter des données au dictionnaire??


Cela parait moins compliqué en Vlisp, est ce une impression?
0

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

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

Posté 27 février 2012 - 07:18

Citation

est t'on obligé de passer par un objet Xrecord pour ajouter des données au dictionnaire??

Oui.

Citation

Cela parait moins compliqué en Vlisp, est ce une impression?

Si tu parles des ldatas, je suis d'accord.
Si tu parles des dictionnaires et xrecords standards, je ne suis pas d'accord, j'ai toujours préféré utiliser les listes DXF.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • 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)