Aller au contenu

convertir texte en texte multiligne


denis38

Messages recommandés

 

Hello

 

Si tu as les routines Express/Bonus installees, cette routine devrait te convenir ... :)

 

Le Decapode

 

 

; T2M - convert individual Texts/Dtexts to individual MTexts
; modified by Xanadu - www.xanadu.cz
; ***** This routine NEEDS the Express Tools *****

(defun C:T2M (/ ss i elist)
 (prompt "\nSelect Text objects to convert to MTexts: ")
 (setq ss (ssget (list (cons 0 "TEXT"))))
 (setq i -1)
 (if ss
   (repeat (sslength ss)
     (setq elist (cdr (assoc -1 (entget (ssname ss (setq i (1+ i)))))))
     (command "TXT2MTXT" elist ""); Express Tools command
   )
 )
)

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

coucou

 

au moins ce forum a le mérite de nous faire nous poser des questions ..

en l'occurrence je ne traite que TRES rarement les MText

 

Toutefois, je ne vois pas l'utilité de cette routine

puisqu'on peut choisir par capture

les textes (en lignes) à convertir en MTEXT

via la commande Express : TXT2MTXT

 

amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

 

Hello Didier

 

Non car la commande TXT2MTXT convertit les N TEXT selectionnes en UN SEUL MTEXT !

 

Ou alors j'ai rate qq chose d'enorme depuis 10 ans ! :o

 

J'utilise tres souvent cette routine T2M pour obtenir N MTEXT bases sur N TEXT selectionnes

pour en general mettre un masque d'arriere plan sur ces MTEXT ...

 

Le Decapode

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Effectivement la fonction des express tools ne boucle pas sur les textes mais réalise une fusion des textes en un seul mtexte.

 

J'utilise la fonctionnalité masque (largeur à 0 c'est plus facile à gérer) des mtextes comme Lecrabe et ce sans utiliser les formatages de textes a part un retour chariot pour mes mtextes de lieu-dit.

 

A+

 

PS, La conversion sur MAP perd évidemment les données d'objets associées aux textes.

 

Sinon voici ma routine améliorable en vlisp, elle gère les justifications :

Le 30 novembre 2009 : Gestion de la justification gauche des textes ainsi que la gestion des données d'objets (enlever le point virgule devant :

;(copy_data c1 (entlast) nil)

 

(defun c:fd-txts-to-mtxts (/ c1 i nbr js filtre ent pti-10 pti-11 pti-insertion just sty htr ang ang-deg chn lst-c1)
(setvar "cmdecho" 0)
(setq calq-org (getvar "clayer"))
(setq filtre (list (cons 0 "TEXT")))
(setq js (ssget filtre))
(if js
	(progn
		(setq nbr (sslength js))
		(setq i 0)
		(while (<= i (- nbr 1))
			(setq c1 (ssname js i))
			(setq ent (entget c1))

			(setq lst-c1 (justif c1))
			(setq just (cdr (assoc 1 lst-c1)))

			(setq pti-10 (cdr (assoc 10 (entget c1))))
			(setq pti-11 (cdr (assoc 11 (entget c1))))

			(if (and (= 0 (cdr (assoc 72 ent))) (= 0 (cdr (assoc 73 ent))))
				(setq pti-insertion (cdr (assoc 10 (entget c1))))
				(setq pti-insertion (cdr (assoc 11 (entget c1))))
			);fin if

			(setq chn (cdr (assoc 1 (entget c1))))
			(setq calq-ent (cdr (assoc 8 (entget c1))))

			(setq ang (cdr (assoc 50 (entget c1))))
			(setq ang-deg (* 180 (/ ang pi)))

			(setq sty (cdr (assoc 7 (entget c1))))
			(setq htr (cdr (assoc 40 (entget c1))))

			(command "-calque" "ch" calq-ent "")
			(command "-mtext" pti-insertion "Justifier" just "Style" sty "Hauteur" htr "Rotation" ang-deg "Largeur" "0" chn "")
			;(copy_data c1 (entlast) nil)
			(entdel c1)
			(command "-calque" "choisir" calq-org "")
		(setq i (+ i 1))
		);fin while nbr
	);fin progn
(prompt "\nPAS D'OBJETS DE TYPE TEXTE SELECTIONNES !!!")
);fin if
(command "-calque" "choisir" calq-org "")
(setvar "cmdecho" 1)
(prompt "\n---COPYRIGHT 06/99 PAR Fabrice DEMIEL---")
)
;----------------------------------------------------------------------------
(prompt "\nPour lancer tapez : fd-txts-to-mtxts ")
(prin1)
;----------------------------------------------------------------------------
(defun justif (nom / lst-nom typ-nom)

(setq lst-nom (entget nom))
(setq typ-nom (cdr (assoc 0 lst-nom)))

(cond
((= typ-nom "TEXT")
(cond

((and (= 0 (cdr (assoc 72 lst-nom))) (= 0 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Gauche !!!\n")
	(setq res-lst (list (cons 1 "BG") (cons 71 7) (cons 72 0) (cons 73 0)))
	);fin progn
);fin

((and (= 1 (cdr (assoc 72 lst-nom))) (= 0 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Centre !!!\n")
	(setq res-lst (list (cons 1 "BC") (cons 71 8) (cons 72 1) (cons 73 0)))
	);fin progn
);fin

((and (= 2 (cdr (assoc 72 lst-nom))) (= 0 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Droite !!!\n")
	(setq res-lst (list (cons 1 "BD") (cons 71 9) (cons 72 2) (cons 73 0)))
	);fin progn
);fin

((and (= 3 (cdr (assoc 72 lst-nom))) (= 0 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Aligné !!!\n")
	(setq res-lst (list (cons 1 "BG") (cons 71 7) (cons 72 3) (cons 73 0)))
	);fin progn
);fin

((and (= 4 (cdr (assoc 72 lst-nom))) (= 0 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Milieu !!!\n")
	(setq res-lst (list (cons 1 "MC") (cons 71 5) (cons 72 4) (cons 73 0)))
	);fin progn
);fin

((and (= 5 (cdr (assoc 72 lst-nom))) (= 0 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Fixé !!!\n")
	(setq res-lst (list (cons 1 "BG") (cons 71 7) (cons 72 5) (cons 73 0)))
	);fin progn
);fin


((and (= 0 (cdr (assoc 72 lst-nom))) (= 3 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Haut-Gauche !!!\n")
	(setq res-lst (list (cons 1 "HG") (cons 71 1) (cons 72 0) (cons 73 3)))
	);fin progn
);fin

((and (= 1 (cdr (assoc 72 lst-nom))) (= 3 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Haut-Centre !!!\n")
	(setq res-lst (list (cons 1 "HC") (cons 71 2) (cons 72 1) (cons 73 3)))
	);fin progn
);fin

((and (= 2 (cdr (assoc 72 lst-nom))) (= 3 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Haut-Droite !!!\n")
	(setq res-lst (list (cons 1 "HD") (cons 71 3) (cons 72 2) (cons 73 3)))
	);fin progn
);fin

((and (= 0 (cdr (assoc 72 lst-nom))) (= 2 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Milieu-Gauche !!!\n")
	(setq res-lst (list (cons 1 "MG") (cons 71 4) (cons 72 0) (cons 73 2)))
	);fin progn
);fin

((and (= 1 (cdr (assoc 72 lst-nom))) (= 2 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Milieu-Centre !!!\n")
	(setq res-lst (list (cons 1 "MC") (cons 71 5) (cons 72 1) (cons 73 2)))
	);fin progn
);fin

((and (= 2 (cdr (assoc 72 lst-nom))) (= 2 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Milieu-Droite !!!\n")
	(setq res-lst (list (cons 1 "MD") (cons 71 6) (cons 72 2) (cons 73 2)))
	);fin progn
);fin

((and (= 0 (cdr (assoc 72 lst-nom))) (= 1 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Bas-Gauche !!!\n")
	(setq res-lst (list (cons 1 "BG") (cons 71 7) (cons 72 0) (cons 73 1)))
	);fin progn
);fin

((and (= 1 (cdr (assoc 72 lst-nom))) (= 1 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Bas-Centre !!!\n")
	(setq res-lst (list (cons 1 "BC") (cons 71 8) (cons 72 1) (cons 73 1)))
	);fin progn
);fin

((and (= 2 (cdr (assoc 72 lst-nom))) (= 1 (cdr (assoc 73 lst-nom))))
	(progn
	(prompt "\n Justification de type Bas-Droite !!!\n")
	(setq res-lst (list (cons 1 "BD") (cons 71 9) (cons 72 2) (cons 73 1)))
	);fin progn
);fin

);fin cond
); fin obj egal a TEXT
);fin 1er cond
res-lst
);fin defun

[Edité le 25/11/2009 par fabcad]

 

[Edité le 30/11/2009 par fabcad]

Lien vers le commentaire
Partager sur d’autres sites

Salut fabcad.

 

Je viens d'essayer ta routine sur un texte mais ce que je ne comprends pas, c'est que le texte se déplace pour aller se mettre sur le point 0,0 absolu de mon espace objet.

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

 

Pour faite suite a la routine T2M.lsp

Je genere des masques d'arriere sur N objets MTEXTs avec cette routine ...

 

Le Decapode

 

 


;; Written by: Lee Ambrosius
;; Created on: 4/7/2004
;; http://www.hyperpics.com/
;; This program allows you to add Background Mask to several Mtext objects
;; at one time instead of using the Mtext editor 
;; for each object or the Properties Palette.
;; The Properties Palette in 2005 doesn't allow you 
;; to set Background Color or Border Offset.

(defun c:MTextMASK ( / kWordBackgroundMaskCurrent dOffsetCurrent ssMtext dxf90 dxf63 dxf45 dxf441)
 (prompt "\nApply Mtext Mask")

 (if (= kWordBackgroundMask nil)
   (setq kWordBackgroundMask "Background" kWordBackgroundMaskCurrent "Background")
   (setq kWordBackgroundMaskCurrent kWordBackgroundMask)
 )

 (initget "None Background Color")
 (setq kWordBackgroundMask (getkword (strcat "\nSpecify Background Mask: [None/Background/Color] : ")))

 (if (= kWordBackgroundMask nil)
   (setq kWordBackgroundMask kWordBackgroundMaskCurrent)
 )

 (cond ((= kWordBackgroundMask "Color")
           (if (or (= maskClr nil) (/= (type maskClr) 'LIST))
              (setq maskClr (acad_truecolorcli 1))
              (if (= (assoc 420 maskClr) nil)
                (setq maskClr (acad_truecolorcli (cdr (assoc 62 maskClr))))
                (setq maskClr (acad_truecolorcli (assoc 420 maskClr)))
              )
           )
       )
       ((= kWordBackgroundMask "Background")(setq maskClr 256))
       ((= kWordBackgroundMask "None")(setq maskClr 0 dOffset 1.0))
 )

 (if (/= maskClr nil)
   (progn
     (if (/= kWordBackgroundMask "None")
       (progn
         (setq dOffsetCurrent dOffset)

         (if (= dOffsetCurrent nil)
           (setq dOffset 1.0 dOffsetCurrent 1.0)
           (setq dOffsetCurrent dOffset)
         )

         (setq dOffset (getreal (strcat "\nSpecify border offset factor: : ")))
   
         (if (= dOffset nil)
           (setq dOffset dOffsetCurrent)
         )

         (if (> dOffset 5)(setq dOffset nil))
         (if (
         (while (= dOffset nil)
           (setq dOffset (getreal (strcat "\nSpecify border offset factor: : ")))

           (if (> dOffset 5)(setq dOffset nil))
           (if (          )
       )
       (if (= dOffset nil)
         (setq dOffset 1.0)
       )
     )

     (if (setq ssMtext (ssget (list (cons 0 "MTEXT"))))
       (progn
         (cond ((= kWordBackgroundMask "None")
                   (setq mask_list (list (cons 90 2)(cons 63 0)(cons 45 dOffset)(cons 441 0))
                         dxf90 2
                         dxf63 nil
                         dxf45 nil
                         dxf441 nil
                   )
               )
               ((and (= kWordBackgroundMask "Color")(/= (assoc 420 maskClr) nil))
                   (setq mask_list (list (cons 90 1)(cons 63 1)(cons 421 (cdr (assoc 420 maskClr)))(cons 45 dOffset)(cons 441 (cdr (assoc 420 maskClr))))
                         dxf90 1
                         dxf63 2
                         dxf45 dOffset
                         dxf441 (cdr (assoc 420 maskClr))
                   )
               )
               ((and (= kWordBackgroundMask "Color")(= (assoc 420 maskClr) nil))
                   (setq mask_list (list (cons 90 1)(cons 63 (cdr (assoc 62 maskClr)))(cons 45 dOffset)(cons 441 2146608))
                         dxf90 1
                         dxf63 (cdr (assoc 62 maskClr))
                         dxf45 dOffset
                         dxf441 nil
                   )
               )
               ((= kWordBackgroundMask "Background")
                   (setq mask_list (list (cons 90 3)(cons 63 3)(cons 45 dOffset)(cons 441 0))
                         dxf90 3
                         dxf63 256
                         dxf45 dOffset
                         dxf441 0
                   )
               )
         )

         (setq emax (sslength ssMtext)
               sscount 0
         )

         (while (            (setq EN (entget (ssname ssMtext sscount))
	  tempEN nil)

           (if (/= dxf90 nil)
             (progn
               (if (/= (assoc 90 EN) nil)
                 (setq EN (subst (cons 90 dxf90) (assoc 90 EN) EN))
                 (setq EN (append EN (list (cons 90 dxf90))))
               )
             )
             (progn
               (setq CNT 0
                     nMembers (member (assoc 90 EN) EN))

               (if (= nMembers nil)
                 (setq nMembers 0)
	  (setq nMembers (length nMembers))
	)
               (repeat (- (length EN) nMembers)
                 (setq tempEN (append tempEN (list (nth cnt EN))))
                 (setq CNT (1+ CNT))
               )

	(if (> nMembers 0)
	  (progn
	    (setq CNT 1)
                   (repeat (- nMembers 1)
                     (setq tempEN (append tempEN (list (nth cnt (member (assoc 90 EN) EN)))))
                     (setq CNT (1+ CNT))
	    )
	  )
               )
               (setq EN tempEN
	      tempEN nil)
             )
           )

    
           (if (/= dxf63 nil)
             (progn
               (if (/= (assoc 63 EN) nil)
                 (setq EN (subst (cons 63 dxf63) (assoc 63 EN) EN))
                 (setq EN (append EN (list (cons 63 dxf63))))
               )
             )
             (progn
               (setq CNT 0
                     nMembers (member (assoc 63 EN) EN))

               (if (= nMembers nil)
                 (setq nMembers 0)
	  (setq nMembers (length nMembers))
	)
               (repeat (- (length EN) nMembers)
                 (setq tempEN (append tempEN (list (nth cnt EN))))
                 (setq CNT (1+ CNT))
               )

	(if (> nMembers 0)
	  (progn
	    (setq CNT 1)
                   (repeat (- nMembers 1)
                     (setq tempEN (append tempEN (list (nth cnt (member (assoc 63 EN) EN)))))
                     (setq CNT (1+ CNT))
	    )
	  )
               )
               (setq EN tempEN
	      tempEN nil)
             )
           )

           (if (/= dxf45 nil)
             (progn
               (if (/= (assoc 45 EN) nil)
                 (setq EN (subst (cons 45 dxf45) (assoc 45 EN) EN))
                 (setq EN (append EN (list (cons 45 dxf45))))
               )
             )
             (progn
               (setq CNT 0
                     nMembers (member (assoc 45 EN) EN))

               (if (= nMembers nil)
                 (setq nMembers 0)
	  (setq nMembers (length nMembers))
	)
               (repeat (- (length EN) nMembers)
                 (setq tempEN (append tempEN (list (nth cnt EN))))
                 (setq CNT (1+ CNT))
               )

	(if (> nMembers 0)
	  (progn
	    (setq CNT 1)
                   (repeat (- nMembers 1)
                     (setq tempEN (append tempEN (list (nth cnt (member (assoc 45 EN) EN)))))
                     (setq CNT (1+ CNT))
	    )
	  )
               )
               (setq EN tempEN
	      tempEN nil)
             )
           )

           (if (/= dxf441 nil)
             (progn
               (if (/= (assoc 441 EN) nil)
                 (setq EN (subst (cons 441 dxf441) (assoc 441 EN) EN))
                 (setq EN (append EN (list (cons 441 dxf441))))
               )
             )
             (progn
               (setq CNT 0
                     nMembers (member (assoc 441 EN) EN))

               (if (= nMembers nil)
                 (setq nMembers 0)
	  (setq nMembers (length nMembers))
	)
               (repeat (- (length EN) nMembers)
                 (setq tempEN (append tempEN (list (nth cnt EN))))
                 (setq CNT (1+ CNT))
               )

	(if (> nMembers 0)
	  (progn
	    (setq CNT 1)
                   (repeat (- nMembers 1)
                     (setq tempEN (append tempEN (list (nth cnt (member (assoc 441 EN) EN)))))
                     (setq CNT (1+ CNT))
	    )
	  )
               )
               (setq EN tempEN)
             )
      
           )

           (entmod EN)
           (setq sscount (1+ sscount))
         )
       )
     )
   )
 )
(princ)
)

(prompt "\nType MTEXTMASK to run the command")
(princ)


 

 

 

Autodesk Expert Elite Team

Lien vers le commentaire
Partager sur d’autres sites

coucou

 

je ne suis pas un habitué, c'est rien de le dire, des MTEXT

aussi je n'avais pas compris l'intitulé original

je pensais qu'il voulait, justement, concaténer ses lignes de texte

en un MTEXT

 

parce que tout transformer en MTEXT :mad: :mad:

il faut de bonnes raisons ...

 

amicalement

 

 

Lien vers le commentaire
Partager sur d’autres sites

Hello,

 

En effet les mtextes se déplacent je travaille dessus, ce sont les textes qui ont les justifications gauche centre droite car le point dxf 11 est à 0,0,0 alors qu'il faudrait que je prennes le point dxf 10.

 

Le 30 nevembre 2009 : c'est réglé.

 

A+

 

[Edité le 30/11/2009 par fabcad]

Lien vers le commentaire
Partager sur d’autres sites

  • 3 ans après...

Bonjour a tous,

me voila de retour sur le sujet

le lisp "FD-TXTS-TO-MTXTS" marche bien mais!!!!

pour les textes oblique ou une rotation différente de 90 cela ne fonctionne pas :(

 

je cherche un expert pour modifier ou rajouter quelque ligne pour que ca marche

le must si c'est réalisable, serait de le faire par lot, quelque soit la rotation du texte

 

voila merci pour vos réponse

 

Cordialement

Denis

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é