Aller au contenu

Est-il possible de transformer un texte en bloc avec attribut?


Steven

Messages recommandés

Salut à tous.

J'ai un fichier sur lequel des numéros de postes sont indiqués sour forme de texte; A01, A02, A03, etc. Normalement, ces numéros de postes auraient dû être insérés sous forme de bloc avec un attribut.

Y-a-til un moyen de remplacer tous ces textes par des blocs avec attribut individuellement les uns des autres tout en gardant la même valeur (A01 texte passe en A01 attribut) en sachant que j'ai dans ma bibliothèque de bloc, un bloc pour les numéros de poste (Numéro_de_poste)?

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Salut Didier,

 

Je t'ai envoyer le fichier converti en AutoCAD Classique et au format dwg 2007 ne sachant pas si tu as 2010.

 

Merci encore. ;)

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à toutes et tous,

 

J'utilise ça de tps à autre,... (De Jeff Rayhorn & LukewarmCoffee.com

;routine adaptée par L.barraud le 29 10 2008),=>

 

 

 

 

 ; c. 2006 Jeff Rayhorn & LukewarmCoffee.com
;routine adaptée par L.barraud le 29 10 2008

(defun C:T2A
( /
txtent ; "TEXT" entity name
txtlst ; Entity list for "txtent"
attlst ; Entity list for "ATTDEF"
)
(setq txtent nil)
(while (not txtent)
(setq txtent
(car (entsel "\n Pick TEXT to convert:"))
);end setq
(if txtent (setq txtlst (entget txtent)))
);end while

(if
(/= "TEXT" (cdr (assoc 0 txtlst))) ;test if "TEXT"
(alert "Only TEXT entities can be converted.")
(progn
(entdel txtent)
(setq txt (cdr(assoc 1 txtlst)));valeur du texte
(setq attlst
(list
'(0 . "ATTDEF")
'(100 . "AcDbEntity")
(assoc 8 txtlst)
'(100 . "AcDbText")
(assoc 10 txtlst)
(assoc 40 txtlst)
'(1 . "")
(assoc 50 txtlst)
(assoc 41 txtlst)
(assoc 51 txtlst)
(assoc 7 txtlst)
(assoc 71 txtlst)
(assoc 72 txtlst)
(assoc 11 txtlst)
(assoc 210 txtlst)
'(100 . "AcDbAttributeDefinition")
'(3 . "Prompt")
(cons 2 txt)
'(70 . 8)
);end list
);end setq
(entmake attlst)
);end progn
);end if
(princ)
);end defun 

Civil 3D 2024 - COVADIS_18.2

https://www.linkedin...3%ABt-95313341/

Lien vers le commentaire
Partager sur d’autres sites

Merci Lili pour ce lisp mais il transformeles texte en définition d'attribut et non en bloc avec attribut :( Puis je ne peux séléctionner plusieur objet, ors, j'en ai à peu près 166 par étage. e ne me sens pas le courage de séléctionner 166 fois les textes différents pour les transformer en bloc avec attribut.

 

[Edité le 16/10/2009 par Steven]

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

 

Hello

 

Je pense que ce programme devrait meiux correspondre a la demande

 

Le Decapode

 

 

;;; TEXT2ATT.LSP   A program to convert text entities to
;;; attributes.      Program by Tony Hotchkiss
(defun dxf (code ename)
 (cdr (assoc code (entget ename)))
) ;_ end of defun

(defun text2att	(/ block-exists blockname btble ss)
 (setq block-exists t)
 (while block-exists
   (setq blockname (getstring "New Block name: "))
   (setq btble (tblsearch "BLOCK" blockname))
   (if	btble
     (progn
(setq block-exists t)
(prompt "\nBlock name exists, enter ")
     ) ;_ progn
     (progn
(setq block-exists nil)
     ) ;_ progn
   ) ;_ if
 ) ;_ while
 (setq ss nil)
 (prompt "\nSelect text entities: ")
 (while (= ss nil)
   (setq ss (ssget '((0 . "TEXT"))))
   (if	(= ss nil)
     (prompt "\nNo text entities, select again")
   ) ;_ if
 ) ;_ while
 (if ss
   (progn
     (make-attributes ss blockname)
   ) ;_ progn
 ) ;_ if
) ;_ text2att

(defun make-attributes (ss blockname / i tmsg pmsg t-str p-str
		en ins-pt txt-ht txt-str txt-style lyr
		btble
	       )
 (setq	i     (- 1)
tmsg  "\nAttribute Tag: "
pmsg  (strcat "\nAttribute Prompt (Hit "
	      "return if same as Tag string): "
      ) ;_ strcat
t-str (getstring tmsg)
p-str (getstring t pmsg)
 ) ;_ setq
 (repeat (sslength ss)
   (setq en	    (ssname ss (setq i (1+ i)))
  ins-pt    (dxf 10 en)
  txt-ht    (dxf 40 en)
  txt-str   (dxf 1 en)
  txt-style (dxf 7 en)
  lyr	    (dxf 8 en)
   ) ;_ setq    
 ; **************** Make the block ************
   (setq btble (tblsearch "BLOCK" blockname))
   (if	(= btble nil)
     (progn
(entmake
  (list	'(0 . "BLOCK")
	'(100 . "AcDbEntity")
	(cons 8 lyr)
	'(100 . "AcDbBlockBegin")
	(cons 2 blockname)
	'(70 . 2)
	(cons 10 ins-pt)
  ) ;_ list
) ;_ entmake
(entmake
  (list	'(0 . "ATTDEF")
	'(100 . "AcDbEntity")
	'(67 . 0)
	(cons 8 lyr)
	'(100 . "AcDbText")
	(cons 10 ins-pt)
	(cons 40 txt-ht)
	'(1 . "")
	(cons 7 txt-style)
	'(100 . "AcDbAttributeDefinition")
	(cons 3 p-str)
	(cons 2 (strcase t-str))
	'(70 . 0)
  ) ;_ list
) ;_ entmake
(setq bname (entmake (list '(0 . "ENDBLK")
			   '(100 . "AcDbEntity")
			   (cons 8 lyr)
			   '(100 . "AcDbBlockEnd")
		     ) ;_ list
	    ) ;_ entmake
) ;_ setq
     ) ;_ progn
   ) ;_ if
 ; *************** Insert the block ******
   (entmake (list '(0 . "INSERT")
	   '(100 . "AcDbEntity")
	   (cons 8 lyr)
	   '(100 . "AcDbBlockReference")
	   '(66 . 1)
	   (cons 2 bname)
	   (cons 10 ins-pt)
     ) ;_ list
   ) ;_ entmake
   (entmake (list '(0 . "ATTRIB")
	   '(100 . "AcDbEntity")
	   (cons 8 lyr)
	   '(100 . "AcDbText")
	   (cons 10 ins-pt)
	   (cons 40 txt-ht)
	   (cons 1 txt-str)
	   (cons 7 txt-style)
	   '(100 . "AcDbAttribute")
	   (cons 2 t-str)
	   '(70 . 0)
     ) ;_ list
   ) ;_ entmake
   (entmake '((0 . "SEQEND")))
   (entdel en)
 ) ;_ repeat
 (princ)
) ;_ make-attributes

(defun c:tat () (text2att))
(prompt "\nEnter TAT to start: ")

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

coucou

 

j'ai envoyé à Steven un lisp à deux balles

il ne m'a pas encore dit ce qu'il en pensait,

mais je connais le garçon !!!

 

ce que je lui ai écrit tient en six ou sept lignes

il faut toutjours faire simple, c'est mon point de vue

 

suivant lé réponse de Steven, je transmettrai

 

amicalement

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous,

 

J'essayerai tout ceci Lundi matin :)

 

Didier, je t'ai répondu au mail que tu m'avais envoyé ;)

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous.

 

Nous voici donc Lundi matin et je viens d'essayer le lisp de lecrabe.

Je ne dirais qu'une chose:

TROP FORT !

C'est pile poil ce que je souhaitais :D

 

Franchement, les gars, vous me faites toujours halluciner lorsque vous faites une routine plus ou moins complexe suivant les demandes :D

 

Merci ;)

 

 

Steven________________________________________

Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD.

Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD.

En rêve; AutoCAD sous Linux.

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité