FreeCAD-Doc/localwiki/Python_scripting_tutorial-it.html
2018-07-19 18:47:02 -05:00

283 lines
27 KiB
HTML

<html><head><title>Python scripting tutorial/it</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><link type='text/css' href='wiki.css' rel='stylesheet'></head><body><h1>Python scripting tutorial/it</h1></div>
<div id="mw-content-text" lang="it" dir="ltr" class="mw-content-ltr"><hr/><div class="mw-parser-output"><table class="fcinfobox wikitable ct" style="width: 230px; float: right; margin-left: 1em">
<tr>
<td class="ctTitle">
<h3><span class="mw-headline" id="Tutorial"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Base_ExampleCommandModel.png" class="image"><img alt="Base ExampleCommandModel.png" src="32px-Base_ExampleCommandModel.png" width="32" height="30" srcset="/wiki/images/thumb/9/93/Base_ExampleCommandModel.png/48px-Base_ExampleCommandModel.png 1.5x, /wiki/images/9/93/Base_ExampleCommandModel.png 2x" /></a> Tutorial</span></h3>
</td></tr>
<tr>
<th class="ctOdd">Argomento
</th></tr>
<tr>
<td class="ctEven">Programmazione
</td></tr>
<tr>
<th class="ctOdd">Livello di difficoltà
</th></tr>
<tr>
<td class="ctEven">Intermedio
</td></tr>
<tr>
<th class="ctOdd">Tempo di esecuzione
</th></tr>
<tr>
<td class="ctEven">
</td></tr>
<tr>
<th class="ctOdd">Autore
</th></tr>
<tr>
<td class="ctEven">
</td></tr>
<tr>
<th class="ctOdd">Versione di FreeCAD
</th></tr>
<tr>
<td class="ctEven">
</td></tr>
<tr>
<th class="ctOdd">File di esempio
</th></tr>
<tr>
<td class="ctEven">
</td></tr>
<tr>
<td class="ctToc"><br /><div id="toc" class="toc"><div class="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#Tutorial"><span class="tocnumber">1</span> <span class="toctext">Tutorial</span></a></li>
<li class="toclevel-1 tocsection-1"><a href="#Scrivere_un_codice_Python"><span class="tocnumber">2</span> <span class="toctext">Scrivere un codice Python</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Esplorare_FreeCAD"><span class="tocnumber">3</span> <span class="toctext">Esplorare FreeCAD</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Vettori_e_posizionamenti"><span class="tocnumber">4</span> <span class="toctext">Vettori e posizionamenti</span></a></li>
<li class="toclevel-1 tocsection-4"><a href="#App_e_Gui"><span class="tocnumber">5</span> <span class="toctext">App e Gui</span></a></li>
<li class="toclevel-1 tocsection-5"><a href="#Moduli"><span class="tocnumber">6</span> <span class="toctext">Moduli</span></a></li>
<li class="toclevel-1 tocsection-6"><a href="#Mesh"><span class="tocnumber">7</span> <span class="toctext">Mesh</span></a></li>
<li class="toclevel-1 tocsection-7"><a href="#Parte"><span class="tocnumber">8</span> <span class="toctext">Parte</span></a></li>
<li class="toclevel-1 tocsection-8"><a href="#Draft"><span class="tocnumber">9</span> <span class="toctext">Draft</span></a></li>
<li class="toclevel-1 tocsection-9"><a href="#Interfaccia"><span class="tocnumber">10</span> <span class="toctext">Interfaccia</span></a></li>
<li class="toclevel-1 tocsection-10"><a href="#Macro"><span class="tocnumber">11</span> <span class="toctext">Macro</span></a></li>
</ul>
</div>
</td></tr></table>
<p><br />
</p><p><br />
<a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/Python">Python</a> è un linguaggio di programmazione, molto semplice da usare e molto veloce da imparare.
</p><p>È open-source, multi-piattaforma, e può essere usato da solo per una vasta gamma di cose, sia per semplici script che per programmi molto complessi.
</p><p>Uno dei suoi usi più frequenti è sicuramente come linguaggio di script poiché è facile da incorporare in altre applicazioni. Questo è esattamente il modo in cui viene utilizzato all'interno di FreeCAD.
</p><p>Dalla console di Python, o tramite script personali, è possibile pilotare FreeCAD e fargli eseguire azioni molto complesse per le quali non esiste ancora lo strumento per l'interfaccia grafica utente.
</p><p>Ad esempio, tramite uno script Python, è possibile:
</p>
<ul><li> creare nuovi oggetti</li>
<li> modificare gli oggetti esistenti</li>
<li> modificare la rappresentazione 3D degli oggetti</li>
<li> modificare l'interfaccia di FreeCAD</li></ul>
<p>Ci sono anche altri modi per utilizzare Python in FreeCAD:
</p>
<ul><li> Tramite <a href="https://www.freecadweb.org/wiki/index.php?title=FreeCAD_Scripting_Basics/it" title="FreeCAD Scripting Basics/it">l'Interprete di Python in FreeCAD</a>, dove è possibile inviare semplici comandi come si fa in una interfaccia di tipo "linea di comando"</li>
<li> Tramite le <a href="https://www.freecadweb.org/wiki/index.php?title=Macros/it" title="Macros/it">Macro</a>, che sono un modo pratico per aggiungere rapidamente all'interfaccia di FreeCAD uno strumento mancante</li>
<li> Tramite degli script esterni, che possono essere utilizzati per programmare le cose molto complesse, ad esempio, creare completi <a href="https://www.freecadweb.org/wiki/index.php?title=Workbenches/it" title="Workbenches/it">Ambienti di lavoro</a>.</li></ul>
<p>In questo tutorial, lavoreremo su un paio di esempi semplici per consentire a tutti di iniziare, ma in questo wiki è disponibile anche molta altra <a href="https://www.freecadweb.org/wiki/index.php?title=Power_users_hub/it" title="Power users hub/it">documentazione sugli script Python</a>.
</p><p>Per chi non conosce ancora Python, ma è interessato a capire come funziona, c'è anche una <a href="https://www.freecadweb.org/wiki/index.php?title=Introduction_to_Python/it" title="Introduction to Python/it">Introduzione a Python</a> per una formazione di base.
</p><p><b>Importante!</b> Prima di iniziare gli esercizi di script Python, andare nel menu Modifica → Preferenze → Generali → Finestra di Output e attivare queste due caselle:
</p>
<ul><li> Reindirizzare l'output interno di Python nella vista report</li>
<li> Reindirizzare gli errori interni di Python alla finestra di report</li></ul>
<p>Poi dal menu principale andare in Visualizza → Pannelli e attivare:
</p>
<ul><li> Report</li></ul>
<p>Questo vi farà risparmiare molti problemi!
</p>
<h2><span class="mw-headline" id="Scrivere_un_codice_Python">Scrivere un codice Python</span></h2>
<p>In FreeCAD, ci sono due modi semplici per scrivere un codice Python: Tramite la console di Python (disponibile con Visualizza → Pannelli → Console Python) oppure tramite l'editor delle Macro (Strumenti → Macro).
</p><p>Nella console, si scrivono i comandi Python uno per uno (riga per riga), e questi vengono eseguiti quando si preme Invio, mentre le macro possono contenere uno script più complesso fatto di diverse righe, e i comandi vengono eseguiti solo quando viene eseguita la macro.
</p>
<div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:616px;"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_pythoninterpreter.jpg" class="image"><img alt="" src="Screenshot_pythoninterpreter.jpg" width="614" height="228" class="thumbimage" /></a> <div class="thumbcaption">La console di Python in FreeCAD</div></div></div></div>
<p>In questo tutorial si utilizzeranno entrambi i metodi, sia il copia/incolla di ogni riga, una per una, nella console Python seguito da <span style="background: #DDDDDD; border: 1px solid #888888; padding: 0px 5px 1px 5px;">Invio</span> dopo ogni riga, sia il copia/incolla dell'intero codice in una nuova finestra Macro.
</p>
<h2><span class="mw-headline" id="Esplorare_FreeCAD">Esplorare FreeCAD</span></h2>
<p>Iniziamo creando un nuovo documento vuoto:
</p>
<pre>doc = FreeCAD.newDocument() </pre>
<p>Quando si digita questo nella console Python di FreeCAD si nota che, non appena si digita "FreeCAD", si apre una finestra che consente di auto-completare rapidamente il resto della riga.
</p><p>In più, ogni voce dell'elenco di completamento automatico possiede un testo di aiuto che la descrive. Questo rende molto facile esplorare le funzionalità disponibili.
</p><p>Prima di scegliere "newDocument", date un'occhiata alle altre opzioni disponibili.
</p>
<div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:616px;"><a href="https://www.freecadweb.org/wiki/index.php?title=File:Screenshot_classbrowser.jpg" class="image"><img alt="" src="Screenshot_classbrowser.jpg" width="614" height="228" class="thumbimage" /></a> <div class="thumbcaption">Il sistema di auto-completamento della console Python di FreeCAD</div></div></div></div>
<p>Ora verrà creato il nostro nuovo documento. Questo equivale alla pressione sul pulsante "nuovo documento" della barra degli strumenti.
</p><p>In effetti, la maggior parte dei pulsanti di FreeCAD non fa altro che eseguire una o due righe di codice Python.
</p><p>Meglio ancora, in Modifica → Preferenze → Generale → Macro è possibile attivare l'opzione "mostra lo script dei comandi nella console Python". Questo visualizzerà nella console tutto il codice Python che viene eseguito quando si premono i vari pulsanti. E' molto utile per imparare a riprodurre le azioni in codice Python.
</p><p>Ora torniamo al nostro documento. Vediamo cosa possiamo fare con esso:
</p>
<pre>doc. </pre>
<p>Esploriamo le opzioni disponibili.
</p><p>Di solito i nomi che iniziano con la lettera maiuscola sono attributi e contengono un valore, mentre i nomi che iniziano con la lettera minuscola sono funzioni (chiamate anche metodi) e "fanno qualcosa".
</p><p>I nomi che iniziano con un carattere di sottolineatura di solito sono lì per il funzionamento interno del modulo e non dobbiamo preoccuparci di loro.
</p><p>Usiamo ora uno dei metodi per aggiungere un nuovo oggetto al nostro documento:
</p>
<pre>box = doc.addObject("Part::Box","myBox") </pre>
<p>Non succede nulla. Perché? Perché FreeCAD è pensato per realizzare lavori molto complessi.
</p><p>In futuro, lavorerà con centinaia di oggetti complessi, tutti dipendenti l'uno dall'altro.
</p><p>Apportare una piccola modifica da qualche parte potrebbe avere un grande impatto, potrebbe essere necessario ricalcolare l'intero documento, operazione che potrebbe richiedere molto tempo ... Per questo motivo, quasi nessun comando aggiorna la scena automaticamente. È necessario farlo manualmente:
</p>
<pre>doc.recompute() </pre>
<p>Visto? Ora il box è apparso! Molti dei pulsanti che aggiungono oggetti in FreeCAD in realtà fanno 2 cose: aggiungere l'oggetto, e ricalcolare.
</p><p>Se l'opzione "mostra lo script dei comandi nella console Python" di cui sopra è attivata, provate ad aggiungere una sfera con il pulsante della GUI e vedrete le due righe di codice python che vengono eseguite una dopo l'altra.
</p><p>E oltre a "Part&#160;:: Box"? Come posso sapere quali altri tipi di oggetti possono essere aggiunti? Sono tutti qui:
</p>
<pre>doc.supportedTypes() </pre>
<p>Ora esploriamo le caratteristiche del nostro box:
</p>
<pre>box. </pre>
<p>Si possono vedere subito un paio di cose molto interessanti quali:
</p>
<pre>box.Height </pre>
<p>Questo comando stampa l'altezza corrente del nostro box. Ora proviamo a cambiarla:
</p>
<pre>box.Height = 5 </pre>
<p>Se selezionamo il box con il mouse, nella scheda "Dati", del pannello delle proprietà, ora appare il valore della nostra proprietà "Altezza".
</p><p>Tutte le proprietà di un oggetto di FreeCAD che appaiono qui (e anche nella scheda "Vista", di cui parleremo più avanti), sono anche accessibili direttamente tramite Python, tramite i loro nomi, come abbiamo fatto con la proprietà "Altezza".
</p><p>Provate a cambiare le altre dimensioni del box.
</p>
<h2><span class="mw-headline" id="Vettori_e_posizionamenti">Vettori e posizionamenti</span></h2>
<p>I <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/Vettore_%28matematica%29">vettori</a> sono un concetto fondamentale in qualsiasi applicazione 3D. Si tratta di un elenco di 3 numeri (x, y, z) che descrivono un punto o una posizione nello spazio 3D.
</p><p>Con i vettori si possono eseguire diverse operazioni, ad esempio, sommarli, sottrarli, proiettarli e <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/Spazio_vettoriale">molto altro</a>.
</p><p>In FreeCAD, con i vettori si lavora in questo modo:
</p>
<pre>myvec = FreeCAD.Vector(2,0,0)
myvec
myvec.x
myvec.y
othervec = FreeCAD.Vector(0,3,0)
sumvec = myvec.add(othervec) </pre>
<p>Un'altra caratteristica comune degli oggetti FreeCAD è la loro <a href="https://www.freecadweb.org/wiki/index.php?title=Tasks_Placement/it" title="Tasks Placement/it"><b>collocazione</b></a> nello spazio, (accessibile dalla scheda <b>Vista combinata → Proprietà → Dati → Placement</b>, <a href="https://www.freecadweb.org/wiki/index.php?title=File:Tache_Placement_01_fr_00.png" class="image" title="Tache_Placement"><img alt="Tache_Placement" src="256px-Tache_Placement_01_fr_00.png" width="256" height="15" srcset="/wiki/images/thumb/8/80/Tache_Placement_01_fr_00.png/384px-Tache_Placement_01_fr_00.png 1.5x, /wiki/images/8/80/Tache_Placement_01_fr_00.png 2x" /></a>, oppure tramite il menu <b> Modifica → Posizionamento...</b>).
</p><p>Ogni oggetto possiede alcuni attributi di posizionamento, che contengono la posizione (Base) e l'orientamento (Rotation) dell'oggetto. Questi attributi si manipolano facilmente, ad esempio, per spostare il nostro oggetto:
</p>
<pre>box.Placement
box.Placement.Base
box.Placement.Base = sumvec
otherpla = FreeCAD.Placement()
box.Placement = otherpla </pre>
<p>Prima di continuare, si devono vedere un paio di concetti importanti.
</p>
<h2><span class="mw-headline" id="App_e_Gui">App e Gui</span></h2>
<p>FreeCAD è stato inizialmente creato per lavorare come applicazione a riga di comando, senza la sua attuale interfaccia utente. Di conseguenza, quasi tutto viene separato in una componente "geometria" e una componente "vista".
</p><p>Quando si lavora in modalità riga di comando, la parte geometria è presente, ma tutta la parte di visualizzazione è semplicemente disabilitata. Quindi, in FreeCAD, quasi tutti gli oggetti si compongono di due parti, una parte Object e una parte ViewObject.
</p><p>Per illustrare il concetto, consideriamo il nostro oggetto cubo, le proprietà geometriche del cubo, come ad esempio le sue dimensioni, posizione, ecc .. sono memorizzate in Object, mentre le sue proprietà di visualizzazione, come il suo colore, spessore della linea, ecc .. sono memorizzati in ViewObject. Ciò corrisponde alle schede "Dati" e "Vista" nella finestra delle proprietà.
</p><p>Alla parte ViewObject di un oggetto si accede in questo modo:
</p>
<pre>vo = box.ViewObject </pre>
<p>Ora è anche possibile modificare le proprietà della scheda "Vista":
</p>
<pre>vo.Transparency = 80
vo.hide()
vo.show() </pre>
<p>Quando si avvia FreeCAD, la console python carica 2 moduli base: FreeCAD e FreeCADGui (a cui si può accedere anche dai collegamenti App e Gui). Essi contengono tutti i tipi di funzionalità generiche per lavorare con i documenti ed i loro oggetti.
</p><p>Per illustrare questo concetto: notare che FreeCAD e FreeCADGui contengono entrambi un attributo ActiveDocument, che è il documento attualmente aperto.
</p><p>FreeCAD.ActiveDocument e FreeCADGui.ActiveDocument non sono la stessa cosa. Essi sono i due componenti di un documento FreeCAD, e contengono attributi e metodi diversi. Ad esempio, FreeCADGui.ActiveDocument contiene ActiveView che è la vista 3D attualmente attiva.
</p>
<h2><span class="mw-headline" id="Moduli">Moduli</span></h2>
<p>Ora vi starete sicuramente chiedendo che cosa si possa ancora fare con "Part:: Box".
</p><p>L'applicazione di base di FreeCAD è più o meno un contenitore vuoto. Senza i suoi moduli, può fare poco più che creare nuovi documenti vuoti. La vera potenza di FreeCAD è nei suoi affidabili moduli.
</p><p>Ogni modulo non solo aggiunge all'interfaccia nuovi ambienti di lavoro, ma aggiunge anche nuovi comandi Python e nuovi tipi di oggetti. Di conseguenza, nello stesso documento possono coesistere diversi tipi di oggetti, compresi anche oggetti totalmente incompatibili .
</p><p>I moduli principali di FreeCAD, che vederemo in questo tutorial, sono <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/it" title="Part Module/it">Parte</a>, <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/it" class="mw-redirect" title="Mesh Module/it">Mesh</a>, <a href="https://www.freecadweb.org/wiki/index.php?title=Sketcher_Workbench/it" title="Sketcher Workbench/it">Schizzo</a> e <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/it" title="Draft Module/it">Draft</a>.
</p><p>I moduli <a href="https://www.freecadweb.org/wiki/index.php?title=Sketcher_Workbench/it" title="Sketcher Workbench/it">Schizzo</a> e <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/it" title="Draft Module/it">Draft</a> utilizzano entrambi il modulo <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/it" title="Part Module/it">Parte</a> per creare e gestire le loro geometrie, che sono geometrie B-Rep, mentre il modulo <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Module/it" class="mw-redirect" title="Mesh Module/it">Mesh</a> è totalmente indipendente, e gestisce autonomamente i propri oggetti. In seguito saranno fornite ulteriori informazioni.
</p><p>È possibile sapere quali tipi di oggetti di base sono disponibili per il documento corrente in questo modo:
</p>
<pre>doc.supportedTypes() </pre>
<p>I diversi moduli di FreeCAD, anche se hanno aggiunto a FreeCAD i loro tipi di oggetti, non sono caricati automaticamente nella console Python. Questo per evitare di avere un avvio molto lento. I moduli vengono caricati solo quando servono. Quindi, per esempio, per esplorare l'interno del modulo Parte:
</p>
<pre>import Part
Part. </pre>
<p>Ma parleremo più avanti del modulo Parte.
</p><p>Ora, si conosce qualcosa in più sui diversi moduli di FreeCAD: I moduli principali (FreeCAD, FreeCADGui) e i moduli degli ambienti di lavoro (Parte, Mesh, Schizzo). Gli altri moduli importanti sono il modulo della scena 3D (pivy) e il modulo dell'interfaccia (PySide), in seguito parleremo anche di loro.
</p><p>Ora è il momento di esplorare un po' in profondità i moduli più importanti, cioè quelli degli ambienti di lavoro.
</p>
<h2><span class="mw-headline" id="Mesh">Mesh</span></h2>
<p>I <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/Mesh_poligonale">Mesh</a> sono un tipo molto semplice di oggetti 3D, utilizzati ad esempio da <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/SketchUp">Sketchup</a>, <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/Blender_%28programma%29">Blender</a> o <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/3D_Studio_Max">3D studio Max</a>. Essi sono composti da 3 elementi: i punti (chiamati anche vertici), le linee (chiamate anche bordi) e le facce. In molte applicazioni, inclusa FreeCAD, le facce possono avere solo tre vertici. Ma naturalmente nulla impedisce di avere una faccia piana più grande composta da diverse facce triangolari complanari.
</p><p>Gli oggetti mesh (grigliati) sono semplici, questa può essere una cosa negativa, ma per molte applicazioni, ad esempio quelle indicate prima, risulta invece essere un vantaggio, perché sono così semplici che si può facilmente averne milioni in un unico documento.
</p><p>In FreeCAD sono poco usati, e lo sono per lo più per importare oggetti in formato mesh (.Stl, .Obj) da altre applicazioni. Comunque sono stati ampiamente utilizzati come principale modulo di test nel primo mese di vita di FreeCAD.
</p><p>Gli oggetti mesh e gli oggetti FreeCAD sono cose diverse. Si può pensare l'oggetto FreeCAD come un contenitore per un oggetto Mesh (e, come vedremo più avanti, anche per gli oggetti Parte). Quindi, per aggiungere un oggetto mesh in FreeCAD, dobbiamo prima creare un oggetto FreeCAD e un oggetto Mesh, poi aggiungere l'oggetto Mesh all'oggetto FreeCAD:
</p>
<pre>import Mesh
mymesh = Mesh.createSphere()
mymesh.
mymesh.Facets
mymesh.Points
meshobj = doc.addObject("Mesh::Feature","MyMesh")
meshobj.Mesh = mymesh
doc.recompute() </pre>
<p>Questo è un esempio standard, che utilizza il metodo createSphere() per creare automaticamente una sfera, ma si può benissimo creare propri oggetti mesh da uno schizzo, definendo i loro vertici e facce.
</p><p>Per ulteriori informazioni leggere <a href="https://www.freecadweb.org/wiki/index.php?title=Mesh_Scripting/it" title="Mesh Scripting/it"> Script per Mesh...</a>
</p>
<h2><span class="mw-headline" id="Parte">Parte</span></h2>
<p>Il <a href="https://www.freecadweb.org/wiki/index.php?title=Part_Module/it" title="Part Module/it">Modulo Parte</a> è il modulo più potente di tutto FreeCAD. Permette di creare e manipolare oggetti <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/B-Rep">BRep</a>. Gli oggetti di questo tipo, a differenza dei mesh, possono avere un'ampia varietà di componenti.
</p><p>In breve, <b>BRep</b> significa Boundary Representation. Questo significa che essi sono definiti dalle loro superfici, che racchiudono e definiscono un volume interno. Queste superfici possono essere varie cose, come facce piane o superfici NURBS molto complesse. Essi inoltre incorporano il concetto di volume.
</p><p>Il modulo Parte si basa sulla potente libreria <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/Open_CASCADE_Technology">OpenCasCade</a>, che permette di eseguire facilmente sugli oggetti una vasta gamma di operazioni complesse, come le operazioni booleane, gli arrotondamenti, loft, ecc ..
</p><p>Il modulo Parte funziona allo stesso modo del modulo Mesh: Si crea un oggetto FreeCAD, un oggetto Parte, quindi si aggiunge l'oggetto Parte all'oggetto FreeCAD:
</p>
<pre>import Part
myshape = Part.makeSphere(10)
myshape.
myshape.Volume
myshape.Area
shapeobj = doc.addObject("Part::Feature","MyShape")
shapeobj.Shape = myshape
doc.recompute() </pre>
<p>Il modulo Parte (come il modulo Mesh) ha anche un comando veloce che crea automaticamente un oggetto FreeCAD e gli attribuisce una forma, in questo modo è possibile evitare le 3 ultime righe dell'esempio precedente:
</p>
<pre>Part.show(myshape) </pre>
<p>Esplorando il contenuto di myShape, noterete che sono disponibili vari sotto-componenti interessanti quali Facce, Bordi, Vertici, Solidi o Superfici, e una vasta gamma di operazioni geometriche come taglio (sottrazione), comune (intersezione) o fusione (unione). La pagina <a href="https://www.freecadweb.org/wiki/index.php?title=Topological_data_scripting/it" title="Topological data scripting/it">Script di dati topologici</a> spiega tutto questo in modo dettagliato.
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=Topological_data_scripting/it" title="Topological data scripting/it">Approfondimento sugli script in Parte...</a>
</p>
<h2><span class="mw-headline" id="Draft">Draft</span></h2>
<p>FreeCAD offre altri moduli, quali <a href="https://www.freecadweb.org/wiki/index.php?title=Sketcher_Workbench/it" title="Sketcher Workbench/it">Schizzo</a> o <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/it" title="Draft Module/it">Draft</a>, che creano anche loro degli oggetti Parte, ma vi aggiungono dei parametri, o usano un modo diverso per gestire la geometria della Parte.
</p><p>Il box del nostro precedente esempio è un esempio di perfetto oggetto parametrico.
</p><p>Per definire il box, basta specificare solo pochi parametri, quali altezza, larghezza e lunghezza. Sulla base di questi dati, l'oggetto calcolerà automaticamente la sua forma Parte. FreeCAD consente di <a href="https://www.freecadweb.org/wiki/index.php?title=Scripted_objects/it" title="Scripted objects/it">creare questi oggetti con Python</a>.
</p><p>Il <a href="https://www.freecadweb.org/wiki/index.php?title=Draft_Module/it" title="Draft Module/it">Modulo Draft</a> aggiunge un paio di tipi di oggetti 2D parametrici (che sono tutti oggetti di Parte) quali linee e cerchi, e fornisce anche alcune funzioni generiche che funzionano non solo sugli oggetti creati con Draft, ma su qualsiasi oggetto Parte. Per esplorare ciò che è disponibile, fare semplicemente:
</p>
<pre>import Draft
Draft.
rec = Draft.makeRectangle(5,2)
mvec = FreeCAD.Vector(4,4,0)
Draft.move(rec,mvec)
Draft.move(box,mvec) </pre>
<h2><span class="mw-headline" id="Interfaccia">Interfaccia</span></h2>
<p>L'interfaccia utente di FreeCAD è realizzata con <a rel="nofollow" class="external text" href="http://it.wikipedia.org/wiki/Qt_%28toolkit%29">Qt</a>, un potente sistema di interfaccia grafica, responsabile del disegno e della gestione di tutti i comandi, dei menu, delle barre degli strumenti e dei pulsanti per la vista 3D.
</p><p>Qt offre un modulo, chiamato PySide, che consente a Python di accedere e modificare le interfacce Qt, come quella di FreeCAD.
</p><p>Proviamo a giocherellare con l'interfaccia Qt e produrre una semplice finestra di dialogo:
</p>
<pre>from PySide import QtGui
QtGui.QMessageBox.information(None,"Apollo program","Houston, we have a problem") </pre>
<p>Notate che la finestra di dialogo che appare contiene l'icona di FreeCAD nella sua barra degli strumenti, questo significa che Qt sa che l'ordine è stato emesso all'interno dell'applicazione FreeCAD. Quindi si può con facilità e manipolare direttamente qualsiasi parte dell'interfaccia di FreeCAD.
</p><p>Qt è un sistema di interfaccia molto potente, che permette di fare cose molto complesse, inoltre dispone anche di vari strumenti molto facili da usare, come il Qt Designer con il quale è possibile progettare graficamente le finestre di dialogo e poi aggiungerle all'interfaccia di FreeCAD con poche righe di codice Python.
</p><p><a href="https://www.freecadweb.org/wiki/index.php?title=PySide/it" title="PySide/it">Quì si trovano altre informazioni su PySide...</a>
</p>
<h2><span class="mw-headline" id="Macro">Macro</span></h2>
<p>Ora che avete una buona conoscenza delle nozioni di base, dove conserviamo i nostri script Python, e come facciamo per eseguirli facilmente in FreeCAD? Per questo vi è un sistema semplice, chiamato <a href="https://www.freecadweb.org/wiki/index.php?title=Macros/it" title="Macros/it">Macro</a>.
</p><p>Una macro è semplicemente uno script Python, che può essere aggiunto a una barra degli strumenti e poi essere lanciato con un semplice clic del mouse.
</p><p>FreeCAD fornisce un semplice editor di testo (Macro → Macro → Crea) in cui è possibile scrivere o incollare degli script. Terminata la scrittura, il menu Strumenti → Personalizza → Macro permette di definire un pulsante per questo script che può anche essere aggiunto alle barre degli strumenti.
</p><p>Ora siete pronti per approfondire le conoscenze sull'uso degli script in FreeCAD.
</p><p>Dirigetevi al <a href="https://www.freecadweb.org/wiki/index.php?title=Power_users_hub/it" title="Power users hub/it">Centro degli utenti esperti</a>!
</p>
<p><br />
</p>
<div style="clear:both"></div>
</div>
</div>
</div><div class="printfooter">
Online version: "<a dir="ltr" href="https://www.freecadweb.org/wiki/index.php?title=Python_scripting_tutorial/it&amp;oldid=271136">http://www.freecadweb.org/wiki/index.php?title=Python_scripting_tutorial/it&amp;oldid=271136</a>"</div>
<div id="catlinks" class="catlinks" data-mw="interface"></div><div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
</body></html>