{"id":3624,"date":"2025-10-03T22:35:05","date_gmt":"2025-10-03T20:35:05","guid":{"rendered":"https:\/\/ru.davidka.net\/ru\/?p=3624"},"modified":"2025-10-04T01:33:59","modified_gmt":"2025-10-03T23:33:59","slug":"lezione-7-pubblicare-un-addon","status":"publish","type":"post","link":"https:\/\/it.davidka.net\/it\/lezione-7-pubblicare-un-addon\/","title":{"rendered":"Lezione 7. Pubblicare un addon: dalla cartella a GitHub e all&#8217;Addon Manager"},"content":{"rendered":"\n<p class=\"has-medium-font-size wp-block-paragraph\"><em>\ud83d\udcd8 Corso di formazione: Creare addon per FreeCAD<\/em><\/p>\n\n\n\n<div id=\"rtoc-mokuji-wrapper\" class=\"rtoc-mokuji-content frame2 preset1 animation-fade rtoc_open default\" data-id=\"3624\" data-theme=\"Neve - Davidka\">\n\t\t\t<div id=\"rtoc-mokuji-title\" class=\"rtoc_btn_none rtoc_left\">\n\t\t\t\n\t\t\t<span>In Questo Articolo<\/span>\n\t\t\t<\/div><ol class=\"rtoc-mokuji decimal_ol level-1\"><li class=\"rtoc-item\"><a href=\"#rtoc-1\"><\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-2\">\ud83d\udce6 Parte 1. Cos&#8217;\u00e8 l&#8217;Addon Manager?<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-2\">\ud83d\uddc2 Parte 2. Preparazione della struttura del repository<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-3\">\ud83d\udcc4 Parte 3. Creazione di <code class=\"\" data-line=\"\">package.xml<\/code><\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-4\">\ud83d\udd0d Campi obbligatori:<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-5\">\ud83d\udcc4 Parte 4. File <code class=\"\" data-line=\"\">LICENSE<\/code><\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-6\">\ud83d\udcdd Parte 5. File <code class=\"\" data-line=\"\">README.md<\/code><\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-7\">\ud83c\udf10 Parte 6. Pubblicazione su GitHub<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-8\">Passaggi:<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-9\">\ud83d\udd0d Parte 7. Test dell&#8217;installazione<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-10\">\ud83e\uddea Esercizio pratico<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-11\">\u2705 Risultato<\/a><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-12\">\ud83c\udf93 E adesso?<\/a><ul class=\"rtoc-mokuji mokuji_ul level-2\"><li class=\"rtoc-item\"><a href=\"#rtoc-13\">Possibili passi successivi:<\/a><\/li><\/ul><\/li><li class=\"rtoc-item\"><a href=\"#rtoc-14\">\ud83d\udcac Conclusione<\/a><\/li><\/ol><\/div><h2 id=\"rtoc-1\"  class=\"wp-block-heading\"><\/h2>\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>Obiettivo della lezione<\/strong>: preparare l&#8217;addon per la distribuzione, creare i metadati e pubblicarlo su GitHub, in modo che qualsiasi utente di FreeCAD possa installarlo con un solo clic.<\/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 Parte 1. Cos&#8217;\u00e8 l&#8217;Addon Manager?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;<strong>Addon Manager<\/strong> \u00e8 uno strumento integrato in FreeCAD (<code class=\"\" data-line=\"\">Strumenti \u2192 Addon Manager<\/code>) che:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mostra un catalogo di <strong>oltre 300 addon ufficiali<\/strong><\/li>\n\n\n\n<li>Permette di <strong>installare, aggiornare e disinstallare<\/strong> gli addon senza copiare manualmente i file<\/li>\n\n\n\n<li>Funziona con i <strong>repository su GitHub<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Affinch\u00e9 il tuo addon appaia l\u00ec, devi:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Caricarlo su <strong>GitHub<\/strong><\/li>\n\n\n\n<li>Aggiungere il file <strong><code class=\"\" data-line=\"\">package.xml<\/code><\/strong><\/li>\n\n\n\n<li>(Opzionale) Inviare una Pull Request a <a href=\"https:\/\/github.com\/FreeCAD\/FreeCAD-addons\">FreeCAD-addons<\/a><\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-2\"  class=\"wp-block-heading\">\ud83d\uddc2 Parte 2. Preparazione della struttura del repository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La tua cartella dovrebbe apparire cos\u00ec:<\/p>\n\n\n\n<pre class=\"wp-block-code line-numbers\"><code class=\" language-python\" data-line=\"\">BoxBuilderAddon\/                \u2190 radice del repository\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 OBBLIGATORIO!\n\u251c\u2500\u2500 README.md                   \u2190 raccomandato\n\u2514\u2500\u2500 LICENSE                     \u2190 obbligatorio per la pubblicazione<\/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>Importante<\/strong>: il nome della cartella radice <strong>deve corrispondere<\/strong> al nome dell&#8217;addon ed essere lo stesso di <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 id=\"rtoc-3\"  class=\"wp-block-heading\">\ud83d\udcc4 Parte 3. Creazione di <code class=\"\" data-line=\"\">package.xml<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Questo file descrive il tuo addon per l&#8217;Addon Manager.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea il file <code class=\"\" data-line=\"\">package.xml<\/code> nella radice:<\/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 id=\"rtoc-4\"  class=\"wp-block-heading\">\ud83d\udd0d Campi obbligatori:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code class=\"\" data-line=\"\">&lt;name&gt;<\/code> \u2014 deve corrispondere alla cartella<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;version&gt;<\/code> \u2014 nel formato <code class=\"\" data-line=\"\">X.Y.Z<\/code><\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;license&gt;<\/code> \u2014 indica il file <code class=\"\" data-line=\"\">LICENSE<\/code> e il tipo di licenza<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;url type=&quot;repository&quot;&gt;<\/code> \u2014 link al tuo GitHub<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;icon&gt;<\/code> \u2014 percorso dell&#8217;icona (relativo alla radice)<\/li>\n\n\n\n<li><code class=\"\" data-line=\"\">&lt;content&gt;&lt;workbench&gt;...&lt;\/workbench&gt;&lt;\/content&gt;<\/code> \u2014 indica che si tratta di un ambiente di lavoro<\/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 La licenza \u00e8 <strong>obbligatoria<\/strong>. Si raccomanda <strong>LGPL-2.1-or-later<\/strong> (come FreeCAD stesso).<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-5\"  class=\"wp-block-heading\">\ud83d\udcc4 Parte 4. File <code class=\"\" data-line=\"\">LICENSE<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Crea il file <code class=\"\" data-line=\"\">LICENSE<\/code> con il testo della licenza.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esempio per <strong>LGPL-2.1<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Vai su: https:\/\/www.gnu.org\/licenses\/old-licenses\/lgpl-2.1.txt<\/li>\n\n\n\n<li>Copia tutto il testo<\/li>\n\n\n\n<li>Incollalo nel file <code class=\"\" data-line=\"\">LICENSE<\/code><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Oppure usa GitHub: quando crei un repository, puoi scegliere automaticamente una licenza.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-6\"  class=\"wp-block-heading\">\ud83d\udcdd Parte 5. File <code class=\"\" data-line=\"\">README.md<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un semplice <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 per FreeCAD\n\nUno strumento semplice per creare scatole parametriche con dimensioni personalizzate.\n\n## Caratteristiche\n- Finestra di dialogo GUI per inserire lunghezza, larghezza, altezza\n- Salva gli ultimi valori utilizzati tra le sessioni\n- Nomi degli oggetti unici\n- Centratura opzionale sull&#039;origine\n\n## Installazione\n1. Apri FreeCAD\n2. Vai su **Strumenti \u2192 Addon Manager**\n3. Cerca &quot;BoxBuilderAddon&quot;\n4. Clicca su **Installa**\n\nOppure installa manualmente copiando la cartella nella tua directory `Mod`.\n\n## Requisiti\n- FreeCAD 0.20 o pi\u00f9 recente<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-7\"  class=\"wp-block-heading\">\ud83c\udf10 Parte 6. Pubblicazione su GitHub<\/h2>\n\n\n\n<h3 id=\"rtoc-8\"  class=\"wp-block-heading\">Passaggi:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Registrati su <a href=\"https:\/\/github.com\/\">GitHub<\/a><\/li>\n\n\n\n<li>Clicca su <strong>New repository<\/strong><\/li>\n\n\n\n<li>Nome: <code class=\"\" data-line=\"\">BoxBuilderAddon<\/code><\/li>\n\n\n\n<li>Inizializza <strong>senza README<\/strong> (lo hai gi\u00e0 creato)<\/li>\n\n\n\n<li>Clicca su <strong>Create repository<\/strong><\/li>\n\n\n\n<li>Segui le istruzioni per caricare la cartella locale:<\/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 Sostituisci <code class=\"\" data-line=\"\">yourname<\/code> con il tuo login GitHub.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-9\"  class=\"wp-block-heading\">\ud83d\udd0d Parte 7. Test dell&#8217;installazione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ora qualsiasi utente pu\u00f2:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Aprire FreeCAD<\/li>\n\n\n\n<li>Andare su <strong>Strumenti \u2192 Addon Manager<\/strong><\/li>\n\n\n\n<li>Cliccare su <strong>Verifica aggiornamenti<\/strong><\/li>\n\n\n\n<li>Trovare <strong>BoxBuilderAddon<\/strong> e cliccare su <strong>Installa<\/strong><\/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 Affinch\u00e9 l&#8217;addon appaia nell&#8217;<strong>elenco ufficiale<\/strong>, \u00e8 necessario inviare una Pull Request a:<br>\ud83d\udd17 https:\/\/github.com\/FreeCAD\/FreeCAD-addons<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Ma anche <strong>senza questo<\/strong>, gli utenti possono installarlo tramite un link diretto:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nell&#8217;Addon Manager: <strong>Strumenti \u2192 Addon Manager \u2192 \u2026 \u2192 Installa addon personalizzato<\/strong><\/li>\n\n\n\n<li>Incollare l&#8217;URL: <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 id=\"rtoc-10\"  class=\"wp-block-heading\">\ud83e\uddea Esercizio pratico<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Crea un account GitHub (se non ne hai uno)<\/li>\n\n\n\n<li>Prepara la struttura completa dell&#8217;addon con <code class=\"\" data-line=\"\">package.xml<\/code>, <code class=\"\" data-line=\"\">LICENSE<\/code>, <code class=\"\" data-line=\"\">README.md<\/code><\/li>\n\n\n\n<li>Carica il repository su GitHub<\/li>\n\n\n\n<li>Installa il tuo addon tramite l&#8217;Addon Manager su una copia <strong>pulita<\/strong> di FreeCAD (o elimina la cartella da <code class=\"\" data-line=\"\">Mod<\/code> prima dell&#8217;installazione)<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-11\"  class=\"wp-block-heading\">\u2705 Risultato<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ora sai:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creare addon completi con GUI e impostazioni<\/li>\n\n\n\n<li>Aggiungere icone<\/li>\n\n\n\n<li>Preparare i metadati<\/li>\n\n\n\n<li>Pubblicare su GitHub<\/li>\n\n\n\n<li>Rendere l&#8217;addon disponibile a tutto il mondo<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-12\"  class=\"wp-block-heading\">\ud83c\udf93 E adesso?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hai completato l&#8217;intero corso! \ud83c\udf89<br>Ora sei uno <strong>sviluppatore di addon per FreeCAD<\/strong>.<\/p>\n\n\n\n<h3 id=\"rtoc-13\"  class=\"wp-block-heading\">Possibili passi successivi:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aggiungi il supporto per la <strong>centratura<\/strong> (dall&#8217;esercizio della Lezione 5)<\/li>\n\n\n\n<li>Implementa l&#8217;<strong>input multiplo<\/strong> (creazione di una griglia di scatole)<\/li>\n\n\n\n<li>Integra con <strong>PartDesign<\/strong> per creare corpi di rivoluzione<\/li>\n\n\n\n<li>Scrivi un addon per il <strong>tuo compito specifico<\/strong>: bulloni, telai, calcoli, ecc.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 id=\"rtoc-14\"  class=\"wp-block-heading\">\ud83d\udcac Conclusione<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">FreeCAD non \u00e8 solo un programma CAD.<br>\u00c8 una <strong>piattaforma per la creativit\u00e0 ingegneristica<\/strong>, e ora possiedi la chiave per espanderla.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Scrivi addon. Condividili. Cambia il mondo \u2014 un oggetto parametrico alla volta. \ud83d\udee0\ufe0f<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">Se hai un&#8217;idea per un <strong>addon reale<\/strong> \u2014 descrivila, e ti aiuter\u00f2 a realizzarla!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcd8 Corso di formazione: Creare addon per FreeCAD In Questo Articolo \ud83d\udce6 Parte 1. Cos&#8217;\u00e8 l&#8217;Addon Manager? \ud83d\uddc2 Parte 2. Preparazione della struttura del repository \ud83d\udcc4 Parte 3. Creazione di package.xml \ud83d\udd0d Campi obbligatori: \ud83d\udcc4 Parte 4. File LICENSE \ud83d\udcdd Parte 5. File README.md \ud83c\udf10 Parte 6. Pubblicazione su GitHub Passaggi: \ud83d\udd0d Parte 7. Test&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"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":[948],"tags":[],"class_list":["post-3624","post","type-post","status-publish","format-standard","hentry","category-creazione-di-addon-per-freecad"],"acf":[],"_links":{"self":[{"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/posts\/3624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/comments?post=3624"}],"version-history":[{"count":0,"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/posts\/3624\/revisions"}],"wp:attachment":[{"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/media?parent=3624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/categories?post=3624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/it.davidka.net\/it\/wp-json\/wp\/v2\/tags?post=3624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}