Salome HOME
Move "SpherePadding plugin user's guide" to a dedicated sub-page and add it to Help...
[modules/smesh.git] / doc / salome / gui / SMESH / input / smeshpy_interface.doc
index 6e2b421c9cb107e098ed6ae22ba0d967ffe5607d..1dc47c40700a8376a71b6627d82a119e42cafe80 100644 (file)
@@ -1,41 +1,97 @@
 /*!
 
-\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.
+- <a href="smeshpy_doc/namespaces.html">Linear documentation</a> grouped only by classes, declared
+in the \ref smeshBuilder and \ref StdMeshersBuilder 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.
+\n With SALOME 7.2, the Python interface for %Mesh has been slightly modified to offer new functionality.
+\n You may have to modify your scripts generated with SALOME 6 or older versions.
+\n Please see \subpage smesh_migration_page.
 
-\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.
+Class \ref smeshBuilder.smeshBuilder "smeshBuilder" 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 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).
+As soon as a mesh is created, it is possible to manage it via its own
+methods, described in class \ref smeshBuilder.Mesh "Mesh" documentation.
 
-\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.
+Class \ref smeshstudytools.SMeshStudyTools "SMeshStudyTools" provides several methods to manipulate mesh objects in Salome study. 
 
-\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),
+A usual workflow to generate a mesh on geometry is following:
+<ol>
+  <li>Create an instance of \ref smeshBuilder.smeshBuilder "smeshBuilder":
+    <pre>
+      from salome.smesh import smeshBuilder
+      smesh = smeshBuilder.New( salome.myStudy )
+    </pre></li>
+  <li>Create a \ref smeshBuilder.Mesh "mesh" object:
+    <pre>
+      mesh = \ref smeshBuilder.smeshBuilder.Mesh "smesh.Mesh( geometry )" 
+    </pre></li>
+  <li> Create and assign \ref basic_meshing_algos_page "algorithms" by
+  calling corresponding methods of the mesh. If a sub-shape is
+  provided as an argument, a \ref constructing_submeshes_page "sub-mesh"
+  is implicitly created on this sub-shape:
+    <pre>
+      regular1D = \ref smeshBuilder.Mesh.Segment "mesh.Segment"()
+      mefisto   = \ref smeshBuilder.Mesh.Triangle "mesh.Triangle"( smeshBuilder.MEFISTO )
+      # use other triangle algorithm on a face -- a sub-mesh appears in the mesh
+      netgen    = \ref smeshBuilder.Mesh.Triangle "mesh.Triangle"( smeshBuilder.NETGEN_1D2D, face )
+    </pre></li>
+  <li> Create and assign \ref about_hypo_page "hypotheses" by calling
+  corresponding methods of algorithms:
+    <pre>
+      segLen10 = \ref StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength "regular1D.LocalLength"( 10. )
+      maxArea  = \ref StdMeshersBuilder.StdMeshersBuilder_Segment.LocalLength "mefisto.MaxElementArea"( 100. )
+      netgen.SetMaxSize( 20. )
+      netgen.SetFineness( smeshBuilder.VeryCoarse )
+    </pre>
+  </li>
+  <li> \ref compute_anchor "Compute" the mesh (generate mesh nodes and elements):
+    <pre>
+      \ref Mesh.Compute "mesh.Compute"()
+    </pre>
+  </li>
+</ol>
 
-\n others are based on commercial meshers:
-         - GHS3D(3D).
+An easiest way to start with Python scripting is to do something in
+GUI and then to get a corresponding Python script via 
+<b> File > Dump Study </b> menu item. Don't forget that you can get
+all methods of any object in hand (e.g. a mesh group or a hypothesis)
+by calling \a dir() Python built-in function.
 
-\n \t To add hypotheses, please use interfaces, provided by the
-      assigned algorithms.
+All methods of the Mesh Group can be found in \ref tui_create_standalone_group sample script.
+
+An example below demonstrates usage of the Python API for 3d mesh
+generation and for retrieving information on mesh nodes and elements.
+
+\anchor example_3d_mesh
+<h2>Example of 3d mesh generation:</h2>
+\tui_script{3dmesh.py}
+
+Examples of Python scripts for Mesh operations are available by
+the following links:
+
+- \subpage tui_creating_meshes_page
+- \subpage tui_defining_hypotheses_page
+- \subpage tui_grouping_elements_page
+- \subpage tui_filters_page
+- \subpage tui_modifying_meshes_page
+- \subpage tui_transforming_meshes_page
+- \subpage tui_viewing_meshes_page
+- \subpage tui_quality_controls_page
+- \subpage tui_measurements_page
+- \subpage tui_work_on_objects_from_gui
+- \subpage tui_notebook_smesh_page
+- \subpage tui_cartesian_algo
+- \subpage tui_use_existing_faces
+- \subpage tui_prism_3d_algo
+- \subpage tui_generate_flat_elements_page
 
 */