DenisHen Posté(e) le 17 octobre 2006 Posté(e) le 17 octobre 2006 Bonsoir à tous... Beaucoup de mes calques se terminent par l'échelle des entité qu'ils contiennent :"Poteaux EDF 200""Poteaux EDF 500""Cadastre adresse 200""Cadastre adresse 500""...... .... ...1250"".... ... .. .. .. 25000""... ........ ...." Mais j'ai aussi des calques où les entités n'on pas d'échelle :"Cadastre limite""Bâtiment contour""Bordure de trottoir""....." Pour, biensur, les geler ou les libérer dans une fenêtre de l'espace papier qui elle a une échelle... Mais voilà, je ne sais pas comment, une fois "dans" la fenêtre, savoir quelle est sont "échelle personnalisée"... Si quelqu'un peut me sortir une variable ou une astuce... J'ai déjà fais ça :(defun c:LayerEchP ( / x_plan) (setq x_plan (tblnext "layer" T)) (while (/= x_plan nil) ;(princ "\nPlan en cours :") ;(princ (cdr (assoc 2 x_plan))) (if (= (numberp (read (FinChaine (cdr (assoc 2 x_plan))))) T) ;(gèle ou libère le calque selon échelle) ;(ne touche à rien) ) ;_ Fin de if (setq x_plan (tblnext "layer")) ) ;_ Fin de while ) (defun FinChaine (chaine / pos) (setq pos (strlen chaine)) (while (and (not (equal (substr chaine pos 1) " ")) (> pos 1)) (setq pos (- pos 1)) ) ;_ Fin de while (setq chaine (substr chaine (+ pos 1) (- (strlen chaine) pos))) ) ;_ Fin de defun Je sais, j'ai encore beaucoup de boulo... Mais j'y arriverais... Merci, Denis... ( qui est fatigué mais qui arrive à faire plein de truc...) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Tramber Posté(e) le 18 octobre 2006 Posté(e) le 18 octobre 2006 vois ici, par exemple. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
DenisHen Posté(e) le 18 octobre 2006 Auteur Posté(e) le 18 octobre 2006 Merci à toi Tramber, Très intéressant, je croix que j'utiliserais : (setq Ech (* (last (trans '(0 0 1) 3 2)) 1000)) puisque je suis à l'intérieur de la fenêtre... J'ai (* (last (trans '(0 0 1) 3 2)) 1000)Qui me renvoi bien 200.0 (pour du 200ème). Mais j'ai (fix (* (last (trans '(0 0 1) 3 2)) 1000))qui me renvoi 199 ? ? ? D'où qu'il est passé où le 1 ? ? Merci encore, Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 18 octobre 2006 Posté(e) le 18 octobre 2006 Je pense qu'il s'agit d'un problème d'arrondi. la fonction fix retourne la "troncature" du nombre (le nombre troqué de ces décimales) : (setq num 4.9999999999999) retourne 5.0(fix num) retourne 4 tu peux utiliser la fonction arrondi : (defun arrondi (num) (if ( (abs (- num (1+ (fix num)))) ) (fix num) (1+ (fix num)) ) ) (arrondi num) retourne 5(arrondi 4.49999999) retourne 4(arrondi 4.5) retourne 5 Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 18 octobre 2006 Auteur Posté(e) le 18 octobre 2006 Merci encore à toi (gile) Mais là, je ne saisi pas... Dans mon cas, (* (last (trans '(0 0 1) 3 2)) 1000) est bien égale à 200.00000..... Mais je note ta routine "arrondi" forte utile... Merci encore, Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 18 octobre 2006 Posté(e) le 18 octobre 2006 Dans mon cas, (* (last (trans '(0 0 1) 3 2)) 1000) est bien égale à 200.00000..... Que te retourne l'expression suivante, T ou nil ? (= 200 (* (last (trans '(0 0 1) 3 2)) 1000)) Et celle-ci ? (equal 200 (* (last (trans '(0 0 1) 3 2)) 1000) 1e-9) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 18 octobre 2006 Auteur Posté(e) le 18 octobre 2006 (= 200 (* (last (trans '(0 0 1) 3 2)) 1000)) nil (equal 200 (* (last (trans '(0 0 1) 3 2)) 1000) 1e-9) T Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 18 octobre 2006 Posté(e) le 18 octobre 2006 Si la première expression retourne nil, c'est bien que (* (last (trans '(0 0 1) 3 2)) 1000) n'est pas exactement égal à 200. Néanmoins, la seconde expression retourne T parceque, à 0.000000001 (ou 1e-9) près, c'est bien égal à 200. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 18 octobre 2006 Auteur Posté(e) le 18 octobre 2006 Ok, donc AutoCAD m'affiche 200.000. Mais en fait, il a 199.999..... Raison pour laquelle, fix "coupe" la partie décimale et me renvoi 199... Mais j'au trouvé un super truc vachement plus simple... (non, ne te moque pas ;) ) Ech = "200" (setq Ech (rtos (arrondi (atoi Ech)) 2 0)) Mais en l'écrivant, je m'aperçois que c'est nul (puisque Ech est une saisi au clavier), et donc ça ne sert à rien ! ! Pfffff, et comme un âne, j'ai déjà posté ma routine... PFFFFFF.... :casstet: Faut que j'aille corriger ça... Bon, tu peut te moquer ! ! ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 18 octobre 2006 Posté(e) le 18 octobre 2006 (setq Ech (rtos (arrondi (atoi Ech)) 2 0)) Ne sert effectivement absolument à rien du tout : si la valeur de Ech est : "200" (atoi Ech) transforme la chaine en entier -> 200(arrondi (atoi Ech)) arrondi un nombre entier au nombre entier le plus proche !!! -> 200(rtos (arrondi (atoi Ech)) 2 0) transforme en chaine un nombre réel (en fait un entier) sans afficher de décimale -> "200"(setq Ech (rtos (arrondi (atoi Ech)) 2 0)) attribue sa "nouvelle valeur" à Ech !!! Eh, Denis arrête Pink Floyd ;) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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