Python scripting tutorial/it: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
 
(79 intermediate revisions by 3 users not shown)
Line 8: Line 8:
{{TOCright}}
{{TOCright}}


<span id="Introduction"></span>
==Introduzione==
==Introduzione==


Line 18: Line 19:
* Modificare l'interfaccia di FreeCAD
* Modificare l'interfaccia di FreeCAD


Ci sono anche altri modi per utilizzare Python in FreeCAD:
Esistono diversi modi per utilizzare Python in FreeCAD:
* Tramite [[FreeCAD Scripting Basics/it|l'Interprete di Python in FreeCAD]], dove è possibile inviare semplici comandi come si fa in una interfaccia di tipo "linea di comando"
* Dall'[[FreeCAD Scripting Basics/it|Interprete Python di FreeCAD]], da cui si possono inviare comandi in un'interfaccia in stile "riga di comando".
* Tramite le [[macros/it|macro]], che sono un modo pratico per aggiungere rapidamente all'interfaccia di FreeCAD uno strumento mancante
* Con le [[macros/it|macro]], che sono un modo conveniente per aggiungere rapidamente uno strumento mancante all'interfaccia di FreeCAD.
* Tramite degli script esterni, che possono essere utilizzati per programmare le cose molto complesse, ad esempio, creare completi [[Workbenches/it|Ambienti di lavoro]].
* Da script esterni, che possono essere utilizzati per creare soluzioni abbastanza complesse, anche interi [[Workbenches/it|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 [[Power users hub/it|documentazione sugli script Python]].
<div class="mw-translate-fuzzy">
Per chi ancora non conoscesse Python, ma è interessato a capire come funziona, c'è anche una [[Introduction to Python/it|Introduzione a Python]] per una formazione di base.
In questo tutorial, lavoreremo su un paio di esempi semplici per consentire a tutti di iniziare, ma in questo wiki è disponibile anche molta altra [[Power users hub/it|documentazione sugli script Python]].


Prima di procedere con lo scripting Python, andare su {{MenuCommand|Modifica → Preferenze → Generale → Report}} e selezionare le due caselle:
Per chi non conosce ancora Python, ma è interessato a capire come funziona, c'è anche una [[Introduction to Python/it|Introduzione a Python]] per una formazione di base.
* {{MenuCommand|Reindirizza l'output interno di Python alla finestra di report}}.
</div>
* {{MenuCommand|Reindirizza gli errori interni di Python alla finestra di report}}.
Quindi andare su {{MenuCommand|Visualizza → Panelli}} e selezionare:
* {{MenuCommand|Report}}.


<span id="Writing_Python_code"></span>
<div class="mw-translate-fuzzy">
==Scrivere codice Python==
'''Importante!''' Prima di iniziare gli esercizi di script Python, andare nel menu Modifica → Preferenze → Generali → Finestra di Output e attivare queste due caselle:
* Reindirizzare l'output interno di Python nella vista report
* Reindirizzare gli errori interni di Python alla finestra di report
Poi dal menu principale andare in Visualizza → Pannelli e attivare:
* Report
Questo vi farà risparmiare molti problemi!
</div>


Ci sono due modi per scrivere codice Python in FreeCAD. Nella [[Python_console/it|console Python]] (selezionare {{MenuCommand|Visualizza → Pannelli → Console Python}} dal menu) o nell'[[Std_DlgMacroExecute/it|editor delle Macro]] (selezionare {{MenuCommand|Macro → Macro...}} dal menu). Nella console si scrivono i comandi Python uno per uno, e li si eseguono premendo {{KEY|Enter}}, mentre le macro possono contenere codice più complesso formato da più righe, eseguito solo quando la macro viene eseguita.
<div class="mw-translate-fuzzy">
== Scrivere un codice Python ==

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

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.
</div>

There are two ways to write Python code in FreeCAD. In the [[Python console|Python console]] (select {{MenuCommand|View → Panels → Python console}} from the menu) or in the [[Std_DlgMacroExecute|Macro editor]] (select {{MenuCommand|Macro → Macros...}} from the menu). In the console you write Python commands one by one, executing them by pressing {{KEY|Enter}}, while macros can contain more complex code made up of several lines, executed only when the macro is executed.


[[Image:Screenshot_pythoninterpreter.jpg]]
[[Image:Screenshot_pythoninterpreter.jpg]]
{{Caption|la console Python di FreeCAD}}
<div class="mw-translate-fuzzy">
[[Image:Screenshot_pythoninterpreter.jpg|center|frame|La console di Python in FreeCAD]]
</div>


In questo tutorial puoi usare entrambi i metodi. Puoi copiare e incollare ogni riga nella console Python e quindi premere {{KEY|Enter}}, oppure copiare e incollare l'intero codice in una nuova finestra Macro.
<div class="mw-translate-fuzzy">
In questo tutorial si utilizzeranno entrambi i metodi, sia il copia/incolla di ogni riga, una per una, nella console Python seguito da {{KEY|Invio}} dopo ogni riga, sia il copia/incolla dell'intero codice in una nuova finestra Macro.
</div>
{{Top}}
{{Top}}
<span id="Exploring_FreeCAD"></span>
<div class="mw-translate-fuzzy">
== Esplorare FreeCAD ==
==Esplorare FreeCAD==


Iniziamo creando un nuovo documento vuoto:
Iniziamo creando un nuovo documento vuoto:
</div>

Let's start by creating a new empty document:


{{Code|code=
{{Code|code=
Line 69: Line 52:
}}
}}


Se lo si digita nella console Python di FreeCAD, si nota che non appena si digita {{incode|FreeCAD.}} 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 {{incode|newDocument}}, dare un'occhiata alle altre opzioni.
<div class="mw-translate-fuzzy">
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.

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.

Prima di scegliere "newDocument", date un'occhiata alle altre opzioni disponibili.
</div>


[[Image:Screenshot_classbrowser.jpg]]
[[Image:Screenshot_classbrowser.jpg]]
{{Caption|Il meccanismo di completamento automatico della console Python di FreeCAD}}
<div class="mw-translate-fuzzy">
[[Image:Screenshot_classbrowser.jpg|center|frame|Il sistema di auto-completamento della console Python di FreeCAD]]
</div>

<div class="mw-translate-fuzzy">
Ora verrà creato il nostro nuovo documento. Questo equivale alla pressione sul pulsante "nuovo documento" della barra degli strumenti.

In effetti, la maggior parte dei pulsanti di FreeCAD non fa altro che eseguire una o due righe di codice Python.


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.
Ora verrà creato il nostro nuovo documento. Questo equivale alla pressione del pulsante {{Button|[[Image:Std_New.svg|16px]] [[Std_New|Nuovo]]}} 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 {{MenuCommand|Modifica → Preferenze → Python → Macro}} su {{MenuCommand|Mostra lo scritp dei comandi nella console python}}. 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.
</div>


Ora torniamo al nostro documento e vediamo cosa si può fare:
<div class="mw-translate-fuzzy">
Ora torniamo al nostro documento. Vediamo cosa possiamo fare con esso:
</div>


{{Code|code=
{{Code|code=
Line 98: Line 65:
}}
}}


<div class="mw-translate-fuzzy">
Esploriamo le opzioni disponibili.
Esploriamo le opzioni disponibili.


Line 106: Line 72:


Usiamo ora uno dei metodi per aggiungere un nuovo oggetto al nostro documento:
Usiamo ora uno dei metodi per aggiungere un nuovo oggetto al nostro documento:
</div>


{{Code|code=
{{Code|code=
Line 112: Line 77:
}}
}}


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:
<div class="mw-translate-fuzzy">
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:
</div>


{{Code|code=
{{Code|code=
Line 124: Line 83:
}}
}}


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 {{MenuCommand|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.
<div class="mw-translate-fuzzy">
Visto? Ora il box è apparso! Molti dei pulsanti che aggiungono oggetti in FreeCAD in realtà fanno 2 cose: aggiungere l'oggetto, e ricalcolare.

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.
</div>


Ora esploriamo le caratteristiche del nostro box:
Ora esploriamo le caratteristiche del nostro box:
Line 148: Line 103:
}}
}}


Se si seleziona la casella con il mouse, si nota che nel [[Property_editor/it|pannello delle proprietà]], nella scheda {{MenuCommand|Data}}, appare la nostra proprietà {{PropertyData|Height}}. Tutte le proprietà di un oggetto FreeCAD che appaiono lì (e anche nella scheda {{MenuCommand|View}}, di cui parleremo più avanti), sono direttamente accessibili anche in Python, con i loro nomi, come abbiamo fatto con la proprietà {{PropertyData|Height }}. Si provi a cambiare le altre dimensioni di box.
<div class="mw-translate-fuzzy">
Se selezionamo il box con il mouse, nella scheda "Dati", del pannello delle proprietà, ora appare il valore della nostra proprietà "Altezza".

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

Provate a cambiare le altre dimensioni del box.
</div>
{{Top}}
{{Top}}
<span id="Vectors_and_placements"></span>
<div class="mw-translate-fuzzy">
== Vettori e posizionamenti ==
==Vettori e posizionamenti==


I [http://it.wikipedia.org/wiki/Vettore_%28matematica%29 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.
I [http://it.wikipedia.org/wiki/Vettore_%28matematica%29 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 [http://it.wikipedia.org/wiki/Spazio_vettoriale molto altro]. In FreeCAD, con i vettori si lavora in questo modo:

Con i vettori si possono eseguire diverse operazioni, ad esempio, sommarli, sottrarli, proiettarli e [http://it.wikipedia.org/wiki/Spazio_vettoriale molto altro].

In FreeCAD, con i vettori si lavora in questo modo:
</div>

[https://en.wikipedia.org/wiki/Euclidean_vector Vectors] are a very fundamental concept in any 3D application. A vector is a list of 3 numbers (x, y and z), describing a point or position in 3D space. Many things can be done with vectors, such as additions, subtractions, projections and [https://en.wikipedia.org/wiki/Vector_space much more]. In FreeCAD vectors work like this:


{{Code|code=
{{Code|code=
Line 176: Line 118:
}}
}}


Un'altra caratteristica comune degli oggetti FreeCAD è il loro [[Placement/it|posizionamento]]. Ogni oggetto ha una proprietà {{PropertyData|Placement}}, che contiene {{PropertyData|Base}} (posizione) e {{PropertyData|Rotation}} (asse) dell'oggetto. Sono facili da manipolare, ad esempio per spostare il nostro oggetto:
<div class="mw-translate-fuzzy">
Un'altra caratteristica comune degli oggetti FreeCAD è la loro [[Tasks_Placement/it|'''collocazione''']] nello spazio, (accessibile dalla scheda '''Vista combinata → Proprietà → Dati → Placement''', [[Image:Tache_Placement_01_fr_00.png|256px|Tache_Placement]], oppure tramite il menu ''' Modifica → Posizionamento...''').

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:
</div>


{{Code|code=
{{Code|code=
Line 193: Line 131:
Prima di continuare, si devono vedere un paio di concetti importanti.
Prima di continuare, si devono vedere un paio di concetti importanti.
{{Top}}
{{Top}}
<span id="App_and_Gui"></span>
<div class="mw-translate-fuzzy">
== App e Gui ==
==App e Gui==


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".
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 {{incode|Object}}, il suo componente "geometrico", e un {{incode|ViewObject}}, 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 {{incode|Object}}. Mentre le sue proprietà visive, come il colore, lo spessore della linea, ecc. sono archiviate in {{incode|ViewObject}}. Ciò corrisponde alle schede '''Dati''' e '''Vista''' nel [[Property_editor/it|pannello Proprietà]]. L'oggetto di visualizzazione di un oggetto è accessibile in questo modo:
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.
</div>

FreeCAD has been designed so that it can also be used without its user interface, as a command-line application. Almost every object in FreeCAD therefore consists of two parts: an {{incode|Object}}, its "geometry" component, and a {{incode|ViewObject}}, its "visual" component. When you work in command-line mode, the geometry part is present, but the visual part is disabled.

<div class="mw-translate-fuzzy">
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à.

Alla parte ViewObject di un oggetto si accede in questo modo:
</div>


{{Code|code=
{{Code|code=
vo = box.ViewObject
vo = box.ViewObject
}}
}}
Ora puoi anche modificare le proprietà nella scheda '''Visualizza''':
<div class="mw-translate-fuzzy">
Ora è anche possibile modificare le proprietà della scheda "Vista":
</div>


{{Code|code=
{{Code|code=
Line 222: Line 149:
}}
}}


Quando si avvia FreeCAD, la console Python carica da subito due moduli di base: {{incode|FreeCAD}} e {{incode|FreeCADGui}} (a cui è possibile accedere anche tramite le loro scorciatoie {{incode|App}} e {{incode| Gui}}). 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 {{incode|FreeCAD}} che {{incode|FreeCADGui}} contengono un attributo {{incode|ActiveDocument}}, che è il documento attualmente aperto. {{incode|FreeCAD.ActiveDocument}} e {{incode|FreeCADGui.ActiveDocument}} non sono tuttavia lo stesso oggetto. Sono i due componenti di un documento FreeCAD e contengono attributi e metodi diversi. Ad esempio, {{incode|FreeCADGui.ActiveDocument}} contiene {{incode|ActiveView}}, che è la [[3D_view/it|vista 3D]] attualmente aperta.
<div class="mw-translate-fuzzy">
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.

Per illustrare questo concetto: notare che FreeCAD e FreeCADGui contengono entrambi un attributo ActiveDocument, che è il documento attualmente aperto.

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.
</div>
{{Top}}
{{Top}}
<span id="Modules"></span>
<div class="mw-translate-fuzzy">
== Moduli ==
==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_Workbench/it|Part]], [[Mesh_Workbench/it|Mesh]], [[Sketcher_Workbench/it|Sketcher]] e [[Draft_Workbench/it|Draft]].
Ora vi starete sicuramente chiedendo che cosa si possa ancora fare con "Part:: Box".


[[Sketcher_Workbench/it|Sketcher]] e [[Draft_Workbench/it|Draft]] utilizzano entrambi il modulo [[Part_Workbench/it|Part]] per creare e gestire la loro geometria. Mentre [[Mesh_Workbench/it|Mesh]] è totalmente indipendente e gestisce i propri oggetti. Maggiori informazioni di seguito.
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.

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 .

I moduli principali di FreeCAD, che vederemo in questo tutorial, sono [[Part Workbench/it|Parte]], [[Mesh Workbench/it|Mesh]], [[Sketcher Workbench/it|Schizzo]] e [[Draft Workbench/it|Draft]].
</div>

The true power of FreeCAD lies in its faithful modules, with their respective workbenches. The FreeCAD base application is more or less an empty container. Without its modules it can do little more than create new, empty documents. Each module not only adds new workbenches to the interface, but also new Python commands and new object types. As a result several different, and even totally incompatible, object types can coexist in the same document. The most important modules in FreeCAD that we'll look at in this tutorial are: [[Part_Workbench|Part]], [[Mesh_Workbench|Mesh]], [[Sketcher_Workbench|Sketcher]] and [[Draft_Workbench|Draft]].

<div class="mw-translate-fuzzy">
I moduli [[Sketcher Workbench/it|Schizzo]] e [[Draft Workbench/it|Draft]] utilizzano entrambi il modulo [[Part_Workbench/it|Parte]] per creare e gestire le loro geometrie, che sono geometrie B-Rep, mentre il modulo [[Mesh Workbench/it|Mesh]] è totalmente indipendente, e gestisce autonomamente i propri oggetti. In seguito saranno fornite ulteriori informazioni.
</div>


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


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:
<div class="mw-translate-fuzzy">
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:
</div>


{{Code|code=
{{Code|code=
Line 265: Line 173:
Ma parleremo più avanti del modulo Parte.
Ma parleremo più avanti del modulo Parte.
{{Top}}
{{Top}}
<span id="Mesh_module"></span>
<div class="mw-translate-fuzzy">
== Mesh ==
==Modulo Mesh==
</div>


I [https://it.wikipedia.org/wiki/Mesh_poligonale Mesh] sono un tipo molto semplice di oggetto 3D, utilizzato ad esempio da [https://it.wikipedia.org/wiki/SketchUp Sketchup], [https://it.wikipedia.org/wiki/Blender_(programma) Blender] e [https://it.wikipedia.org/wiki/3ds_Max 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.
<div class="mw-translate-fuzzy">
I [http://it.wikipedia.org/wiki/Mesh_poligonale Mesh] sono un tipo molto semplice di oggetti 3D, utilizzati ad esempio da [http://it.wikipedia.org/wiki/SketchUp Sketchup], [http://it.wikipedia.org/wiki/Blender_%28programma%29 Blender] o [http://it.wikipedia.org/wiki/3D_Studio_Max 3D studio Max]. 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. Naturalmente nulla impedisce di avere una faccia piana più grande composta da diverse facce triangolari complanari.
</div>


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 ({{FileName|.stl}}, {{FileName|.obj}}) da altre applicazioni. Il modulo Mesh è stato anche ampiamente utilizzato come modulo di test principale nel primo mese di vita di FreeCAD.
<div class="mw-translate-fuzzy">
Gli oggetti mesh (grigliati) sono semplici, ma poiché sono semplici si può facilmente averne a milioni in un unico documento.
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.
</div>


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:
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:
Line 291: Line 193:
}}
}}


Questo è un esempio standard, che utilizza il metodo {{incode|createSphere()}} per creare automaticamente una sfera, ma si può benissimo creare propri oggetti mesh da uno schizzo, definendo i loro vertici e facce.
<div class="mw-translate-fuzzy">
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.
</div>


Per ulteriori informazioni leggere [[Mesh Scripting/it| Script per Mesh...]]
Per ulteriori informazioni leggere [[Mesh Scripting/it| Script per Mesh...]]
{{Top}}
{{Top}}
<span id="Part_module"></span>
<div class="mw-translate-fuzzy">
== Parte ==
==Modulo Part==


Il [[Part_Workbench/it|Modulo Parte]] è il modulo più potente di tutto FreeCAD. Permette di creare e manipolare oggetti [http://it.wikipedia.org/wiki/B-Rep BRep]. Gli oggetti di questo tipo, a differenza dei mesh, possono avere un'ampia varietà di componenti.
Il modulo [[Part_Workbench/it|Part]] è il modulo più potente dell'intero FreeCAD. Ti permette di creare e manipolare oggetti [https://it.wikipedia.org/wiki/B-Rep 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 [https://it.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade], che permette di eseguire facilmente sugli oggetti una vasta gamma di operazioni complesse, come le operazioni booleane, gli arrotondamenti, loft, ecc ..
In breve, '''BRep''' 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.
</div>

The [[Part_Workbench|Part]] module is the most powerful module in the whole of FreeCAD. It allows you to create and manipulate [https://en.wikipedia.org/wiki/Boundary_representation BRep] objects. BREP stands for "Boundary Representation". A BREP object is defined by surfaces that enclose and define an inner volume. Unlike meshes, BREP objects can have a wide variety of components from planar faces to very complex NURBS surfaces.

<div class="mw-translate-fuzzy">
Il modulo Parte si basa sulla potente libreria [http://it.wikipedia.org/wiki/Open_CASCADE_Technology OpenCasCade], che permette di eseguire facilmente sugli oggetti una vasta gamma di operazioni complesse, come le operazioni booleane, gli arrotondamenti, loft, ecc ..
</div>


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 funziona allo stesso modo del modulo Mesh: Si crea un oggetto FreeCAD, un oggetto Parte, quindi si aggiunge l'oggetto Parte all'oggetto FreeCAD:
Line 324: Line 217:
}}
}}


<div class="mw-translate-fuzzy">
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:
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:
</div>


{{Code|code=
{{Code|code=
Line 332: Line 223:
}}
}}


Esplorando i contenuti di myshape, noterai molti sottocomponenti interessanti come {{incode|Faces}}, {{incode|Edges}}, {{incode|Vertexes}}, {{incode|Solids}} e {{incode |Shells}} e un'ampia gamma di operazioni geometriche come {{incode|cut}} (sottrazione), {{incode|common}} (intersezione) o {{incode|fuse}} (unione). La pagina [[Topological_data_scripting/it|Script di dati topologici]] spiega tutto in dettaglio.
<div class="mw-translate-fuzzy">
Esplorando il contenuto di myShape, noterete che sono disponibili vari sotto-componenti interessanti quali Facce, Bordi, Vertici, Solidi e Superfici, e una vasta gamma di operazioni geometriche come taglio (sottrazione), comune (intersezione) o fusione (unione). La pagina [[Topological data scripting/it|Script di dati topologici]] spiega tutto questo in modo dettagliato.
</div>


[[Topological_data_scripting/it|Approfondimento sugli script in Parte...]]
<div class="mw-translate-fuzzy">
[[Topological data scripting/it|Approfondimento sugli script in Parte...]]
</div>
{{Top}}
{{Top}}
<span id="Draft_module"></span>
<div class="mw-translate-fuzzy">
== Draft ==
== Modulo Draft ==


FreeCAD offre altri moduli, quali [[Sketcher Workbench/it|Schizzo]] o [[Draft_Workbench/it|Draft]], che creano anche loro degli oggetti Parte, ma vi aggiungono dei parametri, o usano un modo diverso per gestire la geometria della Parte.
FreeCAD offre molti altri moduli, come [[Sketcher_Workbench/it|Sketcher]] e [[Draft_Workbench/it|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 [[Scripted_objects/it|creare tali oggetti in Python]].


Il Modulo [[Draft_Workbench/it|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:
Il box del nostro precedente esempio è un esempio di perfetto oggetto parametrico.

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 [[Scripted objects/it|creare questi oggetti con Python]].
</div>

FreeCAD features many more modules, such as [[Sketcher_Workbench|Sketcher]] and [[Draft_Workbench|Draft]], that also create Part objects. These modules add additional parameters to the objects created, or even implement a whole new way to handle the Part geometry in them. Our box example above is a perfect example of a parametric object. All you need to define the box is to specify the parameters height, width and length. Based on those, the object will automatically calculate its Part shape. FreeCAD allows you to [[Scripted_objects|create such objects in Python]].

<div class="mw-translate-fuzzy">
Il [[Draft_Workbench/it|Modulo Draft]] 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:
</div>


{{Code|code=
{{Code|code=
Line 364: Line 242:
}}
}}
{{Top}}
{{Top}}
<span id="Interface"></span>
<div class="mw-translate-fuzzy">
== Interfaccia ==
==Interfaccia==

L'interfaccia utente di FreeCAD è realizzata con [http://it.wikipedia.org/wiki/Qt_%28toolkit%29 Qt], 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.

Qt offre un modulo, chiamato PySide, che consente a Python di accedere e modificare le interfacce Qt, come quella di FreeCAD.


L'interfaccia utente di FreeCAD è realizzata con [https://it.wikipedia.org/wiki/Qt_(toolkit) 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 [[3D_view/it|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:
Proviamo a giocherellare con l'interfaccia Qt e produrre una semplice finestra di dialogo:
</div>

The FreeCAD user interface is made with [https://en.wikipedia.org/wiki/Qt_(software) Qt], a powerful graphical interface system, responsible for drawing and handling all the controls, menus, toolbars and buttons around the [[3D_view|3D view]]. Qt provides a module, [[PySide]], which allows Python to access and modify Qt interfaces such as FreeCAD's. Let's try to fiddle with the Qt interface and produce a simple dialog:


{{Code|code=
{{Code|code=
Line 381: Line 254:
}}
}}


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.
<div class="mw-translate-fuzzy">
Notare 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.
</div>


<div class="mw-translate-fuzzy">
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.
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.
</div>


[[PySide/it|Quì si trovano altre informazioni su PySide...]]
[[PySide/it|Quì si trovano altre informazioni su PySide...]]
{{Top}}
{{Top}}
<span id="Macros"></span>
<div class="mw-translate-fuzzy">
== Macro ==
==Macro==

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 [[Macros/it|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 [[Macros/it|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.
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.
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.
</div>


<span id="External_scripts"></span>
Now that you have a good understanding of the basics, where are we going to keep our Python scripts, and how are we going to launch them inside FreeCAD? There is an easy mechanism for that, called [[Macros|Macros]]. A macro is a Python script that can be added to a toolbar and launched via a mouse click. FreeCAD provides you with a simple text editor ({{MenuCommand|Macro → Macros... → Create}}) where you can write or paste scripts. Once the script is done, use {{MenuCommand|Tools → Customize... → Macros}} to define a button for it that can be added to toolbars.
==Script esterni==


Un metodo alternativo per creare, salvare ed eseguire i propri script Python consiste nel crearli al di fuori di FreeCAD, utilizzando un editor di propria scelta (ad esempio, Vim). Per eseguire il proprio script Python all'interno di FreeCAD, assicurarsi di salvarlo con l'estensione {{FileName|.py}}.
<div class="mw-translate-fuzzy">
Ora siete pronti per approfondire le conoscenze sull'uso degli script in FreeCAD.


Quindi usare {{MenuCommand|File → Apri}} per aprire il proprio script. Verrà caricato in una nuova scheda nell'[[Main_view_area/it|Area di visualizzazione principale]]. Si può eseguire lo script facendo clic sul pulsante {{Button|[[Image:Std_DlgMacroExecuteDirect.svg|16px]] [[Std_DlgMacroExecuteDirect/it|Esegui macro]]}}. Eventuali errori o output dello script verranno mostrati nella finestra [[Report_view/it|Report]].
Dirigetevi al [[Power users hub/it|Centro degli utenti esperti]]!

</div>
Quando si apportano e si salvano modifiche allo script già caricato, viene visualizzata una finestra di dialogo che chiede se si desidera ricaricare lo script modificato in FreeCAD.

Si può continuare alla pagina [[FreeCAD_Scripting_Basics/it|Script di base per FreeCAD]], oppure si può accedere a quella pagina e ad altre pagine pertinenti nell'[[Power_users_hub/it|Hub degli utenti esperti]].
{{Top}}
{{Top}}


{{Docnav
<div class="mw-translate-fuzzy">
{{docnav/it|[[Introduction to Python/it|Introduzione a Python]]|[[FreeCAD Scripting Basics/it|Basi di Script in FreeCAD]]}}
|[[Introduction_to_Python/it|Introduzione a Python]]
|[[FreeCAD_Scripting_Basics/it|Script di base per FreeCAD]]
</div>
}}


{{Powerdocnavi{{#translation:}}}}
{{Powerdocnavi{{#translation:}}}}

Latest revision as of 06:49, 10 August 2023

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 Modifica → Preferenze → Generale → Report e selezionare le due caselle:

  • Reindirizza l'output interno di Python alla finestra di report.
  • Reindirizza gli errori interni di Python alla finestra di report.

Quindi andare su Visualizza → Panelli e selezionare:

  • Report.

Scrivere codice Python

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

la console Python di FreeCAD

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

Inizio

Esplorare FreeCAD

Iniziamo creando un nuovo documento vuoto:

doc = FreeCAD.newDocument()

Se lo si digita nella console Python di FreeCAD, si nota che non appena si digita FreeCAD. 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 newDocument, dare un'occhiata alle altre opzioni.

Il meccanismo di completamento automatico della console Python di FreeCAD

Ora verrà creato il nostro nuovo documento. Questo equivale alla pressione del pulsante Nuovo 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 Modifica → Preferenze → Python → Macro su Mostra lo scritp dei comandi nella console python. 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:

doc.

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:

box = doc.addObject("Part::Box", "myBox")

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:

doc.recompute()

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

Ora esploriamo le caratteristiche del nostro box:

box.

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

box.Height

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

box.Height = 5

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

Inizio

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:

myvec = FreeCAD.Vector(2, 0, 0)
myvec.x
myvec.y
othervec = FreeCAD.Vector(0, 3, 0)
sumvec = myvec.add(othervec)

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

box.Placement
box.Placement.Base
box.Placement.Base = sumvec
 
otherpla = FreeCAD.Placement()
box.Placement = otherpla

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

Inizio

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 Object, il suo componente "geometrico", e un ViewObject, 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 Object. Mentre le sue proprietà visive, come il colore, lo spessore della linea, ecc. sono archiviate in ViewObject. Ciò corrisponde alle schede Dati e Vista nel pannello Proprietà. L'oggetto di visualizzazione di un oggetto è accessibile in questo modo:

vo = box.ViewObject

Ora puoi anche modificare le proprietà nella scheda Visualizza:

vo.Transparency = 80
vo.hide()
vo.show()

Quando si avvia FreeCAD, la console Python carica da subito due moduli di base: FreeCAD e FreeCADGui (a cui è possibile accedere anche tramite le loro scorciatoie App e Gui). 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 FreeCAD che FreeCADGui contengono un attributo ActiveDocument, che è il documento attualmente aperto. FreeCAD.ActiveDocument e FreeCADGui.ActiveDocument non sono tuttavia lo stesso oggetto. 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 aperta.

Inizio

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:

doc.supportedTypes()

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:

import Part
Part.

Ma parleremo più avanti del modulo Parte.

Inizio

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 (.stl, .obj) 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:

import Mesh
mymesh = Mesh.createSphere()
mymesh.Facets
mymesh.Points
 
meshobj = doc.addObject("Mesh::Feature", "MyMesh")
meshobj.Mesh = mymesh
doc.recompute()

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.

Per ulteriori informazioni leggere Script per Mesh...

Inizio

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:

import Part
myshape = Part.makeSphere(10)
myshape.Volume
myshape.Area

shapeobj = doc.addObject("Part::Feature", "MyShape")
shapeobj.Shape = myshape
doc.recompute()

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:

Part.show(myshape)

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

Approfondimento sugli script in Parte...

Inizio

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:

import Draft
rec = Draft.makeRectangle(5, 2)
mvec = FreeCAD.Vector(4, 4, 0)
Draft.move(rec, mvec)
Draft.move(box, mvec)

Inizio

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:

from PySide import QtGui
QtGui.QMessageBox.information(None, "Apollo program", "Houston, we have a problem")

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

Inizio

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.

Script esterni

Un metodo alternativo per creare, salvare ed eseguire i propri script Python consiste nel crearli al di fuori di FreeCAD, utilizzando un editor di propria scelta (ad esempio, Vim). Per eseguire il proprio script Python all'interno di FreeCAD, assicurarsi di salvarlo con l'estensione .py.

Quindi usare File → Apri per aprire il proprio script. Verrà caricato in una nuova scheda nell'Area di visualizzazione principale. Si può eseguire lo script facendo clic sul pulsante Esegui macro. Eventuali errori o output dello script verranno mostrati nella finestra Report.

Quando si apportano e si salvano modifiche allo script già caricato, viene visualizzata una finestra di dialogo che chiede se si desidera ricaricare lo script modificato in FreeCAD.

Si può continuare alla pagina Script di base per FreeCAD, oppure si può accedere a quella pagina e ad altre pagine pertinenti nell'Hub degli utenti esperti.

Inizio