Ajout d'un texte avec symboles ou accents

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Post Reply
francis75
Posts: 29
Joined: Tue Sep 23, 2014 1:21 pm

Ajout d'un texte avec symboles ou accents

Post by francis75 »

Bonjour,

Sous Linux, y a t-il un moyen pour ajouter un texte qui contient des symboles ou lettres accentuées ?

J'ai aussi essayé en passant par la console python Draft.makeText("mon texte ààèè,FreeCAD.Vector(1,1,0))

et en essayant les fonctions d'encodings de charset, sans résultat.

Merci

OS: Ubuntu 12.04.4 LTS
Word size: 64-bit
Version: 0.14.3702 (Git)
Branch: releases/FreeCAD-0-14
Hash: b3368125c63289ec8ce9faec2b2ae4c78d436406
Python version: 2.7.3
Qt version: 4.8.1
Coin version: 3.1.3
SoQt version: 1.5.0
OCC version: 6.7.0
User avatar
rockn
Veteran
Posts: 1791
Joined: Wed Sep 28, 2011 10:39 am
Location: Toulouse, France
Contact:

Re: Ajout d'un texte avec symboles ou accents

Post by rockn »

Salut francis75,

Ce problème pouurait être lié au problème des cotes de diamètre car ces dernière ajoute le signe diamètre dans le texte.

Essaye de changer la police de caractère, soit dans les propriétés de l'objet lui même soit dans les préférences de l'atelier Draft.

C'est peut etre la police utilsé par défaut par le systme d'exploitation qui pose problème...
Formations - Assistance - Développement : https://freecad-france.com
mario52
Veteran
Posts: 4673
Joined: Wed May 16, 2012 2:13 pm

Re: Ajout d'un texte avec symboles ou accents

Post by mario52 »

Bonjour
même chose dans Windows n'affiche pas les accentués et conserve toujours la même police même si je la change dans les préférences ou dans les propriétés même en redémarrant FreeCAD.
pourtant la nouvelle police est visible dans "Propriété > Vue" et le caractère "é" est bien visible dans "Propriétés > Données > Label Text"

avec Python, pour les caractères unicodes il faut ajouter "u" devant la chaîne

ce code donne une erreur

Code: Select all

Draft.makeText(["é"],point=FreeCAD.Vector(0.0,0.0,0.0))
ce code est le bon (mais n'affiche pas le caractère)

Code: Select all

Draft.makeText([u"é"],point=FreeCAD.Vector(0.0,0.0,0.0))
vous pouvez uiliser plusieurs lignes (les accentués pour l'exemple...pour le moment)

Code: Select all

Draft.makeText([u"é","A","B","C",u"à"],point=FreeCAD.Vector(0.0,0.0,0.0))
OS: Windows Vista
Word size: 32-bit
Version: 0.14.3700 (Git)
Branch: releases/FreeCAD-0-14
Hash: 32f5aae0a64333ec8d5d160dbc46e690510c8fe1
Python version: 2.6.2
Qt version: 4.5.2
Coin version: 3.1.0
SoQt version: 1.4.1
OCC version: 6.5.1

mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
francis75
Posts: 29
Joined: Tue Sep 23, 2014 1:21 pm

Re: Ajout d'un texte avec symboles ou accents

Post by francis75 »

mario52 wrote:

Code: Select all

Draft.makeText([u"é"],point=FreeCAD.Vector(0.0,0.0,0.0))
vous pouvez uiliser plusieurs lignes (les accentués pour l'exemple...pour le moment)

Code: Select all

Draft.makeText([u"é","A","B","C",u"à"],point=FreeCAD.Vector(0.0,0.0,0.0))
mario
Bonjour,

c'est curieux mais ça marche sur l'un de mes deux Ubuntu 12.04 uniquement. Les deux sont à jour. L'un est en 32 bits (fonctionnne) ,l'autre en 64.

L'erreur :


>>> Draft.makeText([u"é","A","B","C",u"à"],point=FreeCAD.Vector(0.0,0.0,0.0))
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/lib/freecad/Mod/Draft/Draft.py", line 889, in makeText
textbuffer.append(l.decode("utf8").encode('latin1'))
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
>>>


J'ai fait d'autres essais en Python, sans mieux.
User avatar
shoogen
Veteran
Posts: 2823
Joined: Thu Dec 01, 2011 5:24 pm

Re: Ajout d'un texte avec symboles ou accents

Post by shoogen »

Code: Select all

Draft.makeText([u"\xe9","A","B","C",u"\xe0"])
Draft.makeText(["é".decode('utf-8'),"A","B","C","à".decode('utf-8')])
Draft.makeText(["é","A","B","C","à"])
OS: Windows 7
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.15.4089 +2 (Git)
Branch: (detached from ickby/quarter)
Hash: ee521e56e3de29cda00182b41435688a2715fef9
Python version: 2.7.5
Qt version: 4.8.6
Coin version: 4.0.0a
OCC version: 6.7.0
mario52
Veteran
Posts: 4673
Joined: Wed May 16, 2012 2:13 pm

Re: Ajout d'un texte avec symboles ou accents

Post by mario52 »

bonjour

File "/usr/lib/freecad/Mod/Draft/Draft.py", line 889, in makeText
textbuffer.append(l.decode("utf8").encode('latin1'))

chez moi à cet endroit il y a

Code: Select all

textbuffer.append(l.encode('latin1'))
si vous voulez essayer mon Draft.y vous pouvez le télécharger dans cette discussion ici (il est zippé) et renommez votre original pour le récupérer
j'ai ajouté en début de la macro (deuxième position)

Code: Select all

from __future__ import unicode_literals
je tape dans la console

Code: Select all

>>> Draft.makeText([u"AAééèèBBààCC"],point=FreeCAD.Vector(0.0,0.0,0.0))
et j'obtiens :
Draft_utf.png
Draft_utf.png (740 Bytes) Viewed 2342 times
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\FreeCAD 0.14\Mod\Draft\Draft.py", line 894, in makeText
if not screen: obj.ViewObject.DisplayMode="World"
Exception: FreeCAD exception thrown (type must be int or str, not unicode)

>>>
Vue rapport
Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
Unhandled Base::Exception caught in GUIApplication::notify.
The error message is: 'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)
Exception (Tue Sep 30 19:48:54 2014): type must be int or str, not unicode


hi shoogen

Code: Select all

>>> import Draft
>>> Draft.makeText(["é".decode('utf-8'),"A","B","C","à".decode('utf-8')])
Draft_utf_2.png
Draft_utf_2.png (825 Bytes) Viewed 2342 times
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\FreeCAD 0.14\Mod\Draft\Draft.py", line 894, in makeText
if not screen: obj.ViewObject.DisplayMode="World"
Exception: FreeCAD exception thrown (type must be int or str, not unicode)

and View report :
Exception (Tue Sep 30 19:46:52 2014): type must be int or str, not unicode
________________________________________________________

Code: Select all

>>> Draft.makeText(["é","A","B","C","à"])
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\FreeCAD 0.14\Mod\Draft\Draft.py", line 890, in makeText
textbuffer.append(l.encode('latin1'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

________________________________________________________

Code: Select all

Draft.makeText([u"\xe9","A","B","C",u"\xe0"])
Draft_utf_2.png
Draft_utf_2.png (825 Bytes) Viewed 2342 times
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\FreeCAD 0.14\Mod\Draft\Draft.py", line 894, in makeText
if not screen: obj.ViewObject.DisplayMode="World"
Exception: FreeCAD exception thrown (type must be int or str, not unicode)

and View report
Exception (Tue Sep 30 20:13:56 2014): type must be int or str, not unicode
le test est complet !
mario
Maybe you need a special feature, go into Macros_recipes and Code_snippets, Topological_data_scripting.
My macros on Gist.github here complete macros Wiki and forum.
Post Reply