Aller au contenu

Les dictionnaires


(gile)

Messages recommandés

Salut,

Le dictionnaire "ACAD_LAYERFILTERS" n'est pas dans le dictionnaire des objets nommés (namedobjdict) il est (s'il y a bien des filtres de calque) dans le dictionnaire d'extension de la table des calques (LayerTable).

image.thumb.png.60949e732bcbfc18aadcb96454f83f70.png

PS: gc:DictDataList est une fonction aujourd'hui inutile qui était censée agir comme vlax-ldata-list.

  • Upvote 1

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

Lien vers le commentaire
Partager sur d’autres sites

hello Gile

merci.

mais j'ai beau chercher, et lu toutes tes explications dans les posts précédents,  je trouve pas comment en LISp, Visual lisp   accéder a ce dictionnaire.

quelle fonction  faut il utiliser ?

comment récupérer les propriétés de la table "layers" pour avoir le nom du dictionnaire d'extension ( le ENAME si j'ai bien compris )

pour en faire la liste dedans

 

merci

 

Phil

Autodesk Architecture 2023 sous windows 11 64

24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal

Lien vers le commentaire
Partager sur d’autres sites

Dans le premier message de ce sujet :

;; 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)))
)

et

;; 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)
)

Ensuite, il suffit de faire:

(and
  ;; ename de la table des calques
  (setq layerTable (cdr (assoc 330 (entget (tblobjname "layer" "0")))))
  
  ;; ename du dictionnaire d'extension
  (setq xdict (gc:GetExtDict layerTable))
  
  ;; données DXF du dictionnaire "ACAD_LAYERFILTERS"
  (setq filterDict (dictsearch xdict "ACAD_LAYERFILTERS"))
  
  ;; liste des entrées
  (setq filters (gc:GetDictEntries filterDict))
)

 

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

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é