Macro Testo Circolare

From FreeCAD Documentation
This page is a translated version of the page Macro FCCircularText and the translation is 100% complete.
Other languages:

Testo Circolare

Descrizione
Questa macro utilizza lo strumento Draft ShapeString per creare una riga di testo posizionata con diversi orientamenti circolari, inclusi circonferenza ed elicoidale (alla maniera di una colonna Traiana). Può anche essere usata per creare un quadrante di orologio con numeri arabi 1, 2, 3, ecc., o numeri romani I, II, III, ecc.

Versione macro: 0.22c
Ultima modifica: 2023/11/17
Versione FreeCAD: 0.19 è più
Download: ToolBar Icon
Autore: Mario52
Autore
Mario52
Download
ToolBar Icon
Link
Versione macro
0.22c
Data ultima modifica
2023/11/17
Versioni di FreeCAD
0.19 è più
Scorciatoia
Nessuna
Vedere anche
Nessuno

Descrizione

Questa macro utilizza lo strumento Draft Forma da testo per creare una riga di testo posizionata con diversi orientamenti circolari, inclusi circonferenza ed elicoidale alla maniera di una Colonna di Traiano. Può anche essere usata per creare un quadrante di orologio con numeri arabi 1, 2, 3, ecc., o numeri romani I, II, III, ecc. Quest'ultimo utilizzo è stato ispirato dalla discussione del Forum Macro per creare il quadrante dell'orologio del membro della comunità 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/7ab8a1e9dd7f924a62ecef83ec1d2ad8723e37d6/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/7ab8a1e9dd7f924a62ecef83ec1d2ad8723e37d6/Macro_FCCircularText.FCMacro")


texte 360 degrees

Esempio di macro che mostra il testo con un orientamento a 360 gradi

Utilizzo

Usare la macro FcString per creare dei caratteri e il file FcClock per creare degli orologi.

Tutti i caratteri sono e rimangono indipendenti. Quando si creano le estrusioni non viene eliminato nulla. Se viene creato un Compound (oggetto Composto) con Run Comp esso viene copiato in una nuova cartella.

Di default le opzioni sono disattivate e si attivano quando si seleziona una delle funzioni:

  • Extrude Char.
  • Placement.
  • SP. inclination.

Fatta eccezione per la casella Z di Placement per Clock che è attiva e che sposta il testo lungo l'asse Z per consentire posizionare il testo sulla superficie di appoggio.

Nota

Le opzioni che sono facoltative per la funzione selezionata sono inattive e quindi non utilizzabili.

Interfaccia

Panoramica

GUI

Prima sezione

  • La finestra di editazione del testo che consente di inserire il testo da visualizzare (cliccando su Reset, nella finestra del titolo si può vedere quanti caratteri contiene la stringa di input)
  • Il pulsante Reverse serve per invertire il testo
  • Word selezionata, questa opzione considera il testo come parola, il testo viene tagliato nello spazio e scrive il testo parola per parola (invece carattere per carattere nell'uso normale)
  • Il Help visualizza la pagina wiki nel browser FreeCAD
  • LineEdit : visualizza il percorso e il nome del font del file
  • Other per cercare altre font in altri directory
  • ComboView per il font scelto
  • Origin ritorna al l'origine sistema font ex: "C:/Windows/Fonts/"
    • ARIAL.TTF è il font di default

Opzioni disponibili

Dopo il primo utilizzo, è possibile modificare i parametri vedere:

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

switchModeTextList

  • 0 = modalità testo normale (e nero) chiude switchFontComBox
  • 1 = consente switchFontComBox 1

switchFontComBox

  • 0 = (e switchModeTextList = 1) modalità testo (a colori) nell'elenco ComboBox, più veloce
  • 1 = (e switchModeTextList = 1) font ComboBoxst più lento ma più bello!

setSystemFonts

  • 0 = matplotlib.font_manager.findSystemFonts ("C:/", "ttf")
  • fare tutti i caratteri (in tutte le cartelle e sottocartelle del DD) tempo !!
  • 1 = fontman.findSystemFonts (self.pathFont)
  • esegue tutti i caratteri nella directory (e in tutte le sottocartelle)

seTtextAlignement

  • 0 = AlignLeft (default)
  • 1 = AlignCenter
  • 2 = AlignRight

setFontByDefault

  • Font impostazione predefinita (ultimo utilizzato)

switchResetFALSE

  • 0 = reset (predefinito)
  • 1 = nessun reset (sconsigliato) alcuni switch possono rimanere aperti o chiusi inaspettatamente!

Esempio

  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

Seconda sezione

Configurare i caratteri in FCCircularText

Prima zona

Scegliere:

  • Mode Stand o Mode Flat : Il testo può essere messo in piedi o coricato e le opzioni Outdoor e Indoor indicano se è rivolto verso l'esterno o verso l'interno .

Seconda zona

Questa sezione permette di configurare il comportamento complessivo dei caratteri in tutte le scelte disponibili, ma con qualche variazione. I comandi non utilizzabili con l'opzione scelta sono visualizzati in grigio.

  • 10.0 mm Radius of circle : Raggio del cerchio. (Default 10)
  • 2.0 mm Size character  : Altezza del carattere. (Default 2)
  • 0 deg Begin angle  : Angolo a cui posizionare il primo carattere. (Default 0 °)
  • 360 deg End angle  : Angolo a cui posizionare l'ultimo carattere. (Default 360)
  • 10.0 deg Correction angle : Angolo di correzione per rendere il carattere tangente al cerchio. (Default 10 °)
  • 0.15 mm Correction radius: Corregge il raggio del cerchio dei caratteri (optional). (Default 0.15)
  • Extrude Char : Estrusione dei caratteri. (di default è disattivato)
  • Placement : Posizione del testo nella vista 3D. (di default è disattivato)
  • Sp. inclination : Inclinazione del testo rispetto agli assi X, Y e Z (ad esempio per scrivere su un cono). (di default è disattivato)
Outdoor

Modo di default. Il testo viene scritto all'esterno della circonferenza del cerchio.

Indoor

Il testo viene scritto all'interno della circonferenza del cerchio

Helix

Il testo viene inserito all'esterno di un'elica.

  • L'area dell'elica è nascosto e solo visibile se il Helix e verificato.
  • Tutte le opzioni di configurazione dei caratteri sono disponibili.
  • Step of helix passo dell'elica
  • Char. per turn numero di caratteri per ogni spira dell'elica.
  • Se Step of helix (passo dell'elica) è zero, i campi Base Helix e End Helix sono attivi.
  • Base Helix fornisce la base per iniziare l'elica (anche Placement Z). Se 'Placement Z' è diverso da zero, il punto di partenza viene aggiunto a Placement Z.
  • End Helix Fine di passo dell'elica che è calcolato rispetto all'altezza e al numero di caratteri per spira.
Clock

Le figure sono parte di un cerchio con numeri arabi o romani.

  • Di default, è nascosto e solo visibile se il Clock e verificato.
  • Quando si seleziona l'orologio, diventano utilizzabili le seguenti funzioni:
    1. Angolo iniziale.
    2. Angolo finale.
    3. Angolo di correzione.
    4. Correzione del raggio.
    5. I pulsanti Mode Stand o Mode Flat.
  • L'area Clock è attiva.
  • Radius of support : Se viene dato un valore, viene creato un supporto (default 0).
  • Se Support number face è diverso da zero viene creato un supporto. Se Extrude support = zero viene creata una faccia.
    • 1 = Viene creato un cerchio. Appare un cerchio.
    • 2 = Viene creato un rettangolo. Lunghezza = (Radius of media * 1.5) width = Radius of support. Appare un rettangolo.
    • 3 = Viene creato un triangolo circoscritto. Appare un triangolo.
    • 4 = Viene creato un quadrato, raggio del supporto. Appare un quadrato.
    • 5 = Viene creato un poligono circoscritto con il numero di facce indicate. Appare un poligono.
  • Extrude support viene attivato e si può fornire una dimensione di estrusione.

  • Se Support number face è uguale a zero non c'è il supporto.
  • Mode Roman : La scrittura è in cifre romane I II III IIII V VI VII VIII IX X XI XII
  • Axial  : I dati sono scritti assialmente.

Path section

La sezione del titolo cambia e visualizza la lunghezza del filo selezionato.

Se selezioni un filo, un arco, un cerchio, una linea e un bordo, il percorso della sezione è colorato in green e il comando inutilizzato è colorato in red

  1. Orthogonal il carattere è ortogonale alla vista
  2. Tangent il carattere è tangente al percorso del punto sul filo
  1. BB Base il punto base del carattere deve puntare il percorso sul filo
  2. BB Center il centro del bounBox del personaggio deve indicare il percorso sul filo
  3. BB Top il boundBox superiore del carattere deve indicare il percorso sul filo

l'ultimo pulsante di opzione utilizzato viene salvato nel parametro di FreeCAD

Sezione comandi

  • Exit  : Esce dalla macro macro.
  • Reset  : Ripristina tutti i valori e visualizza il numero di caratteri visualizzati nella finestra.
  • Run Comp : Lancia la macro e crea un oggetto Composto da tutti i caratteri.
  • Run  : Lancia la macro

Parametri disponibili

Alcuni parametri sono disponibili nei parametri di FreeCAD vedere:Menu → Tools → Edit parameters...

  • User parameter: BaseApp/Preferences/Macros/FCMmacros/FCCircularText
    • switchModeTextList :
      • false normale modalità di testo (e nero) si trasforma off switchFontComBox
      • true permettere switchFontComBox 1 (default)
    • switchFontComBox :
      • false (é switchModeTextList = 1) modalità testo (a colori) nell'elenco ComboBox più veloce (predefinito)
      • true (and switchModeTextList = 1) Famiglia di caratteri nell'elenco ComboBox più lento ma più bello!
    • setSystemFonts :
      • false matplotlib.font_manager.findSystemFonts ("C: /", "ttf") fare tutti i caratteri (in tutte le cartelle e sottocartelle dell'HD) tempo !!
      • true fontman.findSystemFonts (self.pathFont)
        crea tutti i caratteri nella directory (e in tutte le sottocartelle) (predefinito)
    • seTtextAlignement : 0 = AlignLeft (default) 1 = AlignCenter 2 = AlignRight
    • setFontByDefault : Carattere predefinito (l'ultimo utilizzato)
    • switchResetFALSE : false reset (default), true no reset (non consigliato) alcuni interruttori possono rimanere aperti o chiudersi inaspettatamente!
    • setPathOrthogonal : true false
    • setPathTangent : true false
    • setPositionBase : true false
    • setPositionCenter : true false
    • setPositionTop : true false
    • switchVersionSearch : true false
    • Version : FCCircularText versione

Usare la macro FcString per creare dei caratteri e il file FcClock per creare degli orologi.

Script

L'icona per il pulsante:

- in .PNG

- in .SVG

Per maggiori informazioni vedere Personalizzare la barra degli strumenti

Script

Macro_Circular_Text.FCMacro

o tele carica lo script :

- on github Macro_FCCircularText.FCMacro ver 0.21 2022/05/31

- o dal forum Extrude from curved surface of cylinder

Esempio













Esempi su ellisse






Modalità rilievo:





Example section path




Limitazioni

Note (PS: è possibile che si verifichi un errore tra le versioni. Pubblica il problema sul forum e attendi la correzione aggiornata o il rollback a una versione precedente della macro. Grazie)

È possibile che due caratteri si sovrappongano, qui un piccolo rimedio con Macro_Rotate_To_Point


(non totalmente sviluppato)

In progetto:

Scrivere un testo circolare posizionato su un oggetto selezionato

Registro delle modifiche:

  • 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 : vedi MasterCATZ commented Sep 14, 2020 message

Elimina il FC 0.18 test sezione:

#### 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 : corretto con "DisplayMode = u"Flat Lines" :
  • ver 0.14-3 2020/04/25 : adatto per :
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.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 compatibile con 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°"))
  • 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.8 10/05/2015 /_ # testing with OS :
##################################################################################################
# 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)

Link

I commenti nella pagina del forum: Extrude from curved surface of cylinder