DenisHen Posté(e) le 17 juillet 2018 Posté(e) le 17 juillet 2018 Bonjour à tous. Voilà, je cherche à écrire un texte "horizontal", en fait, dans le sens de la lecture, de gauche à droite et non à l'envers... J'ai l'angle en grade (x_alpha) et je cherche à en sortir l'angle "complémentaire pour que mon texte soit dans le "bon sens"... J'ai écris ça, mais si je suis là, c'est que ça ne fonctionne pas...: (if (> (angtof x_alpha) (* pi 2)) (setq x_alpha (angtos (- (angtof x_alpha) (* pi 2)) 2 3)) ) ;_ Fin de if L'origine des angles est au NORD (axe des Y) et je tourne dans le sens horaire. En gros, si l'angle est supérieur à 200gr ou inférieur à -200gr, y ajouter un demis-tour. Je ne suis pas très sûr d'être très claire... Si quelqu'un a la solution, un conseil... Je suis preneur... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 17 juillet 2018 Posté(e) le 17 juillet 2018 Salut, Première chose : angtof renvoie toujours l'angle en radians avec 0 à l'est et croissant en sens anti-horaire.Ce sachant, la trigonométrie est ton amie : (if (< (cos (angof x_alpha)) 0.) (setq x_alpha (angtos (+ (angof x_alpha) pi) 2 3)) ) PS : 2 * pi radians = 360° = 400g Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 17 juillet 2018 Auteur Posté(e) le 17 juillet 2018 Que dire... C'est surtout (gile) l'ami des lispeurs... ;) Je n'aurais JAMAIS pensé à passer par le cosinus... Mille mercis... C'est gégnial ! ! ! PS : J'ai résolu le problème "d'horizontalité" du texte... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 17 juillet 2018 Posté(e) le 17 juillet 2018 Par contre, je n'ai plus le droit à un texte réellement horizontal... Je ne comprends pas ce que tu veux dire. De quelles valeurs de 'x_alpha' parles tu ? "100g" ? "300g" ?... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 17 juillet 2018 Auteur Posté(e) le 17 juillet 2018 Je parlais de 100gr... Mais j'ai résolu le problème, c'est pour cela que j'ai effacé cette partie de mon poste, sans savoir que tu l'avais lu... :huh: Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 17 juillet 2018 Auteur Posté(e) le 17 juillet 2018 Encore une petite question : comment se comporte ton code s'il y a une rotation du SCU ? Car; quand j'ai une rotation de SCU, j'ai, dans un coin du DWG ((vlax-ldata-get "DenisH" "AngSCU")) la constante en grade et orienté au NORD... Comment puis-je l'intégrer dans ton formidable code ? ? ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 17 juillet 2018 Posté(e) le 17 juillet 2018 Re, En règle générale, en programmation, sauf à appeler les commandes avec (command ...) ou ses clones, on travaille toujours en radians, en sens trigonométrique avec le 0 à l'est et dans le SCG ou le SCO pour certaines entités 2D utilisées en 3D (dans des plans non parallèles au plan XY).Essaye de penser comme ça, ça te simplifiera la vie. Par exemple la propriété Rotation d'un texte d'un bloc etc... (code DXF 50) est toujours exprimée en radians, sens trigo, 0 à l'est dans le SCO de l'entité (le SCO est identique au SCG pour tous les plans parallèles au plan XY). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 24 juillet 2018 Auteur Posté(e) le 24 juillet 2018 Bonjour. J'ai tenté quelques trucs pour intégrer la variable SnapAng à ton code, mais rien... Voici ce que j'ai écris et qui ne fonctionne pas : (if (< (cos (angtof x_alpha)) (angtos (getvar "snapang") 2 3)) (setq x_alpha (angtos (+ (angtof x_alpha) pi) 2 3)) ) ;_ Fin de if Si quelqu'un a un conseil, une astuce... je suis preneur... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 24 juillet 2018 Posté(e) le 24 juillet 2018 Salut, Je ne comprends pas ce que tu veux faire (je ne vois pas le rapport avec SNAPANG) mais là, tu compares un cosinus et un angle... Relis ce que je disais réponse #7.Le code ci-dessous fonctionne quelles que soient les valeurs de ANGDIR, ANGBASE, AUNITS et le SCU courant. (setq ucsAngle (angle '(0. 0. 0.) (getvar 'ucsxdir))) (if (setq ss (ssget "_X" '((0 . "TEXT") (410 . "Model")))) (repeat (setq i (sslength ss)) (setq texte (ssname ss (setq i (1- i))) rotation (getpropertyvalue texte "Rotation") ) (if (< (cos (- rotation ucsAngle)) 0.) (setpropertyvalue texte "Rotation" (+ rotation pi)) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 24 juillet 2018 Auteur Posté(e) le 24 juillet 2018 Salut (gile), et merci de me répondre. je pense que tu as bien saisi ce que je voulais dire, sauf que j'ai oublié de préciser que je suis toujours en SCU général (je ne pensais pas devoir le souligner, désolé). C'est pour cela que je cherche la valeur de snapang. Habituellement, je fais une rotation de mon dessin mais je reste en SCU général. Car la variable snapang est, de fait, la nouvelle origine de mon angle de référence (qui n'est plus 0). Tout ça pour que mes textes soient toujours orientés de gauche à droite... A l'endroit pour une lecture sans faire le poirier... ;) Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 24 juillet 2018 Auteur Posté(e) le 24 juillet 2018 Pour comparer des cos ensemble, j'ai essayé ça, mais... Non...(if (< (cos (+ (angtof x_alpha))) (cos (getvar "snapang"))) (setq x_alpha (angtos (+ (angtof x_alpha) pi) 2 3)) ) ;_ Fin de if Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
(gile) Posté(e) le 24 juillet 2018 Posté(e) le 24 juillet 2018 Le principe est le même, si tu veux utiliser la valeur de SNAPANG comme angle de référence, il suffit de remplacer :(setq ucsAngle (angle '(0. 0. 0.) (getvar 'ucsxdir)))par : (setq snapAngle (getvar 'snapang))et ucsAngle par snapAngle dans le code donné plus haut.(setq snapAngle (getvar 'snapang)) (if (setq ss (ssget "_X" '((0 . "TEXT") (410 . "Model")))) (repeat (setq i (sslength ss)) (setq texte (ssname ss (setq i (1- i))) rotation (getpropertyvalue texte "Rotation") ) (if (< (cos (- rotation snapAngle)) 0.) (setpropertyvalue texte "Rotation" (+ rotation pi)) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
DenisHen Posté(e) le 25 juillet 2018 Auteur Posté(e) le 25 juillet 2018 Bonjour à tous. Voilà, grace à un membre de CadXP (je ne sais plus de qui est ce code qui m'a servi de base) et à Maître (gile), voici un lisp qui récupère l'angle d'une ligne ou celui d'un segment d'une polyligne. Cette routine prend en compte la variable "snapang", pour le cas où le plan aurait une rotation avec le curseur parallèle à la fenêtre AutoCAD. C'est ici Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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