Zum Inhalt springen
> 💻 🧠 Code 1001 > Lektion 2. Dein erstes Addon: „Hello World“

Lektion 2. Dein erstes Addon: „Hello World“

  • von

Schritt 1. Vorbereitung des Addon-Ordners
Stelle sicher, dass du folgenden Ordner hast:

.../FreeCAD/Mod/HelloWorldAddon/


Falls nicht – erstelle ihn.

Der Ordnername ist wichtig: Er muss mit dem Modulnamen im Code übereinstimmen.
Wir verwenden HelloWorldAddon.

Erstelle in diesem Ordner zwei Dateien:

  • InitGui.py
  • hello_workbench.py

Wichtig: Verwende keine Leerzeichen oder kyrillische Zeichen in Datei- und Ordnernamen!


Schritt 2. Datei InitGui.py – Einstiegspunkt
Diese Datei wird von FreeCAD beim Start automatisch ausgeführt, wenn sie sich im Addon-Ordner befindet.

Öffne sie in einem Editor und füge folgenden Code ein:

# InitGui.py
import FreeCADGui
from HelloWorldAddon.hello_workbench import HelloWorldWorkbench

FreeCADGui.addWorkbench(HelloWorldWorkbench())

Was macht dieser Code?

  1. Importiert unsere Arbeitsumgebung aus der Datei hello_workbench.py
  2. Registriert sie in der FreeCAD-Oberfläche über FreeCADGui.addWorkbench()

Hinweis:
from HelloWorldAddon.hello_workbench – hier ist HelloWorldAddon der Ordnername und hello_workbench der Dateiname ohne die Erweiterung .py.


Schritt 3. Datei hello_workbench.py – Addon-Logik
Nun erstellen wir die Arbeitsumgebung selbst.

Füge folgenden Code in hello_workbench.py ein:

# hello_workbench.py
import FreeCAD, FreeCADGui
from PySide import QtGui

# === BEFEHL: Was passiert beim Klick auf die Schaltfläche? ===
class HelloWorldCommand:
    def GetResources(self):
        """Gibt Daten zur Anzeige des Befehls zurück"""
        return {
            "MenuText": "Sag Hallo",        # Text im Menü
            "ToolTip": "Zeige eine Begrüßung",  # Tooltip
            "Pixmap": ""                    # Pfad zum Symbol (zunächst leer)
        }

    def Activated(self):
        """Wird aufgerufen, wenn die Schaltfläche geklickt wird"""
        QtGui.QMessageBox.information(
            None,
            "FreeCAD Addon",
            "Hallo Welt!\nDu hast gerade dein erstes Addon gestartet!"
        )

    def IsActive(self):
        """Wann ist der Befehl verfügbar? (hier: immer → True)"""
        return True

# === ARBEITSUMGEBUNG: fasst Befehle zusammen ===
class HelloWorldWorkbench(FreeCADGui.Workbench):
    # Name, der in der Liste angezeigt wird
    MenuText = "Hello World"
    ToolTip = "Meine erste Arbeitsumgebung"

    def Initialize(self):
        """Wird aufgerufen, wenn die Arbeitsumgebung aktiviert wird"""
        # Liste der Befehlsnamen
        self.list = ["HelloWorldCommand"]
        # Symbolleiste hinzufügen
        self.appendToolbar("Hello Tools", self.list)
        # Menüeintrag hinzufügen
        self.appendMenu("Hello World", self.list)

    def GetClassName(self):
        """Erforderliche Methode für Python-Arbeitsumgebungen"""
        return "Gui::PythonWorkbench"

# === BEFEHLSREGISTRIERUNG ===
FreeCADGui.addCommand("HelloWorldCommand", HelloWorldCommand())

Code-Analyse nach Komponenten:

  1. Befehl (HelloWorldCommand)
  • GetResources() – beschreibt, wie der Befehl in der Oberfläche erscheint
  • Activated() – definiert, was beim Klick geschieht
  • IsActive() – legt fest, wann die Schaltfläche aktiv ist (z. B. nur bei geöffnetem Dokument)
  1. Arbeitsumgebung (HelloWorldWorkbench)
  • Erbt von FreeCADGui.Workbench
  • Die Methode Initialize() fügt Befehle zur Symbolleiste und zum Menü hinzu
  • GetClassName() teilt FreeCAD mit: „Dies ist eine Python-Arbeitsumgebung“
  1. Registrierung
  • FreeCADGui.addCommand() verknüpft den Namen "HelloWorldCommand" mit der Klasse

Schritt 4. Funktionsprüfung

  1. Speichere beide Dateien
  2. Starte FreeCAD neu
  3. Wähle in der Arbeitsumgebung-Auswahl „Hello World“
  4. Klicke auf die Schaltfläche „Sag Hallo“

Ein Fenster mit der Nachricht „Hallo Welt!“ sollte erscheinen.


Praktische Aufgabe

  1. Ändere den angezeigten Text.
  2. Füge ein zweites Kommando hinzu – z. B. „Zeige Datum“, das das aktuelle Datum anzeigt.
  3. Experimentiere mit IsActive() – lasse die Schaltfläche z. B. nur aktiv sein, wenn ein Dokument geöffnet ist:
   def IsActive(self):
       return FreeCAD.ActiveDocument is not None

Was kommt als Nächstes?
In Lektion 3 werden wir:

  • Lernen, wie man echte 3D-Objekte (Quader, Zylinder) per Python erstellt
  • Die Dokumentenstruktur von FreeCAD verstehen
  • Ein Addon bauen, das parametrische Körper erzeugt

Damit beginnt die echte CAD-Entwicklung!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert