Aller au contenu

Changer la casse


Invité Patrick

Messages recommandés

Invité Patrick

Il faudrait qu'il y ait dans AutoCAD, et pourquoi pas dans tous les logiciels, un moyen de convertir du texte en majuscule ou minuscule lettre par lettre.

 

Je m'explique. Ne vous est-il pas arrivé d'oublier de déverrouiller le verrouillage majuscule et de taper une ligne ou deux de texte pour vous apercevoir trop tard qu'il faut tout retaper... Un peu bête non? Il suffirait d'une icône pour convertir tout ce texte.

 

Par exemple, UNE icône QUI CONVERTIRAIT DU texte, oh pardon je voulais dire, une ICONE qui convertirait du TEXTE, sans avoir à le retaper.

 

Cette suggestion à été faite à Autodesk aujourd'hui.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Bonne idée.

Sinon, ça doit être solutionné par un petit lisp/VBA script, non ? Je suis sûr que ca existe, même si je ne suis pas trop fort....Il faut juste changer le code ASCII du "a", par ex en "A". Je pense que le VB devrait permettre ca....

 

Ps : je pense même que ca peut etre un bon exercie de faire un petit prog standalone sympa qui convertirai du minuscule en majuscule...et mettrai le résultat dans le presse papier. Un peu d'exercice en perspective.

 

[Edité le 12/8/2004 par ribbit]

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Lien vers le commentaire
Partager sur d’autres sites

ET CA MARCHE SOUS 2002 !!!

 

 
Commande: tcase
Choix des objets: 1 trouvé(s)
Select case [sentence/Lower/Upper/Title/toGgle] :

 

Cool, dans la série j'apprend un truc nouveau par jour !!!

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Lien vers le commentaire
Partager sur d’autres sites

UNE icône QUI CONVERTIRAIT DU texte, oh pardon je voulais dire, une ICONE qui convertirait du TEXTE, sans avoir à le retaper

 

Pour ca, c'est l'option toggle !!! Cooool !

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Lien vers le commentaire
Partager sur d’autres sites

j'ai fait ça vite fait.

 

Ca a l'air de fonctionner même pour les caractères accentués (à é è ù ect....) mais dans un seul sens; de miniscule vers majuscule . L'inverse ne fonctionne pas.

Est ce le cas aussi de TCASE ???

 

(defun conv_string (str / new_str)
(setq new_str "")
(while (/= (substr str 1 1) "")
	(cond
		((/= (substr str 1 1) "\\")
			(if (member (ascii (substr str 1 1)) '(65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90))
				(setq new_str (strcat new_str (strcase (substr str 1 1) T)))
				(setq new_str (strcat new_str (strcase (substr str 1 1) nil)))
			)
		)
		(T
			(setq new_str (strcat new_str (substr str 1 2)))
			(setq str (substr str 2))
		)
	)
	(setq str (substr str 2))
)
new_str
)
(defun c:vice-versa ( / ent val_txt new_txt)
(while (not (setq ent (entsel "\nSélectionner un texte "))))
(setq ent (entget (car ent)))
(cond
	((or (eq (cdr (assoc 0 ent)) "TEXT") (eq (cdr (assoc 0 ent)) "MTEXT"))
		(setq val_txt (cdr (assoc 1 ent)))
		(setq new_txt (conv_string val_txt))
		(setq ent (subst (cons 1 new_txt) (assoc 1 ent) ent))
		(entmod ent)
	)
	(T
		(princ "\nCe n'est pas du texte")
	)
)
(princ)
)

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

Lien vers le commentaire
Partager sur d’autres sites

Je ne peux pas vous mettre la source du lisp des outils express (question de copyright), mais ca marche sur tout types d'objets ("selected text, mtext, attributes and dimension text. "). Par contre les accents il connait pas dans le sens majuscule > minuscule mais c'est normal en ASCII je pense...

 

A noter aussi les nombreuses options des outils express comme les textes le long d'un arc... On a tendance à oublier ce qu'on a sous la main ! ;-)

Ribbit.

"Une fois qu'on les a découvertes toutes les vérités sont faciles à comprendre; l'essentiel c'est de les découvrir."

Version en cours : Autocad Map 2013

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à tous

La fonction tcase n'existe pas sur une 2000

 

Autrement, il existe la fonction lisp strcase qui convertit en majuscules et minuscules

 

(strcase "azerty") retourne "AZERTY et (strcase "AZERTY" t) retourne "azerty"

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Invité Patrick

Merci pour vos réponses. La fonction TCASE correspond à ce que je recherchais. Il resterait maintenant à Autodesk à l'intégrer dans les LT.

Lien vers le commentaire
Partager sur d’autres sites

Peut-être que ce petit lisp de Tonton Jules répond à vos besoin.

 

Salutations,

 

X13

 

;|

 

MINMAJ.LSP

 

Changer la casse d'un texte, d'un texte multilignes, d'une valeur d'attribut, d'une définition d'attribut.

 

|;

(defun c:minmaj (/ selec nomobj lstobj comptlst lglst propobj typobj ancval comptchain ancchain lgchain carac codeasc nouchain nouval)

(princ "\nminmaj.lsp - Version 1.0 - Pour AUTOCAD 2002 - Par Tonton Jules - CADAGOGO -")

(princ "\nLe 25-11-2002 - DH-HELP - © Copyright 2002")

;

(setvar "cmdecho" 0)

;

;===> Choix des objets

;

(setq selec (nentsel "\nChoix du texte à modifier:"));

;

;===> Tant que l'on choisit des objets - Création d'une liste contenant tous les textes

;

(while (/= selec nil)

(setq nomobj (car selec)

lstobj (cons nomobj lstobj)

selec (nentsel "\nChoix du texte à modifier:")

);===> Fin setq

);===> Fin while

;

;===> On met la liste à l'endroit - Initialiser le compteur d'objets sélectionnés - Longueur de la liste

;

(setq lstobj (reverse lstobj)

comptlst 0

lglst (length lstobj)

);===> Fin setq

;

;===> Traitement de tout les éléments sélectionnés (Ceux de la liste)

;

(while (<= comptlst (- lglst 1))

;

;===> Récupèrer le 1er objet de la liste et le type d'objet dans sa liste de propriété - Boucler sur tous les objets de la liste

;

(setq nomobj (nth comptlst lstobj)

propobj (entget nomobj)

typobj (cdr (assoc 0 propobj))

);===> Fin setq

;

;===> Si cet objet est un texte, un texte multilignes, un attribut, une définition d'attribut

;

(if (or (= typobj "TEXT") (= typobj "MTEXT") (= typobj "ATTDEF") (= typobj "ATTRIB"))

(progn;===> C'est un texte ou un texte multiligne ou un attribut ou une définition d'attribut

;

;===> On récupère la liste contenant la chaine de caractère dans la liste des propriétés de l'objet

;

(if (= typobj "ATTDEF")

(progn;===> L'objet est une définition d'attribut

(setq ancval (assoc 2 propobj))

);===> Fin progn L'objet est une définition d'attribut

(progn;===> L'objet est un texte, un texte multiligne, un attribut

(setq ancval (assoc 1 propobj))

);===> Fin progn L'objet est un texte, un texte multiligne, un attribut

)==> Fin if

;

;===> Initialisation du compteur de longueur de chaine de caractère - Récupération de la chaine - Longueur de la chaine

;

(setq comptchain 1

ancchain (cdr ancval)

lgchain (strlen ancchain)

);===> Fin setq

;

;===> Traitement de la chaine tant que le dernier caractère n'a pas été éxaminé

;

(while (<= comptchain lgchain)

;

;===> On extrait le premier caractère de la chaine - Récupèrer le code ascii du caractère

;

(setq carac (substr ancchain comptchain 1)

codeasc (ascii carac)

);===> Fin setq

;

;===> On analyse si le caractère est une majuscule ou une minuscule

;

(cond ((and (> codeasc 64) (< codeasc 91));===> C'est une majuscule - Transformation en minuscule

(setq codeasc (+ codeasc 32)

carac (chr codeasc)

);===> Fin setq

);===> Fin cond C'est une majuscule

((and (> codeasc 96) (< codeasc 123));===> C'est une minuscule - Transformation en Majuscule

(setq codeasc (- codeasc 32)

carac (chr codeasc)

);===> Fin setq

);===> Fin cond C'est une minuscule

);===> Fin cond de test majuscule/Minuscule

;

;===> Construction de la nouvelle chaine de caractères

;

(if (/= nouchain nil)

(progn;===> Si ce n'est pas le 1er caractère de la chaine

(setq nouchain (strcat nouchain carac))

);===> Fin progn ce n'est pas le 1er caractère de la chaine

(progn;===> C'est le 1er caractère de la chaine

(setq nouchain carac)

);===> Fin progn C'est le 1er caractère de la chaine

);===> Fin if construction de la chaine

;

;===> Incrémentation du compteur de position du caractère dans la chaine

;

(setq comptchain (+ comptchain 1))

;

;===> Fin while traitement de la chaine de caractère

;

)

;

;===> Création de la nouvelle liste de l'objet

;

(if (= typobj "ATTDEF")

(progn;===> C'est une définition d'attribut

(setq nouval (cons 2 nouchain))

);===> Fin progn C'est une définition d'attribut

(progn;===> C'est un texte, un texte multiligne, un attribut

(setq nouval (cons 1 nouchain))

);===> Fin progn C'est un texte, un texte multiligne, un attribut

);===> Fin if création de la nouvealle liste de l'objet

;

;===> Substituer la nouvelle liste de l'objet à l'ancienne dans la liste des propriétés de l'objet

;

(setq propobj (subst nouval ancval propobj))

;

;===> Mettre à jour l'objet dans le dessin (Mettre à jour sa liste des propriétés)

;

(entmod propobj)

;

;===> Si c'est un attribut (Mettre en plus à jour l'objet)

;

(if (= typobj "ATTRIB")

(entupd nomobj)

);===> Fin if

;

;===> Fin progn C'est un texte ou un texte multiligne ou un attribut ou une définition d'attribut

;

)

;

;===> Fin if Si cet objet est un texte, un texte multilignes, un attribut, une définition d'attribut

;

)

;

;===> Incrémentation du compteur de la liste des objets sélectionnés - Mise à nil de la variable pour la nouvelle chaine de caractères

;

(setq comptlst (+ comptlst 1)

nouchain nil

);===> Fin setq

;

;===> Fin du traitement de tous les objets sélectionnés

;

);===> Fin while

(setvar "cmdecho" 1)

;

;===> Sortir en beauté

;

(prin1)

);===> Fin defun

(princ "\nPour lancer le programme, taper minmaj")

 

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é