Makro to wykorzystuje narzędzie Kształt z tekstu do tworzenia linii tekstu rozmieszczonej w różnych układach kołowych, w tym obwodowym oraz spiralnym (na wzór kolumny Trajana). Może być również użyte do utworzenia tarczy zegara z cyframi arabskimi 1, 2, 3, itd. lub rzymskimi I, II, III, itd.
Macro version: 0.24c Last modified: 2026/10/03 FreeCAD version: 0.19 and more Download: Ikona paska narzędzi Autor: Mario52
Makro to wykorzystuje narzędzie Kształt z tekstu środowiska Rysunek Roboczy do tworzenia linii tekstu umieszczonej w różnych orientacjach kołowych, w tym obwodowo i spiralnie na podobieństwo Kolumny Trajana. Można go również użyć do stworzenia tarczy zegara z cyframi arabskimi 1, 2, 3 itd. lub rzymskimi I, II, III itd. To ostatnie zastosowanie zostało zainspirowane przez wątek na forum Macro to Create Clock Face autorstwa członka społeczności 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/39bfcbdad0771e7709effa87f7155b8bbbb0e151/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/39bfcbdad0771e7709effa87f7155b8bbbb0e151/Macro_FCCircularText.FCMacro")
Przykład działania makra przedstawiającego tekst rozmieszczony w układzie 360 stopni
Użycie
Uruchom folder makr FcString dla utworzonych znaków oraz plik FcClock dla utworzonych zegarów.
Wszystkie znaki są i pozostają niezależne. Podczas tworzenia wyciągnięć nic nie jest usuwane. Jeśli tworzony jest obiekt złożony za pomocą Run Comp, jest on kopiowany poza folder.
Opcje są domyślnie wyszarzone i aktywne we wszystkich funkcjach, jeśli są zaznaczone jako PRAWDA:
Wyciągnięcie znaków
Ustawienie pozycji
Pochylenie SP
Z wyjątkiem jednej opcji w usłudze zegara, pole ustawienia pozycji Z jest aktywne i przesuwa tekst w kierunku osi Z, aby umieścić go na powierzchni nośnej.
Uwagi
To makro będzie wyszarzać (dezaktywować) opcje, które nie są istotne dla wybranej funkcji.
Interfejs
Przegląd
Pierwsza sekcja
Okno TextEdit umożliwia skopiowanie tekstu do wyświetlenia (kliknięcie przycisku Reset pozwala poznać numer ciągu wejściowego, który jest wyświetlany w tytule okna)
Przycisk Inverse odwraca kolejność elementów tekstu (np.: FreeCAD.the.best. → .best.the.FreeCAD)
Opcja Word, gdy zaznaczona, traktuje tekst jako wyrazy, tekst jest dzielony po spacjach i wyświetlany słowo po słowie (zamiast znak po znaku w trybie domyślnym)
Przycisk Color koloruje kształt
(97/395) C:/Windows/Fonts/DejaVuSansMono-BoldOblique.ttf: wyświetla pozycję/numer czcionek, ścieżkę i nazwę pliku czcionki
Przycisk Other umożliwia wyszukanie czcionki w innym katalogu, jeśli wszystkie katalogi nie zostały wykryte automatycznie
ComboView do wyboru czcionki
Przycisk Origin przywraca domyślną ścieżkę systemową do czcionek, np. "C:/Windows/Fonts/"
Domyślnie: ARIAL.TTF
Dostępne opcje
Po pierwszym użyciu należy zmodyfikować następujące parametry:
User parameter:BaseApp/Preferences/Macros/FCMmacros/FCCircularText
switchModeTextList
0 = tryb tekstu normalnego (i czarnego); wyłącza przełącznik switchFontComBox
1 = umożliwia użycie switchFontComBox 1
switchFontComBox
0 = (przy switchModeTextList = 1) tryb tekstu (w kolorze) w liście ComboBox, szybszy
Mode Stand lub Mode Flat: tekst zostanie umieszczony stojąco lub płasko (tak jak w zegarze), opcje Na zewnątrz i Wewnątrz są zamienione miejscami.
Tryb stojącyNa zewnątrz — tekst będzie pisany do góry.
Tryb płaskiNa zewnątrz — tekst zostanie umieszczony płasko.
Tryb płaskiWewnątrz — tekst zostanie umieszczony płasko.
Tryb stojącyWewnątrz — tekst będzie ustawiony pionowo (tak jak na tarczy zegara).
Drugi obszar
Ta sekcja pozwala skonfigurować ogólne zachowanie znaków we wszystkich dostępnych opcjach, choć z pewnymi różnicami.
Jeśli polecenie nie jest używane w wybranej opcji, zostanie wyszarzone.
10.0 mm Promień koła : Promień koła. (Domyślnie 10)
2.0 mm Rozmiar znaku : Wysokość znaku. (Domyślnie 2)
0 deg Kąt początkowy : Kąt rozpoczęcia pierwszego znaku na kole. (Domyślnie 0°)
-0,30 mm (Tracking) Śledzenie : Śledzenie między 2 znakami dostępne tylko z trybem Word
Ustawienie pozycji : Ustawienie tekstu w widoku 3D. (Domyślne, Nieaktywne)
Pochylenie znaków : Pochylenie znaków wokół osi X, Y i Z (np. do pokrycia stożka). (Domyślne, Nieaktywne)
Na zewnątrz
Tryb domyślny. Tekst jest pisany na zewnątrz obwodu koła.
Na zewnątrz
Wewnątrz
Tekst jest pisany po wewnętrznej stronie obwodu koła.
Wewnątrz
Helisa
Tekst jest wpisywany na zewnętrznym obwodzie helisy.
Helisa
Obszar helisy jest domyślnie ukryty. Okno staje się widoczne, gdy zaznaczony jest przycisk PRAWDA.
Wszystkie opcje konfiguracji znaków są dostępne.
Krok helisy odpowiada skokowi zwojów helisy i domyślnie ustawiony jest na 2 (wysokość znaku).
Znaki na obrót jest aktywne i domyślnie ustawione na 10, co odpowiada 10 znakom na jeden obrót helisy.
Jeśli Krok helisy (skok helisy) wynosi zero, aktywowane są pola Spinbox Podstawa helisy oraz Koniec helisy.
Podstawa helisy określa punkt startowy helisy (w tym pozycję Z). Jeśli wartość Umiejscowienie Z jest różna od zera, jest ona dodawana do wartości podstawy.
Koniec helisy oznacza koniec skoku helisy; jego wartość jest obliczana na podstawie wysokości oraz liczby znaków na obrót helisy.
Zegar
Figury stanowią część koła z cyframi arabskimi lub rzymskimi.
Zegar
Osiowy
Prostowanie
Domyślnie sekcja jest ukryta. Okno jest widoczne, gdy zaznaczony jest przycisk PRAWDA
Po dokonaniu wyboru następujące funkcje stają się aktywne i możliwe do użycia:
Kąt początkowy.
Kąt końcowy.
Kąt korekcyjny.
Korekcja promienia.
Przycisk Mode Stand lub Mode Flat.
Aktywowany jest obszar Zegar.
Promień podpory : Jeśli zostanie podana wartość, zostanie utworzona podpora (domyślnie 0).
Jeśli Liczba ścian podpory jest różna od zera, podpora zostanie utworzona. (Jeśli Wyciągnięcie podpory = zero, zostanie utworzona tylko ściana).
1 = Tworzony jest okrąg (pojawi się okrąg).
2 = Tworzony jest prostokąt (długość = (Promień media * 1,5), szerokość = Promień podpory) (pojawi się prostokąt).
3 = Tworzony jest trójkąt (opisany) (pojawi się trójkąt).
4 = Tworzony jest kwadrat (Promień podpory) (pojawi się kwadrat).
5 = Tworzony jest wielokąt o liczbie wyświetlanych ścian (opisany) (pojawi się wielokąt).
Opcja Wyciągnięcie podpory jest aktywna i można podać wymiar wyciągnięcia.
Jeśli Liczba ścian podpory jest równa zero, podpory nie ma.
Mode Roman : Zapisy będą w cyfrach rzymskich I II III IIII V VI VII VIII IX X XI XII
Axial : Cyfry zostaną zapisane osiowo.
Sekcja ścieżki
Sekcja tytułu zmienia się i wyświetla długość wybranej polilinii.
Jeśli wybierzesz jedną polilinię, łuk, okrąg, linię lub krawędź, sekcja Ścieżka jest podświetlona kolorem zielonym, a niewykorzystane polecenie jest oznaczone kolorem czerwonym.
Ortogonalny znak jest ortogonalny do widoku
Styczny znak jest styczny do punktu na ścieżce polilinii
Odwróć polilinię wybrana polilinia jest "duplikowana" tworzona jest jedna krzywa złożona i punkty BeginEnd są odwracane a kierunek linii jest wyświetlany oryginalny obiekt jest ukrywany i przywracany po zakończeniu operacji
Usuń tekst informacje Początek Koniec ostatniego tworzenia są wymazywane
Ostatni użyty przycisk jest zapisywany w parametrach FreeCAD.
Sekcja Generator
Integer: Dane to liczba całkowita
Float: Dane to liczba zmiennoprzecinkowa
Unicode: Dane to Unicode zaczynający się od 32 do ... (0 do 31 to znaki używane przez system)
pi: Wartość pi z X miejscami po przecinku
0,0000 (Integer) : Generator. Aby zatwierdzić pierwszą liczbę, kliknij przycisk Return lub
aby rozpocząć od kliknięcia przy wartości 0, przejdź do opcji preferencji:
Characters separation (1): Liczba znaków wstawianych pomiędzy kolejnymi kliknięciami zwiększającymi lub zmniejszającymi wartość generatora, liczba znaków jest wyświetlana
Clear generator: Wyczyść generator i przywróć wartość 0
Text: Wynik generatora, wszystkie wpisy są łączone w jeden ciąg, tylko wpis pi usuwa wynik bez jego łączenia
Można kontynuować łączenie po wpisaniu pi
1 (Repetition) : Wynik jest powtarzany X razy
Ok: Zatwierdź wynik generatora
Clear lineEdit: Wyczyść zawartość pola LineEdit
Sekcja Polecenie
Points: Tworzy jeden obiekt Punktu Rysunku Roboczego w punkcie bazowym znaku (kolejne punkty są zapisywane w osobnej grupie)
Circle: Tworzy jeden obiekt Okręgu Rysunku Roboczego ograniczający podany promień
BoundBox: Tworzy obwiednię dla każdego znaku
Progression: Postęp tworzenia znaków (czy nowa wersja pozostaje widoczna?)
Reset: Resetuje wszystkie wartości i wyświetla liczbę znaków wyświetlonych w oknie
Reset: Resetowanie jest wykonywane dla każdego znaku; jeśli ta opcja jest zaznaczona, resetowanie nie jest wykonywane
jeśli wynik powoduje błędy lub nie daje oczekiwanego rezultatu, jest uszkodzony: odznacz pole wyboru, kliknij przycisk Reset lub zamknij i uruchom ponownie makro FCCircularText
Free: Tryb swobodny
Del: Usuwa ostatnio wykonaną operację
Run: Uruchamia makro; znaki są rozdzielane i zapisywane w katalogu
Run + Comp: Uruchamia makro (znaki są rozdzielane i zapisywane w katalogu) oraz tworzy jeden obiekt Compound zawierający wszystkie znaki
Przycisk Help wyświetla stronę wiki w przeglądarce FreeCAD
Exit: Opuszcza makro (do widzenia)
Dostępne parametry
Niektóre parametry są dostępne w ustawieniach FreeCAD, zobacz: Menu → Narzędzia → Edytuj parametry
false tryb normalnego tekstu (i czarny), wyłącza switchFontComBox
true pozwala na użycie switchFontComBox 1 (domyślnie)
switchFontComBox :
false (przy switchModeTextList = 1) tryb tekstu (w kolorze) w szybszej liście ComboBox (domyślnie)
true (przy switchModeTextList = 1) fontFamily w liście ComboBox, wolniejszy, ale ładniejszy wygląd!
setSystemFonts :
false matplotlib.font_manager.findSystemFonts("C:/", "ttf") — przeszukuje wszystkie czcionki (we wszystkich folderach i podfolderach dysku), czasochłonne!
true fontman.findSystemFonts(self.pathFont) — przeszukuje czcionki tylko w katalogu (i jego podfolderach) (domyślnie)
seTtextAlignement : 0 = Wyrównanie do lewej (domyślnie), 1 = Wyrównanie do środka, 2 = Wyrównanie do prawej
Uwaga może wystąpić błąd między wersjami. Prosimy zgłaszać problem na forum i czekać na aktualizację lub powrócić do wcześniejszej wersji makra. Dziękujemy.
Możliwe jest, że dwa znaki mogą się nakładać. Jeśli tak się stanie, dostępne jest obejście problemu za pomocą makra Rotate-To-Point.
Character overlap issue and the workaround
(nie w pełni rozwinięte)
Planowane:
Pisanie okrągłego tekstu na ścieżce wybranego obiektu pozycji.
Dziennik zmian
ver 0.24d 2026/10/11 : correction 0.24b: 4653, 4594, 4821 by Direction thanks
ver 24c 2026/10/03: powrót do (code) zamiast polecenia FreeCAD Gui.Selection.clearSelection(), wyświetlanie błędu, jeśli wybrany jest jeden obiekt
# deselectionner tous les objetstry:forobjinFreeCAD.ActiveDocument.Objects:# deselectionne toutFreeCADGui.Selection.removeSelection(obj)exceptException:None
ver 0.24b 2026/09/29 : dodano tworzenie i odwracanie polilinii (tworzenie jednej krzywej złożonej i odwracanie punktów), zmodyfikowano przypadek INT = 0 w convert_Int_To_RGB
ver 0.24 2026/09/25: dodano opcję Generator znaków
wersja 0.23b 2026/09/13: poprawiono łącza do obrazów Path Base/orthogonal !!!
wersja 0.23 2026/09/13: dodano wyrównanie, odstęp między znakami, odwracanie kolejności elementów tekstu, opcję koloru
ver 0.22f 2025/09/25 : powrót do PySide, dodanie informacji dla użycia czcionki MONOSPACE
ver 0.22e 2024/07/11 : usunięto "ss.support = None"
ver 0.22d 2024/07/11 : usunięto "import WebGui" powodujące błąd w FreeCAD 0.22xxx i zastąpiono przez "import webbrowser"
ver 0.22c 2023/11/17 : dodano przywracanie zaznaczenia po usunięciu ostatniego obiektu, autor TheMarkster, dzięki
ver 0.21 2022/05/31 : dodano przycisk do ręcznego wyszukiwania czcionek w innej ścieżce oraz przycisk do powrotu do domyślnej ścieżki czcionek systemowych
ver 0.20 2021/04/05 : dodano ikonę w makrze, zakładkę do zmniejszania wysokości makra, usunięto wszystkie wymiary widgetów — teraz w pełni kompatybilne ze stylesheet, poprawiono wyszukiwanie wersji dla lepszej kompatybilności oraz inne drobne zmiany.
ver 1.19 2021/03/15 : dodanie przycisku Usuń ostatni utworzony obiekt i kod FreeCAD.ActiveDocument.openTransaction("FCCTc") dla systemu Cofnij/Przywróć
Dodanie pola wyboru Reset dla włączonego/aktywowanego (na prośbę użytkowników) naturalnego resetu po naciśnięciu wszystkich przycisków Run i Run comp. To użycie checkBox jest not advised, jeśli wystąpi jedna usterka, należy nacisnąć przycisk Reset lub wyjść z FCCircularText i uruchomić ponownie.
#### Test FreeCAD.Version simple ############################################################################################################ifint(FreeCAD.Version()[1])<18:# Version de FreeCADFreeCAD.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 : mały błąd w Linuksie ze ścieżką, impost PolicePath = "/usr/share/fonts/" (pozostanie na ścieżce /xx/xx/xx/xx/xx/xx/xx/ przy wejściu)
ver 0.15 2020/06/01 : Dla PySide2 Qt5 dodanie czcionek matplotlib w comboView, konfiguracja na parametrze
wersja 0.14-4 2020/04/25 : poprawiono dla "DisplayMode = u "Flat Lines" :
wersja 0.14 2019/04/27 kompatybilna z Python 3.6.6 i Qt 5.6.2 (przyczyna: unicode() )
latesttesting:#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
wersja 0.13 30/01/2018 dodanie funkcji Pivot do obracania postaci względem siebie
wersja 0.13 09/08/2016 zamień przycisk "Nowa czcionka" na "fontComboBox", ponieważ w systemie Windows 10 okno czcionki pozostaje puste, a pliki są ukryte.
wersja 0.12 03/07/2016 zoptymalizowanie kodu do akceptowania liczby dziesiętnej w określaniu kąta
forangleTrFloatinrange((debut*10000),(rotation*10000),int((round(((float(rotation)-float(debut))/float(nombre)),4)*10000))):# pour 4 decimalesangleTr=(float(angleTrFloat)/10000)
ver 0.10 17/05/2015 dodanie linii 1365, 1366 stworzyło tylko więcej tarcz zegara ?? ()
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 /_ # testowanie z 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 usunięcie 2 str App.Console.PrintMessage(str(PolicePath)+"\n") do App.Console.PrintMessage((PolicePath)+"\n"), co powodowało błąd ze znakami powyżej 128 w ścieżce police.
ver 0.6 23/11/2014 poprawione "texte = unicode(self.textEdit.toPlainText())" teraz akceptuje "'éèà@..."
ver 0.5 19/11/2014 Gui
ver 0.4 10/10/2014 dodanie zmiennej "rotation" w pętli (for i in range(0,rotation,(rotation/nombre)): # 360 a parametrer)
ver 0.4 27/08/2014 poprawienie błędu promienia (exterieur=0, debout=1)
ver 0.3 26/08/2014 dodanie tekstu tworzenia płaskiej krzywej
ver 0.2 26/08/2014 dodanie tekstu tworzenia krzywej wewnętrznej