nen Posté(e) le 15 octobre 2018 Partager Posté(e) le 15 octobre 2018 Bonjour le forum, J'ai un petit problème… en faite j'ai fait une boulette :blink: , j'aurais besoin de votre aide ;) .J'ai un attribut existant "Info_Local" avec trois champs, Désignation, Numéro et surface.Et naturellement pour aller vite, et cela devait être seulement pour un exemple, j'ai créé ses trois champs dans du texte normale, en utilisant la commande « texte ».Je voudrais donc récupérer les textes simples dans le bloc "Info_Local" composé des trois attribut "Désignation, Numéro et surface". Est-ce possible ? Existe-t-il une commande ou un lisp ? J'ai cherché sur internet et les forums un je n'ai rien trouvé, est-ce que quelqu'un a une solution ? Meilleures salutations Lien vers le commentaire Partager sur d’autres sites More sharing options...
Vincent P. Posté(e) le 16 octobre 2018 Partager Posté(e) le 16 octobre 2018 Bonjour nen C'est un cas isolé ou tu à 50 textes (donc 150 champs) à rediviser? Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 16 octobre 2018 Partager Posté(e) le 16 octobre 2018 Bonjour, un exemple illustré serait le bienvenu, car j'ai du mal à comprendre.En effet, "Info_local" c'est tantôt un bloc, tantôt un attribut. "Un bon croquis vaut mieux qu'un long discours." Napoléon Bonaparte AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nen Posté(e) le 16 octobre 2018 Auteur Partager Posté(e) le 16 octobre 2018 Bonjour, Non ce n'est pas un cas isolé j'en ai plus de 50 :( Malheureusement je n'arrive pas à joindre un dwg ou un gif, j'ai le message ci-dessous depuis le boulot et depuis chez moi :( Erreur Le serveur a retourné une erreur durant l'envoi. Je fais comment ? :wacko: Merci d'avance Meilleures salutations Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 16 octobre 2018 Partager Posté(e) le 16 octobre 2018 dropbox + lien AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nen Posté(e) le 16 octobre 2018 Auteur Partager Posté(e) le 16 octobre 2018 Bonjour, Vous trouverez ci-dessous le lien dropbox(j'espère qu'il fonctionne) ;) https://www.dropbox.com/sh/eqawyiupcsyrnxg/AADc9IlcflBQE23gXu-t1lqba?dl=0 Meilleures salutations Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 17 octobre 2018 Partager Posté(e) le 17 octobre 2018 (vl-load-com) (defun modif_attrib (E ETIQ VALEUR / LATT ATT) (if (= (type E) 'ENAME) (setq E (vlax-ename->vla-object E)) ) (setq LATT (vlax-invoke E 'getAttributes)) (foreach ATT LATT (if (= (strcase (vla-get-TagString ATT)) (strcase ETIQ)) (vla-put-TextString ATT VALEUR) ) ) ) (defun indtxt (enam) (vla-get-TextString (vlax-ename->vla-object enam)) ) (defun c:txt2att () (setq Des (car (entsel "\nTexte Désignation : "))) (setq Num (car (entsel "\nTexte Numéro : "))) (setq Sur (car (entsel "\nTexte Surface : "))) (setq Blo (car (entsel "\nBloc de destination : "))) (modif_attrib Blo "DÉSIGNATION" (indtxt Des)) (modif_attrib Blo "NUMERO" (indtxt Num)) (modif_attrib Blo "SURFACE" (indtxt Sur)) (princ) ) AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nen Posté(e) le 18 octobre 2018 Auteur Partager Posté(e) le 18 octobre 2018 Bonjour,Je te remercie pour ton aide et ton message .Ton lisp fonctionne impeccable, il est en plus facilement modifiable :D Juste pour mon info personnel j'avais des rechercher entre temps sur le net et j'ai trouvé ce lisp ci-dessous.Je ne comprends pas comment il fonctionne ?Si tu fais un copier/coller ok mais, ensuite comment charger ce type de lisp ? et il n'a pas de commande "defun c: pushtext" ? :( Il fonctionne bien aussi, mais le problème c'est que tu dois faire du copier/coller à chaque fois :( ; This will record text picked and push it into a block with attributes ; By Alan H oct 2018 (defun pushtext ( / lst ent txt blk x att) (setq blk (vlax-ename->vla-object (car (entsel "Pick block object")))) (foreach att (vlax-invoke blk 'getattributes) (setq txt (vla-get-textstring (vlax-ename->vla-object (car (entsel "Pick text object"))))) (vla-put-textstring att txt) (princ "\n") ) ) (pushtext) Merci de ton aide Vincent Meilleures salutations Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 18 octobre 2018 Partager Posté(e) le 18 octobre 2018 Bonjour, le c: permet d'utiliser une fonction lisp comme une commande Autocad. Sinon, s'il n'y a pas le c:, on peut quand même appeler la fonction en ligne de commande, comme on le ferait dans un lisp, en tapant (pushtext). Rien ne t'empêche de rajouter c: devant pushtext, mais il faudrait enlever (pushtext) de la fin. Au niveau de la logique, pushtext est plus polyvalent, puisqu'il fonctionne quel que soit le nombre d'attributs et quels que soient leurs noms. Par contre, il a un gros désavantage, celui pour l'utilisateur de connaitre parfaitement l'ordre des attributs avant l'exécution de la fonction. S'il y en a que 3, c'est gérable :D On pourrait, pour améliorer Pushtext, rajouter dans la boucle foreach, le vla-get qui va bien pour récupérer le nom de l'attribut courant et l'afficher, pour que l'utilisateur sache où il en est avant de faire le "Pick text object" AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nen Posté(e) le 19 octobre 2018 Auteur Partager Posté(e) le 19 octobre 2018 Bonjour, Je te remercie pour ton message :) .Ci-dessous le code modifié avec le fameux "defun c:pushtext" ;) En effet l'utilisateur de connaitre parfaitement l'ordre des attributs mais c'est quand même une possibilité intéressante suivant le cas.Pour améliorer le lisp je laisserais faire les pros parce que moi ce n'est pas ça :(rires forts): Merci pour ton aideMeilleures salutations ; This will record text picked and push it into a block with attributes ; By Alan H oct 2018 ; Edit by CAB (defun c:pushtext ( / lst ent txt blk x att) (setq blk (vlax-ename->vla-object (car (entsel "Choisir un objet bloc avec des attributs")))) (foreach att (vlax-invoke blk 'getattributes) (setq txt (vla-get-textstring (vlax-ename->vla-object (car (entsel "\nChoisir un objet texte"))))) (vla-put-textstring att txt) (princ "\n") ) ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 19 octobre 2018 Partager Posté(e) le 19 octobre 2018 Bonsoir, je pense que c'est assez facile de rajouter le texte qui indique à l'utilisateur quel est l'attribut qui est en train d'être traité. Un (vla-get-TagString att) placé judicieusement suffirait déjà ; This will record text picked and push it into a block with attributes ; By Alan H oct 2018 ; Edit by CAB (defun c:pushtext ( / txt blk att) (setq blk (vlax-ename->vla-object (car (entsel "Choisir un objet bloc avec des attributs")))) (foreach att (vlax-invoke blk 'getattributes) (setq txt (vla-get-textstring (vlax-ename->vla-object (car (entsel (strcat "\nChoisir un objet texte pour l'attribut " (vla-get-TagString att) ) ) ) ) ) ) (vla-put-textstring att txt) ) (princ) ) amicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nen Posté(e) le 22 octobre 2018 Auteur Partager Posté(e) le 22 octobre 2018 Bonjour, Merci pour la mise à jour du lisp, je l'ai testé ce matin... nickel :D . J'ai une petite remarques ;) Est-il possible qu'au départ de la commande "pushtext" qu'il y ait une demande du type "un seul ou plusieurs attributs", si l'option "Plusieurs" une fois l'attribut renseigné la commande reste active et on passe au suivant sans relancer la commande "pushtext" car suivant le nombre d'attributs c'est un peu pénible. Merci d'avance :) Meilleures salutations Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 22 octobre 2018 Partager Posté(e) le 22 octobre 2018 Bonjour, l'appui sur la barre d'espace relance la dernière commande et évite de retaper à chaque fois la commande précédente, quelle qu'elle soit, y compris un lisp. Mais, si j'ai bien compris la demande, une boucle while devrait pouvoir nous aider et faire "tourner" le lisp tant qu'on clique sur un bloc à renseigner. Pour s'arrêter, on clique dans le vide. ; This will record text picked and push it into a block with attributes ; By Alan H oct 2018 ; Edit by CAB (defun c:pushtext ( / txt blk att) (while (setq blk (entsel "\nChoisir un objet bloc avec des attributs : ")) (setq blk (vlax-ename->vla-object (car blk))) (foreach att (vlax-invoke blk 'getattributes) (setq txt (vla-get-textstring (vlax-ename->vla-object (car (entsel (strcat "\nChoisir un objet texte pour l'attribut " (vla-get-TagString att) ) ) ) ) ) ) (vla-put-textstring att txt) ) ) (princ) ) AmicalementVincent 1 C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) Lien vers le commentaire Partager sur d’autres sites More sharing options...
nen Posté(e) le 23 octobre 2018 Auteur Partager Posté(e) le 23 octobre 2018 Bonjour, Je te remercie pour ton nouveau lisp, nickel, c'est exactement ça :D. En effet tu tapes sur la barre d'espace ou enter, mais quand tu as 60 blocs avec 3 attributs dans chaque. Tu fais déjà 240 cliques sans le rappel de la commande barre d'espace avec le rappel cela fait 300 cliques pour un niveau, il y en a 5 :o Je te remercie infiniment pour ton aide ;) Meilleures salutations Lien vers le commentaire Partager sur d’autres sites More sharing options...
zebulon_ Posté(e) le 23 octobre 2018 Partager Posté(e) le 23 octobre 2018 Super, ce qui est encore un peu faiblard c'est le peu de test qui est effectué par le lisp. Est-ce que l'utilisateur, ce blaireau, saisit bien un bloc quand il faut saisir un bloc et des textes quand il faut saisir des textes ? Cela risque de se planter à chaque erreur de clic. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi) 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