Python scripting tutorial/it

Introduzione
Python è un linguaggio di programmazione relativamente facile da imparare e comprendere. È open-source e multipiattaforma e può essere utilizzato per molti scopi: da semplici script di shell a programmi molto complessi. Ma il suo utilizzo più diffuso è come linguaggio di scripting incorporato in altre applicazioni. È in questa modalità che viene utilizzato all'interno di FreeCAD. Dalla console Python, o con script personalizzati, puoi controllare FreeCAD e fargli eseguire operazioni molto complesse.

Ad esempio, tramite uno script Python, è possibile:
 * Creare nuovi oggetti
 * Modificare gli oggetti esistenti
 * Modificare la rappresentazione 3D degli oggetti
 * Modificare l'interfaccia di FreeCAD

Esistono diversi modi per utilizzare Python in FreeCAD:
 * Dall'Interprete Python di FreeCAD, da cui si possono inviare comandi in un'interfaccia in stile "riga di comando".
 * Con le macro, che sono un modo conveniente per aggiungere rapidamente uno strumento mancante all'interfaccia di FreeCAD.
 * Da script esterni, che possono essere utilizzati per creare soluzioni abbastanza complesse, anche interi Ambienti di Lavoro.

In questo tutorial, lavoreremo su un paio di esempi di base per consentire a tutti di iniziare, ma in questo wiki è disponibile anche molta altra documentazione sugli script Python. Per chi ancora non conoscesse Python, ma è interessato a capire come funziona, c'è anche una Introduzione a Python per una formazione di base.

Prima di procedere con lo scripting Python, andare su e selezionare le due caselle: Quindi andare su e selezionare:



Scrivere codice Python
Ci sono due modi per scrivere codice Python in FreeCAD. Nella console Python (selezionare dal menu) o nell'editor delle Macro (selezionare  dal menu). Nella console si scrivono i comandi Python uno per uno, e li si eseguono premendo, mentre le macro possono contenere codice più complesso formato da più righe, eseguito solo quando la macro viene eseguita.



In questo tutorial puoi usare entrambi i metodi. Puoi copiare e incollare ogni riga nella console Python e quindi premere, oppure copiare e incollare l'intero codice in una nuova finestra Macro.



Esplorare FreeCAD
Iniziamo creando un nuovo documento vuoto:

Se lo si digita nella console Python di FreeCAD, si nota che non appena si digita si apre una finestra, che consente di completare automaticamente il resto della riga. Ancora meglio, ogni voce nell'elenco di completamento automatico ha un suggerimento che spiega cosa fa. Ciò semplifica l'esplorazione delle funzionalità disponibili. Prima di scegliere, dare un'occhiata alle altre opzioni.



Ora verrà creato il nostro nuovo documento. Questo equivale alla pressione del pulsante sulla barra degli strumenti. In effetti, la maggior parte dei pulsanti in FreeCAD non fa altro che eseguire una o più righe di codice Python. Ancora meglio, si può impostare un'opzione in su. Questo visualizzerà nella console tutto il codice Python che viene eseguito quando si premono i vari pulsanti. Ciò è molto utile per imparare a riprodurre azioni in Python.

Ora torniamo al nostro documento e vediamo cosa si può fare:

Esploriamo le opzioni disponibili.

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".

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.

Usiamo ora uno dei metodi per aggiungere un nuovo oggetto al nostro documento:

Non succede nulla. Perché? Perché FreeCAD è pensato per realizzare lavori molto complessi. In futuro, lavorerà con centinaia di oggetti complessi, tutti dipendenti l'uno dall'altro. 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:

Ora il box è apparso. Molti dei pulsanti che aggiungono oggetti in FreeCAD in realtà fanno due cose: aggiungere l'oggetto, e ricalcolare. Se l'opzione 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.

Ora esploriamo le caratteristiche del nostro box:

Si possono vedere subito un paio di cose molto interessanti quali:

Questo comando stampa l'altezza corrente del nostro box. Ora proviamo a cambiarla:

Se si seleziona la casella con il mouse, si nota che nel pannello delle proprietà, nella scheda, appare la nostra proprietà. Tutte le proprietà di un oggetto FreeCAD che appaiono lì (e anche nella scheda, di cui parleremo più avanti), sono direttamente accessibili anche in Python, con i loro nomi, come abbiamo fatto con la proprietà. Si provi a cambiare le altre dimensioni di box.



Vettori e posizionamenti
I vettori 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. Con i vettori si possono eseguire diverse operazioni, ad esempio, sommarli, sottrarli, proiettarli e molto altro. In FreeCAD, con i vettori si lavora in questo modo:

Un'altra caratteristica comune degli oggetti FreeCAD è il loro posizionamento. Ogni oggetto ha una proprietà, che contiene (posizione) e  (asse) dell'oggetto. Sono facili da manipolare, ad esempio per spostare il nostro oggetto:

Prima di continuare, si devono vedere un paio di concetti importanti.



App e Gui
FreeCAD è stato progettato in modo da poter essere utilizzato anche senza la sua interfaccia utente, come applicazione a riga di comando. Quasi tutti gli oggetti in FreeCAD sono quindi costituiti da due parti: un, il suo componente "geometrico", e un , il suo componente "visivo". Quando si lavora in modalità riga di comando, la parte geometrica è presente, ma la parte visiva è disabilitata.

Per illustrare il concetto diamo un'occhiata al nostro oggetto cubo. Le proprietà geometriche del cubo, come le sue dimensioni, posizione, ecc. sono memorizzate in. Mentre le sue proprietà visive, come il colore, lo spessore della linea, ecc. sono archiviate in. Ciò corrisponde alle schede Dati e Vista nel pannello Proprietà. L'oggetto di visualizzazione di un oggetto è accessibile in questo modo:

Ora puoi anche modificare le proprietà nella scheda Visualizza:

Quando si avvia FreeCAD, la console Python carica da subito due moduli di base: e  (a cui è possibile accedere anche tramite le loro scorciatoie  e ). Queste contengono tutti i tipi di funzionalità generiche per lavorare con i documenti e i loro oggetti. Per illustrare questo concetto, si noti che sia che  contengono un attributo, che è il documento attualmente aperto. e non sono tuttavia lo stesso oggetto. Sono i due componenti di un documento FreeCAD e contengono attributi e metodi diversi. Ad esempio, contiene, che è la vista 3D attualmente aperta.

Moduli
Il vero potere di FreeCAD risiede nei suoi moduli, con i rispettivi ambienti di lavoro. 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. Ogni modulo non solo aggiunge nuovi ambienti di lavoro all'interfaccia, ma anche nuovi comandi Python e nuovi tipi di oggetti. Di conseguenza, nello stesso documento possono coesistere diversi tipi di oggetti, anche totalmente incompatibili. I moduli più importanti di FreeCAD che esamineremo in questo tutorial sono: Part, Mesh, Sketcher e Draft.

Sketcher e Draft utilizzano entrambi il modulo Part per creare e gestire la loro geometria. Mentre Mesh è totalmente indipendente e gestisce i propri oggetti. Maggiori informazioni di seguito.

È possibile sapere quali tipi di oggetti di base sono disponibili per il documento corrente in questo modo:

I diversi moduli di FreeCAD non vengono caricati automaticamente nella console Python. Questo per evitare un avvio molto lento. I moduli vengono caricati solo quando ne hai bisogno. Quindi, ad esempio, per esplorare cosa c'è all'interno del modulo Parte:

Ma parleremo più avanti del modulo Parte.



Modulo Mesh
I Mesh sono un tipo molto semplice di oggetto 3D, utilizzato ad esempio da Sketchup, Blender e 3D Studio Max. Sono composti da 3 elementi: punti (detti anche vertici), linee (detti anche spigoli) e facce. In molte applicazioni, incluso FreeCAD, le facce possono avere solo 3 vertici. Naturalmente nulla vieta di avere una faccia più grande composta da diverse facce triangolari complanari.

I Mesh sono semplici, ma proprio perché sono semplici si può facilmente averne milioni in un unico documento. Tuttavia, in FreeCAD hanno un uso minore e sono per lo più presenti per poter importare oggetti in formati mesh da altre applicazioni. Il modulo Mesh è stato anche ampiamente utilizzato come modulo di test principale nel primo mese di vita di FreeCAD.

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:

Questo è un esempio standard, che utilizza il metodo per creare automaticamente una sfera, ma si può benissimo creare propri oggetti mesh da uno schizzo, definendo i loro vertici e facce.

Per ulteriori informazioni leggere Script per Mesh...



Modulo Part
Il modulo Part è il modulo più potente dell'intero FreeCAD. Ti permette di creare e manipolare oggetti BRep. BREP sta per "Rappresentazione del confine". Un oggetto BREP è definito da superfici che racchiudono e definiscono un volume interno. A differenza delle mesh, gli oggetti BREP possono avere un'ampia varietà di componenti, dalle facce planari alle superfici NURBS molto complesse.

Il modulo Parte si basa sulla potente libreria OpenCasCade, che permette di eseguire facilmente sugli oggetti una vasta gamma di operazioni complesse, come le operazioni booleane, gli arrotondamenti, loft, ecc ..

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:

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 accorciare le 3 ultime righe dell'esempio precedente con:

Esplorando i contenuti di myshape, noterai molti sottocomponenti interessanti come, , , e  e un'ampia gamma di operazioni geometriche come  (sottrazione),  (intersezione) o  (unione). La pagina Script di dati topologici spiega tutto in dettaglio.

Approfondimento sugli script in Parte...



Modulo Draft
FreeCAD offre molti altri moduli, come Sketcher e Draft, che creano anche oggetti Part. Questi moduli aggiungono ulteriori parametri agli oggetti creati o addirittura implementano un modo completamente nuovo di gestire la geometria della parte in essi contenuta. Il nostro esempio sopra di una scatola è un perfetto esempio di un oggetto parametrico. Tutto ciò che serve per definire la scatola è specificare i parametri altezza, larghezza e lunghezza. Sulla base di questi, l'oggetto calcolerà automaticamente la sua forma della parte. FreeCAD ti consente di creare tali oggetti in Python.

Il Modulo Draft aggiunge tipi di oggetti 2D parametrici (che sono tutti oggetti di Parte) quali linee e cerchi, e fornisce anche alcune funzioni generiche, che agiscono non solo sugli oggetti creati con Draft, ma su qualsiasi oggetto Parte. Per esplorare ciò che è disponibile, fare semplicemente:

Interfaccia
L'interfaccia utente di FreeCAD è realizzata con Qt, un potente sistema di interfaccia grafica, responsabile del disegno e della gestione di tutti i controlli, menu, barre degli strumenti e pulsanti intorno alla vista 3D. Qt fornisce un modulo, PySide, che consente a Python di accedere e modificare le interfacce Qt come quelle di FreeCAD. Proviamo a giocherellare con l'interfaccia Qt e produrre una semplice finestra di dialogo:

Si noti che la finestra di dialogo che appare ha l'icona di FreeCAD nella sua barra degli strumenti, il che significa che Qt sa che l'ordine è stato emesso dall'interno dell'applicazione FreeCAD. È possibile manipolare qualsiasi parte dell'interfaccia di FreeCAD.

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.

Quì si trovano altre informazioni su PySide...

Macro
Ora che si ha una buona conoscenza delle nozioni di base, dove conserviamo i nostri script Python, e come si fa ad eseguirli facilmente in FreeCAD? Per questo vi è un sistema semplice, chiamato Macro. 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. 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.

External scripts
An alternative method for creating, saving, and running your own Python scripts is to create them outside FreeCAD, using an editor of your choice (for example, Vim). To run your Python script inside FreeCAD, be sure to save it with the extension.

Then use to open your script. It will load into a new tab in the Main view area. You can run your script by clicking the button. Any errors or script output will be shown in the Report view.

When you make and save any modifications to your already-loaded script, a dialog box will appear asking whether you want to reload the modified script into FreeCAD.

Ora si è pronti per uno scripting FreeCAD più approfondito. Quindi andare al Hub per utenti esperti!