Mesh Scripting/es

Introducción
En primer lugar usted tiene que importar el módulo Malla: import Mesh

Después de eso, ya tendrá acceso al módulo Malla y la clase Malla, que ofrecen las funciones del nucleo FreeCAD C++ Mesh-Kernel.

Creación y Carga
Para crear un objeto malla vacío sólo tiene que utilizar el constructor estándar: malla = Mesh.Mesh También puede crear un objeto desde un archivo malla = Mesh.Mesh ('D: / temp / Something.stl') Los formatos de archivos que puede utilizar para construir una malla se indican here.

O tambien puede crear la malla a partir de un conjunto de triángulos descrito por sus vértices:

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

El núcleo de mallas, Mesh-Kernel, se encarga de crear una estructura topológica de datos correcta, ordenando juntos puntos coincidentes y bordes. Más adelante podrá ver cómo puede examinar y revisar los datos de la malla.

Modelado
Para crear geometrías regulares puede utilizar el script Python BuildRegularGeoms.py. import BuildRegularGeoms Esta secuencia de comandos proporciona métodos para definir cuerpos de revolución sencillos, como esferas, elipsoides, cilindros, toroides y conos. Y también tiene un método para crear un cubo simple. Para crear un toroide, por ejemplo, se puede hacer de la siguiente manera:

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

Los dos primeros parámetros definen los radios del toroide y el tercer parámetro es un factor de submuestreo relacionado con el número de triángulos que se han de crear. Cuanto mayor sea este valor, más suave es la forma y mejor acabado tiene el cuerpo.

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

Por último, un ejemplo completo que calcula la intersección entre una esfera y un cilindro que corta a la esfera.

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.difference(cylinder) d = FreeCAD.newDocument d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff d.recompute

Exportación
Usted puede incluso escribir la malla en un módulo Python:

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

Ajustes y pruebas
Una extensa, aunque dificil de usar, librería de guiones relacionados con malla son los scripts de prueba del módulo Malla. En esta unidad, literalmente todos los métodos son invocados, y se ajustan todas las propiedades y atributos. Así que si es lo suficientemente audaz, eche un vistazo a Unit Test module.