Macro FCCircularText/es

Macro FCCircularText

Description
Esta macro hace uso de la herramienta Draft ShapeString para crear una línea de texto colocada en diferentes orientaciones circulares, incluyendo circunferenciales y helicoidales (en forma de una columna trajana). También se pude utilizar para crear una cara de reloj con números arábigos "1, 2, 3", etc., o números romanos "I, II, III", etc.

Macro version: 0.22e
Last modified: 11/07/2024
FreeCAD version: 0.19 y más
Download: Icono de la barra de herramientas
Author: Mario52
Author
Mario52
Download
Icono de la barra de herramientas
Links
Macro Version
0.22e
Date last modified
11/07/2024
FreeCAD Version(s)
0.19 y más
Default shortcut
None
See also
None

Descripción

Esta macro hace uso de la herramienta Draft ShapeString para crear una línea de texto colocada en diferentes orientaciones circulares, incluyendo circunferenciales y helicoidales en forma de Trajan's Column. También se puede utilizar para crear una cara de reloj con números arábigos "1, 2, 3", etc., o números romanos "I, II, III", etc. Este último uso se inspiró en el hilo del foro Macro to Create Clock Face por el miembro de la comunidad FC, cblt2l.

Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro


# This code is copied instead of the original macro code
# to guide the user to the online download page.
# Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki
# or if the RAW code URL is somewhere else in the wiki.

from PySide import QtGui, QtCore

diag = QtGui.QMessageBox(QtGui.QMessageBox.Information,
    "Information",
    "This macro must be downloaded from this link\n"
    "\n"
    "https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/3a7b030af1395ebe515b7ac7ff399636df55fbc8/Macro_FCCircularText.FCMacro" + "\n"
    "\n"
    "Quit this window to access the download page")

diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
diag.setWindowModality(QtCore.Qt.ApplicationModal)
diag.exec_()

import webbrowser 
webbrowser.open("https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/3a7b030af1395ebe515b7ac7ff399636df55fbc8/Macro_FCCircularText.FCMacro")
<class="rawcodeurl"><a href="https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/3a7b030af1395ebe515b7ac7ff399636df55fbc8/Macro_FCCircularText.FCMacro">raw code</a>


360 degree orientation

Ejemplo de la macro que muestra texto en una orientación de 360 ​​grados

Uso

Inicie la carpeta de macros FcString para los personajes creados y un archivo FcClock para los relojes creados.

Todos los caracteres son y permanecen independientes. Al crear extrusiones, no se elimina nada. Si se crea un compuesto con Run Comp, se copia fuera de la carpeta.

Las opciones están sombreadas de forma predeterminada y están activas en todas las funciones si están marcadas :

Excepto por una casilla de Clock Service Placement Z, es activado y mueve el texto en la dirección Z para colocar el texto en la superficie de soporte.

Notas

Interfaz

Descripción general

GUI

Primera sección

Opciones disponibles

Después del primer uso, deberá modificar los siguientes parámetros:

Parámetro de usuario:BaseApp/Preferences/Macros/FCMmacros/FCCircularText

switchModeTextList

switchFontComBox

  • 0 = (y switchModeTextList= 1) modo de texto (en color) en la lista ComboBox, más rápido
  • 1 = (y switchModeTextList= 1) ¡fontFamily más lento pero el ComboBoxst más atractivo!

setSystemFonts

  • 0 = matplotlib.font_manager.findSystemFonts("C:/", "ttf")
  • ¡Aplica todas las fuentes (en todas las carpetas y subcarpetas del directorio de destino)!
  • 1 = fontman.findSystemFonts(self.pathFont)
  • Aplica todas las fuentes del directorio (y en todas las subcarpetas)

seTtextAlignment

setFontByDefault

switchResetFALSE

Ejemplo

  1. switchModeTextList= false
  2. switchFontComBox = false
  3. setSystemFonts = false
  4. seTtextAlignement = 0

  1. switchModeTextList= true
  2. switchFontComBox = false
  3. setSystemFonts = false
  4. seTtextAlignement = 0

  1. switchModeTextList= true
  2. switchFontComBox = false
  3. setSystemFonts = false
  4. seTtextAlignement = 1 (0=Left, 1=Centered, 2=Right)

  1. switchModeTextList= true
  2. switchFontComBox = true
  3. setSystemFonts = false
  4. seTtextAlignement = 1

Segunda Sección

Configuración de caracteres en FCCircularText

Primera zona

Tu elección:

Segunda área

Esta sección permite configurar el comportamiento general de los personajes en todas las opciones disponibles, pero con algunas variaciones. Si el comando no se usa en la opción elegida, aparecerá en gris.

  • 10.0 mm Radius of circle: Radio del círculo. (Predeterminado: 10)
  • 2.0 mm Size character: Altura del carácter. (Predeterminado: 2)
  • 0 grados Begin angle: Ángulo inicial del primer carácter del círculo. (Predeterminado: 0°)
  • 360 grados End angle: Ángulo final del último carácter del texto. (Predeterminado: 360)
  • 10.0 grados Correction angle: Ángulo de corrección del carácter para hacerlo tangente al círculo. (Predeterminado: 10°)
  • 0.15 mm Correction radius: Se corrigió el radio de los caracteres circulares (opcional). (Predeterminado: 0.15)
  • Extrude Char: Caracteres de extrusión de casillas de verificación. (Predeterminado: Inactivo)
  • Placement: Ubicación del texto en la vista 3D. (Predeterminado: Inactivo)
  • Sp. inclination: Inclinación de los caracteres en los tres ejes X, Y y Z (ejemplo para cubrir un cono). (Predeterminado: Inactivo)
Outdoor

Modo predeterminado. El texto esta escrito en el exterior de la circunferencia del círculo.

Indoor

El texto está escrito en el lado interior de la circunferencia del círculo.

Helix

El texto esta introducido en la circunferencia exterior de una hélice.

  • El área de la hélice está oculta por defecto. La ventana es visible si el botón radio Helix esta marcada
  • Todas las opciones de configuración de caracteres están disponibles.
  • Step of helix lo que corresponde al paso de los giros de la hélice y muestra 2 (altura del carácter) por defecto.
  • Char. per turn se activa y muestra 10 por defecto, lo que corresponde a 10 caracteres por giro helicoidal.
  • Si Step of helix (paso de hélice) es cero, las casillas de giro Base Helix y End Helix son activadas.
  • Base Helix proporciona la base para iniciar la hélice (incluso en la posición Z). Si 'Placement Z' es diferente de cero, el punto de inicio se suma a la Posición Z
  • End Helix El paso final de la hélice se calculará en relación con la altura y el número de caracteres por vuelta helicoidal.
Clock

Las figuras forman parte de un círculo con números arábigos o romanos.

  • Por defecto, la sección está oculta. La ventana es visible si el botón radio Clock está marcado.
  • Cuando la selección es hecha, las siguientes funciones se oscurecen y se pueden utilizar:
    1. Ángulo inicial.
    2. Ángulo final.
    3. Ángulo de corrección.
    4. Radio de corrección.
    5. El botón Mode Stand o Mode Flat.
  • El área Clock está activada.
  • Si Support number face es igual a cero, no hay soporte.
  • Modo Roman: La escritura se realizará en cifras romanas I II III IIII V VI VII VIII IX X XI XII
  • Axial: Las cifras se escribirán axialmente.

Sección de ruta

La sección del título cambia y muestra la longitud del cable seleccionado.

Si selecciona un cable, arco, círculo, línea y borde, la sección Ruta se colorea en verde y el comando no utilizado se colorea en rojo

  1. Orthogonal el carácter es ortogonal a la vista
  2. Tangent el carácter es tangente a la trayectoria del punto en el cable
  1. BB Base the point base of the character is to point path on the wire
  2. BB Center the bounBox center of the character is to point path on the wire
  3. BB Top the top boundBox of the character is to point path on the wire

the last used Radio Button is saved in the parameters of FreeCAD

Command section

  • Exit: Leaves the macro.
  • Reset: Reset all values and displays the number of characters displayed in the window.
  • Run Comp: Launches the macro and creates a Compound object of all characters.
  • Run: Launches the macro.

Parameters available

Certain parameter are available in the parameters of FreeCAD, see: Menu → Tools → Edit Parameters

  • User parameter: BaseApp/Preferences/Macros/FCMmacros/FCCircularText
    • switchModeTextList :
      • false normal text mode (and black) turns off switchFontComBox
      • true allow switchFontComBox 1 (default)
    • switchFontComBox :
      • false (and switchModeTextList = 1) text mode (in color) in Faster ComboBox list (default)
      • true (and switchModeTextList = 1) font Family in ComboBox list, slower but more beautiful!
    • setSystemFonts :
      • false matplotlib.font_manager.findSystemFonts ("C: /", "ttf") do all fonts (in all folders and subfolders of the HD) time !!
      • true fontman.findSystemFonts (self.pathFont)
        make all the fonts in the directory (and in all the subfolders) (default)
    • seTtextAlignement : 0 = AlignLeft (default) 1 = AlignCenter 2 = AlignRight
    • setFontByDefault : Font by Default (the last used)
    • switchResetFALSE : false reset (default), true no reset (not recommended) some switches can stay open or close unexpectedly!
    • setPathOrthogonal : true false
    • setPathTangent : true false
    • setPositionBase : true false
    • setPositionCenter : true false
    • setPositionTop : true false
    • switchVersionSearch : true false
    • Version : FCCircularText version

Launch the macro folder FcString for created characters and a file FcClock for created clocks.

Script

The button icon:

- in .PNG

- in .SVG

(See Customize_Toolbars for more)

Script

Macro_Circular_Text.FCMacro

or download the script :

Examples













Example onto Ellipse






Mode relief:





Example section path




Limitations

Note it is possible that an error may occur between versions. Please post the issue on the forum and wait for the updated fix or rollback to a previous version of the macro. Thank you.)

It is possible that two characters may overlap. If this happens, here's a workaround available using the Rotate-To-Point Macro.



(not fully developed)

Planned:

Writing circular text on a path of the selected position object.

Change log

  • ver 0.22f 2025/09/25 : return to PySide, adding info for use of the MONOSPACE font
  • ver 0.22e 2024/07/11 : delete "ss.support = None"
  • ver 0.22d 2024/07/11 : delete "import WebGui" cause error in 0.22xxx FC and replaced by "import webbrowser"
  • ver 0.22c 2023/11/17 : adding restore selection after delete the last object , by TheMarkster , thanks

see Curved text on a flat surface?

sel = Gui.Selection.getCompleteSelection()
#delete objects
#restore previous selection
Gui.Selection.clearSelection()
for s in sel:
    Gui.Selection.addSelection(s.Object,s.SubElementNames)
  • ver 0.22b 2023/11/15 : upgrade correction stylesheet and FreeCAD.activeDocument().recompute(None,True,True)
  • ver 0.21 2022/05/31 : adding button search other path fontmanuelly, and button return font origin of system
  • ver 0.20 2021/04/05 : adding icone in macro, Tab for diminish the heigth of the macro, remove all dimensions of widgets now fully compatible with the stylesheet, revisite the search version for compatibility and other little change.
  • ver 1.19 2021/03/15 : adding button Delete the last object created and the code FreeCAD.ActiveDocument.openTransaction("FCCTc") for Undo/Redo system
    • Adding CheckBox Reset for switched/activated (requested by users) the natural reset after all push button Runand Run comp. This use checkBox is not advised, is you constade one malfunction pusch the Reset button or quit FCCircularText and restart.
  • ver 0.17b 2020/09/28 : correction little bug (pl instead plm in path section) and arrange the window (dimension) Clock, Helix, Path
  • ver 0.17 2020/09/26 : adding create circular text on wire (curve, arc, spline, line ...) selected, mode word

ver 16d 2020/09/15 : see the MasterCATZ commented Sep 14, 2020 message

delete the FC 0.18 test section:

#### Test FreeCAD.Version simple ############################################################################################################
if int(FreeCAD.Version()[1]) < 18:      # Version de FreeCAD
    FreeCAD.Console.PrintMessage("This version " + __Title__ + " rmu  work with the FreeCAD 0.18 or higher." + "\n\n")
    FreeCAD.Console.PrintMessage("For the precedent version see the page " + "\n\n")
    FreeCAD.Console.PrintMessage("https://gist.githubusercontent.com/mario52a/a25e802498bae6959335/raw/db47f78f2b20a35137ac213b8d1a62d30f525dcb/Macro_FCCircularText.FCMacro" + "\n\n")
#### Test FreeCAD.Version simple ############################################################################################################
  • ver 0.16 2020/06/07 : little bug in Linux with the path, impost PolicePath = "/usr/share/fonts/" (stay on path /xx/xx/xx/xx/xx/xx/ on entry)
  • ver 0.15 2020/06/01 : For PySide2 Qt5 adding matplotlib fonts in comboView, config on parameter
  • ver 0.14-4 2020/04/25 : corrected for "DisplayMode = u"Flat Lines" :
  • ver 0.14-3 2020/04/25 : adapted for :
OS: Windows 10 (10.0)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.20655 (Git)
Build type: Release
Branch: master
Hash: e8e67e8c5ebbc9f9ed9ea67aba5b891969595ece
Python version: 3.6.8
Qt version: 5.12.1
Coin version: 4.0.0a
OCC version: 7.3.0
       carDegrees = b' \xc2\xb0'.decode("utf-8")    #thanks wmayer	https://forum.freecad.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 for Python 3.6.6 and Qt 5.6.2 (cause: unicode() )
latest testing:

#OS: Windows 10
#Word size of OS: 64-bit
#Word size of FreeCAD: 64-bit
#Version: 0.19.16523 (Git)
#Build type: Release
#Branch: master
#Hash: 9b3ec233c8b21e0df66fada487cd10f471d60cac
#Python version: 3.6.6
#Qt version: 5.6.2
#Coin version: 4.0.0a
#OCC version: 7.3.0
  • ver 0.13 30/01/2018 add feature Pivot for rotate the character on himself
  • ver 0.13 09/08/2016 replace the button "New font" to "fontComboBox" cause , with Windows 10 the window Font stay empty the files are hidden
  • ver 0.12 03/07/2016 optimize the code for accept the decimal number in determination angle

replace the line

for angleTr in range(debut,rotation,((rotation-debut)/nombre)):

to

for angleTrFloat in range((debut*10000),(rotation*10000),int((round(((float(rotation)-float(debut))/float(nombre)),4)*10000)) ):    # pour 4 decimales
                angleTr = (float(angleTrFloat)/10000)
  • ver 0.10 17/05/2015 adding lines 1365, 1366 only created more clock face ?? ()
supp.MakeFace = True
            App.activeDocument().recompute()
  • ver 0.9 11/05/2015 thank you NormandC for testing

replace

self.DS_InclinaisonX.setSuffix(" X°")
        self.DS_InclinaisonY.setSuffix(" Y°")
        self.DS_InclinaisonZ.setSuffix(" Z°")

to

self.DS_InclinaisonX.setSuffix(unicode(" X°"))
        self.DS_InclinaisonY.setSuffix(unicode(" Y°"))
        self.DS_InclinaisonZ.setSuffix(unicode(" Z°"))
<div lang="en" dir="ltr" class="mw-content-ltr">
# ver 0.8 10/05/2015 /_ # testing with OS :
</div>
##################################################################################################
# OS: Ubuntu 14.04.1 LTS                          # OS: Ubuntu 14.04.2 LTS
# Platform: 32-bit                                # Word size of OS: 32-bit
# Version: 0.14.2935 (Git)                        # Word size of FreeCAD: 32-bit
# Branch: master                                  # Version: 0.16.4928 (Git)
# Hash: eab159b6ee675012bf79de838c206a311e911d85  # Branch: master
# Python version: 2.7.6                           # Hash: d8f63bcfd10301f3d1e141cced4370f0782238d0
# Qt version: 4.8.6                               # Python version: 2.7.6
# Coin version: 4.0.0a                            # Qt version: 4.8.6
# SoQt version: 1.6.0a                            # Coin version: 4.0.0a
# OCC version: 6.7.0                              # OCC version: 6.8.0.oce-0.17
##################################################################################################
# OS: Windows Vista                               # OS: Windows Vista
# Word size of OS: 32-bit                         # Word size of OS: 32-bit
# Word size of FreeCAD: 32-bit                    # Word size of FreeCAD: 32-bit
# Version: 0.15.4527 (Git)                        # Version: 0.15.4671 (Git)
# Branch: master                                  # Branch: releases/FreeCAD-0-15
# Hash: 0da2e4c45a9a259c26abd54c2a35393e1c15696f  # Hash: 244b3aef360841646cbfe80a1b225c8b39c8380c
# Python version: 2.7.8                           # Python version: 2.7.8
# Qt version: 4.8.6                               # Qt version: 4.8.6
# Coin version: 4.0.0a                            # Coin version: 4.0.0a
# OCC version: 6.7.1                              # OCC version: 6.8.0.oce-0.17
##################################################################################################
  • 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)

Links