Bred Posté(e) le 21 juin 2006 Posté(e) le 21 juin 2006 Bonjour,Je n'arrive pas à récupérer le dernier point cliquer après la demande de getdist (si on donne la distance en cliquant s'entend) : (setq H (getdist "\n Hauteur :)) (setq pt (getvar "LASTPOINT")) ... ne marche pas ... et je ne vois pas pourquoi .... merci Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Patrick_35 Posté(e) le 21 juin 2006 Posté(e) le 21 juin 2006 SalutEt avec cette solution ?(setq h (distance pt1 (setq pt2 (getpoint (setq pt1 (getpoint "\nPremier point : ")) "\nHauteur : ")))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 21 juin 2006 Posté(e) le 21 juin 2006 Ou écrit d'une autre manière (setq h (distance (setq pt1 (getpoint "\nPremier point : ")) (setq pt2 (getpoint pt1 "\nHauteur : ")))) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Bred Posté(e) le 21 juin 2006 Auteur Posté(e) le 21 juin 2006 ... eh ben non !!! ...merci mais ça ne me va pas : getdist me permet de rentrer une distance clavier OU 2 points ... et je veux garder ces possibilités (surtout de pouvoir rentrer une distance clavier) ... Mais au cas ou la distance est calculé grâce au choix de 2points, je veux récupérer le dernier point cliquer pour le traiter ... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
bonuscad Posté(e) le 21 juin 2006 Posté(e) le 21 juin 2006 Peut être en utilisant une fonction (getdist) redéfinie ! Exemple (possible qu'il faille encore l'affiner après quelques tests, je pense à equal avec un fuzz) (defun my_getdist ( / pt h pt_snd) (if (equal (setq pt (getpoint)) (polar (getvar "lastpoint") (angle (getvar "lastpoint") pt) (distance (getvar "lastpoint") pt))) (setq h (distance (getvar "lastpoint") pt)) (progn (setq h (distance pt (setq pt_snd (getpoint pt "\nSpécifiez le deuxième point: ")))) (setvar "lastpoint" pt_snd) ) ) h ) Voilà au lieu d'utiliser (getdist), tu utilises (my_getdist) ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Bred Posté(e) le 21 juin 2006 Auteur Posté(e) le 21 juin 2006 Super, merci, les premiers test semble fonctionner ... par contre ton "fuzz" m'echappe ... l'aide en parle en anglais et perso je suis assez mal pourvu en langues... ça à l'air d'un argument de niveau d'aproximation ou je n'ai vraiment rien compris ??? De plus, dans ton lisp le h à la fin m'échappe ... ou alors c'est un raccourci de (print h) ??? merci encore ... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
bonuscad Posté(e) le 21 juin 2006 Posté(e) le 21 juin 2006 ça à l'air d'un argument de niveau d'aproximation Tout à fait, c'est une tolérance de comparaison que l'on fixe comme on veutex: 1E-08 pour une tolérance de 8 chiffres après la virgule. le "h" à la fin est pour être sur que la fonction retourne la valeur de h et non pas par exemple l'assignation de pt_snd à LastPoint qui pourrait être la dernière évaluation suivant la saisie effectuée. donc (setq hauteur (my_getdist)) affectera bien à "hauteur" la valeur de la variable h (dernière évaluée) bien qu'elle soit remise à nil (variable locale) à la fin de la fonction (my_getdist). Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 22 juin 2006 Posté(e) le 22 juin 2006 dans ton lisp le h à la fin m'échappe ... ou alors c'est un raccourci de (print h) ??? (defun c:pourvoir () (setq h 10) (alert "regarde bien ce qui va s'afficher en retour de la routine") h ) (setq i (c:pourvoir)), ainsi i récupère la valeur 10. C'est ce qu'on appelle la "valeur en retour", un fondement du lisp. Dire que c'est un raccourci de princ n'est pas si faux, sauf que princ ne prends que des chaines de caractères. [Edité le 22/6/2006 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 23 juin 2006 Auteur Posté(e) le 23 juin 2006 Merci à vous deux pour vos explication. bonuscad : je comprend le fonctionnement de donner une tolérance, mais ce n'est que pour l'affichage en ligne de commande, non ?, parceque personnelement, plus je suis "juste" dans mes variables, mieux je me sens, et donc avoir un variable avec une multitude de chiffre après la virgule me permet d'être on ne peu plus juste dans les données rentrés (ici ma hauteur...) Tramber : ça faisais longtemp que tu ne t'étais plus occupé de répondre à mes souci... ça fait plaisir !!!J'ai testé ta routine, et elle me permet trés bien de comprendre mon interrogation précedente, et je ne connaissais pas la "valeur de retour"... ça me plait bien ... merci Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 La précision d'AutoCAD (14 décimales) est forcément altérée par certaines opérations, par exemple les rotations de SCU. Dans un SCU pivoté de 90° sur l'axe des X, on fait un point à 0,1000,0. Ses coordonnées dans le SCG sont "théoriquement" 0,0,1000.Or quand on interroge la liste dxf de ce point on note une "imprécision". Extrait de la Fenêtre de texte. Commande: scuNom du SCU courant: *GENERAL*Spécifiez l'origine du SCU ou [Face/NOMmé/OBjet/Précédent/Vue/Général/X/Y/Z/axEZ] : xSpécifiez l'angle de rotation autour de l'axe X : 90Commande: point Modes point courants: PDMODE=34 PDSIZE=-3.0000Spécifiez un point: 0,1000 Commande: (cdr (assoc 10 (entget (entlast))))(0.0 [surligneur]2.22045e-013[/surligneur] 1000.0) Il est donc nécessaire de laisser une tolérence quand on compare l'égalité ente 2 points : (equal (cdr (assoc 10 (entget (entlast)))) '(0 0 1000)) retourne nil (equal (cdr (assoc 10 (entget (entlast)))) '(0 0 1000) 1e-9) retourne T Personnellement, par expérience, avec 1e-9 (le milliardième) je n'ai jamais encor été pris en défaut. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 23 juin 2006 Auteur Posté(e) le 23 juin 2006 merci (gile)...c'est bon à savoir (et je pense que j'ai dû déjà le rencontrer, et je me suis énervé parceque ça ne marchait pas...) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 Il y a quand même un truc curieux, vous parlez Bonus et toi de ce fuzz (1E-08) et je ne le vois pas dans la routine :casstet: Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Patrick_35 Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 C'est dans le equal @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
(gile) Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 C'est dans le equal Je m'en doute, mais je ne vois que çà : (equal (setq pt (getpoint)) (polar (getvar "lastpoint") (angle (getvar "lastpoint") pt) (distance (getvar "lastpoint") pt))) AU TEMPS POUR MOI : J'avais mal lu ! C'est seulement une suggestion, je croyais que Bonus l'avait mis et que je ne voyais pas :P [Edité le 23/6/2006 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 23 juin 2006 Auteur Posté(e) le 23 juin 2006 Rien à voir... AU TEMPS POUR MOI va voir là : http:// http://www.langue-fr.net/index/A/au_temps-autant.htm intérréssant, hein ??? Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 23 juin 2006 Posté(e) le 23 juin 2006 Merci pour ce lien, J'étais persuadé jusque là que "Autant pour moi" était incorrect et je m'évertuais à utiliser "Au temps pour moi", en connaissance de ses origines militaires malgré le fait que je fus objecteur de conscience. Extraits du "Petit Robert" qui reste une référence en matière d'expressions : À "temps" Au temps pour moi : se dit lorsqu'on admet son erreur (souvent écrit à tort autant pour moi). À "autant" : Loc. fam. (incorrect, par confus. avec au temps pour moi) Autant pour moi : je reconnais que je me suis trompé. [Edité le 23/6/2006 par (gile)] 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