{"id":3601,"date":"2025-10-03T16:51:32","date_gmt":"2025-10-03T14:51:32","guid":{"rendered":"https:\/\/davidka.net\/?p=3601"},"modified":"2025-10-24T12:42:15","modified_gmt":"2025-10-24T09:42:15","slug":"lektion-7-addon-veroffentlichen-vom-ordner-zu-github-und-addon-manager","status":"publish","type":"post","link":"http:\/\/de.davidka.net\/de\/lektion-7-addon-veroffentlichen-vom-ordner-zu-github-und-addon-manager\/","title":{"rendered":"Lektion 7. Addon ver\u00f6ffentlichen: vom Ordner zu GitHub und Addon Manager"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\ud83d\udcd8 Tutorial: FreeCAD Addons erstellen<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Ziel der Lektion<\/strong>: Das Addon f\u00fcr die Verteilung vorbereiten, Metadaten erstellen und es auf GitHub ver\u00f6ffentlichen, damit jeder FreeCAD-Benutzer es mit einem Klick installieren kann.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udce6 Teil 1. Was ist der Addon Manager?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der <strong>Addon Manager<\/strong> ist ein integriertes FreeCAD-Tool (<code class=\"\" data-line=\"\">Extras \u2192 Addon Manager<\/code>), das:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Einen Katalog von <strong>\u00fcber 300 offiziellen Addons<\/strong> anzeigt<\/li>\n\n\n\n<li>Es erm\u00f6glicht, Addons zu <strong>installieren, zu aktualisieren und zu deinstallieren<\/strong>, ohne Dateien manuell kopieren zu m\u00fcssen<\/li>\n\n\n\n<li>Mit <strong>GitHub-Repositories<\/strong> arbeitet<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Damit Ihr Addon dort erscheint, m\u00fcssen Sie:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Es auf <strong>GitHub<\/strong> hochladen<\/li>\n\n\n\n<li>Eine Datei <strong><code class=\"\" data-line=\"\">package.xml<\/code><\/strong> hinzuf\u00fcgen<\/li>\n\n\n\n<li>(Optional) Einen PR an <a href=\"https:\/\/github.com\/FreeCAD\/FreeCAD-addons\">FreeCAD-addons<\/a> senden<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\uddc2 Teil 2. Vorbereitung der Repository-Struktur<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ihr Ordner sollte so aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">BoxBuilderAddon\/                \u2190 Repository-Wurzel\n\u251c\u2500\u2500 Resources\/\n\u2502   \u2514\u2500\u2500 icons\/\n\u2502       \u251c\u2500\u2500 box_builder.svg\n\u2502       \u2514\u2500\u2500 create_box.svg\n\u251c\u2500\u2500 InitGui.py\n\u251c\u2500\u2500 box_builder_workbench.py\n\u251c\u2500\u2500 package.xml                 \u2190 OBLIGATORISCH!\n\u251c\u2500\u2500 README.md                   \u2190 empfohlen\n\u2514\u2500\u2500 LICENSE                     \u2190 obligatorisch f\u00fcr die Ver\u00f6ffentlichung<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udca1 <strong>Wichtig<\/strong>: Der Name des Stammordners <strong>muss<\/strong> mit dem Namen des Addons \u00fcbereinstimmen und derselbe sein wie in <code class=\"\" data-line=\"\">InitGui.py<\/code>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcc4 Teil 3. Erstellen von <code class=\"\" data-line=\"\">package.xml<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Datei beschreibt Ihr Addon f\u00fcr den Addon Manager.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie die Datei <code class=\"\" data-line=\"\">package.xml<\/code> im Stammverzeichnis:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot; ?&gt;\n&lt;package format=&quot;1&quot; xmlns=&quot;https:\/\/wiki.freecad.org\/Package_Metadata&quot;&gt;\n  &lt;name&gt;BoxBuilderAddon&lt;\/name&gt;\n  &lt;description&gt;\n    A simple tool to create parametric boxes with custom dimensions and GUI.\n    Saves last used values between sessions.\n  &lt;\/description&gt;\n  &lt;version&gt;1.0.0&lt;\/version&gt;\n  &lt;date&gt;2025-04-05&lt;\/date&gt;\n\n  &lt;maintainer email=&quot;your.email@example.com&quot;&gt;Your Name&lt;\/maintainer&gt;\n\n  &lt;license file=&quot;LICENSE&quot;&gt;LGPL-2.1-or-later&lt;\/license&gt;\n\n  &lt;url type=&quot;repository&quot; branch=&quot;main&quot;&gt;https:\/\/github.com\/yourname\/BoxBuilderAddon&lt;\/url&gt;\n  &lt;url type=&quot;bugtracker&quot;&gt;https:\/\/github.com\/yourname\/BoxBuilderAddon\/issues&lt;\/url&gt;\n\n  &lt;icon&gt;Resources\/icons\/box_builder.svg&lt;\/icon&gt;\n\n  &lt;content&gt;\n    &lt;workbench&gt;BoxBuilderAddon&lt;\/workbench&gt;\n  &lt;\/content&gt;\n\n  &lt;dependencies&gt;\n    &lt;freecad&gt;0.20&lt;\/freecad&gt;\n  &lt;\/dependencies&gt;\n&lt;\/package&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udd0d Obligatorische Felder:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">&lt;name&gt;<\/code> \u2013 muss mit dem Ordner \u00fcbereinstimmen<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;version&gt;<\/code> \u2013 im Format <code class=\"\" data-line=\"\">X.Y.Z<\/code><\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;license&gt;<\/code> \u2013 gibt die <code class=\"\" data-line=\"\">LICENSE<\/code>-Datei und den Lizenztyp an<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;url type=&quot;repository&quot;&gt;<\/code> \u2013 Link zu Ihrem GitHub<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;icon&gt;<\/code> \u2013 Pfad zum Icon (relativ zum Stammverzeichnis)<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;content&gt;&lt;workbench&gt;...&lt;\/workbench&gt;&lt;\/content&gt;<\/code> \u2013 gibt an, dass es sich um eine Arbeitsumgebung handelt<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udca1 Eine Lizenz ist <strong>obligatorisch<\/strong>. <strong>LGPL-2.1-or-later<\/strong> (wie bei FreeCAD selbst) wird empfohlen.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcc4 Teil 4. Die Datei <code class=\"\" data-line=\"\">LICENSE<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie eine <code class=\"\" data-line=\"\">LICENSE<\/code>-Datei mit dem Lizenztext.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Beispiel f\u00fcr <strong>LGPL-2.1<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Gehen Sie zu: https:\/\/www.gnu.org\/licenses\/old-licenses\/lgpl-2.1.txt<\/li>\n\n\n\n<li>Kopieren Sie den gesamten Text<\/li>\n\n\n\n<li>F\u00fcgen Sie ihn in die Datei <code class=\"\" data-line=\"\">LICENSE<\/code> ein<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Oder verwenden Sie GitHub: Beim Erstellen eines Repositorys k\u00f6nnen Sie die Lizenz automatisch ausw\u00e4hlen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcdd Teil 5. Die Datei <code class=\"\" data-line=\"\">README.md<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Erstellen Sie eine einfache <code class=\"\" data-line=\"\">README.md<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\"># Box Builder Addon f\u00fcr FreeCAD\n\nEin einfaches Werkzeug zum Erstellen parametrischer Boxen mit benutzerdefinierten Abmessungen.\n\n## Funktionen\n- GUI-Dialog zur Eingabe von L\u00e4nge, Breite, H\u00f6he\n- Speichert die zuletzt verwendeten Werte zwischen den Sitzungen\n- Eindeutige Objektbenennung\n- Optionale Zentrierung am Ursprung\n\n## Installation\n1. FreeCAD \u00f6ffnen\n2. Gehen Sie zu **Extras \u2192 Addon Manager**\n3. Suchen Sie nach &quot;BoxBuilderAddon&quot;\n4. Klicken Sie auf **Installieren**\n\nOder installieren Sie manuell, indem Sie den Ordner in Ihr `Mod`-Verzeichnis kopieren.\n\n## Anforderungen\n- FreeCAD 0.20 oder neuer<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf10 Teil 6. Ver\u00f6ffentlichung auf GitHub<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Schritte:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Registrieren Sie sich auf <a href=\"https:\/\/github.com\/\">GitHub<\/a><\/li>\n\n\n\n<li>Klicken Sie auf <strong>New repository<\/strong><\/li>\n\n\n\n<li>Name: <code class=\"\" data-line=\"\">BoxBuilderAddon<\/code><\/li>\n\n\n\n<li>Initialisieren Sie <strong>ohne README<\/strong> (Sie haben es bereits erstellt)<\/li>\n\n\n\n<li>Klicken Sie auf <strong>Create repository<\/strong><\/li>\n\n\n\n<li>Befolgen Sie die Anweisungen zum Hochladen des lokalen Ordners:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">git init\ngit add .\ngit commit -m &quot;Initial release&quot;\ngit branch -M main\ngit remote add origin https:\/\/github.com\/yourname\/BoxBuilderAddon.git\ngit push -u origin main<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\ud83d\udca1 Ersetzen Sie <code class=\"\" data-line=\"\">yourname<\/code> durch Ihren GitHub-Benutzernamen.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udd0d Teil 7. Installation testen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt kann jeder Benutzer:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>FreeCAD \u00f6ffnen<\/li>\n\n\n\n<li>Zu <strong>Extras \u2192 Addon Manager<\/strong> gehen<\/li>\n\n\n\n<li>Auf <strong>Nach Updates suchen<\/strong> klicken<\/li>\n\n\n\n<li><strong>BoxBuilderAddon<\/strong> finden und auf <strong>Installieren<\/strong> klicken<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f Damit das Addon in der <strong>offiziellen Liste<\/strong> erscheint, m\u00fcssen Sie einen Pull Request senden an:<br>\ud83d\udd17 https:\/\/github.com\/FreeCAD\/FreeCAD-addons<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Aber auch <strong>ohne dies<\/strong> k\u00f6nnen Benutzer es \u00fcber einen direkten Link installieren:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Im Addon Manager: <strong>Extras \u2192 Addon Manager \u2192 \u2026 \u2192 Benutzerdefiniertes Addon installieren<\/strong><\/li>\n\n\n\n<li>URL einf\u00fcgen: <code class=\"\" data-line=\"\">https:\/\/github.com\/yourname\/BoxBuilderAddon<\/code><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83e\uddea Praktische Aufgabe<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Erstellen Sie ein GitHub-Konto (falls noch nicht vorhanden)<\/li>\n\n\n\n<li>Bereiten Sie die vollst\u00e4ndige Addon-Struktur mit <code class=\"\" data-line=\"\">package.xml<\/code>, <code class=\"\" data-line=\"\">LICENSE<\/code>, <code class=\"\" data-line=\"\">README.md<\/code> vor<\/li>\n\n\n\n<li>Laden Sie das Repository auf GitHub hoch<\/li>\n\n\n\n<li>Installieren Sie Ihr Addon \u00fcber den Addon Manager in einer <strong>sauberen<\/strong> FreeCAD-Kopie (oder l\u00f6schen Sie den Ordner aus <code class=\"\" data-line=\"\">Mod<\/code> vor der Installation)<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u2705 Ergebnis<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt k\u00f6nnen Sie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vollwertige Addons mit GUI und Einstellungen erstellen<\/li>\n\n\n\n<li>Icons hinzuf\u00fcgen<\/li>\n\n\n\n<li>Metadaten vorbereiten<\/li>\n\n\n\n<li>Auf GitHub ver\u00f6ffentlichen<\/li>\n\n\n\n<li>Das Addon der ganzen Welt zug\u00e4nglich machen<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83c\udf93 Was kommt als N\u00e4chstes?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sie haben den gesamten Kurs abgeschlossen! \ud83c\udf89<br>Jetzt sind Sie ein <strong>FreeCAD Addon-Entwickler<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">M\u00f6gliche n\u00e4chste Schritte:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>F\u00fcgen Sie Unterst\u00fctzung f\u00fcr die <strong>Zentrierung<\/strong> hinzu (aus Aufgabe Lektion 5)<\/li>\n\n\n\n<li>Implementieren Sie die <strong>Mehrfacheingabe<\/strong> (Erstellen eines Rasters von Boxen)<\/li>\n\n\n\n<li>Integrieren Sie mit <strong>PartDesign<\/strong> zur Erstellung von Rotationsk\u00f6rpern<\/li>\n\n\n\n<li>Schreiben Sie ein Addon f\u00fcr <strong>Ihre eigene Aufgabe<\/strong>: Schrauben, Rahmen, Berechnungen usw.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\udcac Fazit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">FreeCAD ist nicht nur ein CAD-Programm.<br>Es ist eine <strong>Plattform f\u00fcr Ingenieurkreativit\u00e4t<\/strong>, und Sie haben jetzt den Schl\u00fcssel zu ihrer Erweiterung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Schreiben Sie Addons. Teilen Sie sie. Ver\u00e4ndern Sie die Welt \u2013 ein parametrisches Objekt nach dem anderen. \ud83d\udee0\ufe0f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcd8 Tutorial: FreeCAD Addons erstellen Ziel der Lektion: Das Addon f\u00fcr die Verteilung vorbereiten, Metadaten erstellen und es auf GitHub ver\u00f6ffentlichen, damit jeder FreeCAD-Benutzer es mit einem Klick installieren kann. \ud83d\udce6 Teil 1. Was ist der Addon Manager? Der Addon Manager ist ein integriertes FreeCAD-Tool (Extras \u2192 Addon Manager), das: Damit Ihr Addon dort erscheint,&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-3601","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts\/3601","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/comments?post=3601"}],"version-history":[{"count":0,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/posts\/3601\/revisions"}],"wp:attachment":[{"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/media?parent=3601"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/categories?post=3601"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/de.davidka.net\/de\/wp-json\/wp\/v2\/tags?post=3601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}