kallain Posté(e) le 31 mai 2005 Posté(e) le 31 mai 2005 Bonjour, Il y a quelques jours, j'ai reçu un fichier avec (entre autres) quelques attributs sans blocks. :hallucine: :mad2: :hallucine: Le problème est que lors d'une insertion dans un fichier (en block ou Xref )ces fameux attributs ne passent pas.Pas grave, je vais les transformer en texte…. Oui mais comment ???? Pas trouvé ! En cherchant sur ce site, j'ai trouvé une routine VLX de Patrick (téléchargement payant : une fortune ;) )"Convertir les attributs en texte" ça s'appelle.Mais malheureusement ça ne marche pas.Ok sur des attributs attachés à un block mais pas sur des attributs seuls. Quelqu'un a-t-il une solution ?
bonuscad Posté(e) le 31 mai 2005 Posté(e) le 31 mai 2005 Avec les ExpressTools ! Commande "BURST", fonctionne avec des attributs seuls ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
BIM G CO Posté(e) le 31 mai 2005 Posté(e) le 31 mai 2005 J'ai la fonction inverse : ;;; ---------------------------------------------------------------------- (defun c:TXT2ATT (/ PRIVE_SEL PRIVE_ENT) (setq PRIVE_SEL nil) (while (or (not PRIVE_SEL) (and (/= (cdr (assoc 0 (entget (car PRIVE_SEL)))) "TEXT") (/= (cdr (assoc 0 (entget (car PRIVE_SEL)))) "MTEXT") ) ) (setq PRIVE_SEL (entsel "\nSelect Text to Change")) ) (setq PRIVE_ENT (entget (car PRIVE_SEL))) (entmake (list '(0 . "ATTDEF") '(100 . "AcDbEntity") (assoc 410 PRIVE_ENT) (assoc 8 PRIVE_ENT) '(100 . "AcDbText") (assoc 10 PRIVE_ENT) (assoc 40 PRIVE_ENT) (assoc 1 PRIVE_ENT) (assoc 50 PRIVE_ENT) '(41 . 1.0) '(51 . 0.0) (assoc 7 PRIVE_ENT) '(71 . 1) (if (= (cdr (assoc 0 PRIVE_ENT)) "MTEXT") (cons 72 (cdr (assoc 71 PRIVE_ENT))) (assoc 72 PRIVE_ENT)) (cons 11 (list 0.0 0.0 0.0)) (cons 210 (list 0.0 0.0 1.0)) '(100 . "AcDbAttributeDefinition") '(3 . "Invite") '(2 . "ETIQ") '(70 . 0) '(73 . 0) '(74 . 0) ) ) (entdel (car PRIVE_SEL)) )tu peux peut-être t'en servir pour toi.... Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
kallain Posté(e) le 31 mai 2005 Auteur Posté(e) le 31 mai 2005 Désolé Bonuscad mais chez moi Burst ne marche qu'avec des attributs associés à un block. Maximilien, je ne comprends deja pas l'original, alors faire l'inverse............. :mad2: ;)
bonuscad Posté(e) le 31 mai 2005 Posté(e) le 31 mai 2005 J'ai l'impression qu'il y a un malentendu sur la définition.Burst fonction sur les attributs, mais je me demande si en fait on a pas affaire à des DEFINITIONS d'attribut. Chose tout à fait différente. Pour éclairer ma lanterne ne pourrait pas tu faire en ligne de commande ce qui suit:(entget (car (entsel)))et pointer ce soit disant attribut que tu transformer. Fait un copier-coller du retour, ca pourra expliquer des choses.A+ Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
kallain Posté(e) le 1 juin 2005 Auteur Posté(e) le 1 juin 2005 Bonjour Bonucad, Voilà, c'est fait Commande: (entget (car (entsel))) Choix de l'objet: ((-1 . ) (0 . "ATTDEF") (330 . d'entité: 7ed25d08>) (5 . "327") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbText") (10 684411.0 296808.0 0.0) (40 . 0.6) (1 . "") (50 . 0.699734) (41 . 0.99) (51 . 0.0) (7 . "Arial") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (3 . "") (2 . [surligneur] "X=684408.219") [/surligneur](70 . 0) (73 . 0) (74 . 0)) J'ai essayé de créer un blocks en insérant ces attributs pour pouvoir les transformer en txt,mais ça ne marche pas : en fait l'attribut [surligneur] "X=684408.219""[/surligneur] est reconnu par "propriétés"comme étant l'étiquette d'un attribut et non pas sa valeur.
bonuscad Posté(e) le 1 juin 2005 Posté(e) le 1 juin 2005 C'est bien ce que je pensais! Bien que tu ne soit pas le responsable, c'est une drôle de façon de travailler, je met 0/20 au concepteur de ce genre de fichier. (intérêt nul, je te dis pas le "bordel" si tu veux faire un bloc et que tu veux prendre ce genre d'entité avec) Pour te dépanner applique la routine suivante (faite exprés pour toi, car c'est un cas vraiment unique en son genre) (defun c:defatt2txt ( / js ind ent dxf_ent val_txt) (princ "\nChoix des définitions d'attribut à convertir en texte") (setq js (ssget '((0 . "ATTDEF")))) (cond (js (setq ind 0) (repeat (sslength js) (setq ent (ssname js ind) dxf_ent (entget ent) val_txt (cdr (assoc 2 dxf_ent)) ) (foreach n '(-1 0 330 100 5 1 100 3 2 70 73 74) (setq dxf_ent (vl-remove-if-not '(lambda (x) (/= (car x) n)) dxf_ent)) ) (setq dxf_ent (cons (cons 1 val_txt) dxf_ent) dxf_ent (cons '(0 . "TEXT") dxf_ent) ind (1+ ind) ) (entdel ent) (entmake dxf_ent) ) ) (T (princ "\nAucune définition d'attribut sélectionnée") ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
kallain Posté(e) le 1 juin 2005 Auteur Posté(e) le 1 juin 2005 pile poil Parfait : ça marche. Je propose de changer ton pseudo par [surligneur] SUPERBONUSCAD[/surligneur] ;) Encore merci PS: ça vaut bien une petite donation de ma part
Stepane Posté(e) le 30 janvier 2019 Posté(e) le 30 janvier 2019 Bonjour BonusCAD. Treize ans après kallain, je rencontre exactement le même problème avec un objet définition d'attribut : Choix de l'objet: ((-1 . <Nom d'entité: 2aa78c6b9c0>) (0 . "ATTDEF") (330 . <Nom d'entité: 2aa78c139f0>) (5 . "4C34") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Construction - Divers") (100 . "AcDbText") (10 1.69617e+06 5.23659e+06 0.0) (40 . 2.5) (1 . "LAVAL") (50 . 0.210788) (41 . 1.0) (51 . 0.0) (7 . "Etiquette") (71 . 0) (72 . 1) (11 1.69618e+06 5.23659e+06 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Direction à Gauche : ") (2 . "BOURGES") (70 . 0) (73 . 0) (74 . 2) (280 . 0)) Pourrais-tu m'expliquer ce que sont ces étranges objets "définition d'attribut"?C'est moins la manière de le transformer en texte qu'un brin d'explication qui m'intéresse. J'aime bien comprendre. Je te remercie.
bonuscad Posté(e) le 31 janvier 2019 Posté(e) le 31 janvier 2019 Bonjour BonusCAD. Treize ans après kallain, je rencontre exactement le même problème avec un objet définition d'attribut : Choix de l'objet: ((-1 . <Nom d'entité: 2aa78c6b9c0>) (0 . "ATTDEF") (330 . <Nom d'entité: 2aa78c139f0>) (5 . "4C34") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "Construction - Divers") (100 . "AcDbText") (10 1.69617e+06 5.23659e+06 0.0) (40 . 2.5) (1 . "LAVAL") (50 . 0.210788) (41 . 1.0) (51 . 0.0) (7 . "Etiquette") (71 . 0) (72 . 1) (11 1.69618e+06 5.23659e+06 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "Direction à Gauche : ") (2 . "BOURGES") (70 . 0) (73 . 0) (74 . 2) (280 . 0)) Pourrais-tu m'expliquer ce que sont ces étranges objets "définition d'attribut"?C'est moins la manière de le transformer en texte qu'un brin d'explication qui m'intéresse. J'aime bien comprendre. Je te remercie. Déjà je te suggère de taper ATTDEF en ligne de commande et de faire F1 pour obtenir de l'aide.Mais en condensé les entités ATTDEF sont destinées à être utilisée dans un bloc et non pas en objet indépendant (comme relaté dans ce fil) qui peut faire croire que c'est des ATTRIBUT (ils ne le deviennent que lorsqu'ils font partie de la définition d'un bloc, hors d'un bloc ils ont l'apparence du texte sans en être). Une fois définies (pas de limitation de nombre) lors de la création d'un bloc, à l'insertion de ce bloc tu sera invité à renseigner ces champs par des valeurs qu'on appelle ATTRIBUT (suivant les propriétés de mode défini dans ATTDEF: invisible, constant, vérifié, prédéfini) Tu peux ouvrir "Foor Plan Sample.dwg" (dans le dossier exemple d'autocad) où tu as des exemples de blocs simples et voir par exemple le bloc RMNUM (constitué d'une polyligne et 1 définition d'attribut :attdef) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Stepane Posté(e) le 8 novembre 2019 Posté(e) le 8 novembre 2019 Dix mois plus tard... merci.Dix mois sans soucis avec Autocad!
dilack Posté(e) le 29 janvier 2020 Posté(e) le 29 janvier 2020 Salut à tous, Je viens de récupérer un fichier où systématiquement les textes sont des définitions d'attribut seul!!!! J'enrage!!!! Je viens d'essayer la routine de bonuscad, et j'ai un message d'erreur!Commande: (LOAD "D:/07_RESOURCES_DAO_CAO_PAO/01_ACAD/01_LISP/defatt2txt.lsp") structure incorrecte de la liste en entrée J'ai contrôlé mon copier/coller afin de détecter une éventuelle mise en page défectueuse. Merci d'avance pour vos réponses
bonuscad Posté(e) le 30 janvier 2020 Posté(e) le 30 janvier 2020 Salut à tous, Je viens de récupérer un fichier où systématiquement les textes sont des définitions d'attribut seul!!!! J'enrage!!!! Je viens d'essayer la routine de bonuscad, et j'ai un message d'erreur!Commande: (LOAD "D:/07_RESOURCES_DAO_CAO_PAO/01_ACAD/01_LISP/defatt2txt.lsp") structure incorrecte de la liste en entrée J'ai contrôlé mon copier/coller afin de détecter une éventuelle mise en page défectueuse. Merci d'avance pour vos réponses Je ne vois pas trop d'où peut venir le problème... Peut être l'encodage du fichier lors de l'enregistrement dans ton éditeur, pour ma part j'encode en ANSI (ceci pour les caractères accentués), plus rarement en UTF-8 lors d'échange international. Si tu copie-colle directement le code depuis le site en ligne de commande d'autocad, tu as aussi cette erreur? Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 30 janvier 2020 Posté(e) le 30 janvier 2020 Salut bonuscad,j'ai oublié de préciser que j'étais sur la version 2019 d'autocad. Peut-être que ceci explique cela!je copie aussi en ANSIje n'avais pas vu que c'était le forum de la version 2004!
bonuscad Posté(e) le 30 janvier 2020 Posté(e) le 30 janvier 2020 Sur ma version AutocadMap 2019, je le charge et l’exécute sans problème.Mais je viens de voir qu'il y a une petite nuance entre celui que je possède et celui posté en #7 Donc pas acquis de conscience je reposte le code... j'ai peut être fais une correction mineure sans corriger celui posté auparavant (je ne suis pas forcément toutes mes publications)(defun c:defatt2txt ( / js ind ent dxf_ent val_txt) (princ "\nChoix des définitions d'attribut à convertir en texte") (setq js (ssget '((0 . "ATTDEF")))) (cond (js (setq ind 0) (repeat (sslength js) (setq ent (ssname js ind) dxf_ent (entget ent) val_txt (cdr (assoc 2 dxf_ent)) ) (foreach n '(-1 0 280 330 100 5 1 100 3 2 70 73 74) (setq dxf_ent (vl-remove-if-not '(lambda (x) (/= (car x) n)) dxf_ent)) ) (setq dxf_ent (cons (cons 1 val_txt) dxf_ent) dxf_ent (cons '(0 . "TEXT") dxf_ent) ind (1+ ind) ) (entdel ent) (entmake dxf_ent) ) ) (T (princ "\nAucune définition d'attribut sélectionnée") ) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
dilack Posté(e) le 30 janvier 2020 Posté(e) le 30 janvier 2020 C'est tout bon, cela fonctionne sur AutoCAD 2019, merci!T'inquiètes on peut pas être partout! :)
philipé Posté(e) le 14 avril 2020 Posté(e) le 14 avril 2020 bonjour à BonusCad la routine proposée en début de tuto fonctionne parfaitement même sur la version 2020.par contre le problème que je rencontre est que la valeur de l'attribut n'est pas celle de étiquette,du coup je me retrouve bien avec des textes, mais pas avec la valeurs souhaitée en faisant la commande : (entget (car (entsel))), j’obtiens ça : Commande: (entget (car (entsel)))Choix de l'objet: ((-1 . <Nom d'entité: 1d6412769b0>) (0 . "ATTDEF") (330 . <Nom d'entité: 1d61850c1f0>) (5 . "4E8B3") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "CA_6INF-COTE_050") (100 . "AcDbText") (10 29.5232 542.732 8.83524e-29) (40 . 0.1) (1 . "00.00") (50 . 4.16432) (41 . 1.0) (51 . 0.314159) (7 . "Simplex") (71 . 0) (72 . 1) (11 29.4239 542.57 8.83524e-29) (210 0.0 0.0 1.0) (100 . "AcDbAttributeDefinition") (280 . 0) (3 . "altimetrie") (2 . "61.37") (70 . 0) (73 . 0) (74 . 0) (280 . 1)) je voulais donc savoir si il est possible de modifier la routine proposé afin d'extraire les chiffres dans l'étiquettes de l'attribut et non ceux du "champ" de la valeur j’espère que oui car j'en ai une centaine dans le plan...sinon se retour à l'envoyeur en espérant avoir été assez clair dans ma demande.merci pour ton aidePhilippe
bonuscad Posté(e) le 14 avril 2020 Posté(e) le 14 avril 2020 Bonjour, As tu essayé la routine corrigé et proposé en #15. la routine proposée en début de tuto fonctionne parfaitement même sur la version 2020 A quoi fais tu référence, à BURST? (c'est un outil des expresstools) Car si je l'essaye sur ton exemple le lisp posté en #15, j'obtiens bien un texte avec en valeur le texte 61.37 , donc bien la valeur de l'étiquette ?!?! Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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