Mesh Scripting/ro: Difference between revisions
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<languages/> |
<languages/> |
||
{{Docnav|FreeCAD Scripting Basics|Topological data scripting}} |
|||
⚫ | |||
<div class="mw-translate-fuzzy"> |
<div class="mw-translate-fuzzy"> |
||
Line 7: | Line 8: | ||
</div> |
</div> |
||
To get access to the {{incode|Mesh}} module you have to import it first: |
|||
⚫ | |||
First of all you have to import the Mesh module: |
|||
{{Code|code= |
{{Code|code= |
||
import Mesh |
import Mesh |
||
}} |
}} |
||
după ce aveți acces la un modul Mesh și clasa Mesh care ușurează funcțiile FreeCAD C++ Mesh-Kernel. |
|||
⚫ | |||
=== Creație și Încărcare === |
=== Creație și Încărcare === |
||
Pentru a crea un obiectr vid Plasă utilizați construcția standard: |
Pentru a crea un obiectr vid Plasă utilizați construcția standard: |
||
⚫ | |||
To create an empty mesh object just use the standard constructor: |
|||
{{Code|code= |
{{Code|code= |
||
Line 21: | Line 25: | ||
}} |
}} |
||
<div class="mw-translate-fuzzy"> |
|||
Puteți crea un obiect din fișierul |
Puteți crea un obiect din fișierul |
||
</div> |
|||
{{Code|code= |
{{Code|code= |
||
mesh = Mesh.Mesh( |
mesh = Mesh.Mesh("D:/temp/Something.stl") |
||
}} |
}} |
||
⚫ | |||
(o listă a tipurilor de fișiere compatibile poate fi găsită sub 'Meshes' [[Feature_list#IO|here]].) |
|||
⚫ | |||
Sau o creați dintr-un set de triunghiuri descris de către punctele de colț: |
Sau o creați dintr-un set de triunghiuri descris de către punctele de colț: |
||
{{Code|code= |
{{Code|code= |
||
triangles = [ |
|||
# triangle 1 |
# triangle 1 |
||
[-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], |
||
#triangle 2 |
#triangle 2 |
||
[-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], |
||
] |
] |
||
meshObject = Mesh.Mesh(triangles) |
|||
Mesh.show( |
Mesh.show(meshObject) |
||
}} |
}} |
||
<div class="mw-translate-fuzzy"> |
|||
Mesh-Kernel are grijă de o structură topologică corectă a datelor prin sortare |
Mesh-Kernel are grijă de o structură topologică corectă a datelor prin sortare |
||
împreună a punctelor și marginilor coincidente. |
împreună a punctelor și marginilor coincidente. |
||
</div> |
|||
{{Top}} |
|||
Mai târziu veți vedea cum se poate testa și examina datele Plasei/Mesh. |
|||
<div class="mw-translate-fuzzy"> |
|||
=== Modelare === |
=== Modelare === |
||
Pentru a crea geometrii obișnuite, puteți utiliza scriptul Python BuildRegularGeoms.py. |
Pentru a crea geometrii obișnuite, puteți utiliza scriptul Python BuildRegularGeoms.py. |
||
</div> |
|||
To create regular geometries you can use one of the {{incode|create*()}} methods. A torus, for instance, can be created as follows: |
|||
{{Code|code= |
|||
import BuildRegularGeoms |
|||
}} |
|||
Acest script oferă metode pentru definirea corpurilor simple rotative cum ar fi sfere, elipsoide, cilindri, toroide și conuri. Și are de asemenea o metodă de a crea un cub simplu. |
|||
Pentru a crea un toroid, de exemplu, se poate face după cum urmează: |
|||
{{Code|code= |
{{Code|code= |
||
m = Mesh.createTorus(8.0, 2.0, 50) |
|||
Mesh.show(m) |
|||
}} |
}} |
||
<div class="mw-translate-fuzzy"> |
|||
Primii doi parametri definesc razele toroidului, iar al treilea parametru este un factor de subeșantionare pentru câte triunghiuri sunt create. Cu cât această valoare este mai mare cu atât este mai lină și cu cât este mai groasă corpul. |
Primii doi parametri definesc razele toroidului, iar al treilea parametru este un factor de subeșantionare pentru câte triunghiuri sunt create. Cu cât această valoare este mai mare cu atât este mai lină și cu cât este mai groasă corpul. |
||
Clasa Mesh oferă un set de funcții booleene care pot fi utilizate în scopuri de modelare. Oferă uniune, intersecție și diferență de două obiecte de plasă. |
Clasa Mesh oferă un set de funcții booleene care pot fi utilizate în scopuri de modelare. Oferă uniune, intersecție și diferență de două obiecte de plasă. |
||
</div> |
|||
The {{incode|Mesh}} module also provides three Boolean methods: {{incode|union()}}, {{incode|intersection()}} and {{incode|difference()}}: |
|||
{{Code|code= |
{{Code|code= |
||
Line 79: | Line 82: | ||
}} |
}} |
||
<div class="mw-translate-fuzzy"> |
|||
În cele din urmă, un exemplu complet al intersecției între o sferă și un cilindru care intersectează sfera. |
În cele din urmă, un exemplu complet al intersecției între o sferă și un cilindru care intersectează sfera. |
||
</div> |
|||
{{Code|code= |
{{Code|code= |
||
import |
import FreeCAD, Mesh |
||
cylA = Mesh.createCylinder(2.0, 10.0, True, 1.0, 36) |
|||
cylB = Mesh.createCylinder(1.0, 12.0, True, 1.0, 36) |
|||
cylB.Placement.Base = (FreeCAD.Vector(-1, 0, 0)) # move cylB to avoid co-planar faces |
|||
diff = sphere |
|||
pipe = cylA |
|||
pipe = pipe.difference(cylB) |
|||
d = FreeCAD.newDocument() |
|||
pipe.flipNormals() # somehow required |
|||
⚫ | |||
doc = FreeCAD.ActiveDocument |
|||
⚫ | |||
⚫ | |||
obj.Mesh = pipe |
|||
⚫ | |||
}} |
}} |
||
{{Top}} |
|||
=== Examinând și Testând === |
|||
=== Scrieți-vă proprii algoritmi === |
|||
=== Exportare === |
|||
Puteți scrie o plasă la un modul python: |
|||
{{Code|code= |
|||
m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py") |
|||
import SavedMesh |
|||
m2 = Mesh.Mesh(SavedMesh.faces) |
|||
}} |
|||
=== Interfața grafică === |
|||
<div class="mw-translate-fuzzy"> |
<div class="mw-translate-fuzzy"> |
||
=== Odds and Ends === |
=== Odds and Ends === |
||
Line 114: | Line 107: | ||
</div> |
</div> |
||
An extensive, though hard to use, source of mesh related scripting are the unit test scripts of the {{incode|Mesh}} module. |
|||
⚫ | |||
In these 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]. |
|||
<div class="mw-translate-fuzzy"> |
<div class="mw-translate-fuzzy"> |
||
⚫ | |||
{{docnav|FreeCAD Scripting Basics|Topological data scripting}} |
|||
</div> |
</div> |
||
{{Top}} |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
{{clear}} |
{{clear}} |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ |
Latest revision as of 08:28, 5 September 2021
Introducere
Înainte de toate trebuie să importați un modul Mesh:
To get access to the Mesh
module you have to import it first:
import Mesh
Creație și Încărcare
Pentru a crea un obiectr vid Plasă utilizați construcția standard:
To create an empty mesh object just use the standard constructor:
mesh = Mesh.Mesh()
Puteți crea un obiect din fișierul
mesh = Mesh.Mesh("D:/temp/Something.stl")
Sau o creați dintr-un set de triunghiuri descris de către punctele de colț:
triangles = [
# 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],
]
meshObject = Mesh.Mesh(triangles)
Mesh.show(meshObject)
Mesh-Kernel are grijă de o structură topologică corectă a datelor prin sortare
împreună a punctelor și marginilor coincidente.
Modelare
Pentru a crea geometrii obișnuite, puteți utiliza scriptul Python BuildRegularGeoms.py.
To create regular geometries you can use one of the create*()
methods. A torus, for instance, can be created as follows:
m = Mesh.createTorus(8.0, 2.0, 50)
Mesh.show(m)
Primii doi parametri definesc razele toroidului, iar al treilea parametru este un factor de subeșantionare pentru câte triunghiuri sunt create. Cu cât această valoare este mai mare cu atât este mai lină și cu cât este mai groasă corpul. Clasa Mesh oferă un set de funcții booleene care pot fi utilizate în scopuri de modelare. Oferă uniune, intersecție și diferență de două obiecte de plasă.
The Mesh
module also provides three Boolean methods: union()
, intersection()
and difference()
:
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
În cele din urmă, un exemplu complet al intersecției între o sferă și un cilindru care intersectează sfera.
import FreeCAD, Mesh
cylA = Mesh.createCylinder(2.0, 10.0, True, 1.0, 36)
cylB = Mesh.createCylinder(1.0, 12.0, True, 1.0, 36)
cylB.Placement.Base = (FreeCAD.Vector(-1, 0, 0)) # move cylB to avoid co-planar faces
pipe = cylA
pipe = pipe.difference(cylB)
pipe.flipNormals() # somehow required
doc = FreeCAD.ActiveDocument
obj = d.addObject("Mesh::Feature", "Pipe")
obj.Mesh = pipe
doc.recompute()
Odds and Ends
O extensie (deși greu de folosit) de scripting Mesh sunt script-urile de testare a Mesh-Module. În această unitate se fac toate testele de compilare și sunt manipulate toate proprietățile și atributele. Cine are curaj îndeajuns, poate privi la Unit Test module.
An extensive, though hard to use, source of mesh related scripting are the unit test scripts of the Mesh
module.
In these 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.
See also Mesh API
- FreeCAD scripting: Python, Introduction to Python, Python scripting tutorial, FreeCAD Scripting Basics
- Modules: Builtin modules, Units, Quantity
- Workbenches: Workbench creation, Gui Commands, Commands, Installing more workbenches
- Meshes and Parts: Mesh Scripting, Topological data scripting, Mesh to Part, PythonOCC
- Parametric objects: Scripted objects, Viewproviders (Custom icon in tree view)
- Scenegraph: Coin (Inventor) scenegraph, Pivy
- Graphical interface: Interface creation, Interface creation completely in Python (1, 2, 3, 4, 5), PySide, PySide examples beginner, intermediate, advanced
- Macros: Macros, How to install macros
- Embedding: Embedding FreeCAD, Embedding FreeCADGui
- Other: Expressions, Code snippets, Line drawing function, FreeCAD vector math library (deprecated)
- Hubs: User hub, Power users hub, Developer hub
- Miscellaneous: Import mesh, Export mesh, Create mesh from shape, Regular solid, Unwrap Mesh, Unwrap Face
- Modifying: Harmonize normals, Flip normals, Fill holes, Close hole, Add triangle, Remove components, Remove components by hand, Smooth, Refinement, Decimation, Scale
- Boolean: Union, Intersection, Difference
- Cutting: Cut mesh, Trim mesh, Trim mesh with a plane, Create section from mesh and plane, Cross-sections
- Components and segments: Merge, Split by components, Create mesh segments, Create mesh segments from best-fit surfaces