Mesh Scripting/it: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
Line 3: Line 3:
{{docnav/it|[[FreeCAD Scripting Basics/it|Basi di Script in FreeCAD]]|[[Topological data scripting/it|Script di dati topologici]]}}
{{docnav/it|[[FreeCAD Scripting Basics/it|Basi di Script in FreeCAD]]|[[Topological data scripting/it|Script di dati topologici]]}}
</div>
</div>

{{TOCright}}


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
Line 10: Line 12:
</div>
</div>


{{TOCright}}
First of all you have to import the Mesh module:
First of all you have to import the Mesh module:

{{Code|code=
{{Code|code=
import Mesh
import Mesh
}}
}}

Dopo questa operazione si ha accesso al modulo Mesh e alla classe Mesh che offrono le funzioni del Kernel C++ Mesh di FreeCAD.
Dopo questa operazione si ha accesso al modulo Mesh e alla classe Mesh che offrono le funzioni del Kernel C++ Mesh di FreeCAD.


<div class="mw-translate-fuzzy">
=== Creazione e caricamento ===
=== Creazione e caricamento ===


Per creare un oggetto mesh vuoto basta usare il costruttore standard:
Per creare un oggetto mesh vuoto basta usare il costruttore standard:
</div>


{{Code|code=
{{Code|code=
Line 52: Line 57:
Più avanti si vedrà come è possibile verificare ed esaminare i dati mesh.
Più avanti si vedrà come è possibile verificare ed esaminare i dati mesh.


<div class="mw-translate-fuzzy">
=== Modellazione ===
=== Modellazione ===


Per creare delle geometrie regolari è possibile utilizzare lo script Python BuildRegularGeoms.py.
Per creare delle geometrie regolari è possibile utilizzare lo script Python BuildRegularGeoms.py.
</div>

To create regular geometries you can use the Python script BuildRegularGeoms.py.


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


<div class="mw-translate-fuzzy">
==== Analisi e Test ====
==== Analisi e Test ====
</div>


<div class="mw-translate-fuzzy">
==== Scrivere i propri algoritmi ====
==== Scrivere i propri algoritmi ====
</div>


<div class="mw-translate-fuzzy">
=== Esportazione ===
=== Esportazione ===


Si può anche scrivere l'oggetto mesh in un modulo python:
Si può anche scrivere l'oggetto mesh in un modulo python:
</div>


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


<div class="mw-translate-fuzzy">
==== Aspetti correlati alla GUI ====
==== Aspetti correlati alla GUI ====
</div>


<div class="mw-translate-fuzzy">
<div class="mw-translate-fuzzy">
Line 119: Line 136:
Una nutrita (anche se difficile da usare) libreria di script riferiti a Mesh sono gli script dell'unita di test del Modulo Mesh. In questa unit test sono letteralmente chiamati tutti i metodi e sono ottimizzate tutte le proprietà e gli attributi. Quindi, se siete abbastanza coraggiosi, date un'occhiata al [http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Mesh/App/MeshTestsApp.py?view=markup modulo unit test].
Una nutrita (anche se difficile da usare) libreria di script riferiti a Mesh sono gli script dell'unita di test del Modulo Mesh. In questa unit test sono letteralmente chiamati tutti i metodi e sono ottimizzate tutte le proprietà e gli attributi. Quindi, se siete abbastanza coraggiosi, date un'occhiata al [http://free-cad.svn.sourceforge.net/viewvc/free-cad/trunk/src/Mod/Mesh/App/MeshTestsApp.py?view=markup modulo unit test].
</div>
</div>

An extensive (though hard to use) source of Mesh related scripting are the unit test scripts of the Mesh-Module.
In this unit tests literally all methods are called and all properties/attributes are tweaked.
So if you are bold enough, take a look at the [https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Mesh/App/MeshTestsApp.py Unit Test module].


Vedere anche [[Mesh_API/it|Mesh API]]
Vedere anche [[Mesh_API/it|Mesh API]]
Line 125: Line 146:
{{docnav/it|[[FreeCAD Scripting Basics/it|Basi di Script in FreeCAD]]|[[Topological data scripting/it|Script di dati topologici]]}}
{{docnav/it|[[FreeCAD Scripting Basics/it|Basi di Script in FreeCAD]]|[[Topological data scripting/it|Script di dati topologici]]}}
</div>
</div>


{{clear}}


{{Mesh Tools navi{{#translation:}}}}
{{Mesh Tools navi{{#translation:}}}}
{{Powerdocnavi{{#translation:}}}}

{{Userdocnavi{{#translation:}}}}

[[Category:Poweruser Documentation{{#translation:}}]]

[[Category:Python Code{{#translation:}}]]
[[Category:Python Code{{#translation:}}]]
{{clear}}

Revision as of 11:50, 23 May 2020

Introduzione

Prima di tutto si deve importare il modulo Mesh:

First of all you have to import the Mesh module:

import Mesh

Dopo questa operazione si ha accesso al modulo Mesh e alla classe Mesh che offrono le funzioni del Kernel C++ Mesh di FreeCAD.

Creazione e caricamento

Per creare un oggetto mesh vuoto basta usare il costruttore standard:

mesh = Mesh.Mesh()

Inoltre è possibile creare un oggetto da un file

mesh = Mesh.Mesh('D:/temp/Something.stl')

Un elenco di tipi di file compatibili è disponibile in questa pagina al paragrafo 'Mesh'.

Oppure crearlo tramite un gruppo di triangoli descritti dai loro vertici:

planarMesh = [
# triangle 1
[-0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],[-0.5000,0.5000,0.0000],
#triangle 2
[-0.5000,-0.5000,0.0000],[0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],
]
planarMeshObject = Mesh.Mesh(planarMesh)
Mesh.show(planarMeshObject)

Il Kernel Mesh si occupa di creare una corretta struttura topologica dei dati individuando i punti e i bordi coincidenti.

Più avanti si vedrà come è possibile verificare ed esaminare i dati mesh.

Modellazione

Per creare delle geometrie regolari è possibile utilizzare lo script Python BuildRegularGeoms.py.

To create regular geometries you can use the Python script BuildRegularGeoms.py.

import BuildRegularGeoms

Questo script fornisce i metodi per definire semplici corpi di rotazione, tipo le sfere, gli ellissoidi, i cilindri, i coni e i toroidi. Inoltre ha anche un metodo per creare un semplice cubo.

Ad esempio, per creare un toroide si può fare nel modo seguente:

t = BuildRegularGeoms.Toroid(8.0, 2.0, 50) # list with several thousands triangles
m = Mesh.Mesh(t)

I primi due parametri definiscono i raggi del toroide e il terzo parametro è un fattore di sub-campionamento che stabilisce quanti triangoli vengono creati. Maggiore è questo valore e più il corpo è liscio, più questo valore è piccolo e più il corpo è grossolano (sfaccettato).

La classe Mesh fornisce una serie di funzioni booleane che possono essere utilizzate per operazioni di modellazione. Essa fornisce l'unione, l'intersezione e la differenza tra due oggetti mesh.

m1, m2              # are the input mesh objects
m3 = Mesh.Mesh(m1)  # create a copy of m1
m3.unite(m2)        # union of m1 and m2, the result is stored in m3
m4 = Mesh.Mesh(m1)
m4.intersect(m2)    # intersection of m1 and m2
m5 = Mesh.Mesh(m1)
m5.difference(m2)   # the difference of m1 and m2
m6 = Mesh.Mesh(m2)
m6.difference(m1)   # the difference of m2 and m1, usually the result is different to m5

Ecco infine, un esempio completo che calcola l'intersezione tra una sfera e un cilindro che interseca la sfera.

import Mesh, BuildRegularGeoms
sphere = Mesh.Mesh( BuildRegularGeoms.Sphere(5.0, 50) )
cylinder = Mesh.Mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0, 50) )
diff = sphere
diff = diff.difference(cylinder)
d = FreeCAD.newDocument()
d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff
d.recompute()

Analisi e Test

Scrivere i propri algoritmi

Esportazione

Si può anche scrivere l'oggetto mesh in un modulo python:

m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py")
import SavedMesh
m2 = Mesh.Mesh(SavedMesh.faces)

Aspetti correlati alla GUI

Prove

Una nutrita (anche se difficile da usare) libreria di script riferiti a Mesh sono gli script dell'unita di test del Modulo Mesh. In questa unit test sono letteralmente chiamati tutti i metodi e sono ottimizzate tutte le proprietà e gli attributi. Quindi, se siete abbastanza coraggiosi, date un'occhiata al modulo unit test.

An extensive (though hard to use) source of Mesh related scripting are the unit test scripts of the Mesh-Module. In this unit tests literally all methods are called and all properties/attributes are tweaked. So if you are bold enough, take a look at the Unit Test module.

Vedere anche Mesh API