vincentp010 Posté(e) le 6 août 2009 Posté(e) le 6 août 2009 Bonjour, Je viens de découvrir les xdata et je suis en train de plancher sur un lisp pour récupérer ces données.Les xdata que je veux extraire sont créées par Covadis.Certaines sont stockées sur des polylignes, donc là pas de problèmes je les récupères avec (setq ent (entget (car entsel) '("NOMAPPLI"))) Mais d'autres ont l'air d'être dans le dessin et nom sur des objets,j'arrive à les voir en enregistrant mon dessin en DXF : 0 XRECORD 5 1244 102 {ACAD_REACTORS 330 11A6 102 } 330 11A6 100 AcDbXrecord 280 1 1040 1.6 1000 DA1 1070 11121 1000 M. et Mme MICHU 1000 M. DUPONT Michel mais je ne sais pas comment les récupérer en lisp.Ça doit être possible mais je ne voit pas comment. Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
(gile) Posté(e) le 6 août 2009 Posté(e) le 6 août 2009 Salut, Les xdatas sont affectées à des entités ou à des objets non graphiques (des dictionnaires par exemple). Dans l'exemple que tu donnes, ça ressemble plus à un Xrecord. Les xrecords contiennent les données attachées à un dictionnaire (curieusement, dans ton cas, les codes DXF > 1000 ressemblent à ceux des xdatas).Les dictionnaires sont de 2 types, ceux attachés à des objets graphiques ou non (dictionnaires d'extension) et ceux attachés au dessin, qui sont des entrées du dictionnaire racine : (namedobjdict).Chaque dictionnaire peut avoir plusieurs entrées qui peuvent être d'autres dictionnaires, des xrecords (données) ou des objets (FIELD, SCALE, LAYOUT...). Bon courage avec les imbrications. On récupère la liste DXF d'une entrée avec la fonction dictsearch. Une petite routine qui liste les entrées d'un dictionnaire (argument = ENAME ou liste DXF telle que retournée par dictsearch). ;; GetDictEntries (gile) ;; Retourne la liste des entrées du dictionnaire ;; sous forme de paires pointées (Nom . ENAME) ;; ;; Argument : dict le dictionnaire (ENAME ou liste DXF) (defun 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) ) Par exemple, les objets LAYOUT sont les entrées du dictionnaire ACAD_LAYOUT qui est une entrée du dictionnaire racine (namedobjdict).Ou encore, les objets SCALE (échelles d'annotation) plus profondément imbriqués, que retrouve la routine : GetAnnotativeScaleList Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
vincentp010 Posté(e) le 7 août 2009 Auteur Posté(e) le 7 août 2009 Merci j'y vois plus clair maintenant. En parcourant le dictionnaire raçine (namedobjdict) j'ai réussi à retrouver les données.Reste plus qu'à écrire le lisp pour les récupérer automatiquement. Aide au téléchargement du cadastre dgfip-download-helper Insertion de photos géolocalisées exif https://www.dropbox.com/s/gkf6o9ac2hxen97/exifscr.zip?dl=0 Script correction BUG SPDC V2, propriétaire département 21 et 22 : https://greasyfork.org/scripts/442400-spdcv2/code/SPDCV2.user.js
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant