(gile) Posté(e) le 17 avril 2010 Partager Posté(e) le 17 avril 2010 Salut, Pour répondre à une demande ici, j'ai pondu un petit truc dont je me dis qu'il peut être utile.Trois commandes :INPUTXDATA : Attache à chaque entité sélectionnée le texte entré (xdata)REMOVEXDATA : Supprime le texte attaché à l'entitéDISPLAYDATA : Affiche le texte attaché à l'entité sur la quelle passe le curseur http://discussion.autodesk.com/forums/servlet/JiveServlet/download/127-769810-6371548-224383/DData.gif ;; Attache à chaque entité sélectionnée le texte entré (xdata) (defun c:inputxdata (/ *error* ent) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (and ent (redraw ent 4)) (princ) ) (or (tblsearch "APPID" "DynDisplayData") (regapp "DynDisplayData") ) (while (setq ent (car (entsel "\nSélectionnez un objet: "))) (redraw ent 3) (setq txt (getstring t "\nEntrez le texte à associer à l'objet: ")) (entmod (append (entget ent) (list (list -3 (list "DynDisplayData" (cons 1000 txt)))) ) ) (redraw ent 4) ) (princ) ) ;; Supprime le texte attaché à l'entité (defun c:removexdata (/ n ss ent) (if (setq n -1 ss (ssget '((-3 ("DynDisplayData")))) ) (while (setq ent (ssname ss (setq n (1+ n)))) (entmod (append (entget ent) ((lambda (l) (list (cons -3 (subst '("DynDisplayData") (assoc "DynDisplayData" l) l ) ) ) ) (cdr (assoc -3 (entget ent '("*")))) ) ) ) ) ) (princ) ) ;; Affiche le texte attaché à l'entité sur la quelle passe le curseur (defun c:displaydata (/ *error* gr ent text ent str norm) (defun *error* (msg) (or (= msg "Fonction annulée") (princ (strcat "Erreur: " msg)) ) (and text (entdel text)) (and ent (redraw ent 4)) (princ) ) (while (= (car (setq gr (grread T 14 2))) 5) (and text (entdel text) (setq text nil)) (and ent (redraw ent 4)) (setq pt (cadr gr)) (if (and (setq ent (ssget pt '((-3 ("DynDisplayData"))))) (setq ent (ssname ent 0)) (setq str (cdadr (cadr (assoc -3 (entget ent '("DynDisplayData")))) ) ) ) (progn (redraw ent 3) (setq size (/ (getvar "VIEWSIZE") 50.) norm (trans '(0 0 1) 2 0 t) text (entmakex (list '(0 . "TEXT") '(62 . 1) (cons 1 str) (cons 10 (polar (trans pt 1 norm) (/ pi 4) size) ) (cons 40 size) (cons 7 (getvar "TEXTSTYLE")) (cons 50 (- (getvar "VIEWTWIST"))) (cons 210 norm) ) ) ) ) ) ) (and text (entdel text) (redraw ent 4)) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 17 avril 2010 Partager Posté(e) le 17 avril 2010 Hello Gilles Merci pour tes idees originales mais toujours fort utiles ! :) Cela me semble sympa, on pouvait arriver a faire presque la meme chose en magouillant avec les Hyperliens ... :exclam: Avec ta routine, c plus simple et facilement exploitable (Vrai AutoCAD requis par contre) Merci, Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 17 avril 2010 Auteur Partager Posté(e) le 17 avril 2010 Salut, L'hyperlien c'est bien ce que j'avais proposé en premier, mais devant l'expectative du demandeur, j'ai pondu ça. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
didier Posté(e) le 17 avril 2010 Partager Posté(e) le 17 avril 2010 Coucou je confirme que (Gile) est TOUJOURS aussi inventiffranchement un grand merci pour tes incursions dans notre quotidien chapeau bas :red: amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
PHILPHIL Posté(e) le 17 avril 2010 Partager Posté(e) le 17 avril 2010 hello gile ca a l'air sympa comme truc donc poussons le bouchon un peu trop loin ( si on peut bien sur )j'ai pas essayé encore le LISP les XDATA je connais pas est ce que ca permet de mettre plusieurs XDATA pour la meme entité ?le (cons 1000 txt ) en gere 1si on met un ( cons 1001 txt ) ca en gere un deuxieme ? faut que je testes pour piger bon week end phil FREELANCE Autodesk Architecture 2025 sous windows 11 64 REVIT 24 pouces vertical + 30 pouces horizontal + 27 pouces horizontal Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 17 avril 2010 Auteur Partager Posté(e) le 17 avril 2010 si on met un ( cons 1001 txt ) ca en gere un deuxieme ? Non, le code 1001 est réservé au nom d'application. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 17 avril 2010 Auteur Partager Posté(e) le 17 avril 2010 Une version qui utilise un texte multiligne avec masque d'arrière plan. Nouvelle version : utilise l'éditeur de texte multiligne pour entrer la donnée à afficher Nouvelle version : utilise l'éditeur de texte multiligne pour modifier une donnée déjà entrée. ;; IDATA (gile) version 1.02 ;; Lier à chaque entité sélectionnée le texte multiligne entré (xdata) ;; ou modifier un texte multiligne déjà lié (defun c:idata (/ *error* addDynDisplayData ent lastent pt mtxt) (vl-load-com) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (princ (strcat "Error: " msg)) ) (and ent (redraw ent 4)) (princ) ) ;; Lier une xdata (mtext) à l'entité (defun addDynDisplayData (ent mtxt / elst) (setq elst (entget mtxt)) (entmod (append (entget ent) (list (list -3 (append (list "DynDisplayData" (cons 1000 (if (< 16.0 (atof (substr (getvar 'acadver) 1 4))) (vla-FieldCode (vlax-ename->vla-object mtxt)) (cdr (assoc 1 elst)) ) ) (cons 1000 (cdr (assoc 7 elst))) ) (if (assoc 90 elst) (list (cons 1070 (cdr (assoc 90 elst))) (cons 1071 (cdr (assoc 63 elst))) (cons 1040 (cdr (assoc 45 elst))) ) ) ) ) ) ) ) (entdel mtxt) ) (or (tblsearch "APPID" "DynDisplayData") (regapp "DynDisplayData") ) (while (setq ent (entsel "\nSélectionnez une entité: ")) (setq lastent (entlast) pt (cadr ent) ent (car ent) ) (redraw ent 3) (if (setq data (cdadr (assoc -3 (entget ent '("DynDisplayData"))))) (progn (entmake (append (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 10 (cadr (grread T))) (cons 40 (/ (getvar 'viewsize) 50.0)) (cons 1 (cdr (assoc 1000 data))) (cons 7 (cdr (assoc 1000 (cdr (member (assoc 1000 data) data))))) ) (if (assoc 1070 data) (list (cons 90 (cdr (assoc 1070 data))) (cons 63 (cdr (assoc 1071 data))) (cons 45 (cdr (assoc 1040 data))) ) ) ) ) (redraw ent 3) (setq mtxt (entlast)) (vl-cmdf "_.mtedit" mtxt) (while (< 0 (getvar 'cmdactive)) (command pause)) (addDynDisplayData ent mtxt) ) (progn (initdia) (vl-cmdf "_.mtext" "_non" pt "_width" "0") (if (not (equal lastent (entlast))) (progn (setq mtxt (entlast)) (addDynDisplayData ent mtxt) ) ) ) ) ) (*error* nil) ) ;; RDATA (gile) ;; Supprimer le texte multiligne (xdata) liée à l'entité (defun c:rdata (/ n ss ent) (if (setq n -1 ss (ssget '((-3 ("DynDisplayData")))) ) (while (setq ent (ssname ss (setq n (1+ n)))) (entmod (append (entget ent) ((lambda (l) (list (cons -3 (subst '("DynDisplayData") (assoc "DynDisplayData" l) l ) ) ) ) (cdr (assoc -3 (entget ent '("*")))) ) ) ) ) ) (princ) ) ;; DDATA (gile) ;; Afficher le texte multiligne lié à l'entité qui se trouve sous le curseur (defun c:ddata (/ *error* gr ent text ent str norm pt lst) (vl-load-com) (defun *error* (msg) (and msg (/= msg "Fonction annulée") (princ (strcat "Error: " msg)) ) (and text (entdel text)) (and ent (redraw ent 4)) (princ) ) (sssetfirst nil nil) (while (= (car (setq gr (grread T 14 2))) 5) (and text (entdel text) (setq text nil)) (and ent (redraw ent 4)) (setq pt (cadr gr)) (if (and (setq ent (ssget pt '((-3 ("DynDisplayData"))))) (setq ent (ssname ent 0)) (setq lst (cdadr (assoc -3 (entget ent '("DynDisplayData"))))) ) (progn (redraw ent 3) (setq size (/ (getvar "VIEWSIZE") 40.) ; hauteur de texte norm (trans '(0 0 1) 2 0 t) text (entmakex (append (list '(0 . "MTEXT") '(100 . "AcDbEntity") '(100 . "AcDbMText") (cons 10 (trans (polar (trans pt 1 2) (* pi 1.75) size) 2 0 ) ) (cons 40 size) '(41 . 0.) (cons 1 "") (cons 7 (cdr (assoc 1000 (cdr (member (assoc 1000 lst) lst))))) (cons 210 norm) (cons 11 (trans '(1 0 0) 2 0 T)) ) (if (assoc 1070 lst) (list (cons 90 (cdr (assoc 1070 lst))) (cons 63 (cdr (assoc 1071 lst))) (cons 45 (cdr (assoc 1040 lst))) ) ) ) ) ) (vla-put-TextString (vlax-ename->vla-object text) (cdr (assoc 1000 lst))) ) ) ) (*error* nil) ) 1 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 18 avril 2010 Auteur Partager Posté(e) le 18 avril 2010 Comme ça semble plaire, j'ai amélioré un peu la chose. La saisie du texte à afficher se fait dans l'éditeur de texte multiligne ce qui offre la possibilité d'utiliser toutes les options offertes par cette interface, y compris l'utilisation de champs. http://img717.imageshack.us/img717/7158/ddata3.gif Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 19 avril 2010 Partager Posté(e) le 19 avril 2010 Hello Gilles Un seul mot : fabuleux ! :) Encore Merci, le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 19 avril 2010 Partager Posté(e) le 19 avril 2010 Bonjour à toutes et tous, Pas mieux ! :D Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 19 avril 2010 Partager Posté(e) le 19 avril 2010 Y ahttp://www.bubblecad.com/fr/(qui affiche les Xdatas je crois, ca fait des années que je ne l'ai pas essayé) Mais bon,... ca ne vaudra jamais une routine de quelques lignes de maître Yoda :) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 1 mai 2010 Partager Posté(e) le 1 mai 2010 Bonjour à tous, Bravo Gile pour cette routine qui est fabuleuse, on peut faire avec cet outil presque un mini SIG avec Autocad, c'est énorme, lié une information à une polyligne c'est génial.Par contre, serait il possible d'exporter ces informations xdata lié à une entité vers Excel ?J'ai essayé avec entget entnext et autre mais pas possible et les xdata je ne connais pas du tout.Merci par avance de votre aide. John Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 26 décembre 2010 Auteur Partager Posté(e) le 26 décembre 2010 J'ai modifié le code réponse N°6. IDATA permet d'attacher un mtexte à une entité mais aussi de modifier un mtexte déjà attaché, et ce, toujours dans l'éditeur de mtexte... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
VDH-Bruno Posté(e) le 3 juillet 2013 Partager Posté(e) le 3 juillet 2013 Je viens de tester, superbes routines (gile), même si c’est avec retard, je tiens à m’associer à ce concert de louanges.A+ Apprendre => Prendre => Rendre Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 4 juillet 2013 Auteur Partager Posté(e) le 4 juillet 2013 Merci à tous. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
x_all Posté(e) le 4 juillet 2013 Partager Posté(e) le 4 juillet 2013 j'étais également passé à coté...je me joins au concert de louanges merci à toi... quelques trucs sur autocad Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 10 septembre 2013 Auteur Partager Posté(e) le 10 septembre 2013 LinkData est désormais disponible sur Autodesk Exchange Apps en version bilingue (anglais / français). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
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