smesh/doc/salome/gui/SMESH/input/smeshpy_interface.doc

139 lines
3.5 KiB
Plaintext

/*!
\page smeshpy_interface_page Python interface
Python package smesh defines several classes, destined for easy and
clear mesh creation and edition.
Documentation for smesh package is available in two forms:
The <a href="smeshpy_doc/modules.html"> structured
documentation for smesh package</a>, where all methods and
classes are grouped by their functionality, like it is done in the GUI documentation
and the \ref smeshDC "linear documentation for smesh package"
grouped only by classes, declared in the smesh.py file.
The main page of the \ref smeshDC "linear documentation for smesh package"
contains a list of data structures and a list of
functions, provided by the package smesh.py. The first item in
the list of data structures (\ref smeshDC::smeshDC "class smesh")
also represents documentation for the methods of the package smesh.py itself.
The package smesh.py provides an interface to create and handle
meshes. Use it to create an empty mesh or to import it from the data file.
Once a mesh has been created, it is possible to manage it via its own
methods, described at \ref smeshDC::Mesh "class Mesh" documentation
(it is also accessible by the second item "class Mesh" in the list of data structures).
Class \b Mesh allows assigning algorithms to a mesh.
Please note, that some algorithms, included in the standard SALOME
distribution are always available:
- REGULAR (1D)
- COMPOSITE (1D)
- MEFISTO (2D)
- Quadrangle (2D)
- Hexa(3D)
- etc...
To add hypotheses, use the interfaces, provided by the assigned
algorithms.
Below you can see an example of usage of the package smesh for 3d mesh generation.
\anchor example_3d_mesh
<h2>Example of 3d mesh generation:</h2>
\code
from geompy import *
import smesh
###
# Geometry: an assembly of a box, a cylinder and a truncated cone
# meshed with tetrahedral
###
# Define values
name = "ex21_lamp"
cote = 60
section = 20
size = 200
radius_1 = 80
radius_2 = 40
height = 100
# Build a box
box = MakeBox(-cote, -cote, -cote, +cote, +cote, +cote)
# Build a cylinder
pt1 = MakeVertex(0, 0, cote/3)
di1 = MakeVectorDXDYDZ(0, 0, 1)
cyl = MakeCylinder(pt1, di1, section, size)
# Build a truncated cone
pt2 = MakeVertex(0, 0, size)
cone = MakeCone(pt2, di1, radius_1, radius_2, height)
# Fuse
box_cyl = MakeFuse(box, cyl)
piece = MakeFuse(box_cyl, cone)
# Add to the study
addToStudy(piece, name)
# Create a group of faces
group = CreateGroup(piece, ShapeType["FACE"])
group_name = name + "_grp"
addToStudy(group, group_name)
group.SetName(group_name)
# Add faces to the group
faces = SubShapeAllIDs(piece, ShapeType["FACE"])
UnionIDs(group, faces)
###
# Create a mesh
###
# Define a mesh on a geometry
tetra = smesh.Mesh(piece, name)
# Define 1D hypothesis
algo1d = tetra.Segment()
algo1d.LocalLength(10)
# Define 2D hypothesis
algo2d = tetra.Triangle()
algo2d.LengthFromEdges()
# Define 3D hypothesis
algo3d = tetra.Tetrahedron()
algo3d.MaxElementVolume(100)
# Compute the mesh
tetra.Compute()
# Create a groupe of faces
tetra.Group(group)
\endcode
Examples of Python scripts for all Mesh operations are available by
the following links:
- \subpage tui_creating_meshes_page
- \subpage tui_cartesian_algo
- \subpage tui_viewing_meshes_page
- \subpage tui_defining_hypotheses_page
- \subpage tui_quality_controls_page
- \subpage tui_filters_page
- \subpage tui_grouping_elements_page
- \subpage tui_modifying_meshes_page
- \subpage tui_transforming_meshes_page
- \subpage tui_notebook_smesh_page
- \subpage tui_measurements_page
- \subpage tui_generate_flat_elements_page
- \subpage tui_work_on_objects_from_gui
*/