Skrytpy w Środowisku Siatek

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Mesh Scripting and the translation is 100% complete.
Other languages:
Bahasa Indonesia • ‎Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎polski • ‎română • ‎svenska • ‎čeština • ‎русский • ‎中文(中国大陆)‎

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.

Modelowanie

Do tworzenia regularnych geometrii można użyć skryptu Python 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()

Badanie i testowanie

Napisz swoje własne Algorytmy

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)

Sprawy dotyczące Gui

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.

Zobacz również API dla Mesh