Aller au contenu

Visualisation \"jolie\" des XDATAs


lecrabe

Messages recommandés

 

Hello

 

J'ai farfouillé un peu partout et je n'ai pas trouvé mon bonheur :exclam:

 

Il y a plein de routines qui travaillent sur les Xdatas et par exemple la bonne vieille commande

XDLIST qui affiche sur l'ecran texte toutes les Xdatas d'un objet graphique

 

Je desire une routine qui affiche dans un joli DCL, toutes les XDATAs

d'un objet graphiiue selectionne !? :)

 

Merci d'avance, Le Decapode (xdata tripatouilleur)

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne sais pas si c'est "joli", mais voilà un premier jet.

 

(defun c:xd (/ ent dlst str)
 (if
   (and
     (setq ent (car (entsel)))
     (setq dlst (cdr (assoc -3 (entget ent '("*")))))
      (setq str "")
   )
    (progn
      (foreach	l dlst
 (foreach e l
   (setq str (strcat
	       str
	       (vl-princ-to-string e)
	       " "
	     )
   )
 )
 (setq str (strcat str "\n"))
      )
      (alert str)
    )
    (alert "Cet objet ne comporte pas de données étendues")
 )
 (princ)
) 

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

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Gilles & MERCI

 

Super ca marche bien mais c'est quand meme "un peu frustre"

et comparable a ce qui est affiché par la commande XDLIST en mode texte

 

Serait-il possible d'avoir un DCL avec N champs (sur 2 colonnes) où seraient affichés :

- N champs avec le nom de la variable XDATA

et juste à coté (A droite), son contenu eventuel

 

Tant pis si il est prevu dans le DCL par exemple 20 lignes de 2 colonnes

alors que l'on en utilise QUE: 1 ou 2 ou 3 etc

 

Encore Merci, Le Decapode "chiant"

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

J'espère que cette fois ça répond aux exigences du décapode ;)

 

NOTA : changer les valeurs dans cases n'a aucune incidence

 

;; XD (gile)
;; affiche une boite de dialogue qui liste les données étendues de l'objet sélectionné

(defun c:xd (/ xd-box tmp file dcl_id ent dlst)
 (defun xd-box	(dlst)
   (setq tmp  (vl-filename-mktemp "Tmp.dcl")
  file (open tmp "w")
   )
   (write-line
     "XdBox:dialog{label=\"Données étendues\";"
     file
   )
   (foreach l dlst
     (write-line
(strcat	":boxed_column{label="
	(vl-prin1-to-string (car l))
	";"
)
file
     )
     (foreach p (cdr l)
(write-line
  (strcat ":edit_box{label=\""
	  (cond
	    ((= 1000 (car p)) "1000  Chaîne : ")
	    ((= 1002 (car p)) "1002  Accolade : ")
	    ((= 1003 (car p)) "1003  Calque : ")
	    ((= 1004 (car p)) "1004  Binaire : ")
	    ((= 1005 (car p)) "1005  Maintient : ")
	    ((= 1010 (car p)) "1010  Point : ")
	    ((= 1011 (car p)) "1011  Position : ")
	    ((= 1012 (car p)) "1012  Déplacement : ")
	    ((= 1013 (car p)) "1013  Direction : ")
	    ((= 1040 (car p)) "1040  Réel : ")
	    ((= 1041 (car p)) "1041  Distance : ")
	    ((= 1042 (car p)) "1042  Echelle : ")
	    ((= 1070 (car p)) "1070  Entier 16 bits : ")
	    ((= 1071 (car p)) "1071  Entier 32 bits : ")
	  )
	  "\";value=\""
	  (vl-princ-to-string (cdr p))
	  "\";edit_width=30;}"
  )
  file
)
     )
     (write-line "}" file)
   )
   (write-line "spacer;ok_only;}" file)
   (close file)
   (setq dcl_id (load_dialog tmp))
   (if	(not (new_dialog "XdBox" dcl_id))
     (exit)
   )
   (start_dialog)
   (unload_dialog dcl_id)
   (vl-file-delete tmp)
 )

 (if
   (and
     (setq ent (car (entsel)))
     (setq dlst (cdr (assoc -3 (entget ent '("*")))))
   )
    (xd-box dlst)
    (alert "Cet objet ne comporte pas de données étendues")
 )
 (princ)
) 

 

[Edité le 15/4/2008 par (gile)]

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

Lien vers le commentaire
Partager sur d’autres sites

Si tu n'as pas besoin de copier les valeurs, les case éditables son inutiles, cette version donne une boite moins imposante.

 

(defun c:xd (/ xd-box tmp file dcl_id ent dlst)
 (defun xd-box	(dlst)
   (setq tmp  (vl-filename-mktemp "Tmp.dcl")
  file (open tmp "w")
   )
   (write-line
     "XdBox:dialog{label=\"Données étendues\";"
     file
   )
   (foreach l dlst
     (write-line
(strcat	":boxed_row{label="
	(vl-prin1-to-string (car l))
	";:column{"
)
file
     )
     (foreach p (cdr l)
(write-line
  (strcat ":text{label=\""
	  (cond
	    ((= 1000 (car p)) "1000  Chaîne : ")
	    ((= 1002 (car p)) "1002  Accolade : ")
	    ((= 1003 (car p)) "1003  Calque : ")
	    ((= 1004 (car p)) "1004  Binaire : ")
	    ((= 1005 (car p)) "1005  Maintient : ")
	    ((= 1010 (car p)) "1010  Point : ")
	    ((= 1011 (car p)) "1011  Position : ")
	    ((= 1012 (car p)) "1012  Déplacement : ")
	    ((= 1013 (car p)) "1013  Direction : ")
	    ((= 1040 (car p)) "1040  Réel : ")
	    ((= 1041 (car p)) "1041  Distance : ")
	    ((= 1042 (car p)) "1042  Echelle : ")
	    ((= 1070 (car p)) "1070  Entier court : ")
	    ((= 1071 (car p)) "1071  Entier long : ")
	  )
	  "\";}"
  )
  file
)
     )
     (write-line "}:column{" file)
     (foreach p (cdr l)
(write-line
  (strcat ":text{label=\""
	  (vl-princ-to-string (cdr p))
	  "\";}"
  )
  file
)
     )
     (write-line "}}" file)
   )
   (write-line "spacer;ok_only;}" file)
   (close file)
   (setq dcl_id (load_dialog tmp))
   (if	(not (new_dialog "XdBox" dcl_id))
     (exit)
   )
   (start_dialog)
   (unload_dialog dcl_id)
   (vl-file-delete tmp)
 )

 (if
   (and
     (setq ent (car (entsel)))
     (setq dlst (cdr (assoc -3 (entget ent '("*")))))
   )
    (xd-box dlst)
    (alert "Cet objet ne comporte pas de données étendues")
 )
 (princ)
) 

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é