lecrabe Posté(e) le 15 décembre 2006 Posté(e) le 15 décembre 2006 Bonsoir à tous J'ai un problème simple ... Valable pour AutoCAD 2007 / 2006 / 2005 ! J'utilise "pas mal" les champs dynamiques depuis 2 ans ... Je crains d'avoir peut être complètement raté une option ou commande "simple" ! En sélectionnant un MTexte qui contient un champ dynamique ... Comment savoir à quelle objet graphique il est lié !? Le Decapode "tout bête" Autodesk Expert Elite Team
(gile) Posté(e) le 15 décembre 2006 Posté(e) le 15 décembre 2006 Salut, Il y a peut être un moyen plus simple, mais l'expression suivante retourne la liste DXF de l'objet auquel le champ est lié : (entget (cdr (assoc 331 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (car (entsel))))) ) ) ) ) ) ) ) ) ) ) ) ) ) Edit : pour le mettre en surbrillance. (redraw (cdr (assoc 331 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (cdr (assoc 360 (entget (car (entsel))))) ) ) ) ) ) ) ) ) ) ) ) ) 3 ) [Edité le 15/12/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 16 décembre 2006 Auteur Posté(e) le 16 décembre 2006 Hello Gilles Ta réactivité est exceptionnelle ... Suggestion de développement Lisp/V-Lisp qui devrait intéresser beaucoup de gens:(Routine fonctionnelle sur AutoCAD 2005-2006-2007 si possible) A partir de la sélection de UN Mtexte contenant un champ dynamique : - Mise en surbrillance de l'objet graphique concerné - Plus une option intéressante surtout lorsque l'objet est LOIN du champ dynamique Dessin réel (sur le calque courant) d'une ligne allant du Point d'insertion du MText à un point précis de l'objet graphique concerné :- Début d'une ligne, arc, polyligne, spline, arc elliptique, 3DPoly, 3Dface- Centre d'un Cercle, Ellipse (Ou peut être le ZERO degré/grade)- Point d'insertion d'un Bloc, Xref, Image, Texte, MTexte- Région, Solide- etc Comment tu fais si le MTexte est dans un tableau, tu le vois comme un MTexte normal ? *** Version TIP-TOP : Sélection de N MTextes *** Le Decapode "Générateur de prise de têtes" Autodesk Expert Elite Team
(gile) Posté(e) le 16 décembre 2006 Posté(e) le 16 décembre 2006 Salut, Voilà pour un Mtexte contenant un champ (ou un champ). Comment tu fais si le MTexte est dans un tableau, tu le vois comme un MTexte normal ? Je n'y avais pas pensé au premier jet, mais en utilisant nentsel plutôt que entsel, je récupère la sous-entité Mtext dans un tableau ou dans un bloc. ;;; CHP-OBJ -Gilles Chanteau- 16/12/06 ;;; Met en surbrillance l'objet lié au champ sélectionné. ;;; Une option permet de créer une ligne du texte à l'objet. ;;; Fonctionne avec les champs contenus dans des tableaux ou des blocs. (defun c:chp-obj (/ ent txt elst dic chp obj) (while (not (and (setq ent (nentsel "\nSélectionnez un champ: ")) (setq txt (car ent)) (setq elst (entget txt)) (member (cdr (assoc 0 elst)) '("MTEXT" "ATTRIB")) ) ) (princ "\nAucun champ sélectionné.") ) (if (and (setq dic (cdr (assoc 360 elst))) (setq dic (cdr (assoc 360 (entget dic)))) (setq chp (cdr (assoc 360 (entget dic)))) (= (cdr (assoc 0 (entget chp))) "FIELD") (setq chp (cdr (assoc 360 (entget chp)))) ) (if (setq obj (cdr (assoc 331 (entget chp)))) (progn (redraw obj 3) (initget "Oui Non") (if (= "Oui" (getkword "\nLier l'objet au texte ? [Oui/Non] : ") ) (entmake (list '(0 . "LINE") (cons 10 (if ( (setq pt (mapcar '+ (cdr (assoc 10 (entget (car (last ent))))) (cdr (assoc 10 elst)) ) ) (setq pt (cdr (assoc 10 elst))) ) ) (cons 11 (cdr (assoc 10 (entget obj)))) ) ) ) ) (princ "\nLe champ n'est pas lié à un objet.") ) (princ "\nLe texte ne contient pas de champ.") ) (princ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
jalna Posté(e) le 16 décembre 2006 Posté(e) le 16 décembre 2006 Salut (gile) & Le Decapode Voila une chose que je cherchais depuis un certain temps et je suis tombé par hasard sur le sujet!! Je viens de tester le lisp de gile et je dois dire que c'est un plus pour les personnes qui utilisent les champs, donc merci gile!! Alors sinon j'ai une question! Serait il possible de cliquer sur le champ et de voir automatiquement le lien!En fait ce que tu as fait mais dans le principe des bases de données autocad C'est juste une question mais sinon to lisp va tres bien (pratique le lien on le met sur un calque non imprimable par exemple.. Bon Week end à vous "Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van DammeMon forum : http://plexus.forumactif.org/
(gile) Posté(e) le 16 décembre 2006 Posté(e) le 16 décembre 2006 Salut Jalna, Je ne comprends pas bien la demande, tu préfères avoir une ligne plutôt que l'objet en surbrillance ?Tu veux que la persistance de la ligne soit optionnelle ? Par exemple, créer une ligne à conserver ou non : ;;; CHP-OBJ -Gilles Chanteau- 16/12/06 -Version 2.0- ;;; Crée une ligne entre le champ et l'objet qui lui est lié. ;;; L'utilisateur peut choisir de conserver la ligne ou non. ;;; Fonctionne avec les champs contenus dans des tableaux ou des blocs. (defun c:chp-obj (/ ent txt elst dic chp obj) (vl-load-com) (while (not (and (setq ent (nentsel "\nSélectionnez un champ: ")) (setq txt (car ent)) (setq elst (entget txt)) (member (cdr (assoc 0 elst)) '("MTEXT" "ATTRIB")) ) ) (princ "\nAucun champ sélectionné.") ) (if (and (setq dic (cdr (assoc 360 elst))) (setq dic (cdr (assoc 360 (entget dic)))) (setq chp (cdr (assoc 360 (entget dic)))) (= (cdr (assoc 0 (entget chp))) "FIELD") (setq chp (cdr (assoc 360 (entget chp)))) ) (if (setq obj (cdr (assoc 331 (entget chp)))) (progn (entmake (list '(0 . "LINE") (cons 10 (if ( (setq pt (mapcar '+ (cdr (assoc 10 (entget (car (last ent))))) (cdr (assoc 10 elst)) ) ) (setq pt (cdr (assoc 10 elst))) ) ) (cons 11 (cdr (assoc 10 (entget obj)))) ) ) (initget "Oui Non") (if (= "Non" (getkword "\nConserver la ligne ? [Oui/Non] : ") ) (entdel (entlast)) ) ) (princ "\nLe champ n'est pas lié à un objet.") ) (princ "\nLe texte ne contient pas de champ.") ) (princ) ) [Edité le 16/12/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 16 décembre 2006 Auteur Posté(e) le 16 décembre 2006 Bonsoir à tous En fait j'utilise "intensivement" les champs dynamiques sur les objets suivants:- TEXT, MTEXT & MTEXT dans les Tableaux- POLYLINE 2D & 3D, LWPOLYLINE- INSERT (Bloc, Bloc+Attribut)- POINT (Parfois) Les autres objets graphiques me semblent relativement "inintéressants" pour les champs dynamiques ... :exclam: Qu'en pensez vous ? Le Decapode Autodesk Expert Elite Team
Krynn Posté(e) le 24 juillet 2007 Posté(e) le 24 juillet 2007 Trés bien ce LISP. Comme ont commance a utilisé les champs, il va faire plaisir a plein de monde. Merci
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