Macro FCCircularText/fr

Description
Cette macro utilise l'outil Draft Formes à partir texte pour créer une ligne de texte placée dans différentes orientations circulaires, notamment circonférentielle et hélicoïdale comme par ex Colonne Trajane. Elle peut également être utilisée pour créer un cadran d'horloge avec des chiffres arabes 1, 2, 3... ou des chiffres romains  I, II, III... . Cette dernière utilisation a été inspirée par le fil du Forum Macro pour créer un cadran d'horloge par un membre de la communauté FC, cblt2l.



Utilisation
La création d'un texte crée un dossier "FcString" si vous créez une horloge, un dossier FcClock est créé.

Tous les caractères restent indépendants. Si vous créez une extrusion, rien n'est effacé. Si vous créez un Compount avec le bouton il sera créé dans l'arbre principal de votre projet.

Ces options sont grisées par défaut et activées en cochant le bouton :
 * Extrude Char.
 * Placement.
 * SP. inclination.

Seul la fonction Clock active la fonction Placement dans la direction Z pour déplacer manuellement le texte sur la surface du support (pour construire un relief ou une cavité).

Remarques

 * Cette macro met en grisé (inaccessible) les options qui ne sont pas pertinentes pour une fonction sélectionnée.

Interface
Vue d'ensemble



Première section



 * La fenêtre de TextEdit vous permet de copier le texte a créer (cliquez sur le bouton vous permet de connaître la longueur de la chaîne entrée qui est affichée dans le titre de la fenêtre)
 * Le bouton pour inverser le texte
 * LineEdit: affiche le chemin et le nom de la police du fichier
 * Le bouton affiche la page wiki dans le navigateur FreeCAD
 * ComboView pour la police de choix
 * Par défaut la police ARIAL.TTF est imposée

Options disponibles
Après la première utilisation, vous pouvez modifier certains paramètres :

User parameter:BaseApp/Preferences/Macros/FCMmacros/FCCircularText

switchModeTextList
 * 0 = mode texte normal (et noir) coupe la switchFontComBox
 * 1 = permet de passer à la SwitchFontComBox 1

switchFontComBox
 * 0 = (et switchModeTextList= 1) mode texte (en couleur) dans la liste ComboBox, plus rapide
 * 1 = (et switchModeTextList= 1) fontFamily plus lent mais ComboBoxst plus beau!

setSystemFonts
 * 0 = matplotlib.font_manager.findSystemFonts("C:/", "ttf")
 * faire toutes les polices (dans tous les dossiers et sous-dossiers du DD) à temps !
 * 1 = fontman.findSystemFonts(self.pathFont)
 * faire toutes les polices du répertoire (et de tous les sous-dossiers)

seTtextAlignement
 * 0 = AlignLeft (défaut)
 * 1 = AlignCenter
 * 2 = AlignRight

setFontByDefault
 * Police par défaut

switchResetFALSE
 * 0 = réinitialisation (par défaut)
 * 1 = pas de réinitialisation (non recommandé) certains switches peuvent rester ouverts ou se fermer de manière inattendue!

Exemple


 * 1) switchModeTextList=
 * 2) switchFontComBox =
 * 3) setSystemFonts   =
 * 4) seTtextAlignement = 0


 * 1) switchModeTextList=
 * 2) switchFontComBox =
 * 3) setSystemFonts   =
 * 4) seTtextAlignement = 0


 * 1) switchModeTextList=
 * 2) switchFontComBox =
 * 3) setSystemFonts   =
 * 4) seTtextAlignement = 1 (0=Gauche, 1=Centré, 2=Droite)


 * 1) switchModeTextList=
 * 2) switchFontComBox =
 * 3) setSystemFonts   =
 * 4) seTtextAlignement = 1

Seconde section
Configuration des caractères dans FCCircularText



Première zone
Votre choix :



Seconde section
Cette section vous permet de configurer le comportement global des caractères dans tous les choix disponibles, mais avec quelques variations. Si une fonction n'est pas utilisée de façon standard dans l'option choisie, cette fonction sera grisée.


 * Radius of circle: rayon du cercle. (Défaut 10)
 * Size character: hauteur des caractères. (Défaut 2)
 * Begin angle: angle de départ du premier caractère du sur le cercle. (Default 0°)
 * End angle: angle de fin du dernier caractère du texte. (Défaut 360)
 * Correction angle: angle de correction du texte pour le faire correspondre à la tangente du cercle. (Défaut 10 °)
 * Correction radius: correction du rayon (optionnel en rapport avec "Correction angle"). (Défaut 0.15)
 * : caractères d'extrusion de la case à cocher. (Par défaut inactif)
 * : placement du texte dans la vue 3D. (Par défaut inactif)
 * : inclinaison des caractères sur trois axes X, Y et Z (exemple pour couvrir un tel cône). (Par défaut inactif)

Outdoor
Mode par défaut. Le texte est écrit sur la surface extérieur du cylindre.

Indoor
Le texte est écrit sur la surface interne d'un tube ou courbe.

Helix
Le texte écrit suit le tracé d'une hélice.


 * La section helix est cachée par défaut.


 * Toute les options de configurations des caractères sont actives.
 * Step of helix Step correspond au pas de la spire de l'hélice : 2 (correspond à la hauteur du caractère) par défaut.
 * Char. per turn Nombre de caractères par tour ici 10 par défaut, qui correspond à 10 caractères par tour d'hélice.


 * Si Step of helix (pas de l'hélice) est égal à zero, les Spinboxes Base Helix et End Helix sont activés.
 * Base Helix détermine le début (base) de placement des caractère dans l'élice (direction Placement Z). Si Placement Z est différent de zero, le départ est ajouté au Placement Z déjà déterminé plud haut.
 * End Helix Fin de l'hélice, le pas de l'hélice calculé est proportionnel à la hauteur et au nombre de caractères par tour d'hélice.

Clock
Les chiffres font partie d'un cercle avec des chiffres arabes ou romains.


 * Par défaut la section est cachée.


 * Quand la section est activée, les fonctions suivantes sont dégrisées et disponibles:
 * Begin angle.
 * End angle.
 * Correction angle.
 * Correction radius.
 * Les boutons ou.
 * La section Clock est active.


 * Radius of support : Si une valeur est entrée, un support sera créé (defaut 0).
 * Si Support number face est différent de zéro un support est créé. (Si Extrude support = zéro une face est créée).
 * 1 = Un cercle est créé (le cercle apparaît).
 * 2 = Un rectangle est créé (longueur = (Radius * 2) hauteur = Radius (rayon) du support) (le rectangle apparaît).
 * 3 = Un triangle (circonscrit) est créé (Le triangle apparaît).
 * 4 = Un carré est créé (Radius du support) (Le carré apparaît).
 * 5 = Un polygone avec le nombre de faces affiché est créé (circonscrit) (le polygone apparaît).
 * Si Extrude support est différent de zéro la fonction est activée et une dimension d'extrusion est demandée. La fonction Placement direction Z se dégrise pour permettre de déplacer ou non les caractères sur la surface du support (dans la cas ou l'on désire créer un relief plutôt qu'une cavité).






 * Si Support number face est égal à zéro aucun support n'est créé.
 * : Crée une horloge avec chiffres Romains I II III IIII V VI VII VIII IX X XI XII
 * : Les chiffres sont écrits axialement.

Section des commandes



 * : Quitte la macro.
 * : Reset toutes les valeurs, et affiche le nombre de caractères du texte entré dans la fenêtre de texte est affiché à côté du titre.
 * : Lance la macro et crée un compount de tous les caractères et le place sur la racine de l'arbre dans la Vue combinéé.
 * : Lance la macro.

En lançant la macro un un dossier FcString est créé pour les caractères et un dossier FcClock est créé pour l'horloge. Dans le cas d'un compount, il sera créé en plus sur la racine de l'arbre.

Script
L'icône pour votre barre à outils:

- in .PNG

- in .SVG

(Voir comment Créer une barre d'outils)

Voir le code
Macro_Circular_Text.FCMacro

ou téléchargez le script:

Téléchargez le script sur github Macro_FCCircularText.FCMacro ver 0.15 2020/06/01

ou sur le forum Extrude from curved surface of cylinder

Limitations
il est possible qu'une erreur se produise entre les versions. Veuillez publier le problème sur le forum et attendre le correctif mis à jour ou revenir à une version précédente de la macro. Je vous remercie.

Il est possible que deux caractères se chevauchent. Si cela se produit, voici une solution de contournement disponible à l'aide de la Rotate-To-Point Macro.

(pas totalement développé)

En projet:

Écriture du texte sur l'objet sélectionné

Écriture sur un chemin.

Changelog

 * ver 0.16 2020/06/07 : petit bug dans Linux (cause plusieurs sous répertoires dans fonts) avec le chemin sauvé dans les options la recherche restait uniquement dans le dernier répertoire et n'affichait rien, imposé PolicePath = "/usr/share/fonts/" (stay on path /xx/xx/xx/xx/xx/xx/ on entry) à chaque démarrage et la recherche se fait dans tous les sous répertoires.


 * ver 0.15 2020/06/01 : Pour PySide2 Qt5 ajoutant des polices matplotlib dans comboView, configuration des paramètres.


 * ver 0.14-4 2020/04/25 : correction avec "DisplayMode = u"Flat Lines" :


 * ver 0.14-3 2020/04/25 : adapté pour :


 * ver 0.14-2 2019/07/22 replace chr(176) (donne une erreur <FC 0.18) et remplacé par le code de wmayer, voir Fehler in Version 0.19 pre ??

carDegrees = b' \xc2\xb0'.decode("utf-8")   #thanks wmayer	https://forum.freecadweb.org/viewtopic.php?f=13&t=36380&p=308476#p308357 self.DS_InclinaisonX.setSuffix(carDegrees) self.DS_InclinaisonY.setSuffix(carDegrees) self.DS_InclinaisonZ.setSuffix(carDegrees)


 * ver 0.14-1 2019/06/11 replace "°" to chr(176)


 * ver 0.14 2019/04/27 compatible avec Python 3.6.6 et Qt 5.6.2 (cause: unicode )


 * ver 0.13 30/01/2018 ajout d'une fonction de rotation du caractère sur lui même


 * ver 0.13 09/08/2016 remplacé le bouton "New font" par la fonction "fontComboBox" cause, avec Windows 10 la fenêtre "Font" reste vide les fichiers sont cachés

remplacer la ligne:
 * ver 0.12 03/07/2016 optimisation du code de la boucle pour accepter les décimales pour plus de précision de la répartition des angles.

par


 * ver 0.10 17/05/2015 adding lines 1365, 1366 only created more clock face ??


 * ver 0.9 11/05/2015 merci à NormandC pour les tests.

replace

to


 * ver 0.8 10/05/2015 replace "String=texte[ii2]" to "String=unicode(texte[ii2])" line 1290. cause "TypeError: Property 'FontFile': type must be str or unicode, not QString"


 * ver 0.7 02/02/2015 suppression 2 str App.Console.PrintMessage(str(PolicePath)+"\n") to App.Console.PrintMessage((PolicePath)+"\n") that caused an error with the characters above 128 in the police path.
 * ver 0.6 23/11/2014 corrected "texte = unicode(self.textEdit.toPlainText)" now accept "'éèà@..."
 * ver 0.5 19/11/2014 Gui
 * ver 0.4 10/10/2014 add variable "rotation" in the loop (for i in range(0,rotation,(rotation/nombre)): # 360 a parametrer)
 * ver 0.4 27/08/2014 correction error of de radius (exterieur=0, debout=1)
 * ver 0.3 26/08/2014 add creation text of flat curve
 * ver 0.2 26/08/2014 add creation text of internal curve
 * ver 0.1

(2537)

Liens
La page dédiée sur le forum pour tout commentaires et signalisation d'éventuelles erreurs Extrude from curved surface of cylinder