Bred Posté(e) le 28 août 2006 Posté(e) le 28 août 2006 Salut, je n'arrive pas à trouvé mon erreur ... je cherche à faire un test sur les coordonnées de 2 points tel que si ils ont le même z, OU si ils ont les même x et y (2 points superposés sur les z) la réponse n'est pas valide... j'ai écris : (while (or (and (equal (car pta) (car ptd)) (equal (cadr pta) (cadr ptd))) (equal (caddr pta) (caddr ptd))) (setq ptd (getpoint "\n Point de départ :") pta (getpoint ptd "\n Point d'arrivé :")) ) ... ça ne fonctionne pas pour le test des même x et y ((and (equal (car pta) (car ptd)) (equal (cadr pta) (cadr ptd))) ... faux .... merci de votre aide ... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 28 août 2006 Posté(e) le 28 août 2006 Juste en lisant, comme ca : il faut initialiser ton test. Au départ ni ptd ni ta n'ont de valeur ? Je me trompe ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 28 août 2006 Auteur Posté(e) le 28 août 2006 en effet Tramber : (setq ptd nil pta nil) (while (or (and (equal (car pta) (car ptd)) (equal (cadr pta) (cadr ptd))) (equal (caddr pta) (caddr ptd))) (setq ptd (getpoint "\n Point de départ :") pta (getpoint ptd "\n Point d'arrivé :")) ) Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 28 août 2006 Posté(e) le 28 août 2006 Salut Bred, Si j'ai bien compris ce que tu voulais faire, ton code fonctionne, tant que le SCU est parallèle au SCG. Quand on pivote le SCU, de 90° sur l'axe des X par exemple, l'expression :(trans '(0 1 0) 1 0) retourne (0.0 2.22045e-016 1.0) au lieu du théorique (0 0 1), donc pour comparer des points quand on travaille en 3D avec des SCU "biscornus" il vaut mieux laisser une approximation dans la comparaison. Je laisses en général 1e-9 soit le milliardième, ce qui me semble fonctionner tout en restant tolérable. (setq pta nil ptd nil) (while (or (and (equal (car pta) (car ptd) 1e-9) (equal (cadr pta) (cadr ptd) 1e-9) ) (equal (caddr pta) (caddr ptd) 1e-9) ) (setq ptd (getpoint "\n Point de départ :") pta (getpoint ptd "\n Point d'arrivé :") ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Bred Posté(e) le 28 août 2006 Auteur Posté(e) le 28 août 2006 merci (gile)... c'est ça.... en fait je m'excuse, car je crois que tu m'avais déjà parlé de ce problème d'approximation en 3D, et j'aurais pû y penser par moi-même.... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
(gile) Posté(e) le 28 août 2006 Posté(e) le 28 août 2006 Ne t'excuse pas, tu as appris beaucoup en peu de temps, j'en suis impressionné. Je pense qu'il nous arrive à tous d'oublier un truc de temps en temps (en tout cas, moi ça m'arrive). 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