Aller au contenu

While / test coordonnées


Messages recommandés

Posté(e)

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

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

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é