Salome HOME
PR: distributed geom and smesh scripts: first step
[modules/smesh.git] / doc / salome / gui / SMESH / input / smeshpy_interface.doc
index 6e2b421c9cb107e098ed6ae22ba0d967ffe5607d..b2b48795433139e409648bd3b7b45957bb352437 100644 (file)
 /*!
 
-\page smeshpy_interface_page Python interface smesh.py
+\page smeshpy_interface_page Python interface
 
-\n Python package smesh defines several classes, destined for easy and
-clear mesh creation and edition (see the \ref introduction_to_mesh_python_page "example").
+Python API for SALOME %Mesh module defines several classes that can
+be used for easy mesh creation and edition.
 
-\n Please draw your attention to the below notes before address to
-the \ref smeshDC "documentation for smesh.py"
+Documentation for SALOME %Mesh module Python API is available in two forms:
+- <a href="smeshpy_doc/modules.html">Structured documentation</a>, where all methods and
+classes are grouped by their functionality, like it is done in the GUI documentation
+- <a href="smeshpy_doc/namespaces.html">Linear documentation</a> grouped only by classes, declared
+in the \ref smesh and StdMeshersDC Python packages.
 
-\n 1. The main page of the \ref smeshDC "documentation for smesh.py"
-      contains a list of data structures and a list of functions,
-      provided by the package smesh.py. The first item in the data
-      structures list (\ref smeshDC::smeshDC "class smesh") also
-      represents documentation for methods of the package smesh.py itself.
+Python package \ref smesh provides an interface to create and handle
+meshes. It can be used to create an empty mesh or to import mesh from the data file.
 
-\n 2. Package smesh.py gives interface to create and manage
-      meshes. Please, use it to create an empty mesh or to import
-      it from data file.
+As soon as mesh is created, it is possible to manage it via its own
+methods, described in \ref smesh.Mesh "class Mesh" documentation.
 
-\n 3. Once you have created a mesh, you can manage it via its own
-      methods. See \ref smeshDC::Mesh "class Mesh" documentation for
-      them (it is also accessible by the second item "class Mesh" in the
-      data structures list).
+Class \ref smesh.Mesh "Mesh" allows assigning algorithms to a mesh.
+Please note that some algorithms, included in the standard SALOME
+distribution are always available. Python package \ref StdMeshersDC
+provides an interface for standard meshing algorithms included into
+the SALOME %Mesh module distribution, like:
+- REGULAR (1D)
+- COMPOSITE (1D)
+- MEFISTO (2D)
+- Quadrangle (2D)
+- Hexa(3D)
+- etc ...
 
-\n 4. Class Mesh allows to assign algorithms to a mesh.
-\n \t Please note, that there are always available some algorithms,
-      included in standard Salome installation:
-         - REGULAR(1D), COMPOSITE(1D), MEFISTO(2D), Quadrangle(2D), Hexa(3D), etc.
+To add meshing hypotheses, it is possible to use the functions provided by the
+algorithms interfaces.
 
-\n Also there are some algorithms, which can be installed optionally,
-\n some of them are based on open-source meshers:
-         - NETGEN(1D-2D,2D,1D-2D-3D,3D),
+An example below demonstrates usage of the Python API for 3d mesh generation. 
 
-\n others are based on commercial meshers:
-         - GHS3D(3D).
+\anchor example_3d_mesh
+<h2>Example of 3d mesh generation:</h2>
 
-\n \t To add hypotheses, please use interfaces, provided by the
-      assigned algorithms.
+\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 Mesh operations are available by
+the following links:
+
+- \subpage tui_creating_meshes_page
+- \subpage tui_cartesian_algo
+- \subpage tui_use_existing_faces
+- \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
 
 */