Aller au contenu

Enlever un chiffre aprés la virgule


Messages recommandés

Posté(e)

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

Posté(e)

 

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

Posté(e)

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]

Posté(e)

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

Posté(e)

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.00

1.1 --> 1.10

etc

 

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

Posté(e)

 

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

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é