Tutorial: Tworzenie Dodatków dla FreeCAD
Cel Lekcji: Stworzenie prostego dodatku, który dodaje nowe środowisko pracy ($\text{workbench}$) z przyciskiem, a po kliknięciu wyświetla komunikat.
Krok 1. Przygotowanie Folderu Dodatku
Upewnij się, że masz folder:
…/FreeCAD/Mod/HelloWorldAddon/
Jeśli nie, utwórz go.
Nazwa folderu jest ważna: musi być zgodna z nazwą modułu w kodzie. Użyjemy $\text{HelloWorldAddon}$.
Wewnątrz tego folderu utwórz dwa pliki:
- $\text{InitGui.py}$
- $\text{hello\_workbench.py}$
! Nie używaj spacji ani znaków cyrylicy w nazwach plików i folderów!
Krok 2. Plik InitGui.py – Punkt Wejścia
Ten plik jest automatycznie uruchamiany przez FreeCAD przy starcie, jeśli znajduje się w folderze dodatku.
Otwórz go w edytorze i wklej następujący kod:
Python
# InitGui.py
import FreeCADGui
from HelloWorldAddon.hello_workbench import HelloWorldWorkbench
FreeCADGui.addWorkbench(HelloWorldWorkbench())
Co robi ten kod?
- Importuje nasze środowisko pracy z pliku $\text{hello\_workbench.py}$.
- Rejestruje je w interfejsie FreeCAD za pomocą $\text{FreeCADGui.addWorkbench()}$.
! Uwaga:
$\text{from HelloWorldAddon.hello\_workbench}$ – tutaj $\text{HelloWorldAddon}$ to nazwa folderu, a $\text{hello\_workbench}$ to nazwa pliku bez rozszerzenia $\text{.py}$.
Krok 3. Plik hello_workbench.py – Logika Dodatku
Teraz stwórzmy samo środowisko pracy.
Wklej następujący kod do $\text{hello\_workbench.py}$:
Python
# hello_workbench.py
import FreeCAD, FreeCADGui
from PySide import QtGui
# === KOMENDA: co się dzieje po kliknięciu przycisku ===
class HelloWorldCommand:
def GetResources(self):
"""Zwraca dane do wyświetlenia komendy"""
return {
"MenuText": "Say Hello", # Tekst w menu
"ToolTip": "Show a greeting", # Podpowiedź
"Pixmap": None # Ścieżka do ikony (teraz pusta)
}
def Activated(self):
"""Wywoływana po kliknięciu przycisku"""
QtGui.QMessageBox.information(
None,
"FreeCAD Addon",
"Hello, world!\nYou just launched your first addon!"
)
def IsActive(self):
"""Kiedy komenda jest dostępna? (zawsze - True)"""
return True
# === ŚRODOWISKO PRACY: grupuje komendy razem ===
class HelloWorldWorkbench(FreeCADGui.Workbench):
# Nazwa, która zostanie wyświetlona na liście
MenuText = "Hello World"
ToolTip = "My first workbench"
def Initialize(self):
"""Wywoływana, gdy środowisko pracy jest aktywowane"""
# Lista nazw komend
self.list = ["HelloWorldCommand"]
# Dodaj pasek narzędzi
self.appendToolbar("Hello Tools", self.list)
# Dodaj element menu
self.appendMenu("Hello World", self.list)
def GetClassName(self):
"""Wymagana metoda dla środowisk pracy Pythona"""
return "Gui::PythonWorkbench"
# === REJESTRACJA KOMENDY ===
FreeCADGui.addCommand("HelloWorldCommand", HelloWorldCommand())
Rozbicie Kodu na Części:
- Komenda ($\text{HelloWorldCommand}$)
- $\text{GetResources()}$: opisuje, jak komenda wygląda w interfejsie.
- $\text{Activated()}$: co dzieje się po kliknięciu.
- $\text{IsActive()}$: kiedy przycisk jest aktywny (np. tylko, jeśli jest otwarty dokument).
- Środowisko Pracy ($\text{HelloWorldWorkbench}$)
- Dziedziczy z $\text{FreeCADGui.Workbench}$.
- Metoda $\text{Initialize()}$ dodaje komendy do paska narzędzi i menu.
- $\text{GetClassName()}$ informuje FreeCAD: «to jest środowisko pracy Pythona».
- Rejestracja
- $\text{FreeCADGui.addCommand()}$ łączy nazwę komendy.