chris_mtp Posté(e) le 28 mai 2009 Posté(e) le 28 mai 2009 Bonjour à tous, Je ne sais pas si ca existe en tout cas j'ai cherché de partout et je n'ai pas trouvé pour l'instant.Je cherche une routine qui permet de définir le nombre de décimales d'un attribut Z d'un point type point topo. Je m'explique, au lieu d'avoir un attribut du type 2.458 avec un bloc point topo à Z=2.458, le lisp doit remplacer la valeur 2.458 par 2.46 à 2 chriffres après la virgule par exemple.DE même, pour bloc à Z = 2.3012 le lisp doit écrire dans l'attribut altitude 2.30 et non 2.3 tout court. Merci par avance de votre aide.John.
stephan35 Posté(e) le 28 mai 2009 Posté(e) le 28 mai 2009 Bonjour, Deux pistes : Essaie Luprec à 2. Sinon, tu prends ta valeur que tu multiplie par 100, tu en faits la valeur arondie, puis tu divise ce résultat par 100 ... (/ (fix(* (cadr (getpoint)) 100)) 100.00) Cordialement.
lecrabe Posté(e) le 29 mai 2009 Posté(e) le 29 mai 2009 Hello Et par la fonction RTOS xxxx 2 2 : Commande: (setq toto 3.14159)3.14159 Commande: (setq aa (rtos toto 2 0))"3" Commande: (setq aa (rtos toto 2 2))"3.14" Le Decapode Autodesk Expert Elite Team
stephan35 Posté(e) le 29 mai 2009 Posté(e) le 29 mai 2009 Hello Et par la fonction RTOS xxxx 2 2 : Commande: (setq toto 3.14159)3.14159 Commande: (setq aa (rtos toto 2 0))"3" Commande: (setq aa (rtos toto 2 2))"3.14" Le Decapode Bien vu, Avec un petit atoi ... Si il souhaite gérer les arrondis .... ? genre 3.519 -> 3.52 ? Cordialement
bonuscad Posté(e) le 29 mai 2009 Posté(e) le 29 mai 2009 DE même, pour bloc à Z = 2.3012 le lisp doit écrire dans l'attribut altitude 2.30 et non 2.3 tout court. Pour ceci, si tu utilises la fonction RTOS voir le réglage de la variable DIMZIN. En outre si (RtoS) est utilisé sans paramètre, il est aussi impacté par les variables LUNITS et LUPREC Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
chris_mtp Posté(e) le 29 mai 2009 Auteur Posté(e) le 29 mai 2009 Bonjour, Merci pour vos réponses.J'ai retrouvé dans mes lips une fonction que Gile avait dévelloper pour attribut une valeur à un attribut défini dans un bloc (defun SetAttValue (blk tag val / lst loop) (setq lst (entget (entnext blk)) loop (= "ATTRIB" (cdr (assoc 0 lst))) ) (while loop (if (= (strcase tag) (cdr (assoc 2 lst))) (progn (entmod (subst (cons 1 val) (assoc 1 lst) lst)) (setq loop nil) (entupd blk) ) (setq lst (entget (entnext (cdr (assoc -1 lst)))) loop (= "ATTRIB" (cdr (assoc 0 lst))) ) ) ) ) Mais je ne vois pas comment sélectionner d'une part les attributs de chaque bloc.Merci par avance de votre aide.John.
stephan35 Posté(e) le 29 mai 2009 Posté(e) le 29 mai 2009 Mais je ne vois pas comment sélectionner d'une part les attributs de chaque bloc.Merci par avance de votre aide.John. Pour selectionner un attribut en lisp: Par le handle ?Par le nom d'entité ?Par sélection à l'écran ?Par balayage ? Cordialement.
Patrick_35 Posté(e) le 29 mai 2009 Posté(e) le 29 mai 2009 Salut Un exemple avec Mat @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
chris_mtp Posté(e) le 8 juin 2009 Auteur Posté(e) le 8 juin 2009 J'ai pu m'en sortir en faisant une sélection de tous les blocs concernés par ssget puis de les traiter avec la fonction de Gile.Merci de vos réponses.John.
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