Aller au contenu

texte multiligne


Messages recommandés

Posté(e)

Après avoir regardé d'un peu plus près la dernière routine de Patrick_35 et les exemples à problème, le seul à poser vraiment "problème" me semble être : "{26,6 m{\\H0.7x;\\S2^ ;}}"

 

Tel quel, à l'écran s'affiche : 26,6 m2 (avec le 2 de carré en petit et en exposant)

 

Après exécution de la dernière version de Patrick on obtient 26,6 à l'écran et l'index donne : 26,6 m{}

 

Pour les accolades persistantes, facile, on fait une boucle sur ces caractères jusqu'à ce qu'il n'y en ait plus.

 

Pour le carré en exposant, j'ai rajouté un contrôle sur "\\H" et "\\S" ("\\H0.7x" semble être le code pour diminuer la taille du chiffre et "\\S2^" la mise du 2 en exposant), mais la question reste entière pour d'autres caractères spéciaux dont je ne connais pas les codes...

 

Voilà donc une nouvelle mouture :

 

(defun c:modif_txt (/ ss cmpt str deb fin str_d)
 (setq cmpt 0)
 (if (setq ss (ssget "_X" '((0 . "MTEXT"))))
   (while (setq ent (ssname ss cmpt))
     (setq ent	(entget ent)
    str	(cdr (assoc 1 ent))
    pos	0
     )
     (while (setq deb (vl-string-position 92 str pos)
	   fin (vl-string-position 59 str pos)
     )
(setq str_d (substr str (1+ deb) (- (1+ fin) deb)))
(if (or
      (vl-string-search "\\H" str_d)
      (vl-string-search "\\S" str_d)
    )
  (setq	pos fin
	str (vl-string-subst "" ";" str)
  )
  (setq str (vl-string-subst "" str_d str))
)
     )
     (while (vl-string-search "{" str)
(setq str (vl-string-subst "" "{" str))
     )
     (while (vl-string-search "}" str)
(setq str (vl-string-subst "" "}" str))
     )
     (setq ent (subst (cons 1 str) (assoc 1 ent) ent))
     (entmod ent)
     (entupd (cdr (assoc -1 ent)))
     (setq cmpt (1+ cmpt))
   )
 )
 (princ)
) 

 

[Edité le 29/10/2005 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Voici un LIEN que j'avais déjà donné.

 

Je pense que les caractères de contrôle sont difficile à gérer.

De souvenir, il me semble aussi qu'au dessus d'un certain nombre de caractères, d'autres caractères se rajoutent pour le formatage du Mtext dans la définition DXF.

 

Je connais pas les limitations de la routine "StripMtext" donné en lien ci dessus, mais elle me semble être déjà un bon outil (car elle peut être sélective sur les caractères a ôter).

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Sacré Bonuscad,

 

tes ressources semblent intarissables ! en tous cas moins facilement épuisables que les réserves pétrolifères de la planète ;) .

 

Le LISP que tu propose marche très bien et son décriptage montre bien combien la tache n'est pas si simple !

Pour l'exemple qui posait problème ("{26,6 m{\\H0.7x;\\S2^ ;}}"), on peut tout cocher sauf Height et Stacking (respectivement \\H et \\S).

 

Merci à tous, j'ai encore beaucoup appris sur ce coup :D

 

[Edité le 29/10/2005 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

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é