Aller au contenu

Tester si SCU // SCG


Bred

Messages recommandés

Salut,

il y a peut-être une autre manière, mais je ne vois pas laquelle....

 

Je cherche à tester si le SCU est parrallèlle au SCG (si ces axes ont été tourné d'une valeur de nb x 90°)...

 

J'ai écris ceci, mais ça ne fonctionne pas pour tous les cas de figures :

 

(defun test-SCU//SCG ()
 (if (member (angle '(0 0 0) (getvar "ucsxdir")) (list 0.0 (/ pi 2) (atan 2.0 1.0) pi))
   T)
)

 

Je pensais que c'était une question de tolérance, mais ceci ne marche pas non plus ....

(defun test-SCU//SCG ()
 (if (member T
      (mapcar
	'(lambda (x)
	   (equal x (angle '(0 0 0) (getvar "ucsxdir")) 1e-009))
	(list 0.0 (/ pi 2) (atan 2.0 1.0) pi)))
   T)
)

 

.... il me manque une (des) valeurs dans la liste de comparaison, mais je ne sais pas comment les trouver !!!

(trigo.....)

 

merci d'avance !

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne comprends pas bien ce que tu cherche à évaluer.

Dans mon esprit, "SCU parallèle au SCG" ça veut dire "plan XY du SCU parallèle an plan XY du SCG" ; il peut y avoir eu changement d'origne et rotation du SCU sur l'axe Z, mais pas de rotation sur les axes X et Y.

Dans ce cas c'est la normale du plan XY qu'il faut évaluer :

 

(defun ucs//wcs	(/ z)
 (setq z (trans '(0 0 1) 1 0 T))
 (or (equal z '(0 0 1) 1e-9)
     (equal z '(0 0 -1) 1e-9)
 )
) 

 

Si tu veux savoir si l'axe des X du SCU courant est parallèle soit à l'axe X soit à l'axe Y du SCG (ce que tu semble essayer de faire) tu peux faire :

 

(defun ucs90x (/ x)
 (setq x (getvar "ucsxdir"))
 (or (equal x '(1 0 0) 1e-9)
     (equal x '(-1 0 0) 1e-9)
     (equal x '(0 1 0) 1e-9)
     (equal x '(0 -1 0) 1e-9)
 )
) 

 

Cette dernière méthode n'evalue que la direction de l'axe X et retournera T pour un SCU n'ayant subit qu'une rotation sur l'axe des X.

Par exemple, un SCU ayant subit iune rotation de 90° sur X :

((1.0 0.0 0.0) (0.0 2.22045e-016 1.0) (0.0 -1.0 2.22045e-016))

un SCU ayant subit une rotation de 30° sur X :

((1.0 0.0 0.0) (0.0 0.866025 0.5) (0.0 -0.5 0.866025))

 

Ce que tu cherches est peut-être une combinaison des deux ?

 

(and (ucs//wcs) (ucs90x)) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut (gile) et merci,

pour être plus explicatif, j'ai un souci avec un code qui ne servirais à rien à poster ici car trop personnel... donc vraiment incompréhensible (appel de sous routine, de bloc ayant besoin de rotations, etc....)

Cette routine insert des blocs à sur 2 points (ces blocs sont tournés, miroir, etc... pour former une pièce fini)....

 

J'ai remarqué que lorsque le SCU est tourné de 90°/180°/270° dans n'importe quel axe (x//Y, y//Z et z//X par exemple), ma routine fonctionne sans "trans" ....

Par contre, si l'un des axes n'est plus parrallèlle à l'un des axes du SCG, je dois utiliser trans... (j'ai fait des centaines de test pour trouver la bonne combinaison, mais rien n'y fait....)

 

Les routines que tu me proposes ne fonctionne pas pour une rotation du SCU(=SCG) sur les X de 90... ni pour une rotation du SCU(=SCG) de 270 sur Y + 90 sur Z... etc...

 

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

j'ai un peu ce que tu veux en vba mais en vba :

je te donne l'algorithme:

 

récupération du nom du système de coordonnées

- si j'ai un nom je suis dans un scu

- sinon j'ai une erreur que je dois gérer donc je suis dans un scu sans nom ou SCG. Pour l'instant j'ai pas trouvé la parade car c'est la même erreur que l'on soit dans un SCU sans nom ou scG. mais je part du principe que l'on est dans le scg.

 

en fonction de ça je mais un boolean = true pour le SCU et quand je cherche mes points je transform by ou pas..

 

 

j'espère que ça pourra t'aider et ma macro marche pour tout les angles de rotations jusqu'à présent trouvé.

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Lien vers le commentaire
Partager sur d’autres sites

Donc ce serait évaluer si le SCU courant est un SCU "orthogonal", disons un SCU qui correspondriat à une vue orthogonale (haut, bas, gauche, droite, avant, arrière)

 

(defun scu-ortho (/ x y)
 (setq	x (mapcar 'abs (getvar "UCSXDIR"))
y (mapcar 'abs (getvar "UCSYDIR"))
 )
 (and (or (equal x '(1 0 0) 1e-9)
   (equal x '(0 1 0) 1e-9)
   (equal x '(0 0 1) 1e-9)
      )
      (or (equal y '(1 0 0) 1e-9)
   (equal y '(0 1 0) 1e-9)
   (equal y '(0 0 1) 1e-9)
      )
 )
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Merci sechanbask.

Ta réponse en fait repose mon problème d'une autre manière, car je connais ce problème de SCU non nommé mais non parrallèlle au SCG.....

 

merci (gile), c'est S'là oui !!!!

P'écable !

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Lien vers le commentaire
Partager sur d’autres sites

je crois que j'ai pas aidé, mais je me rappelle d'une personne qui souhaitait toujours écrire à l'horizontale par rapport à sa vue malgré les différents SCU qu'elle utilisait, je ne sais pas où la question était posé ni si ça était résolut mais y'aurait pas moyen de faire ce qu'elle voulait avec la réponse proposé par (gile)??[Edité le 26/9/2007 par sechanbask]

 

[Edité le 26/9/2007 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Lien vers le commentaire
Partager sur d’autres sites

mais y'aurait pas moyen de faire ce qu'elle voulait avec la réponse proposé par (gile)??

Heu, non

Mais avec un réacteur, oui

 

Tu as les lisps rot et rot_0 sur cette page qui conserve l'angle des attributs à 0 quelque soit le scu

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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é