Steven Posté(e) le 14 octobre 2009 Posté(e) le 14 octobre 2009 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.
didier Posté(e) le 14 octobre 2009 Posté(e) le 14 octobre 2009 coucou envoie-moi un fichier exemple je ferai mon possible pour t'arranger çà... amitiés particulière à Steven. Éternel débutant... Mon site perso : Programmer dans AutoCAD
Steven Posté(e) le 15 octobre 2009 Auteur Posté(e) le 15 octobre 2009 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.
lili2006 Posté(e) le 16 octobre 2009 Posté(e) le 16 octobre 2009 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 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
Steven Posté(e) le 16 octobre 2009 Auteur Posté(e) le 16 octobre 2009 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.
lecrabe Posté(e) le 16 octobre 2009 Posté(e) le 16 octobre 2009 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
lili2006 Posté(e) le 16 octobre 2009 Posté(e) le 16 octobre 2009 Re, Je pense que ce programme devrait meiux correspondre a la demande Je pense aussi, ;) Désolé Steven, j'avais pas de meilleure solution,... Mais superlecrabe est passé par là,.... :P Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
didier Posté(e) le 17 octobre 2009 Posté(e) le 17 octobre 2009 coucou j'ai envoyé à Steven un lisp à deux ballesil 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 lignesil faut toutjours faire simple, c'est mon point de vue suivant lé réponse de Steven, je transmettrai amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Steven Posté(e) le 17 octobre 2009 Auteur Posté(e) le 17 octobre 2009 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.
Steven Posté(e) le 19 octobre 2009 Auteur Posté(e) le 19 octobre 2009 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.
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