Description |
---|
This macro makes use of the Draft ShapeString tool to create a text line placed in different circular orientations, including circumferential and helical (in the fashion of a Trajan Column). It can also be used to create a clock face with Arabic numerals 1, 2, 3, etc., or Roman numerals I, II, III, etc. Macro version: 0.22e Last modified: 2024/07/11 FreeCAD version: 0.19 and more Download: ToolBar Icon Author: Mario52 |
Author |
Mario52 |
Download |
ToolBar Icon |
Links |
Macros recipes How to install macros How to customize toolbars |
Macro Version |
0.22e |
Date last modified |
2024/07/11 |
FreeCAD Version(s) |
0.19 and more |
Default shortcut |
None |
See also |
None |
This macro makes use of the Draft ShapeString tool to create a text line placed in different circular orientations, including circumferential and helical in the fashion of a Trajan's Column. It can also be used to create a clock face with Arabic numerals 1, 2, 3, etc., or Roman numerals I, II, III, etc. This latter usage was inspired by the Forum thread Macro to Create Clock Face by FC community member, 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/b80bc84eb1f39084a20564cf02c48764906fd6b8/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/b80bc84eb1f39084a20564cf02c48764906fd6b8/Macro_FCCircularText.FCMacro")
Example of the macro displaying text in a 360 degree orientation
Launch the macro folder FcString for created characters and a file FcClock for created clocks.
All the characters are and remain independent. When creating extrusions nothing is deleted. If Compound is created with Run Comp it is copied out of the folder.
The options are shaded by default and are active in all functions if they are checked :
Except for one Clock Service Placement box Z is activated and moves the text in the direction Z to place the text on the support surface.
Overview
After the first use, you must modify the following parameters:
User parameter:BaseApp/Preferences/Macros/FCMmacros/FCCircularText
switchModeTextList
switchFontComBox
setSystemFonts
seTtextAlignement
setFontByDefault
switchResetFALSE
Example
false
false
false
true
false
false
true
false
false
true
true
false
Configuring characters in FCCircularText
Your choice:
Outdoor
Indoor
Helix
Clock
Mode Stand Outdoor The text will be written up.
Mode Flat Outdoor The text will be placed flat.
Mode Flat Indoor The text will be placed flat.
Mode Stand Indoor The text will stand registered (same as clock).
This section allows you to configure the overall behavior of characters in all the choices available but with some variation. If the command is not used in the option chosen, it will be grayed out.
Default mode. The text is written on the outside of the circumference of the circle.
Outdoor
The text is written on the inner side of the circumference of the circle
Indoor
The text is entered on the outer circumference of a helix.
Helix
The figures are part of a circle with Arabic numerals or Romans.
Clock
Axial
Redress
The title section change and display the length of the wire selected.
If you select one wire, arc, circle, line and edge the section Path is coloured in green and the unused command coloured in red
the last Radio Button used is saved in the parameter of FreeCAD
Certain parameter are available in the parameters of FreeCAD see: Menu → Tools → Edit parameters...
switchModeTextList
:
false
normal text mode (and black) turns off switchFontComBoxtrue
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)seTtextAlignement
: 0 = AlignLeft (default) 1 = AlignCenter 2 = AlignRightsetFontByDefault
: 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 versionLaunch the macro folder FcString for created characters and a file FcClock for created clocks.
The button icon:
(See Customize_Toolbars for more)
Macro_Circular_Text.FCMacro
or download the script :
- on github Macro_FCCircularText.FCMacro
- at the forum Extrude from curved surface of cylinder
Text beginning at 180 degrees (Begin angle) end at 360 degrees (End angle) external curve.
Text set in an inner curve.
Text circular on internal and external curve.
Circular text on a flat onbjet.
Configuration Superior.(click to elarge)
Configuration Inferior.(click to elarge)
External curve.
Internal curve.
Internal curve extrusion material designated and subtraction.
External curve.
Internal curve with subtraction.
Extrusion on a cone with Sp. Inclination 45° axis Z.
Ring Internal curve with subtraction.
Pivot character 0°, 90°, ....
Create your ellipse hers 100x50.
Exrtude it 50 mm.
Discretize the perimeter and create points with the macro Work Features.
Tab Point > Point 2/3 > Points=Cut (Wire)
Create the circle to 3 points with the macro Work Features.
Tab Circle Circle=(3 Points)
Create point center circle with the macro Work Features.
Tab Point > Point 1/3 > Circle(s) center.
Create the benchmark lines and configure FCCircularText.
Create the text with Run Comp.
Delete the circle, points and lines.
Ellipses.
Mode relief:
Select the rectangle , the ellipse and make compound
Activate the Part module, then Menu Part > Make compound.
Extrude the compound of Solid.
Select Shape (text) , the compound and Cut.
The text is cut in the shape of the ellipse.
Select the Ellipse extruded , the Cut (text) and fuse.
Text on BoundBox Base (normal)
Text on BoundBox Center character
Text on BoundBox Top character
Text on selected line:
1: Orthogonal
2: Tangent
Exemple use (Curved text on a flat surface?)
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.
Character overlap issue and the workaround
(not fully developed)
Planned:
Writing on a path circular text of position object selected.
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)
FreeCAD.ActiveDocument.openTransaction("FCCTc")
for Undo/Redo systemver 16d 2020/09/15 : see the MasterCATZ commented Sep 14, 2020 message
delette 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 ############################################################################################################
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)
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
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)
supp.MakeFace = True
App.activeDocument().recompute()
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 /_ # 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
##################################################################################################
(2537)
To comment on the Extrude from curved surface of cylinder