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

setSystemFonts

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.

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.

Clock

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

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 Radio Button used is saved in the parameter 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 :

Example













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 is available using the Rotate-To-Point Macro.



(not fully developed)

Planned:

Writing on a path circular text of position object selected.

Change log

  • ver 0.22f 2025/09/25 : return to PySide , adding info for use 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 Delette 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