CADxp: Convertir attribut en texte - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Convertir attribut en texte

#1 L'utilisateur est hors-ligne   kallain 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 673
  • Inscrit(e) : 05-mai 04

Posté 31 mai 2005 - 14:47

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 ?

0

#2 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4684
  • Inscrit(e) : 20-juin 03

Posté 31 mai 2005 - 14:58

Avec les ExpressTools !

Commande "BURST", fonctionne avec des attributs seuls ;)
0

#3 L'utilisateur est hors-ligne   Maximilien 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1035
  • Inscrit(e) : 08-septembre 04
  • LocationBesançon

Posté 31 mai 2005 - 16:44

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....
Opérateur BIM, Dessinateur AutoCAD, Responsable parc utilisateur
HP WorkStation Z440 Xeon 3,5 Ghz 32Gb RAM 256 SSD + 1To
Building Design Suite Premium, AutoCAD, FisaRMEP, Microsoft Office, Visual TTH.
0

#4 L'utilisateur est hors-ligne   kallain 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 673
  • Inscrit(e) : 05-mai 04

Posté 31 mai 2005 - 17:12

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: ;)
0

#5 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4684
  • Inscrit(e) : 20-juin 03

Posté 31 mai 2005 - 18:09

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+
0

#6 L'utilisateur est hors-ligne   kallain 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 673
  • Inscrit(e) : 05-mai 04

Posté 01 juin 2005 - 07:45

Bonjour Bonucad,

Voilà, c'est fait

Citation

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.



0

#7 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4684
  • Inscrit(e) : 20-juin 03

Posté 01 juin 2005 - 09:18

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)

)


0

#8 L'utilisateur est hors-ligne   kallain 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 673
  • Inscrit(e) : 05-mai 04

Posté 01 juin 2005 - 10:38

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
0

#9 L'utilisateur est hors-ligne   Stepane 

  • ceinture verte
  • Groupe : Membres
  • Messages : 67
  • Inscrit(e) : 24-avril 13

Posté 30 janvier 2019 - 16:47

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.
0

#10 L'utilisateur est hors-ligne   bonuscad 

  • ceinture rouge et blanche 8em dan
  • Groupe : Membres
  • Messages : 4684
  • Inscrit(e) : 20-juin 03

Posté 31 janvier 2019 - 10:46

Voir le messageStepane, le 30 janvier 2019 - 16:47 , dit :

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
0

#11 L'utilisateur est hors-ligne   Stepane 

  • ceinture verte
  • Groupe : Membres
  • Messages : 67
  • Inscrit(e) : 24-avril 13

Posté 08 novembre 2019 - 08:34

Dix mois plus tard... merci.
Dix mois sans soucis avec Autocad!
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)