Salome HOME
Minor DOC changes
[modules/smesh.git] / doc / salome / gui / SMESH / input / smeshpy_interface.doc
index 29ff056b79125addfb5905f84be623cdbc22be15..bbb287f2fb5433a0027ed990dacd3c64757a88e7 100644 (file)
@@ -7,125 +7,91 @@ be used for easy mesh creation and edition.
 
 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
+classes are grouped by their functionality.
 - <a href="smeshpy_doc/namespaces.html">Linear documentation</a> grouped only by classes, declared
-in the \ref smesh and StdMeshersDC Python packages.
+in the \ref smeshBuilder and \ref StdMeshersBuilder Python packages.
 
-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.
-
-As soon as mesh is created, it is possible to manage it via its own
-methods, described in \ref smesh.Mesh "class Mesh" documentation.
-
-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 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 \ref smesh_migration_page.
 
-To add meshing hypotheses, it is possible to use the functions provided by the
-algorithms interfaces.
+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.
 
-An example below demonstrates usage of the Python API for 3d mesh generation. 
+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.
+
+Class \ref smeshstudytools.SMeshStudyTools "SMeshStudyTools" provides several methods to manipulate mesh objects in Salome study. 
+
+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>
+
+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.
+
+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>
-
-\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
+\tui_script{3dmesh.py}
 
 Examples of Python scripts for 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_filters_page
 - \subpage tui_modifying_meshes_page
 - \subpage tui_transforming_meshes_page
-- \subpage tui_notebook_smesh_page
+- \subpage tui_viewing_meshes_page
+- \subpage tui_quality_controls_page
 - \subpage tui_measurements_page
-- \subpage tui_generate_flat_elements_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
 
 */