Skrytpy w środowisku Siatek

From FreeCAD Documentation
Revision as of 08:46, 28 May 2020 by FuzzyBot (talk | contribs) (Updating to match new version of source page)

Wprowadzenie

Przede wszystkim trzeba zaimportować Środowisko pracy Mesh:

import Mesh

Dzięki temu masz dostęp do Środowiska Mesh i klasy Mesh, które ułatwiają korzystanie z funkcji FreeCAD C++ Mesh-Kernel.

Tworzenie i wprowadzanie

Aby utworzyć pusty obiekt siatki wystarczy użyć standardowego konstruktora:

mesh = Mesh.Mesh()

Możesz również utworzyć obiekt na podstawie pliku

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

(Listę kompatybilnych typów plików Środowiska Meshes można znaleźć tutaj).

Lub stwórz go z zestawu trójkątów opisanych przez ich punkty narożne:

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)

Jądro Mesh zajmuje się tworzeniem poprawnej topologicznej struktury danych, sortując razem zbieżne punkty i krawędzie.

Później zobaczysz, jak możesz testować i badać dane siatki.

top

Modelowanie

Do tworzenia regularnych geometrii można użyć skryptu Python BuildRegularGeoms.py.

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

import BuildRegularGeoms

Ten skrypt dostarcza metod do definiowania prostych brył obrotowych takich jak kule, elipsy, cylindry, toroidy i stożki. Posiada on również metodę tworzenia prostego sześcianu. Aby utworzyć na przykład toroid, można postępować następujący sposób:

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

Pierwsze dwa parametry określają promienie toroidu, a trzeci parametr jest współczynnikiem podpróbkowania dla liczby utworzonych trójkątów. Im wyższa jest ta wartość, tym gładsza i niższa jest chropowatość korpusu bryły. Klasa Mesh zapewnia zestaw funkcji logicznych, które można wykorzystać do celów modelowania. Zapewnia połączenie, przecięcie i różnicę dwóch obiektów siatki.

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

Wreszcie pełny przykład, który oblicza przecięcie kuli z walcem przecinającym tą kulę.

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

top

Eksportowanie

Możesz nawet zapisać siatkę do modułu Python:

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

top

Możliwości i zakończenie

Rozległym (choć trudnym w użyciu) źródłem skryptów związanych z siatkami są skrypty testów jednostkowych Środowiska pracy Mesh. W testach jednostkowych dosłownie wszystkie metody są wywoływane, i wszystkie właściwości / atrybuty są modyfikowane. Więc jeśli jesteś wystarczająco odważny, spójrz na Moduł testowy jednostek.

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.

Zobacz również API dla Mesh

top