Bred Posté(e) le 25 septembre 2007 Posté(e) le 25 septembre 2007 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...
(gile) Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 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
Bred Posté(e) le 26 septembre 2007 Auteur Posté(e) le 26 septembre 2007 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...
sechanbask Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
(gile) Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 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
Bred Posté(e) le 26 septembre 2007 Auteur Posté(e) le 26 septembre 2007 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...
sechanbask Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Patrick_35 Posté(e) le 26 septembre 2007 Posté(e) le 26 septembre 2007 mais y'aurait pas moyen de faire ce qu'elle voulait avec la réponse proposé par (gile)?? Heu, nonMais 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 PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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