naito073 Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 Bonjour je cherche une commande ou un lisp pour enlever un chiffre derrière la virgule. J'ai des z avec une précision de ,000 et je voudrais passer à ,00. Es ce que quelqu'un a une solution? Merci d'avance
lecrabe Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 Hello Si tu as des textes simples (pas des Mtextes) numeriques voici une bonne vieille routine Lisp Commande au clavier : ZDEC Le Decapode ; ============================== ; Modification de chaines numeriques ; en fixant le nombre de decimales ; MODIFDEC.LSP ---> ZDEC.LSP ; Dominique VAQUAND SARL (11/2000) ; ============================== ;; (defun c:modifdec () (defun c:zdec () ; on met a 0 l'echo de commande (setvar "cmdecho" 0) ; on definit 2 variables pour memoriser ; le nombre de chaine non numerique ; le nombre d'objet non texte (setq obj_non_txt 0) (setq obj_non_numeric 0) ; on demande le nombre de decimale ; Cette valeur est memorisee dans la ; variable nb_decimale. Si elle n'est pas nil ; alors elle contient une valeur proposee par defaut. ; On ne peut pas entrer une valeur negative (if (/= nb_decimale nil) (progn (initget 4) (setq nb_decimale_x (getint (strcat "Nbre de decimale : "))) (if (/= nb_decimale_x nil) (setq nb_decimale nb_decimale_x) ) ) (setq nb_decimale (getint "\nNbre de decimale: ")) ) ; on selectionne des objets que l'on place dans le jeu de selection Ent_txt (princ "\nChoix des objets: ") (setq ent_txt (ssget)) ; s'il y a des objets selectionnes (if (/= ent_txt nil) (progn ; on regle le compteur d'objet a 0 (setq compte 0) ; on boucle sur le nombre d'objet selectionne (repeat (sslength ent_txt) ; si l'objet est un objet Text on traite la chaine sinon on incremente le nombre ; d'objet non texte (if (= (cdr (assoc 0 (entget (ssname ent_txt compte)))) "TEXT") (progn ; on recupere la chaine de caractere (setq valeur_txt (cdr (assoc 1 (entget (ssname ent_txt compte))))) ; on verifie que la chaine peut etre une valeur numerique ; si oui on convertit cette chaine en valeur numerique puis on modifie ; la chaine directement dans le code de l'objet ; si non on incremente le nombre de chaine non modifiee (if (= (wcmatch valeur_txt "*#") T) (progn (setq valeur_txt_x (cons 1 (rtos (atof valeur_txt) 2 nb_decimale))) (setq nv_ent_txt (subst valeur_txt_x (cons 1 valeur_txt) (entget (ssname ent_txt compte)))) (entmod nv_ent_txt) ) (setq obj_non_numeric (1+ obj_non_numeric)) ) ) (setq obj_non_txt (1+ obj_non_txt)) ) ; on incremente de compteur d'objet (setq compte (1+ compte)) );repeat );progn );if ; on affiche une information a la fin du traitement (if (or (/= obj_non_txt 0) (/= obj_non_numeric 0)) (alert (strcat "Sur " (itoa (sslength ent_txt)) " objets selectionnes, il y avait\n" (itoa obj_non_numeric) " chaines non numeriques\n" (itoa obj_non_txt) " objets non Texte") ) (alert (strcat (itoa (sslength ent_txt)) " chaines numeriques modifiees.")) ) ); defun ;; (princ "\n=> Modifdec") (princ "\n=> ZDEC : Modification du nombre de decimales d'une entite texte numerique ") (princ) Autodesk Expert Elite Team
naito073 Posté(e) le 12 janvier 2010 Auteur Posté(e) le 12 janvier 2010 Merci pour ta réponse je viens de tester il marche bien par contre quand j'ai un nombre comme 4.102 il me l'arrondi a 4.1 et moi je souhaiterai garder 2 chiffres après la virgule. Es ce que tu as une solution?? [Edité le 12/1/2010 par kinato]
(gile) Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 Salut, La question n'est pas claire.Les "z" sont-ils des nombres affichés sur la ligne de commande, dans des textes, des mtextes, des textes de cote, des attributs de bloc ?... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
naito073 Posté(e) le 12 janvier 2010 Auteur Posté(e) le 12 janvier 2010 les z sont des textes qui viennent de mx road et dans mx road je n'ai pas trouvé la précision des strings
lecrabe Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 Hello Si tu veux avoir "tous" lez Zeros ... Format / Style de Cotes / Modifier / Onglet : Unites principales et tu desactives la suppression des zeros de fin Alors tu auras par exemple :1 --> 1.001.1 --> 1.10etc Cela te convient-il ? Le Decapode PS: je suis fatigue, je ne me souviens PLUS de la variable de cotation concernee !!! Autodesk Expert Elite Team
naito073 Posté(e) le 12 janvier 2010 Auteur Posté(e) le 12 janvier 2010 Un grand merci je fais ça de suite
(gile) Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 PS: je suis fatigue, je ne me souviens PLUS de la variable de cotation concernee !!! DIMZIN Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 Hello Les vieux neurones du Crabe se reveillent : avec DIMZIN = 1 avant de lancer et la routine sera OK pour toi ! Le Decapode Autodesk Expert Elite Team
lecrabe Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 ReHello Le vieux Decapode (53 balais) a ete battu par le non moins vieux Gilles :P Le Decapode Autodesk Expert Elite Team
rebcao Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 Bonsoir, battu par le non moins vieux Gilles CAFTEUR t'es pas obligé de tous les dénoncer !!! ;) Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 C'est pour se sentir moins seul ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
didier Posté(e) le 12 janvier 2010 Posté(e) le 12 janvier 2010 coucou en ce moment, même le temps est pluvieux !!!et c'est quelqu'un de chenu qui le dit pas neigeux, plus vieux amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
naito073 Posté(e) le 13 janvier 2010 Auteur Posté(e) le 13 janvier 2010 je viens de test avec le lisp et c'est parfait, un grand merci à Mr le crabe.
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