Jump to content

Macro Testo Circolare

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

Testo Circolare

Descrizione
Questa macro utilizza lo strumento Draft ShapeString per creare una riga di testo posizionata con diversi orientamenti circolari, inclusi circonferenza ed elica (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.22e
Ultima modifica: 2024/07/11
Versione FreeCAD: 0.19 è più
Download: ToolBar Icon
Autore: Mario52
Autore
Mario52
Download
ToolBar Icon
Link
Versione macro
0.22e
Data ultima modifica
2024/07/11
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 elica 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/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")

texte 360 degrees

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

Utilizzo

Usare la macro FcString per creare delle stringhe 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 di Placement Z per Clock che è attiva e che sposta il testo lungo l'asse Z per consentire di 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 modifica 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 se selezionata, questa opzione considera il testo come parola, il testo viene tagliato nello spazio e il testo viene scritto parola per parola (invece che carattere per carattere come nell'uso normale)
  • Il pulsante Help visualizza la pagina wiki nel browser FreeCAD
  • LineEdit : mostra il percorso e il nome del file del font
  • Other per cercare altri font in altre cartelle
  • ComboView per il font scelto
  • Origin ritorna alla cartella di origine dei font del sistema es.: "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) fontFamily, ComboBoxst più lento ma più bello!

setSystemFonts

  • 0 = matplotlib.font_manager.findSystemFonts ("C:/", "ttf")
  • fa passare tutti i caratteri (in tutte le cartelle e sottocartelle del DD) richiede tempo!
  • 1 = fontman.findSystemFonts (self.pathFont)
  • fa passare tutti i caratteri nella cartella (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. Se il comando non viene utilizzato nell'opzione scelta, sarà visualizzato 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 iniziale del primo carattere nel cerchio. (Predefinito 0°)
  • 360 deg End angle  : Angolo finale dell'ultimo carattere del testo. (Predefinito 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 è nascosta per impostazione predefinita. La finestra è visibile se il pulsante di opzione Helix è selezionato.
  • Sono disponibili tutte le seguenti opzioni di configurazione dei caratteri.
  • Step of helix, che corrisponde al passo dell'elica, visualizza 2 (altezza del carattere) per impostazione predefinita.
  • Char. per turn si attiva e visualizza 10 per impostazione predefinita, che corrisponde a 10 caratteri per giro d'elica.
  • Se Step of helix (passo dell'elica) è zero, le caselle di selezione Base Helix e End Helix sono attivate.
  • Base Helix fornisce la base per l'inizio dell'elica (posizionamento pari Z). Se 'Placement Z' è diverso da zero, il punto di partenza viene aggiunto al posizionamento Z.
  • End Helix Il passo finale dell'elica verrà calcolato in base all'altezza e al numero di caratteri per giro elicoidale.
Clock

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

  • Di default, è nascosto e solo visibile se il Clock è selezionato.
  • 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. Il pulsante 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 della linea selezionata.

Se si seleziona una polilinea, un arco, un cerchio, una linea o un bordo, la sezione Path è colorata in verde e il comando non utilizzato è colorato in rosso

  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 sulla linea

l'ultimo pulsante di scelta utilizzato viene salvato nei parametri di FreeCAD

Sezione comandi

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

Parametri disponibili

Alcuni parametri sono disponibili nei parametri di FreeCAD, vedere: Menu → Strumenti → Modifica parametri

  • Parametri utente: BaseApp/Preferences/Macros/FCMmacros/FCCircularText
    • switchModeTextList:
      • false la modalità testo normale (e nera) disattiva switchFontComBox
      • true consente switchFontComBox 1 (predefinito)
    • switchFontComBox:
      • false (e switchModeTextList = 1) modalità testo (a colori) nell'elenco Faster ComboBox (predefinito)
      • true (e switchModeTextList = 1) famiglia di font nell'elenco ComboBox, più lenta ma più bella!
    • setSystemFonts:
      • false matplotlib.font_manager.findSystemFonts ("C: /", "ttf") fa passare tutti i font (in tutte le cartelle e sottocartelle dell'HD) in tempo reale!!
      • true fontman.findSystemFonts (self.pathFont)
        crea tutti i font nella cartella (e in tutte le sottocartelle) (predefinito)
    • seTtextAlignement: 0 = AlignLeft (predefinito) 1 = AlignCenter 2 = AlignRight
    • setFontByDefault: Font predefinito (l'ultimo utilizzato)
    • switchResetFALSE: false ripristina (predefinito), true nessun ripristino (sconsigliato) alcuni switch 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 : versione FCCircularText

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

- o dal forum Extrude from curved surface of cylinder

Esempi













Esempi su ellisse






Modalità rilievo:





Example section path




Limitazioni

Note È possibile che si verifichi un errore tra le versioni. Segnalare il problema sul forum e attendere la correzione aggiornata o eseguire il rollback a una versione precedente della macro. Grazie.)

È possibile che due caratteri si sovrappongano. In tal caso, c'è una soluzione alternativa: utilizzare la Macro Rotate-To-Point.


(non totalmente sviluppato)

In progetto:

Scrittura di testo circolare su un percorso dell'oggetto di posizione selezionato.

Registro delle modifiche:

  • ver 0.22f 2025/09/25 : ritorno a PySide, aggiungendo informazioni per l'uso del font MONOSPACE
  • ver 0.22e 2024/07/11 : eliminato "ss.support = None"
  • ver 0.22d 2024/07/11 : eliminato "import WebGui" causave errore in 0.22xxx FC e rimpiazzato da "import webbrowser"
  • ver 0.22c 2023/11/17 : aggiunto il ripristino della selezione dopo aver eliminato l'ultimo oggetto, di TheMarkster, grazie

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 : correzione dell'aggiornamento stylesheet e FreeCAD.activeDocument().recompute(None,True,True)
  • ver 0.21 2022/05/31 : aggiunto il pulsante cerca altro percorso fontmanuelly e il pulsante restituisce l'origine del font del sistema
  • ver 0.20 2021/04/05 : aggiunta di icone nella macro, Tab per diminuire l'altezza della macro, rimozione di tutte le dimensioni dei widget ora completamente compatibili con il foglio di stile, revisione della versione di ricerca per compatibilità e altre piccole modifiche.
  • ver 1.19 2021/03/15 : aggiunto il pulsante Delete all'ultimo oggetto creato e il codice FreeCAD.ActiveDocument.openTransaction("FCCTc") per il sistema Annulla/Ripristina
    • Aggiunta della casella di controllo Reset per commutare/attivare (requested by users) il ripristino naturale dopo aver premuto il pulsante Run e Run comp. Questo utilizzo della casella di controllo è sconsigliato, se si riscontra un malfunzionamento, premere il pulsante Reset o uscire da FCCircularText e riavviare.
  • ver 0.17b 2020/09/28 : corretto piccolo bug (pl invece plm nella sezione percorso) e disposta la finestra (dimensione) Clock, Helix, Path
  • ver 0.17 2020/09/26 : aggiunta di testo circolare sulla linea (curva, arco, spline, linea...) selezionata, modalità parola

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

Eliminata la sezione test FC 0.18:

#### 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 : piccolo bug in Linux con il percorso, impostazione PolicePath = "/usr/share/fonts/" (stay on path /xx/xx/xx/xx/xx/xx/ on entry)
  • ver 0.15 2020/06/01 : Per PySide2 Qt5 aggiunti i font matplotlib in comboView, configurazione sul parametro
  • 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.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 rimpiazzato "°" con chr(176)
  • ver 0.14 2019/04/27 compatibile con Python 3.6.6 e Qt 5.6.2 (causa: 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 aggiunta la funzionalità Pivot per ruotare il carattere su se stesso
  • ver 0.13 09/08/2016 sostituito il pulsante "New font" con la "fontComboBox" perché con Windows 10 la finestra Font rimane vuota e i file sono nascosti
  • ver 0.12 03/07/2016 Ottimizzato il codice per accettare il numero decimale nella determinazione dell'angolo.

Sostituita la riga

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

in

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 aggiunte le righe 1365, 1366 si è creato solo più quadrante dell'orologio ?? ()
supp.MakeFace = True
            App.activeDocument().recompute()
  • ver 0.9 11/05/2015 grazie NormandC per il test

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 /_ # test con il sistema operativo:
##################################################################################################
# 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 suppressione 2 str App.Console.PrintMessage(str(PolicePath)+"\n") in App.Console.PrintMessage((PolicePath)+"\n") che ha causato un errore con i caratteri superiori a 128 nel percorso.
  • ver 0.6 23/11/2014 corretto "texte = unicode(self.textEdit.toPlainText())" ora acceta "'éèà@..."
  • ver 0.5 19/11/2014 Gui
  • ver 0.4 10/10/2014 aggiunta variabile "rotation" nel loop (for i in range(0,rotation,(rotation/nombre)): # 360 a parametrer)
  • ver 0.4 27/08/2014 correzione errore del raggio (exterieur=0, debout=1)
  • ver 0.3 26/08/2014 aggiunto testo di creazione della curva piatta
  • ver 0.2 26/08/2014 aggiunto il testo di creazione della curva interna
  • ver 0.1

(2537)

Link

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