Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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

Posté(e)

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

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é