Invité Patrick Posté(e) le 11 août 2004 Posté(e) le 11 août 2004 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.
ribbit Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 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
Virgile_69 Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 Bonjour,Sur Autocad 2004 dans le menu express une commande existe déjà et peut même tariter plusieurs texte à la fois.Commande : (TCASE) Dessinateur Projeteur en tuyauterie frigorifique.
ribbit Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 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
ribbit Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 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
bonuscad Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 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
ribbit Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 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
Patrick_35 Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 Bonjour à tousLa 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Invité Patrick Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 Merci pour vos réponses. La fonction TCASE correspond à ce que je recherchais. Il resterait maintenant à Autodesk à l'intégrer dans les LT.
x13 Posté(e) le 12 août 2004 Posté(e) le 12 août 2004 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")
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