Aller au contenu

Messages recommandés

Posté(e)

Bonjour à tous.

Je souhaite insérer un flèche dans un texte (droite ou gauche).

Dans Autocad, lorsque je fais mon texte, je tape Alt+26 ou Alt+27.

Ces flèches correspondent aux unicodes U+2190 et U+2192.

Lorsque je mets dans mon lisp (chr 2190)

Or, (chr 2190) me retourne "Ž" et (chr 2192) "".

Quel serait le code ?

Merci

Posté(e)

Bonjour à tous.

Je souhaite insérer un flèche dans un texte (droite ou gauche).

Dans Autocad, lorsque je fais mon texte, je tape Alt+26 ou Alt+27.

Ces flèches correspondent aux unicodes U+2190 et U+2192.

Lorsque je mets dans mon lisp (chr 2190)

Or, (chr 2190) me retourne "Ž" et (chr 2192) "".

Quel serait le code ?

Merci

 

Bonjour,

 

le paramètre de la fonction chr doit être compris entre 1 et 255. S'il est au delà, la valeur retournée est aléatoire.

 

A string containing the ASCII character code for integer. If the integer is not in the range of 1-255, the return value is unpredictable.

 

Pourquoi utiliser l'unicode et pas directement le caractère "→" ou "←" ?

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)
Pourquoi utiliser l'unicode et pas directement le caractère "→" ou "←" ?

Parce que l'éditeur de texte ne les accepte pas, forcément ça marche moins bien... :( Question idiote de ma part, désolé :rolleyes:

 

 

Sinon, pour coder avec l'unicode du caractère, on peut imaginer d'utiliser la fonction strcat

 

Commande: (strcat "\u+2190")

"←"

 

Commande: (strcat "\u+2191")

"↑"

 

Commande: (strcat "\u+2192")

"→"

 

Commande: (strcat "\u+2190 toto \u+2192")

"← toto →"

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Merci pour les infos et la réponse.

Je ne savais pas qu'au delà de 255 la réponse était aléatoire... A noter dans un coin de ma tête!

 

Je pense que c'est dû au fait que la fonction chr date d'une époque où l'unicode n'existait pas. De ce fait, cette fonction ne sait gérer que les codes ASCII standard (jusqu'à 127) et les autres codes étendus, mais dans la limite de 256 caractères.

 

On peut remarquer que la réciproque est vraie également et que la fonction ascii ne renvoie le code ascii que des 256 premiers caractères. Si on demande le code ascii d'un caractère qui se situe au delà de cette limite on obtient toujours le code 92 qui correspond au "\"

 

Commande: (ascii "←")

92

 

De toute façon, on n'arrive pas à écrire (ascii "←") dans un fichier ANSI (qui est le standard de notepad ou de l'éditeur de texte de lisp), donc le problème ne peut même pas se poser.

Mais le resultat 92 s'explique par le fait que ascii retourne la conversion du premier caractère de la chaine en son code ASCII.

(ascii "←") doit être synonyme de (ascii "\u+2190"), donc de (ascii "\\"), donc de 92

 

Sinon, tu as pu faire fonctionner ton lisp avec (strcat "\u+2190") et (strcat "\u+2192") ?

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

Super !

 

Finalement, strcat n'est pas forcément nécessaire si on donne à la commande mtext tout de suite le bon index, comme par exemple

 

 (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object))
       Space (if (= (getvar "CVPORT") 1)
               (vla-get-PaperSpace AcDoc)
               (vla-get-ModelSpace AcDoc) 
             )
 )

 (vla-addmtext space (vlax-3d-point '(0 0)) 0 "\u+2190 essai \u+2192")

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

Posté(e)

eurf, c'est bien trop pour moi ! ;)

 

(command "texte" "j" "mc" pt_txt_pente "100" (strcat (rtos pente 2 2) "%" "\u+2192"))

 

Ce que tu m'as donné me suffit largement !

Posté(e)

(command "texte" "j" "mc" pt_txt_pente "100" (strcat (rtos pente 2 2) "%" "\u+2192"))

 

Dans cette ligne de code le strcat est nécessaire du fait de la présence de la fonction rtos. Mais, si tu ne voulais passer à la commande "texte" qu'une constante, par exemple "5%\u+2192", on n'aurait plus besoin du strcat.

 

(command "texte" "j" "mc" pt_txt_pente "100" "5%\u+2192")

Ce qui revient au même, sur le principe, que ce que j'ai écrit en vlisp. D'ailleurs, dans ta ligne de code, tu pourrais écrire "%\u+2192" à la place de "%" "\u+2192", mais c'est un détail.

 

J'ai souhaité préciser compte tenu que ma deuxième réponse laissait entendre qu'il fallait absolument utiliser strcat, ce qui n'est pas le cas. Désolé si mon manque de précision, à cause duquel je me suis déjà fait taper sur les doigts par le passé, t'a conduit à le penser.

 

C'est tout un art d'être clair et précis dans ce qu'on raconte :D

 

Amicalement

Vincent

C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme)

C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)

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é