Salome HOME
23352: [CEA] Order and naming of meshing algorithms
authoreap <eap@opencascade.com>
Mon, 3 Oct 2016 14:53:47 +0000 (17:53 +0300)
committereap <eap@opencascade.com>
Mon, 3 Oct 2016 14:53:47 +0000 (17:53 +0300)
39 files changed:
doc/salome/examples/a3DmeshOnModified2Dmesh.py
doc/salome/examples/defining_hypotheses_ex01.py
doc/salome/examples/defining_hypotheses_ex02.py
doc/salome/examples/defining_hypotheses_ex13.py
doc/salome/examples/prism_3d_algo.py
doc/salome/gui/SMESH/images/pref21.png [changed mode: 0755->0644]
doc/salome/gui/SMESH/images/radial_prism_mesh.png [new file with mode: 0644]
doc/salome/gui/SMESH/input/1d_meshing_hypo.doc
doc/salome/gui/SMESH/input/2d_meshing_hypo.doc
doc/salome/gui/SMESH/input/about_hypo.doc
doc/salome/gui/SMESH/input/additional_hypo.doc
doc/salome/gui/SMESH/input/basic_meshing_algos.doc
doc/salome/gui/SMESH/input/constructing_meshes.doc
doc/salome/gui/SMESH/input/display_mode.doc
doc/salome/gui/SMESH/input/double_nodes_control.doc
doc/salome/gui/SMESH/input/mesh_infos.doc
doc/salome/gui/SMESH/input/mesh_preferences.doc
doc/salome/gui/SMESH/input/prism_3d_algo.doc
doc/salome/gui/SMESH/input/quad_ijk_algo.doc
doc/salome/gui/SMESH/input/radial_prism_algo.doc
doc/salome/gui/SMESH/input/radial_quadrangle_1D2D_algo.doc
doc/salome/gui/SMESH/input/tui_defining_hypotheses.doc
doc/salome/gui/SMESH/input/tui_prism_3d_algo.doc
doc/salome/gui/SMESH/input/viewing_meshes_overview.doc
resources/StdMeshers.xml.in
src/SMDS/SMDS_Mesh.cxx
src/SMDS/SMDS_MeshCell.hxx
src/SMESHDS/SMESHDS_Mesh.cxx
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_Hypotheses.cxx
src/SMESHGUI/SMESHGUI_Hypotheses.h
src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx
src/SMESHGUI/SMESHGUI_HypothesesUtils.h
src/SMESHGUI/SMESHGUI_MeshDlg.cxx
src/SMESHGUI/SMESHGUI_MeshDlg.h
src/SMESHGUI/SMESHGUI_MeshOp.cxx
src/SMESHGUI/SMESHGUI_XmlHandler.cxx
src/SMESHGUI/SMESH_msg_en.ts
src/StdMeshers/StdMeshers_Quadrangle_2D.cxx

index 7fcdcac..ecac487 100644 (file)
@@ -10,7 +10,7 @@ geompy = geomBuilder.New(salome.myStudy)
 # The requirement is to have a surface mesh on the cube comprised of
 # triangles of exactly the same size arranged in a grid pattern.
 #
-# To fulfill this requirement we mesh the box using Quadrangle (Mapping)
+# To fulfill this requirement we mesh the box using Quadrangle: Mapping
 # meshing algorithm, split quadrangles into triangles and then generate
 # tetrahedrons.
 
index 1d5d281..c9f02bc 100644 (file)
@@ -1,4 +1,4 @@
-# Arithmetic 1D and Geometric Progression
+# Arithmetic Progression and Geometric Progression
 
 import salome
 salome.salome_init()
index 3662d56..5724045 100644 (file)
@@ -1,4 +1,4 @@
-# Deflection 1D and Number of Segments
+# Deflection and Number of Segments
 
 import salome
 salome.salome_init()
index e3eeee8..339cd20 100644 (file)
@@ -1,4 +1,4 @@
-# Radial Quadrangle 1D2D example
+# Radial Quadrangle 1D-2D example
 
 import salome
 salome.salome_init()
index e518225..5aa283e 100644 (file)
@@ -1,4 +1,4 @@
-# Usage of 3D Extrusion meshing algorithm
+# Usage of Extrusion 3D meshing algorithm
 
 import salome
 salome.salome_init()
old mode 100755 (executable)
new mode 100644 (file)
index 04bacf3..926c780
Binary files a/doc/salome/gui/SMESH/images/pref21.png and b/doc/salome/gui/SMESH/images/pref21.png differ
diff --git a/doc/salome/gui/SMESH/images/radial_prism_mesh.png b/doc/salome/gui/SMESH/images/radial_prism_mesh.png
new file mode 100644 (file)
index 0000000..6d9a986
Binary files /dev/null and b/doc/salome/gui/SMESH/images/radial_prism_mesh.png differ
index 01deffb..c4de631 100644 (file)
@@ -14,25 +14,25 @@ Basic 1D hypothesis specifies:
   <ul>
     <li>\ref average_length_anchor "Local Length"</li>
     <li>\ref max_length_anchor "Max Size"</li>
-    <li>\ref number_of_segments_anchor "Number of segments" with Equidistant distribution</li>
+    <li>\ref number_of_segments_anchor "Number of Segments" with Equidistant distribution</li>
     <li>\ref automatic_length_anchor "Automatic Length"</li>
 </ul></li>
 <li>Constantly increasing or decreasing length of segments:
   <ul>
-    <li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
+    <li>\ref arithmetic_1d_anchor "Arithmetic Progression"</li>
     <li>\ref geometric_1d_anchor "Geometric Progression"</li>
     <li>\ref start_and_end_length_anchor "Start and end length"</li>
-    <li>\ref number_of_segments_anchor "Number of segments" with Scale distribution</li>
+    <li>\ref number_of_segments_anchor "Number of Segments" with Scale distribution</li>
 </ul></li>
 <li>Distribution depending on curvature:
   <ul>
     <li>\ref adaptive_1d_anchor "Adaptive"</li>
-    <li>\ref deflection_1d_anchor "Deflection 1D"</li>
+    <li>\ref deflection_1d_anchor "Deflection"</li>
 </ul></li>
 <li>Arbitrary distribution:
   <ul>
-    <li>\ref fixed_points_1d_anchor "Fixed points 1D"</li>
-    <li>\ref number_of_segments_anchor "Number of segments" with
+    <li>\ref fixed_points_1d_anchor "Fixed Points"</li>
+    <li>\ref number_of_segments_anchor "Number of Segments" with
     \ref analyticdensity_anchor "Analytic Density Distribution" or Table Density Distribution</li>
 </ul></li>
 </ul>
@@ -54,15 +54,15 @@ creation of narrow 2D elements.
 - <b>Max size</b> parameter defines the length of segments on straight edges. 
 - \b Deflection parameter gives maximal distance of a segment from a curved edge.
 
-\image html adaptive1d_sample_mesh.png "Adaptive hypothesis and Netgen 2D algorithm - the size of mesh segments reflects the size of geometrical features"
+\image html adaptive1d_sample_mesh.png "Adaptive hypothesis and NETGEN 2D algorithm - the size of mesh segments reflects the size of geometrical features"
 
 <b>See Also</b> a \ref tui_1d_adaptive "sample TUI Script" that uses Adaptive hypothesis.
 
 <br>
 \anchor arithmetic_1d_anchor
-<h2>Arithmetic 1D hypothesis</h2>
+<h2>Arithmetic Progression hypothesis</h2>
 
-<b>Arithmetic 1D</b> hypothesis allows to split edges into segments with a
+<b>Arithmetic Progression</b> hypothesis allows to split edges into segments with a
 length that changes in arithmetic progression (Lk = Lk-1 + d)
 beginning from a given starting length and up to a given end length.
 
@@ -82,10 +82,10 @@ defining <b>Reversed Edges</b> parameter.
 
 \image html a-arithmetic1d.png
 
-\image html b-ithmetic1d.png "Arithmetic 1D hypothesis - the size of mesh elements gradually increases"
+\image html b-ithmetic1d.png "Arithmetic Progression hypothesis - the size of mesh elements gradually increases"
 
 <b>See Also</b> a sample TUI Script of a 
-\ref tui_1d_arithmetic "Defining Arithmetic 1D and Geometric Progression hypothesis" operation.  
+\ref tui_1d_arithmetic "Defining Arithmetic Progression and Geometric Progression hypothesis" operation.  
 
 <br>
 \anchor geometric_1d_anchor
@@ -112,13 +112,13 @@ defining <b>Reversed Edges</b> parameter.
 \image html a-geometric1d.png
 
 <b>See Also</b> a sample TUI Script of a 
-\ref tui_1d_arithmetic "Defining Arithmetic 1D and Geometric Progression hypothesis" operation.  
+\ref tui_1d_arithmetic "Defining Arithmetic Progression and Geometric Progression hypothesis" operation.  
 
 <br>
 \anchor deflection_1d_anchor
-<h2>Deflection 1D hypothesis</h2>
+<h2>Deflection hypothesis</h2>
 
-<b>Deflection 1D</b> hypothesis can be applied for meshing curvilinear edges
+<b>Deflection</b> hypothesis can be applied for meshing curvilinear edges
 composing your geometrical object. It defines only one parameter: the
 value of deflection (or chord error).
 
@@ -130,10 +130,10 @@ two nodes should not exceed the value of deflection.
 
 \image html a-deflection1d.png
 
-\image html b-flection1d.png "Deflection 1D hypothesis - useful for meshing curvilinear edges"
+\image html b-flection1d.png "Deflection hypothesis - useful for meshing curvilinear edges"
 
 <b>See Also</b> a sample TUI Script of a 
-\ref tui_deflection_1d "Defining Deflection 1D hypothesis" operation.
+\ref tui_deflection_1d "Defining Deflection hypothesis" operation.
 
 <br>
 \anchor average_length_anchor
@@ -174,7 +174,7 @@ consists of setting the maximal allowed \b length of segments.
 <b>Use preestimated length</b> check box lets you use \b length
 automatically calculated basing on size of your geometrical object,
 namely as diagonal of bounding box divided by ten. The divider can be
-changed via "Ratio Bounding Box Diagonal / Max Size"
+changed via \ref diagonal_size_ratio_pref "Ratio Bounding Box Diagonal / Max Size"
 preference parameter.
 <b>Use preestimated length</b> check box is enabled only if the
 geometrical object has been selected before hypothesis definition.
@@ -183,11 +183,14 @@ geometrical object has been selected before hypothesis definition.
 
 <br>
 \anchor number_of_segments_anchor
-<h2>Number of segments hypothesis</h2>
+<h2>Number of Segments hypothesis</h2>
 
-<b>Number of segments</b> hypothesis can be applied for approximating
+<b>Number of Segments</b> hypothesis can be applied for approximating
 edges by a definite number of mesh segments with length depending on
-the selected type of distribution of nodes.
+the selected type of distribution of nodes. The default number of
+segments can be set via 
+\ref nb_segments_pref "Automatic Parameters / Default Number of Segments"
+preference parameter.
 
 The direction of the splitting is defined by the orientation of the
 underlying geometrical edge. <b>Reverse Edges</b> list box allows to
@@ -302,9 +305,9 @@ minimum and maximum value of this parameter.
 
 <br>
 \anchor fixed_points_1d_anchor
-<h2>Fixed points 1D hypothesis</h2>
+<h2>Fixed Points hypothesis</h2>
 
-<b>Fixed points 1D</b> hypothesis allows splitting edges through a
+<b>Fixed Points</b> hypothesis allows splitting edges through a
 set of points parametrized on the edge (from 1 to 0) and a number of
 segments for each interval limited by the points.
 
@@ -326,7 +329,7 @@ Object Browser.
 defining <b>Reversed Edges</b> parameter.
 
 
-\image html mesh_fixedpnt.png "Example of a sub-mesh on the edge built using Fixed points 1D hypothesis"
+\image html mesh_fixedpnt.png "Example of a sub-mesh on the edge built using Fixed Points hypothesis"
 
 <b>See Also</b> a sample TUI Script of a 
 \ref tui_fixed_points "Defining Fixed Points" hypothesis operation.
index 308a689..2005ad8 100644 (file)
@@ -75,7 +75,7 @@ algorithms are available:
 
 \image html reduce_three_to_one.png "The fastest transition pattern: 3 to 1"
 
-<b>Base vertex</b> tab allows using Quadrangle (Mapping)
+<b>Base vertex</b> tab allows using Quadrangle: Mapping
 algorithm for meshing of trilateral faces. In this case it is
 necessary to select the vertex, which will be used as the forth
 degenerated side of quadrangle.
index 12f5c02..f405559 100644 (file)
@@ -30,16 +30,16 @@ In \b MESH there are the following Basic Hypotheses:
 <li>\subpage a1d_meshing_hypo_page "1D Hypotheses" (for meshing of 
 <b>edges</b>):</li>
 <ul>
-<li>\ref number_of_segments_anchor "Number of segments"</li>
+<li>\ref number_of_segments_anchor "Number of Segments"</li>
 <li>\ref average_length_anchor "Local Length"</li>
 <li>\ref max_length_anchor "Max Size"</li>
 <li>\ref adaptive_1d_anchor "Adaptive"</li>
-<li>\ref arithmetic_1d_anchor "Arithmetic 1D"</li>
+<li>\ref arithmetic_1d_anchor "Arithmetic Progression"</li>
 <li>\ref geometric_1d_anchor "Geometric Progression"</li>
 <li>\ref start_and_end_length_anchor "Start and end length"</li>
-<li>\ref deflection_1d_anchor "Deflection 1D"</li>
+<li>\ref deflection_1d_anchor "Deflection"</li>
 <li>\ref automatic_length_anchor "Automatic Length"</li>
-<li>\ref fixed_points_1d_anchor "Fixed points 1D"</li>
+<li>\ref fixed_points_1d_anchor "Fixed points"</li>
 </ul>
 <li>\subpage a2d_meshing_hypo_page "2D Hypotheses" (for meshing of <b>faces</b>):</li>
 <ul>
index cce2613..a41cbb4 100644 (file)
@@ -170,10 +170,10 @@ for more information about quadratic meshes.
 This additional hypothesis can be used together with 2D triangulation algorithms.
 It allows 2D triangulation algorithms to build quadrangular meshes.
 
-Usage of this hypothesis with "Quadrangle (Mapping)" meshing algorithm
+Usage of this hypothesis with "Quadrangle: Mapping" meshing algorithm
 is obsolete since introducing
 \ref hypo_quad_params_anchor "Quadrangle parameters" hypothesis.
-Usage of this hypothesis with "Quadrangle (Mapping)" meshing algorithm
+Usage of this hypothesis with "Quadrangle: Mapping" meshing algorithm
 corresponds to specifying "Quadrangle Preference" transition type of
 \ref hypo_quad_params_anchor "Quadrangle parameters" hypothesis.
 \note "Quadrangle Preference" transition type can be used only if the
index b4a99c4..08841b0 100644 (file)
@@ -26,9 +26,9 @@ number of mesh segments following an 1D hypothesis.
 <li>For meshing of 2D entities (<b>faces</b>):</li>
 
 <ul>
-<li><b>Triangle (Mefisto)</b> meshing algorithm - splits faces
+<li><b>Triangle: Mefisto</b> meshing algorithm - splits faces
   into triangular elements.</li>
-<li>\subpage quad_ijk_algo_page "Quadrangle (Mapping)" meshing
+<li>\subpage quad_ijk_algo_page "Quadrangle: Mapping" meshing
   algorithm - splits faces into quadrangular elements.</li>
 </ul>
 
@@ -65,19 +65,17 @@ objects.
 
 There is also a number of more specific algorithms:
 <ul>
-<li>\subpage prism_3d_algo_page "for meshing prismatic 3D shapes with hexahedra and prisms"</li>
-<li>\subpage quad_from_ma_algo_page "for quadrangle meshing of faces with sinuous borders and rings"</li>
+<li>\subpage prism_3d_algo_page "Extrusion 3D" - for meshing prismatic 3D shapes with hexahedra and prisms.</li>
+<li>\subpage quad_from_ma_algo_page "Quadrangle: Medial Axis Projection" - for quadrangle meshing of faces with sinuous borders and rings.</li>
 <li> <b>Polygon per Face</b> meshing algorithm - generates one mesh
   face (either a triangle, a quadrangle or a polygon) per a geometrical
   face using all nodes from the face boundary.</li>
-<li>\subpage projection_algos_page "for meshing by projection of another mesh"</li>
-<li>\subpage import_algos_page "for meshing by importing elements from another mesh"</li>
-<li>\subpage radial_prism_algo_page "for meshing 3D geometrical objects with cavities with hexahedra and prisms"</li>
-<li>\subpage radial_quadrangle_1D2D_algo_page "for quadrangle meshing of disks and parts of disks"</li>
-<li>\subpage use_existing_page "Use Edges to be Created Manually" and 
-  \ref use_existing_page "Use Faces to be Created Manually" algorithms can be
-  used to create a 1D or a 2D mesh in a python script.</li>
-<li>\subpage segments_around_vertex_algo_page "for defining the length of mesh segments around certain vertices"</li>
+<li>\subpage projection_algos_page "Projection algorithms" - for meshing by projection of another mesh.</li>
+<li>\subpage import_algos_page "Import algorithms" - for meshing by importing elements from another mesh.</li>
+<li>\subpage radial_prism_algo_page "Radial Prism" - for meshing 3D geometrical objects with cavities with hexahedra and prisms.</li>
+<li>\subpage radial_quadrangle_1D2D_algo_page "Radial Quadrangle 1D-2D" - for quadrangle meshing of disks and parts of disks.</li>
+<li>\subpage use_existing_page "Use Faces/Edges to be Created Manually" - to create a 1D or a 2D mesh in a python script.</li>
+<li>\subpage segments_around_vertex_algo_page "Segments around Vertex" - for defining the length of mesh segments around certain vertices.</li>
 </ul>
 
 \ref constructing_meshes_page "Constructing meshes" page describes in
index 3a0490c..6794b39 100644 (file)
@@ -316,24 +316,24 @@ There is an example of sub-mesh order modifications taking a Mesh created on a B
 shape. The main Mesh object:
 <ul>
   <li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=20</li>
-  <li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis<b>Max Element Area</b>
+  <li><i>2D</i> <b>Triangle: Mefisto</b> with Hypothesis<b>Max Element Area</b>
   </li>
 </ul>
 The first sub-mesh <b>Submesh_1</b> created on <b>Face_1</b> is:
 <ul>
   <li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=4</li>
-  <li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
+  <li><i>2D</i> <b>Triangle: Mefisto</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
 </ul>
 The second sub-mesh <b>Submesh_2</b> created on <b>Face_2</b> is:
 <ul>
   <li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=8</li>
-  <li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
+  <li><i>2D</i> <b>Triangle: Mefisto</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
 </ul>
 
 And the last sub-mesh <b>Submesh_3</b> created on <b>Face_3</b> is:
 <ul>
   <li><i>1D</i> <b>Wire discretisation</b> with <b>Number of Segments</b>=12</li>
-  <li><i>2D</i> <b>Triangle (Mefisto)</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
+  <li><i>2D</i> <b>Triangle: Mefisto</b> with Hypothesis <b>MaxElementArea</b>=1200</li>
 </ul>
 
 The sub-meshes become concurrent if they share sub-shapes that can be
@@ -404,6 +404,7 @@ re-computed and the Mesh Computation information box will be shown
 with the same contents. (To fully re-compute the mesh, invoke 
 \ref clear_mesh_anchor "Clear Mesh Data" command before). 
 
+\anchor meshing_result_anchor
 If the mesh computation has been a success, the box shows information
 on the number of entities of different types in the mesh.
 
@@ -448,7 +449,7 @@ to facilitate their analysis.
 </center>
 
 \note Mesh Computation Information box does not appear if you set
-"Mesh computation/Show a computation result notification" preference 
+\ref show_comp_result_pref "Mesh computation/Show a computation result notification" preference 
 to the "Never" value. This option gives the possibility to control mesh
 computation reporting. There are the following possibilities: always
 show the information box, show only if an error occurs or never. 
index 7e748d6..adcd376 100644 (file)
@@ -2,8 +2,8 @@
 
 \page display_mode_page Display Mode
 
-\n By default your objects are represented as set in
-\ref mesh_preferences_page "Preferences".
+\n By default your objects are represented as defined in
+\ref mesh_tab_preferences "Preferences".
 \n However, right-clicking on the mesh in the <b>Object Browser</b>,
 and selecting <b>Display Mode</b>, you can display your mesh as:
 
index 75fd292..10fd49a 100644 (file)
@@ -4,8 +4,9 @@
 
 This mesh quality control highlights the nodes which are coincident
 with other nodes (within a given tolerance). Distance at which two
-nodes are considered coincident is defined by "Quality Controls/Double
-nodes tolerance" preference.
+nodes are considered coincident is defined by 
+\ref dbl_nodes_tol_pref "Quality Controls/Double nodes tolerance"
+preference.
 
 \image html double_nodes.png
 
index fd09d0d..49a5a5c 100644 (file)
@@ -25,6 +25,13 @@ The <b>Mesh Information</b> dialog box provides three tab pages:
   overall quality information about the selected mesh, sub-mesh or group
   object. 
 
+\anchor dump_mesh_infos
+The button \b Dump allows printing the information displayed in the
+dialog box to a .txt file. The dialog for choosing a file also allows
+to select which tab pages to dump via four check-boxes. The default state
+of the check-boxes can be changed via \ref mesh_information_pref "Mesh information"
+preferences.
+
 \anchor advanced_mesh_infos_anchor
 <h2>Base Information</h2>
 
@@ -72,10 +79,11 @@ analyze directly in the dialog box or select the node(s) or element(s) in
 the 3D viewer.
 
 \note The information about the groups, to which the node or element belongs,
- can be shown in a short or in a detailed form. By default, for performance
+can be shown in a short or in a detailed form. By default, for performance
 reasons, this information is shown in a short form (group names
-only). The detailed information on groups can be switched on via the user
-preferences, see \ref mesh_preferences_page.
+only). The detailed information on groups can be switched on via
+\ref group_detail_info_pref "Show details on groups in element information tab"
+option of \ref mesh_preferences_page.
 
 \anchor mesh_addition_info_anchor
 <h2>Additional Information</h2> 
@@ -105,6 +113,7 @@ For a sub-mesh object, the following information is shown:
 <em>"Additional Info" page, sub-mesh information</em></center>
 <br>
 
+\anchor mesh_addition_info_group_anchor
 For a group object, the following information is shown:
 - Name
 - Parent mesh
@@ -122,8 +131,8 @@ For a group object, the following information is shown:
 computed only by demand. For this, the user should press the "Compute"
 button (see picture). Also, the number of underlying nodes is
 automatically calculated if the size of the group does not exceed
-the "Automatic nodes compute limit" set via the  "Mesh information"
-preferences (zero value means no limit).
+the \ref nb_nodes_limit_pref "Automatic nodes compute limit"
+preference value (zero value means no limit).
 
 \anchor mesh_quality_info_anchor
 <h2>Quality Information</h2>
@@ -148,19 +157,22 @@ The <b>Quality Info</b> tab provides overall information about mesh quality cont
 <center>\image html ctrlinfo.png
 <em>"Quality Info" page</em></center>
 
-\note It is possible to set "Double nodes tolerance" in the dialog for a local change 
-      or via the "Quality controls" in Mesh preferences.
-
-\note For performance reasons, all quality control values for big meshes are
-computed only by demand. For this, press the "compute"
-button. Also, values are automatically computed if the number of 
-nodes / elements does not exceed the "Automatic controls compute limit" set 
-via the "Mesh information" preferences (zero value means that there is no limit).
-
-\note The plot functionality is available only if the GUI module is built with Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when building GUI module).
-
-The button \b "Dump" allows printing the information displayed in the
-dialog box to a .txt file.
+\note It is possible to change <b>Double nodes tolerance</b>, which
+will be used upon consequent pressing \a Compute button. The default value
+of the tolerance can be set via the
+\ref dbl_nodes_tol_pref "Quality controls" preferences.
+
+\note For performance reasons, all quality control values for big
+meshes are computed only by demand. For this, press the \a Compute
+button. Also, values are automatically computed if the number of nodes
+/ elements does not exceed the
+\ref auto_control_limit_pref "Automatic controls compute limit" set
+via the \ref mesh_information_pref "Mesh information" preferences
+(zero value means that there is no limit).
+
+\note The plot functionality is available only if the GUI module is
+built with Plot 2D Viewer (option SALOME_USE_PLOT2DVIEWER is ON when
+building GUI module).
 
 See the \ref tui_viewing_mesh_infos "TUI Example".
 
index 79a268d..b27ffef 100644 (file)
@@ -9,6 +9,7 @@ or in later sessions with this module according to the preferences.
 
 \image html pref21.png
 
+\anchor automatic_update_pref
 - <b>Automatic Update</b>
   - <b>Automatic Update</b> - if activated, the mesh in your
     viewer will be automatically updated after it's computation, depending on
@@ -27,6 +28,20 @@ or in later sessions with this module according to the preferences.
     number of elements does not exceed the size limit, the entities of
     this type are shown, otherwise the user is warned that some entities are not shown.
 
+\anchor display_mode_pref
+- <b>Display mode</b>
+  - <b>Default display mode</b> - allows to set Wireframe, Shading, Nodes or Shrink
+    \ref display_mode_page "presentation mode" as default.
+
+\anchor quadratic_2d_mode_pref
+- <b>Representation of the 2D quadratic elements</b>
+  - <b>Default mode of the 2D quadratic elements</b> - allows to
+    select either \a Lines or \a Arcs as a default
+    \ref quadratic_2d_mode "representation" of 1D and 2D
+    \ref adding_quadratic_elements_page "quadratic elements".
+  - <b>Maximum Angle</b> - maximum deviation angle used by the
+    application to build arcs.
+
 - <b>Quality Controls</b>
   - <b>Display entity</b> - if activated, only currently
     \ref quality_page "controlled" entities are displayed in the
@@ -37,22 +52,12 @@ or in later sessions with this module according to the preferences.
   - <b>Use precision</b> - if activated, all quality controls
     will be computed at precision defined by <b>Number of digits after
     point</b> - as integers by default.
+\anchor dbl_nodes_tol_pref
   - <b>Double nodes tolerance</b> - defines the maximal distance between two
     mesh nodes, at which they are considered coincident by
     \ref double_nodes_control_page "Double nodes" quality control.
-
-- <b>Display mode</b>
-  - <b>Default display mode</b> - allows to set Wireframe, Shading, Nodes or Shrink
-    \ref display_mode_page "presentation mode" as default.
-
-\anchor quadratic_2d_mode_pref
-- <b>Representation of the 2D quadratic elements</b>
-  - <b>Default mode of the 2D quadratic elements</b> - allows to
-    select either \a Lines or \a Arcs as a default
-    \ref quadratic_2d_mode "representation" of 1D and 2D
-    \ref adding_quadratic_elements_page "quadratic elements".
-  - <b>Maximum Angle</b> - maximum deviation angle used by the
-    application to build arcs.
+    This value is also used in \ref mesh_quality_info_anchor "Quality Info" 
+    tab page of \ref mesh_infos_page dialog.
 
 - <b>Mesh export</b>
 \anchor export_auto_groups_pref
@@ -63,56 +68,70 @@ or in later sessions with this module according to the preferences.
   - <b>Show warning when exporting group</b> - if activated, a warning is
     displayed when exporting a group.
 
+\anchor show_comp_result_pref
 - <b>Mesh computation</b>
-  - <b>Show a computation result notification</b> combo-box allows to
-    select the notification mode about a mesh computation result.
+  - <b>Show a computation result notification</b> - allows to
+    select the notification mode about a \ref compute_anchor "mesh computation" result.
     There are 3 possible modes:
-    - <b>Never</b> - do not show the result dialog at all;
+    - <b>Never</b> - not to show the \ref meshing_result_anchor "result dialog" at all;
     - <b>Errors only</b> - the result dialog will be shown if there were
       some errors during a mesh computation;
     - <b>Always</b> - show the result dialog after each mesh
       computation. This is a default mode.
 
+\anchor mesh_information_pref
 - <b>Mesh information</b>
-  - <b>Mesh element information</b> - change the way mesh element
-    information is shown:
+  - <b>Mesh element information</b> - allows changing the way 
+    \ref mesh_element_info_anchor "mesh element information" is shown:
     - <b>Simple</b> - as a plain text
     - <b>Tree</b> - in a tree-like form
+\anchor nb_nodes_limit_pref
   - <b>Automatic nodes compute limit</b> - allows defining the size limit for the
-    mesh groups for which the number of underlying nodes is calculated
+    \ref mesh_addition_info_group_anchor "mesh groups" for which
+    the number of underlying nodes is calculated
     automatically. If the group size exceeds the value set in the preferences,
     the user will have to press \em Compute button explicitly. Zero value
     means "no limit". By default the value is set to 100 000 mesh elements.
-  - <b>Automatic controls compute limit</b> - allows defining the size limit for the
-    mesh elements for which the Aspect Ratio histogram is calculated
-    automatically. If the mesh elements size exceeds the value set in the preferences,
-    it is possible to press \b Compute button explicitly to calculate the histogram . Zero value
-    means "no limit". By default the value is set to 3 000 mesh elements.
+\anchor auto_control_limit_pref
+  - <b>Automatic controls compute limit</b> - allows defining a
+    maximal number of mesh elements for which the quality controls
+    in the \ref mesh_quality_info_anchor "Quality Information" 
+    tab page are calculated automatically. If the number of mesh elements
+    exceeds the value set in the preferences, it is necessary to press
+    \b Compute button explicitly to calculate a quality measure. Zero value
+    means "no limit". By default the value is set to 3 000 mesh
+    elements.
+\anchor group_detail_info_pref
   - <b>Show details on groups in element information tab</b> - when
     this option is switched off (default), only the names of groups, to which the node
-    or element belongs, are shown in the \ref mesh_element_info_anchor "Info Tab"
+    or element belongs, are shown in the \ref mesh_element_info_anchor "Element Info"
     tab of "Mesh Information" dialog box. If this option is
     switched on, the detailed information on groups is shown.
   - <b>Dump base information</b> - allows dumping base mesh information to the
-    file, see \ref mesh_infos_page.
+    file, see \ref dump_mesh_infos "Mesh Information".
   - <b>Dump element information</b> - allows dumping element information to the
-    file, see \ref mesh_infos_page.
+    file, see \ref dump_mesh_infos "Mesh Information".
   - <b>Dump additional information</b> - allows dumping additional mesh
-    information to the file, see \ref mesh_infos_page.
+    information to the file, see \ref dump_mesh_infos "Mesh Information".
   - <b>Dump controls information</b> - allows dumping quality mesh
-    information to the file, see \ref mesh_infos_page.
+    information to the file, see \ref dump_mesh_infos "Mesh Information".
 
 - <b>Automatic Parameters</b>
-  - <b>Ratio Bounding Box Diagonal / Max Size</b> - this parameter is
-    used for automatic meshing. This is the ratio between the bounding box of the
-    meshed object and the Max Size of segments.
-  - <b>Default Number of Segments</b> - defines the default
-    number of segments on each edge.
+\anchor diagonal_size_ratio_pref
+  - <b>Ratio Bounding Box Diagonal / Max Size</b> - defines the ratio
+    between the bounding box of the meshed object and the Max Size of
+    segments. It is used as a default value of \ref a1d_meshing_hypo_page
+    defining length of segments, especially by 
+    \ref max_length_anchor "Max Size" hypothesis.
+\anchor nb_segments_pref
+  - <b>Default Number of Segments</b> - defines the default number of
+    segments in \ref number_of_segments_anchor "Number of Segments"
+    hypothesis.
 
 - <b>Mesh loading</b>
-  - If <b>No mesh loading from study file at hypothesis modification</b>
-    check-box is on, the mesh data will not be loaded from the study file
-    when a hypothesis is modified. This allows  saving time by omitting
+  - <b>No mesh loading from study file at hypothesis modification</b> - if
+    activated, the mesh data will not be loaded from the study file
+    when a hypothesis is modified. This allows saving time by omitting
     loading data of a large mesh that is planned to be recomputed with other parameters.
 
 - <b>Input fields precision</b>
@@ -126,10 +145,11 @@ or in later sessions with this module according to the preferences.
 - <b>Preview</b>
   - <b>Sub-shapes preview chunk size</b> - allows to limit the number
     of previewed sub-shapes shown in the hypotheses creation dialog boxes,
-    for example "Reverse Edges" parameter of \ref number_of_segments_anchor "Number of segments" hypothesis.
+    for example "Reverse Edges" parameter of 
+    \ref number_of_segments_anchor "Number of segments" hypothesis.
 
 - <b>Python Dump</b>
-  - <b>Historical python dump</b> checkbox allows switching between
+  - <b>Historical python dump</b> - allows switching between
     \a Historical and \a Snapshot dump mode:
     - In \a Historical mode, Python Dump script includes all commands
       performed by SMESH engine.
@@ -137,23 +157,28 @@ or in later sessions with this module according to the preferences.
       from the Study as well as the commands not influencing the
       current state of meshes are excluded from the script.
 
+\anchor mesh_tab_preferences
 <h2>Mesh Preferences</h2>
 
+\b Mesh tab page contains parameters defining the way the mesh is
+displayed in the 3D Viewer.
+
 \image html pref22.png
 
-- <b>Nodes</b> allows to define default parameters for nodes, which will be applied 
+- <b>Nodes</b> allows to define default parameters for nodes, which will be applied 
   for a newly created mesh only. Existing meshes can be customized using 
   \ref colors_size_page "Properties dialog box" available from the context menu of a mesh.
   - <b>Color</b> -  allows to select the color of nodes. Click on the
-    colored line to access to the <b>Select Color</b> dialog box.
+    downward arrow near the colored line to access to the <b>Select Color</b> dialog box.
   - <b>Type of marker</b> - allows to define the shape of nodes.
   - <b>Scale of marker</b> - allows to define the size of nodes.
 
-- <b>Elements</b> allows to define default parameters for different elements, which will be applied 
-  for a newly created mesh only. Existing meshes can be customized using 
+- <b>Elements</b> - allows to define default parameters for different
+  elements, which will be applied to a newly created mesh
+  only. Existing meshes can be customized using
   \ref colors_size_page "Properties dialog box" available from the context menu of a mesh.
   - <b>Surface color</b>  - allows to select the surface color of 2D elements
-    (seen in Shading mode). Click on the colored line to access to the
+    (seen in Shading mode). Click on the downward arrow near the colored line to access to the
     <b>Select Color</b> dialog box.
   - <b>Back surface color</b> - allows to select the back surface color
     of 2D elements. This is useful to differ 2d elements with
@@ -166,40 +191,42 @@ or in later sessions with this module according to the preferences.
     the <b>Volume color</b> by changing its brightness and saturation.
   - <b>0D element color</b> - allows to choose color of 0D mesh elements.
   - <b>Ball color</b> - allows to choose color of discrete mesh elements (balls).
-  - <b>Outline color</b> - allows to select the color of element
-    borders.
+  - <b>Outline color</b> - allows to select the color of element borders.
   - <b>Wireframe color</b> - allows to select the color of borders of
     elements in the wireframe mode.
-  - <b>Preview color</b> - allows to select the preview color of the elements.
+  - <b>Preview color</b> - allows to select the preview color of the
+    elements, which is used while 
+    \ref adding_nodes_and_elements_page "manual creation of elements".
   - <b>Size of 0D elements</b> - specifies default size of 0D elements.
   - <b>Size of ball elements</b> - specifies default size of discrete
     elements (balls).
-  - <b>Scale factor of ball elements</b> - specifies default scale factor of discrete
-    elements (balls).
-  - <b>Line width</b> - allows to define the width of 1D elements (edges).
+  - <b>Scale factor of ball elements</b> - specifies default scale
+    factor of discrete elements (balls) allowing to adjust their size in the Viewer.
+  - <b>Line width</b> - allows to define the width of 1D elements (segments).
   - <b>Outline width</b> - allows to define the width of borders of
     2D and 3D elements (shown in the Shading mode).
-  - <b>Shrink coef.</b> - allows to define relative space of elements
-    compared to gaps between them in shrink mode.
+  - <b>Shrink coef.</b> - allows to define relative size of a shrunk
+    element compared a non-shrunk element in percents in the shrink mode.
 
 - <b>Groups</b>
   - <b>Names color</b> - specifies color of group names to be used in
-    3D viewer.
+    the 3D viewer.
   - <b>Default color</b> - specifies the default group color, which is used 
-  to create a new mesh group (see \ref creating_groups_page "Create Group dialog box").
+    to create a new mesh group (see \ref creating_groups_page "Create Group dialog box").
 
 - <b>Numbering</b> allows to define properties of numbering functionality:
   - <b>Nodes</b> - specifies text properties of nodes numbering
     (font family, size, attributes, color).
   - <b>Elements</b> - same for elements.
 
-- <b>Orientation of Faces</b> - allows to define default properties of orientation vectors.
-  These preferences will be applied to the newly created meshes only; properties of existing meshes
-  can be customized using \ref colors_size_page "Properties dialog box"
-  available from the context menu of a mesh.
+- <b>Orientation of Faces</b> - allows to define default properties of
+  orientation vectors. These preferences will be applied to the newly
+  created meshes only; properties of existing meshes can be customized
+  using \ref colors_size_page "Properties dialog box" available from
+  the context menu of a mesh.
   - \b Color - allows to define the color of orientation vectors;
   - \b Scale - allows to define the size of orientation vectors;
-  - <b>3D Vector</b> check-box allows to choose between 2D planar
+  - <b>3D Vector</b> - allows to choose between 2D planar
     and 3D vectors.
 
 <br><h2>Selection Preferences</h2>
@@ -209,7 +236,7 @@ or in later sessions with this module according to the preferences.
 - <b>Selection</b> - performed with mouse-indexing (preselection)
   and left-clicking on an object, whose appearance changes as defined in
   the <b>Preferences</b>.
-  - <b>Object color</b> -  allows to select the color of mesh (edges and
+  - <b>Object color</b> - allows to select the color of mesh (edges and
     borders of meshes) of the selected entity. Click on the colored line
     to access to the <b>Select Color</b> dialog box.
   - <b>Element color</b> - allows to select the color of surface of selected
@@ -218,8 +245,8 @@ or in later sessions with this module according to the preferences.
 
 - <b>Preselection</b> - performed with mouse-indexing on an object,
   whose appearance changes as defined in the <b>Preferences</b>.
-  - <b>Highlight color</b> -  allows to select the color of mesh (edges and
-    borders of meshes) of the entity . Click on the colored line to access
+  - <b>Highlight color</b> - allows to select the color of mesh (edges and
+    borders of meshes) of the entity. Click on the colored line to access
     to the <b>Select Color</b> dialog box.
 
 - <b>Precision</b> - in this menu you can set the value of precision
@@ -229,32 +256,31 @@ or in later sessions with this module according to the preferences.
 
 \image html pref24.png
 
-\note The following settings are default and will be applied for 
-a newly created mesh only. Existing meshes 
-can be customized using local \ref scalar_bar_dlg "Scalar Bar Properties dialog box" 
-available from the context menu of a mesh.
+\note The following settings are default and will be applied to
+a newly created mesh only. Existing meshes can be customized using
+local \ref scalar_bar_dlg "Scalar Bar Properties dialog box" available
+from the context menu of a mesh.
 
-- <b>Font</b> - in this menu you can set type, face and color for
+- <b>Font</b> - in this menu you can set type, face and color of
   the font of <b>Title</b> and <b>Labels</b>.
 
 - <b>Colors & Labels</b> - in this menu you can set the <b>number of
   colors</b> and the <b>number of labels</b> in use.
 
 - <b>Orientation</b> - here you can choose between vertical and
-  horizontal orientation of the <b>Scalar Bar</b>
+  horizontal orientation of the <b>Scalar Bar</b>.
 
 - <b>Origin & Size Vertical & Horizontal</b> - allows to define
   placement (<b>X</b> and <b>Y</b>) and lookout (<b>Width</b> and
   <b>Height</b>) of Scalar Bars.
-  - <b>X</b>: abscissa of the point of origin (from the left
-    side)
-  - <b>Y</b>: ordinate of the origin of the bar (from the bottom)
+  - <b>X</b> - abscissa of the point of origin (from the left side).
+  - <b>Y</b> - ordinate of the origin of the bar (from the bottom).
 
 - <b>Distribution</b> in this menu you can Show/Hide distribution
   histogram of the values of the <b>Scalar Bar</b> and specify the
   <b>Coloring Type</b> of the histogram:
-  - <b>Multicolor</b> the histogram is colored as <b>Scalar Bar</b>
-  - <b>Monocolor</b> the histogram is colored as selected with
-    <b>Distribution color</b> selector 
+  - <b>Multicolor</b> - the histogram is colored as <b>Scalar Bar</b>.
+  - <b>Monocolor</b> the histogram is colored as selected with
+    <b>Distribution color</b> selector.
 
 */
index 5f98399..59aee72 100644 (file)
@@ -1,8 +1,8 @@
 /*!
 
-\page prism_3d_algo_page 3D extrusion meshing algorithm
+\page prism_3d_algo_page Extrusion 3D meshing algorithm
 
-3D extrusion algorithm can be used for meshing prisms, i.e. 3D shapes
+Extrusion 3D algorithm can be used for meshing prisms, i.e. 3D shapes
 defined by two opposing faces having the same number of vertices and
 edges. These two faces should be connected by quadrangle "side" faces.
 
@@ -28,7 +28,7 @@ This picture shows four neighboring prism stacks, each comprising two prisms.
 The shown sub-mesh is used by the algorithm to mesh
 all eight prisms in the stacks.
 
-To use <em>3D extrusion</em> algorithm you need to assign algorithms
+To use <em>Extrusion 3D</em> algorithm you need to assign algorithms
 and hypotheses of lower dimensions as follows.
 (A sample picture below shows algorithms and hypotheses used to
 mesh a cylinder with prismatic volumes).
@@ -41,7 +41,7 @@ The \b Global algorithms and hypotheses to be chosen at
 <li> 1D algorithm and hypothesis that will be applied for meshing
   (logically) vertical edges of the prism (which connect the top and the
   base faces of the prism). In the sample picture above these are
-  "Regular_1D" algorithm and "Nb. Segments" hypothesis named "Vertical
+  "Regular_1D" algorithm and "Number of Segments" hypothesis named "Vertical
   Nb. Segments".</li>
 </ul>
 
@@ -66,21 +66,21 @@ The \b Local algorithms and hypotheses to be chosen at
     Scale Factor=3 is assigned to the highlighted edge.
 </li></ul>
 
-If <em>3D extrusion</em> algorithm is assigned to a sub-mesh in a mesh
+If <em>Extrusion 3D</em> algorithm is assigned to a sub-mesh in a mesh
 with multiple sub-meshes, the described above approach may not work as
 expected. For example the bottom face may be meshed by other algorithm
-before <em>3D extrusion</em> have a chance to project a mesh from the
+before <em>Extrusion 3D</em> have a chance to project a mesh from the
 base face. This thing can happen with vertical edges as well. All
 these can lead to either a meshing failure or to an incorrect meshing.
 
 In such a case, it's necessary to explicitly define algorithms
-that <em>3D extrusion</em> implicitly applies in a simple case:
+that <em>Extrusion 3D</em> implicitly applies in a simple case:
 - assign \ref projection_1D2D algorithm to the top face and
 - assign a 1D algorithm to a group of all vertical edges.
 
-\image html image157.gif "Prism with 3D extrusion meshing. Vertical division is different on neighbor edges because several local 1D hypotheses are assigned."
+\image html image157.gif "Prism with Extrusion 3D meshing. Vertical division is different on neighbor edges because several local 1D hypotheses are assigned."
 
 \sa a sample TUI Script of
-\ref tui_prism_3d_algo "Use 3D extrusion meshing algorithm".
+\ref tui_prism_3d_algo "Use Extrusion 3D meshing algorithm".
 
 */
index 90e7eea..292a300 100644 (file)
@@ -1,8 +1,8 @@
 /*!
 
-\page quad_ijk_algo_page Quadrangle (Mapping) meshing algorithm
+\page quad_ijk_algo_page Quadrangle: Mapping meshing algorithm
 
-<b>Quadrangle (Mapping)</b> meshing algorithm is intended for creating
+<b>Quadrangle: Mapping</b> meshing algorithm is intended for creating
 all-quadrangle and quad-dominant meshes on faces without holes and
 bound by at least three edges.
 
index 756e032..8c33068 100644 (file)
@@ -10,7 +10,9 @@ shell. The meshes of the shells can consist both of triangles and
 quadrangles.
 
 The Radial Prism algorithm would fill the space between the two shells
-with meshes.
+with prisms.
+
+\image html radial_prism_mesh.png "Cut-view of a hollow sphere meshed by Radial Prism algorithm"
 
 This algorithm also needs the information concerning the number and
 distribution of mesh layers between the inner and the outer shapes.
@@ -21,4 +23,4 @@ Distribution of layers can be set with any of 1D Hypotheses.
 
 \image html distribution_of_layers.png
 
-*/
\ No newline at end of file
+*/
index 097d217..7e49a9a 100644 (file)
@@ -1,6 +1,6 @@
 /*!
 
-\page radial_quadrangle_1D2D_algo_page Radial Quadrangle 1D2D
+\page radial_quadrangle_1D2D_algo_page Radial Quadrangle 1D-2D
 
 \n This algorithm applies to the meshing of 2D shapes under the
 following conditions: the face must be a full ellipse or a part of ellipse
@@ -21,8 +21,9 @@ end lying on the elliptic curve.
 If no own hypothesis of the algorithm is assigned, any local or global
 hypothesis is used by the algorithm to discretize edges.
 
-If no 1D hypothesis is assigned to an edge, "Default Number of
-Segments" preferences parameter is used to discretize the edge.
+If no 1D hypothesis is assigned to an edge, 
+\ref nb_segments_pref "Default Number of Segments" preferences
+parameter is used to discretize the edge.
 
 \image html hypo_radquad_dlg.png
 
index c19afd1..85a3cdf 100644 (file)
@@ -8,31 +8,31 @@ This page provides example codes of \ref tui_defining_meshing_algos
 <li>Wire discretisation 1D algorithm
   <ul>
     <li>\ref tui_1d_adaptive "Adaptive 1D" hypothesis</li>
-    <li>\ref tui_1d_arithmetic "Arithmetic 1D" hypothesis</li>
+    <li>\ref tui_1d_arithmetic "Arithmetic Progression" hypothesis</li>
     <li>\ref tui_1d_arithmetic "Geometric Progression" hypothesis</li>
-    <li>\ref tui_deflection_1d "Deflection 1D and Number of Segments" hypotheses</li>
+    <li>\ref tui_deflection_1d "Deflection and Number of Segments" hypotheses</li>
     <li>\ref tui_start_and_end_length "Start and End Length" hypotheses</li>
     <li>\ref tui_average_length "Local Length"</li>
     <li>\ref tui_propagation "Propagation" additional hypothesis </li>
     <li>\ref tui_fixed_points "Fixed Points 1D" hypothesis</li>
   </ul>
 </li>
-<li>Triangle (Mefisto) 2D algorithm
+<li>Triangle: Mefisto 2D algorithm
   <ul>
     <li>\ref tui_max_element_area "Max Element Area" hypothesis </li>
     <li>\ref tui_length_from_edges "Length from Edges"
     hypothesis </li>
   </ul>
 </li>
-<li>Tetrahedron (Netgen) 3D algorithm
+<li>NETGEN 3D algorithm
   <ul>
     <li> \ref tui_max_element_volume "Max. Element Volume"hypothesis </li>
     <li> \ref tui_viscous_layers "Viscous layers"</li>
   </ul>
 </li>
 <li>\ref tui_projection "Projection Algorithms"</li>
-<li>\ref tui_radial_quadrangle "Radial Quadrangle 1D2D" algorithm</li>
-<li>Quadrangle (Mapping) 2D algorithm
+<li>\ref tui_radial_quadrangle "Radial Quadrangle 1D-2D" algorithm</li>
+<li>Quadrangle: Mapping 2D algorithm
   <ul>
     <li> \ref tui_quadrangle_parameters "Quadrangle Parameters" hypothesis </li>
   </ul>
@@ -45,7 +45,7 @@ This page provides example codes of \ref tui_defining_meshing_algos
 
 <br>
 \anchor tui_1d_arithmetic
-<h3>Arithmetic 1D and Geometric Progression</h3>
+<h3>Arithmetic Progression and Geometric Progression</h3>
 \tui_script{defining_hypotheses_ex01.py}
 
 <br>
@@ -55,7 +55,7 @@ This page provides example codes of \ref tui_defining_meshing_algos
 
 <br>
 \anchor tui_deflection_1d
-<h3>Deflection 1D and Number of Segments</h3>
+<h3>Deflection and Number of Segments</h3>
 \tui_script{defining_hypotheses_ex02.py}
 
 <br>
@@ -113,7 +113,7 @@ This page provides example codes of \ref tui_defining_meshing_algos
 \tui_script{defining_hypotheses_ex12.py}
 
 \anchor tui_radial_quadrangle
-<h2> Radial Quadrangle 1D2D example </h2>
+<h2> Radial Quadrangle 1D-2D example </h2>
 \tui_script{defining_hypotheses_ex13.py}
 
 \anchor tui_quadrangle_parameters
index 6ba5e25..0bd16a9 100644 (file)
@@ -1,6 +1,6 @@
 /*!
 
-\page tui_prism_3d_algo Use 3D extrusion meshing algorithm
+\page tui_prism_3d_algo Use Extrusion 3D meshing algorithm
 \tui_script{prism_3d_algo.py}
 
 The result geometry and mesh is shown below
index 5fbbadb..c4831c0 100644 (file)
@@ -2,14 +2,23 @@
 
 \page viewing_meshes_overview_page Viewing meshes
 
-\n After definition of algorithms and hypotheses a new mesh is listed
-in the Object Browser. Right-click on it and select \b Compute - the
-mesh will be automatically displayed in the <b>VTK 3D Viewer</b>. 
-Alternatively click <b>Display only</b> to hide all other objects at
-the same time.
+By default a just \ref compute_anchor "computed" mesh will be
+automatically displayed in the <b>VTK 3D Viewer</b>. (You can switch
+off \ref automatic_update_pref "Automatic Update" preference parameter
+to prevent this.)
+Click <b>Display only</b> to hide all other objects at the same time.
 
 <b>VTK 3D Viewer</b> is described in detail in the documentation on <b>GUI module</b>.
-\n After the mesh has appeared in the Viewer, you can select it with
+
+Use the following \ref mesh_preferences_page "preference parameters"
+to adjust how the mesh is displayed by default:
+- \ref automatic_update_pref "Automatic Update"
+- \ref display_mode_pref "Default display mode"
+- \ref quadratic_2d_mode_pref "Representation of the 2D quadratic elements"
+- All parameters of \ref mesh_tab_preferences "Mesh" tab page of the
+Preferences dialog.
+
+After the mesh has appeared in the Viewer, you can select it with
 left mouse click and  get information about it, change its
 presentation parameters and access to other useful options by
 right-clicking on the selected mesh.
@@ -20,21 +29,21 @@ right-clicking on the selected mesh.
 <li><b>Rename</b> - allows to rename the object in the Object browser.</li>
 <li><b>Hide all</b> - allows to hide all objects in the viewer.</li>
 <li><b>Update</b> - refreshes the presentation of your mesh in the
-Object Browser, applying all recent changes. </li>
+  Object Browser, applying all recent changes. </li>
 <li>\subpage mesh_infos_page "Mesh Information" -  provides
-information about the mesh.</li>
+  information about the mesh.</li>
 <li>\subpage find_element_by_point_page "Find Element by Point" -
-allows to find all mesh elements, to which belongs a point with the
+  allows to find all mesh elements, to which belongs a point with the
 given coordinates.</li>
 <li><b>Auto Color</b> - switch on / off auto-assigning colors for the
   groups. If switched on, a default color of a new group in 
   \ref creating_groups_page "Create Group" dialog is chosen
   randomly. </li>
 <li>\subpage numbering_page "Numbering" - allows to display the ID
-numbers of all meshing elements or nodes composing your mesh in the
-viewer.</li>
+  numbers of all meshing elements or nodes composing your mesh in the
+  viewer.</li>
 <li>\subpage display_mode_page "Display Mode" - allows to select between
-Wireframe, Shading and Nodes presentation.</li>
+  Wireframe, Shading and Nodes presentation.</li>
 <li>\subpage display_entity_page "Display Entity" - allows to display
   entities by types (Faces, Edges, Volumes etc.).</li>
 \anchor quadratic_2d_mode
@@ -44,24 +53,29 @@ Wireframe, Shading and Nodes presentation.</li>
   Arc representation applies to 1D and 2D elements only.
 </li>
 <li><b>Orientation of faces</b> - shows vectors of orientation of
-faces of the selected mesh. The orientation vector is shown for each 2D mesh element 
-and for each free face of a 3D mesh element. the vector direction is calculated by 
-the first three nodes of the face produced by vectors n1-n2 and n1-n3.</li> 
-<li>\subpage colors_size_page "Properties" - allows to define several properties, including color of elements, shrink size, ....</li>
+  faces of the selected mesh. The orientation vector is shown for each
+  2D mesh element and for each free facet of a 3D mesh element. The
+  vector direction is calculated by the first three nodes of the face
+  produced by vectors n1-n2 and n1-n3.</li>
+<li>\subpage colors_size_page "Properties" - allows to define several
+  visual properties, including color of elements, shrink size, ...</li>
 <li>\subpage transparency_page "Transparency" - allows to change the
-transparency of mesh elements.</li>
-<li>\ref quality_page "Controls" - graphically
-presents various information about meshes.</li>
+  transparency of mesh elements.</li>
+<li>\ref quality_page "Controls" - graphically presents various
+  information about the mesh.</li> 
 <li><b>Hide</b> - allows to hide the selected mesh from the viewer.</li>
-<li><b>Show Only</b> -allows to display only the selected mesh, hiding all other from the viewer.</li>
-<li>\subpage clipping_page "Clipping" - allows to create cross-sections of the selected objects.</li>
-<li><b>Dump view</b> - exports an object from the viewer in bmp, png, jpg or jpeg image format.</li>
+<li><b>Show Only</b> - allows to display only the selected mesh,
+  hiding all others from the viewer.</li>
+<li>\subpage clipping_page "Clipping" - allows to create
+  cross-sections of the displayed objects.</li>
+<li><b>Dump view</b> - exports an object from the viewer in bmp, png
+  or jpeg image format.</li>
 <li><b>Change background</b> - allows to redefine the background
-color. By default it is black.</li>
-<li><b>View Operations</b> checkbox - allows to show/hide the
-visualization toolbar in the viewer window.</li>
+  color. By default it is black.</li>
+<li><b>View Operations</b> - allows to show/hide the
+  visualization toolbar in the Viewer window.</li>
 <li><b>Recording Operations</b> - allows to show/hide the recording
-toolbar in the viewer window.</li>
+  toolbar in the Viewer window.</li>
 </ul>
 
 */
index 5c6e8f8..3a4e607 100644 (file)
 
 <meshers>
 
-<meshers-group name="Standard Meshers"
-               resources="StdMeshers"
+<meshers-group name      ="Standard Meshers"
+               resources ="StdMeshers"
                idl-module="StdMeshers"
                server-lib="StdMeshersEngine"
-               gui-lib="StdMeshersGUI">
+               gui-lib   ="StdMeshersGUI">
   <hypotheses>
 
     <hypothesis type     ="SegmentLengthAroundVertex"
     <hypothesis type     ="LocalLength"
                 label-id ="Local Length"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="0"
+                priority ="20"
                 dim      ="1"/>
 
     <hypothesis type     ="MaxLength"
                 label-id ="Max Size"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="2"
+                priority ="50"
                 dim      ="1"/>
 
     <hypothesis type     ="Arithmetic1D"
-                label-id ="Arithmetic 1D"
+                label-id ="Arithmetic Progression"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="1"
+                priority ="10"
                 dim      ="1"/>
 
     <hypothesis type     ="GeometricProgression"
                 label-id ="Geometric Progression"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="1"
+                priority ="20"
                 dim      ="1"/>
 
     <hypothesis type     ="FixedPoints1D"
-                label-id ="Fixed Points 1D"
+                label-id ="Fixed Points"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="2"
+                priority ="10"
                 dim      ="1"/>
 
     <hypothesis type     ="StartEndLength"
                 label-id ="Start and End Length"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="1"
+                priority ="30"
                 dim      ="1"/>
 
     <hypothesis type     ="NumberOfSegments"
-                label-id ="Nb. Segments"
+                label-id ="Number of Segments"
                 icon-id  ="mesh_hypo_segment.png"
+                group-id ="0"
+                priority ="10"
                 dim      ="1"/>
 
     <hypothesis type     ="Deflection1D"
-                label-id ="Deflection 1D"
+                label-id ="Deflection"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="2"
+                priority ="20"
                 dim      ="1"/>
 
     <hypothesis type     ="Adaptive1D"
                 label-id ="Adaptive"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="2"
+                priority ="30"
                 dim      ="1"/>
 
     <hypothesis type     ="Propagation"
     <hypothesis type     ="AutomaticLength"
                 label-id ="Automatic Length"
                 icon-id  ="mesh_hypo_length.png"
+                group-id ="2"
+                priority ="40"
                 dim      ="1"/>
 
     <hypothesis type     ="LengthFromEdges"
     <algorithm type     ="Regular_1D"
               label-id ="Wire Discretisation"
               icon-id  ="mesh_algo_regular.png"
+               group-id ="0"
+               priority ="10"
                hypos    ="Adaptive1D,LocalLength,MaxLength,Arithmetic1D,GeometricProgression,StartEndLength,NumberOfSegments,Deflection1D,AutomaticLength,FixedPoints1D"
                opt-hypos="Propagation,PropagOfDistribution,QuadraticMesh"
                input    ="VERTEX"
     <algorithm type     ="CompositeSegment_1D"
               label-id ="Composite Side Discretisation"
               icon-id  ="mesh_algo_regular.png"
+               group-id ="0"
+               priority ="20"
                hypos    ="Adaptive1D,LocalLength,MaxLength,Arithmetic1D,GeometricProgression,StartEndLength,NumberOfSegments,Deflection1D,AutomaticLength,FixedPoints1D"
                opt-hypos="Propagation,PropagOfDistribution,QuadraticMesh"
                input    ="VERTEX"
     </algorithm>
 
     <algorithm type      ="@MEFISTO2D_NAME@"
-              label-id  ="Triangle (Mefisto)"
+              label-id  ="Triangle: Mefisto"
               icon-id   ="mesh_algo_mefisto.png"
+               group-id ="1"
+               priority ="40"
                hypos     ="LengthFromEdges,MaxElementArea"
                opt-hypos ="ViscousLayers2D"
                input     ="EDGE"
     </algorithm>
 
     <algorithm type     ="Quadrangle_2D"
-               label-id ="Quadrangle (Mapping)"
+               label-id ="Quadrangle: Mapping"
                icon-id  ="mesh_algo_quad.png"
+               group-id ="0"
+               priority ="10"
                hypos    ="QuadrangleParams"
                opt-hypos="ViscousLayers2D"
                input    ="EDGE"
     </algorithm>
 
     <algorithm type     ="QuadFromMedialAxis_1D2D"
-               label-id ="Quadrangle (Medial Axis Projection)"
+               label-id ="Quadrangle: Medial Axis Projection"
                icon-id  ="mesh_algo_quad.png"
+               group-id ="0"
+               priority ="20"
                hypos    ="NumberOfLayers2D, LayerDistribution2D"
                opt-hypos="ViscousLayers2D"
                input    ="EDGE"
     <algorithm type     ="PolygonPerFace_2D"
                label-id ="Polygon per Face"
                icon-id  ="mesh_algo_polygon.png"
+               group-id ="2"
+               priority ="40"
                opt-hypos="ViscousLayers2D"
                input    ="EDGE"
                output   ="POLYGON,QUAD,TRIA"
     <algorithm type     ="Hexa_3D"
                label-id ="Hexahedron (i,j,k)"
                icon-id  ="mesh_algo_hexa.png"
+               group-id ="0"
+               priority ="10"
                input    ="QUAD"
                output   ="HEXA,PENTA"
               need-geom="false"
     <algorithm type    ="Projection_1D"
                label-id="Projection 1D"
                icon-id ="mesh_algo_regular.png"
+               group-id="1"
+               priority="10"
                hypos   ="ProjectionSource1D"
                output  ="EDGE"
                need-hyp="true"
     <algorithm type    ="Projection_2D"
                label-id="Projection 2D"
                icon-id ="mesh_algo_quad.png"
+               group-id="2"
+               priority="30"
                input   ="EDGE"
                hypos   ="ProjectionSource2D"
                output  ="QUAD,TRIA"
     <algorithm type    ="Projection_1D2D"
                label-id="Projection 1D-2D"
                icon-id ="mesh_algo_quad.png"
+               group-id="2"
+               priority="20"
                hypos   ="ProjectionSource2D"
                output  ="QUAD,TRIA"
                need-hyp="true"
     <algorithm type    ="Projection_3D"
                label-id="Projection 3D"
                icon-id ="mesh_algo_hexa.png"
+               group-id="2"
+               priority="20"
                hypos   ="ProjectionSource3D"
                input   ="QUAD,TRIA"
                need-hyp="true"
     <algorithm type    ="Import_1D"
                label-id="Import 1D Elements from Another Mesh"
                icon-id ="mesh_algo_regular.png"
+               group-id="1"
+               priority="20"
                hypos   ="ImportSource1D"
                output  ="EDGE"
                need-hyp="true"
     <algorithm type             ="Import_1D2D"
                label-id         ="Import 1D-2D Elements from Another Mesh"
                icon-id          ="mesh_algo_quad.png"
+               group-id         ="2"
+               priority         ="50"
                hypos            ="ImportSource2D"
                output           ="QUAD,TRIA"
                support-submeshes="false"
     </algorithm>
 
     <algorithm type    ="Prism_3D"
-               label-id="3D Extrusion"
+               label-id="Extrusion 3D"
                icon-id ="mesh_algo_hexa.png"
+               group-id="2"
+               priority="10"
                input   ="QUAD,TRIA"
                output  ="HEXA,PENTA,OCTA,POLYHEDRON"
                dim     ="3">
     </algorithm>
 
     <algorithm type    ="RadialPrism_3D"
-               label-id="Radial Prism 3D"
+               label-id="Radial Prism"
                icon-id ="mesh_algo_hexa.png"
+               group-id="2"
+               priority="30"
                hypos   ="NumberOfLayers, LayerDistribution"
                input   ="QUAD,TRIA"
                output  ="HEXA,PENTA,OCTA,POLYHEDRON"
     <algorithm type    ="UseExisting_1D"
                label-id="Use Edges to be Created Manually"
                icon-id ="mesh_algo_regular.png"
+               group-id="1"
+               priority="30"
                input   ="VERTEX"
                output  ="EDGE"
                dim     ="1">
     <algorithm type    ="UseExisting_2D"
                label-id="Use Faces to be Created Manually"
                icon-id ="mesh_algo_quad.png"
+               group-id="2"
+               priority="60"
                input   ="EDGE"
                output  ="QUAD,TRIA"
                dim     ="2">
     </algorithm>
 
     <algorithm type    ="RadialQuadrangle_1D2D"
-               label-id="Radial Quadrangle 1D2D"
+               label-id="Radial Quadrangle 1D-2D"
                icon-id ="mesh_algo_quad.png"
+               group-id="2"
+               priority="10"
                hypos   ="NumberOfLayers2D, LayerDistribution2D"
                input   ="EDGE"
                output  ="QUAD"
     <algorithm type             ="Cartesian_3D"
                label-id         ="Body Fitting"
                icon-id          ="mesh_algo_hexa.png"
+               group-id         ="0"
+               priority         ="20"
                hypos            ="CartesianParameters3D"
                support-submeshes="false"
                output           ="HEXA"
index 6582e23..95871d3 100644 (file)
@@ -162,6 +162,17 @@ SMDS_Mesh::SMDS_Mesh():
   points->Delete();
   myGrid->BuildLinks();
   this->Modified();
+
+  // initialize static maps in SMDS_MeshCell, to be thread-safe
+  if ( myMeshId == 0 )
+  {
+    SMDS_MeshCell::toVtkType( SMDSEntity_Node );
+    SMDS_MeshCell::toVtkOrder( SMDSEntity_Node );
+    SMDS_MeshCell::reverseSmdsOrder( SMDSEntity_Node );
+    SMDS_MeshCell::interlacedSmdsOrder( SMDSEntity_Node );
+    SMDS_MeshCell::toSmdsType( VTK_VERTEX );
+    SMDS_MeshCell::fromVtkOrder( SMDSEntity_Node );
+  }
 }
 
 ///////////////////////////////////////////////////////////////////////////////
index 803f486..413b126 100644 (file)
@@ -33,7 +33,7 @@ public:
   virtual ~SMDS_MeshCell();
 
   virtual bool ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes)= 0;
-  virtual bool vtkOrder(const SMDS_MeshNode* nodes[], const int nbNodes) {return true; }
+  virtual bool vtkOrder(const SMDS_MeshNode* nodes[], const int nbNodes) { return true; }
 
   static VTKCellType         toVtkType (SMDSAbs_EntityType vtkType);
   static SMDSAbs_EntityType  toSmdsType(VTKCellType vtkType);
index 168b9ce..b0df38a 100644 (file)
@@ -1374,7 +1374,7 @@ const TopoDS_Shape& SMESHDS_Mesh::IndexToShape(int ShapeIndex) const
     if ( ShapeIndex > 0 )
       return myIndexToShape.FindKey(ShapeIndex);
   }
-  catch ( Standard_OutOfRange )
+  catch ( ... )
   {
   }
   static TopoDS_Shape nullShape;
index 0821592..bda2714 100644 (file)
@@ -5001,19 +5001,6 @@ void SMESHGUI::createPreferences()
   setPreferenceProperty( lim, "special", tr( "PREF_UPDATE_LIMIT_NOLIMIT" ) );
   addPreference( tr( "PREF_INCREMENTAL_LIMIT" ), autoUpdate, LightApp_Preferences::Bool, "SMESH", "incremental_limit" );
 
-  int qaGroup = addPreference( tr( "PREF_GROUP_QUALITY" ), genTab );
-  setPreferenceProperty( qaGroup, "columns", 2 );
-  addPreference( tr( "PREF_DISPLAY_ENTITY" ), qaGroup, LightApp_Preferences::Bool, "SMESH", "display_entity" );
-  addPreference( tr( "PREF_PRECISION_USE" ), qaGroup, LightApp_Preferences::Bool, "SMESH", "use_precision" );
-  int prec = addPreference( tr( "PREF_PRECISION_VALUE" ), qaGroup, LightApp_Preferences::IntSpin, "SMESH", "controls_precision" );
-  setPreferenceProperty( prec, "min", 0 );
-  setPreferenceProperty( prec, "max", 100 );
-  int doubleNodesTol = addPreference( tr( "PREF_EQUAL_NODES_TOL" ), qaGroup, LightApp_Preferences::DblSpin, "SMESH", "equal_nodes_tolerance" );
-  setPreferenceProperty( doubleNodesTol, "precision", 10 );
-  setPreferenceProperty( doubleNodesTol, "min", 0.0000000001 );
-  setPreferenceProperty( doubleNodesTol, "max", 1000000.0 );
-  setPreferenceProperty( doubleNodesTol, "step", 0.0000001 );
-
   int dispgroup = addPreference( tr( "PREF_DISPLAY_MODE_GROUP" ), genTab );
   setPreferenceProperty( dispgroup, "columns", 2 );
   int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), dispgroup, LightApp_Preferences::Selector, "SMESH", "display_mode" );
@@ -5047,6 +5034,18 @@ void SMESHGUI::createPreferences()
   setPreferenceProperty( maxAngle, "min", 1 );
   setPreferenceProperty( maxAngle, "max", 90 );
 
+  int qaGroup = addPreference( tr( "PREF_GROUP_QUALITY" ), genTab );
+  setPreferenceProperty( qaGroup, "columns", 2 );
+  addPreference( tr( "PREF_DISPLAY_ENTITY" ), qaGroup, LightApp_Preferences::Bool, "SMESH", "display_entity" );
+  addPreference( tr( "PREF_PRECISION_USE" ), qaGroup, LightApp_Preferences::Bool, "SMESH", "use_precision" );
+  int prec = addPreference( tr( "PREF_PRECISION_VALUE" ), qaGroup, LightApp_Preferences::IntSpin, "SMESH", "controls_precision" );
+  setPreferenceProperty( prec, "min", 0 );
+  setPreferenceProperty( prec, "max", 100 );
+  int doubleNodesTol = addPreference( tr( "PREF_EQUAL_NODES_TOL" ), qaGroup, LightApp_Preferences::DblSpin, "SMESH", "equal_nodes_tolerance" );
+  setPreferenceProperty( doubleNodesTol, "precision", 10 );
+  setPreferenceProperty( doubleNodesTol, "min", 0.0000000001 );
+  setPreferenceProperty( doubleNodesTol, "max", 1000000.0 );
+  setPreferenceProperty( doubleNodesTol, "step", 0.0000001 );
 
 
   int exportgroup = addPreference( tr( "PREF_GROUP_EXPORT" ), genTab );
index 9bfb74a..07757c9 100644 (file)
@@ -749,6 +749,8 @@ HypothesisData::HypothesisData( const QString& theTypeName,
                                 const QString& theLabel,
                                 const QString& theIconId,
                                 const QString& theContext,
+                                const int      theGroupID,
+                                const int      thePriority,
                                 const QList<int>& theDim,
                                 const bool theIsAuxOrNeedHyp,
                                 const QStringList& theBasicHypos,
@@ -764,6 +766,8 @@ HypothesisData::HypothesisData( const QString& theTypeName,
     Label( theLabel ),
     IconId( theIconId ),
     Context( theContext ),
+    GroupID( theGroupID ),
+    Priority( thePriority ),
     Dim( theDim ),
     IsAuxOrNeedHyp( theIsAuxOrNeedHyp ),
     IsNeedGeometry( theIsNeedGeometry ),
index 6eb03fa..0852bc6 100644 (file)
@@ -173,7 +173,8 @@ struct HypothesisData
 {
   HypothesisData( const QString&, const QString&, const QString&,
                   const QString&, const QString&, const QString&,
-                  const QString&, const QList<int>&, const bool,
+                  const QString&, const int, const int,
+                  const QList<int>&, const bool,
                   const QStringList&, const QStringList&,
                   const QStringList&, const QStringList&,
                   const bool=true, const bool supportSub=false );
@@ -185,11 +186,13 @@ struct HypothesisData
   QString Label;           //!< label
   QString IconId;          //!< icon identifier
   QString Context;         //!< ["GLOBAL","LOCAL","ANY"(default)]
+  int     GroupID;         //!< group ID (staring from zero)
+  int     Priority;        //!< integer, priority within the group
   QList<int> Dim;          //!< list of supported dimensions (see SMESH::Dimension enumeration)
-  bool IsAuxOrNeedHyp;     //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise
-  //!<                          TRUE if given algorithm can't work w/o hypotheses
+  bool IsAuxOrNeedHyp;     //!< TRUE if given HYPOTHESIS is auxiliary one, FALSE otherwise
+  //!<                          TRUE if given ALGORITHM can't work w/o hypotheses
   bool IsNeedGeometry;     //!< TRUE if the algorithm works with shapes only, FALSE otherwise
-  bool IsSupportSubmeshes; //!< TRUE if the algo building all-dim elems supports submeshes
+  bool IsSupportSubmeshes; //!< TRUE if the algorithm building all-dim elems supports sub-meshes
 
   // for algorithm only: dependencies algo <-> algo and algo -> hypos
   QStringList BasicHypos;   //!< list of basic hypotheses
index fc1f8c5..71b8125 100644 (file)
@@ -49,9 +49,7 @@
 #include <string>
 
 // Qt includes
-#include <QMap>
 #include <QDir>
-//#include <QList>
 
 
 // Other includes
@@ -180,7 +178,8 @@ namespace SMESH
   void InitAvailableHypotheses()
   {
     SUIT_OverrideCursor wc;
-    if (myHypothesesMap.empty() && myAlgorithmsMap.empty()) {
+    if ( myHypothesesMap.empty() && myAlgorithmsMap.empty() )
+    {
       // Resource manager
       SUIT_ResourceMgr* resMgr = SMESHGUI::resourceMgr();
       if (!resMgr) return;
@@ -369,6 +368,90 @@ namespace SMESH
     return aHypData;
   }
 
+  //================================================================================
+  /*!
+   * \brief Return the HypothesisData holding a name of a group of hypotheses
+   *        a given hypothesis belongs to
+   */
+  //================================================================================
+
+  HypothesisData* GetGroupTitle( const HypothesisData* hyp, const bool isAlgo )
+  {
+    static std::vector< std::vector< HypothesisData > > theGroups;
+    if ( theGroups.empty() )
+    {
+      theGroups.resize(14); // 14: isAlgo * 10 + dim
+
+      QString dummyS("GROUP");
+      QList<int> dummyIL; dummyIL << 1;
+      QStringList dummySL;
+      HypothesisData group( dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,-1,-1,
+                            dummyIL, 0, dummySL,dummySL,dummySL,dummySL );
+      // no group
+      int key = 0;
+      theGroups[ key ].push_back( group );
+
+      // 1D algo
+      key = 11;
+      //        0: Basic
+      group.Label = "GROUP:" + QObject::tr( "SMESH_1D_ALGO_GROUP_BASIC" );
+      theGroups[ key ].push_back( group );
+      //        1: Advanced
+      group.Label = "GROUP:" + QObject::tr( "SMESH_1D_ALGO_GROUP_ADVANCED" );
+      theGroups[ key ].push_back( group );
+
+      // 1D hypotheses
+      key = 01;
+      //        0: Basic
+      group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_BASIC" );
+      theGroups[ key ].push_back( group );
+      //        1: Progression
+      group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_PROGRESSION" );
+      theGroups[ key ].push_back( group );
+      //        2: Advanced
+      group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_ADVANCED" );
+      theGroups[ key ].push_back( group );
+
+      // 2D algo
+      key = 12;
+      //        0: Regular
+      group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_REGULAR" );
+      theGroups[ key ].push_back( group );
+      //        1: Free
+      group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_FREE" );
+      theGroups[ key ].push_back( group );
+      //        2: Advanced
+      group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_ADVANCED" );
+      theGroups[ key ].push_back( group );
+
+      // 3D algo
+      key = 13;
+      //        0: Regular
+      group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_REGULAR" );
+      theGroups[ key ].push_back( group );
+      //        1: Free
+      group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_FREE" );
+      theGroups[ key ].push_back( group );
+      //        2: Advanced
+      group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_ADVANCED" );
+      theGroups[ key ].push_back( group );
+    }
+
+    size_t key = 0, groupID = 0;
+    if ( hyp && !hyp->Dim.isEmpty() )
+    {
+      key     = hyp->Dim[0] + isAlgo * 10;
+      groupID = hyp->GroupID;
+    }
+
+    if ( key < theGroups.size() && !theGroups[ key ].empty() )
+    {
+      std::vector< HypothesisData > & group = theGroups[ key ];
+      return & ( groupID < group.size() ? group[ groupID ] : group.back() );
+    }
+    return & theGroups[ 0 ][ 0 ];
+  }
+
   bool IsAvailableHypothesis(const HypothesisData* algoData,
                              const QString&        hypType,
                              bool&                 isAuxiliary)
index 70314e2..0bf059a 100644 (file)
@@ -79,6 +79,9 @@ namespace SMESH
   HypothesisData* GetHypothesisData( const QString& );
 
   SMESHGUI_EXPORT
+  HypothesisData* GetGroupTitle( const HypothesisData* hyp, const bool isAlgo );
+
+  SMESHGUI_EXPORT
   bool IsAvailableHypothesis( const HypothesisData*,
                               const QString&,
                               bool& );
index ad2adb5..09218ef 100644 (file)
@@ -30,6 +30,7 @@
 // SALOME GUI includes
 #include <SUIT_Session.h>
 #include <SUIT_ResourceMgr.h>
+#include <QtxMenu.h>
 
 // Qt includes
 #include <QComboBox>
@@ -163,19 +164,33 @@ SMESHGUI_MeshTab::~SMESHGUI_MeshTab()
  *  \param [in] txt - item text
  *  \param [in] type - HypType
  *  \param [in] index - index of item in a list of items
+ *  \param [in] isGroup - is the item a group title
  */
 //================================================================================
 
-void SMESHGUI_MeshTab::addItem( const QString& txt, const int type, const int index )
+void SMESHGUI_MeshTab::addItem( const QString& txt,
+                                const int      type,
+                                const int      index,
+                                const bool     isGroup )
 {
+  const char* prefix = "  ";
   if ( type <= AddHyp )
   {
-    myHypCombo[ type ]->addItem( txt, QVariant( index ));
-    myHypCombo[ type ]->setMaxVisibleItems( qMax( 10, myHypCombo[ type ]->count() ) );
+    if ( isGroup )
+    {
+      int idx = myHypCombo[ type ]->count();
+      myHypCombo[ type ]->addItem( txt.mid( 6 ), QVariant( index ));
+      myHypCombo[ type ]->setItemData( idx, "separator", Qt::AccessibleDescriptionRole );
+    }
+    else
+    {
+      myHypCombo[ type ]->addItem( prefix + txt, QVariant( index ));
+    }
+    //myHypCombo[ type ]->setMaxVisibleItems( qMax( 10, myHypCombo[ type ]->count() ) );
   }
   else
   {
-    QListWidgetItem* item = new QListWidgetItem( txt, myAddHypList );
+    QListWidgetItem* item = new QListWidgetItem( prefix + txt, myAddHypList );
     item->setData( Qt::UserRole, QVariant( index ));
   }
 }
@@ -222,7 +237,7 @@ void SMESHGUI_MeshTab::setAvailableHyps( const int theId, const QStringList& the
     {
       addItem( tr( "NONE"), Algo, 0 );
       for ( int i = 0, nbHyp = theHyps.count(); i < nbHyp; ++i )
-        addItem( theHyps[i], Algo, i+1 );
+        addItem( theHyps[i], Algo, i+1, theHyps[i].startsWith( "GROUP:" ));
       myHypCombo[ Algo ]->setCurrentIndex( 0 );
     }
   }
@@ -400,15 +415,25 @@ void SMESHGUI_MeshTab::onCreateHyp()
 {
   bool isMainHyp = ( sender() == myCreateHypBtn[ MainHyp ]);
 
-  QMenu aPopup( this );
+  QtxMenu aPopup( this );
   
   QStringList aHypNames = isMainHyp ? 
     myAvailableHypTypes[ MainHyp ] : myAvailableHypTypes[ AddHyp ];
 
   QList<QAction*> actions;
   for ( int i = 0, n = aHypNames.count(); i < n; i++ )
-    actions.append( aPopup.addAction( aHypNames[ i ] ) );
-
+  {
+    QAction* a = 0;
+    if ( aHypNames[ i ].startsWith( "GROUP:" ))
+    {
+      aPopup.appendGroupTitle( aHypNames[ i ].mid( 6 ));
+    }
+    else
+    {
+      a = aPopup.addAction( aHypNames[ i ] );
+    }
+    actions.append( a );
+  }
   QAction* a = aPopup.exec( QCursor::pos() );
   if ( a )
     emit createHyp( isMainHyp ? MainHyp : AddHyp, actions.indexOf( a ) );
@@ -444,7 +469,18 @@ void SMESHGUI_MeshTab::onEditHyp()
 //================================================================================
 void SMESHGUI_MeshTab::onHyp( int theIndex )
 {
-  const QObject* aSender = sender();
+  QObject* aSender = sender();
+
+  if ( QComboBox* cb = qobject_cast< QComboBox* >( aSender ))
+  {
+    // don't allow selecting a group title
+    if ( cb->itemData( theIndex, Qt::AccessibleDescriptionRole ) == "separator" )
+    {
+      cb->setCurrentIndex( theIndex+1 );
+      return;
+    }
+  }
+
   if ( aSender == myHypCombo[ Algo ] )
   {
     emit selectAlgo( theIndex - 1 ); // - 1 because there is NONE on the top
index 9c03374..afc499f 100644 (file)
@@ -150,7 +150,7 @@ private slots:
 
 private:
 
-  void                         addItem( const QString& txt, const int type, const int index );
+  void                         addItem( const QString& txt, const int type, const int index, const bool isGroup=false );
   int                          getCurrentIndex( const int type, const bool curByType=false) const;
 
   QMap<int, QStringList>       myAvailableHypTypes;
index 8677fad..8adb028 100644 (file)
@@ -943,7 +943,6 @@ void SMESHGUI_MeshOp::availableHyps( const int       theDim,
   bool isAux  = ( theHypType >= AddHyp );
   QStringList aHypTypeNameList = SMESH::GetAvailableHypotheses( isAlgo, theDim, isAux, myIsOnGeometry, !myIsMesh );
 
-  QStringList::const_iterator anIter;
   GEOM::GEOM_Object_var aGeomVar;
   QString aCurrentGeomToSelect;
   if ( !theMeshType.isEmpty() ) {
@@ -955,23 +954,50 @@ void SMESHGUI_MeshOp::availableHyps( const int       theDim,
      myHypMapIsApplicable.clear();
   }
 
+  std::multimap< double, HypothesisData* > sortedHyps;
+  QStringList::const_iterator anIter;
   for ( anIter = aHypTypeNameList.begin(); anIter != aHypTypeNameList.end(); ++anIter )
   {
     HypothesisData* aData = SMESH::GetHypothesisData( *anIter );
     if ( ( isCompatible ( thePrevAlgoData, aData, theHypType ) &&
            isCompatible ( theNextAlgoData, aData, theHypType ) ) ||
-           ( theMeshType == "ANY" && aData->InputTypes.isEmpty())) {
-      if ( !theMeshType.isEmpty() && theDim >= SMESH::DIM_2D &&
+           ( theMeshType == "ANY" && aData->InputTypes.isEmpty()))
+    {
+      if ( ( !theMeshType.isEmpty() )  &&
+           ( theDim >= SMESH::DIM_2D ) &&
            ( ( theMeshType != "ANY" && !isCompatibleToMeshType( aData, theMeshType )) ||
-           !isCompatibleToGeometry( aData, aCurrentGeomToSelect, aGeomVar )))
+             !isCompatibleToGeometry( aData, aCurrentGeomToSelect, aGeomVar )))
         continue;
+
+      int  groupID = aData->GroupID;
+      int priority = aData->Priority;
+      if ( groupID  < 0 || groupID > 9    ) groupID  = 9;
+      if ( priority < 0 || priority > 999 ) priority = 999;
+
+      sortedHyps.insert( std::make_pair( groupID + priority * 1e-3, aData ));
+    }
+  }
+
+  if ( !sortedHyps.empty() )
+  {
+    HypothesisData* aPrevGroup = SMESH::GetGroupTitle( sortedHyps.rbegin()->second, isAlgo );
+    std::multimap< double, HypothesisData* >::iterator key_hyp = sortedHyps.begin();
+    for ( ; key_hyp != sortedHyps.end(); ++key_hyp )
+    {
+      HypothesisData*  aData = key_hyp->second;
+      HypothesisData* aGroup = SMESH::GetGroupTitle( aData, isAlgo );
+      if ( aPrevGroup != aGroup )
+      {
+        theDataList.append( aGroup );
+        theHyps.append( aGroup->Label );
+        aPrevGroup = aGroup;
+      }
       theDataList.append( aData );
       theHyps.append( aData->Label );
     }
   }
 
-  if ( !theMeshType.isEmpty() && !aCurrentGeomToSelect.isEmpty() &&
-       myLastGeomToSelect != aCurrentGeomToSelect )
+  if ( !theMeshType.isEmpty() && !aCurrentGeomToSelect.isEmpty() )
     myLastGeomToSelect = aCurrentGeomToSelect;
 }
 
index ec8ed41..f164f4f 100644 (file)
@@ -141,11 +141,18 @@ bool SMESHGUI_XmlHandler::startElement (const QString&, const QString&,
       else
         context = context.toUpper();
 
+      bool isOk;
+      QString groupIDStr = atts.value("group-id");
+      int groupID = groupIDStr.toUInt( &isOk );
+      if ( !isOk ) groupID = -1;
+      QString priorityStr = atts.value("priority");
+      int priority = priorityStr.toUInt( &isOk );
+      if ( !isOk ) priority = -1;
+
       QString aDimStr = atts.value("dim");
       aDimStr = aDimStr.remove( ' ' );
       QStringList aDimList = aDimStr.split( ',', QString::SkipEmptyParts );
       QStringList::iterator anIter;
-      bool isOk;
       QList<int> aDim;
       for ( anIter = aDimList.begin(); anIter != aDimList.end(); ++anIter )
       {
@@ -170,7 +177,7 @@ bool SMESHGUI_XmlHandler::startElement (const QString&, const QString&,
       if ( !aHypAlType.contains( BAD_HYP_FLAG ) ) {
         HypothesisData* aHypData =
           new HypothesisData (aHypAlType, myPluginName, myServerLib, myClientLib,
-                              aLabel, anIcon, context, aDim, isAuxOrNeedHyp,
+                              aLabel, anIcon, context, groupID, priority, aDim, isAuxOrNeedHyp,
                               attr[ HYPOS ], attr[ OPT_HYPOS ], attr[ INPUT ], attr[ OUTPUT ],
                               isNeedGeom, isSupportSubmeshes );
 
index d275e1d..127fae4 100644 (file)
@@ -4389,6 +4389,50 @@ It can&apos;t be deleted </translation>
         <source>SMESH_ADVANCED</source>
         <translation>Advanced</translation>
     </message>
+    <message>
+        <source>SMESH_1D_ALGO_GROUP_BASIC</source>
+        <translation>Basic</translation>
+    </message>
+    <message>
+        <source>SMESH_1D_ALGO_GROUP_ADVANCED</source>
+        <translation>Advanced</translation>
+    </message>
+    <message>
+        <source>SMESH_1D_HYP_GROUP_BASIC</source>
+        <translation>Basic</translation>
+    </message>
+    <message>
+        <source>SMESH_1D_HYP_GROUP_PROGRESSION</source>
+        <translation>Progression</translation>
+    </message>
+    <message>
+        <source>SMESH_1D_HYP_GROUP_ADVANCED</source>
+        <translation>Advanced</translation>
+    </message>
+    <message>
+        <source>SMESH_2D_ALGO_GROUP_REGULAR</source>
+        <translation>Regular faces</translation>
+    </message>
+    <message>
+        <source>SMESH_2D_ALGO_GROUP_FREE</source>
+        <translation>Free faces</translation>
+    </message>
+    <message>
+        <source>SMESH_2D_ALGO_GROUP_ADVANCED</source>
+        <translation>Advanced</translation>
+    </message>
+    <message>
+        <source>SMESH_3D_ALGO_GROUP_REGULAR</source>
+        <translation>Regular volumes</translation>
+    </message>
+    <message>
+        <source>SMESH_3D_ALGO_GROUP_FREE</source>
+        <translation>Free volumes</translation>
+    </message>
+    <message>
+        <source>SMESH_3D_ALGO_GROUP_ADVANCED</source>
+        <translation>Advanced</translation>
+    </message>
 </context>
 <context>
     <name>SMESHGUI_FieldSelectorWdg</name>
index 2be3432..d9b807c 100644 (file)
@@ -161,7 +161,7 @@ bool StdMeshers_Quadrangle_2D::CheckHypothesis
     }
     else if (strcmp("TrianglePreference", aHyp->GetName()) == 0){
       isFirstParams = false;
-      myTrianglePreference = true; 
+      myTrianglePreference = true;
     }
     else {
       isFirstParams = false;
@@ -174,18 +174,18 @@ bool StdMeshers_Quadrangle_2D::CheckHypothesis
     if (isFirstParams) {
       if (strcmp("QuadranglePreference", aHyp->GetName()) == 0) {
         myQuadranglePreference = true;
-        myTrianglePreference = false; 
+        myTrianglePreference = false;
         myQuadType = QUAD_STANDARD;
       }
       else if (strcmp("TrianglePreference", aHyp->GetName()) == 0){
         myQuadranglePreference = false;
-        myTrianglePreference = true; 
+        myTrianglePreference = true;
         myQuadType = QUAD_STANDARD;
       }
     }
-    else {
-      const StdMeshers_QuadrangleParams* aHyp2 = 
-        (const StdMeshers_QuadrangleParams*)aHyp;
+    else if (const StdMeshers_QuadrangleParams* aHyp2 =
+             dynamic_cast<const StdMeshers_QuadrangleParams*>( aHyp ))
+    {
       myTriaVertexID = aHyp2->GetTriaVertex();
 
       if (!myQuadranglePreference && !myTrianglePreference) { // priority of hypos
@@ -206,7 +206,7 @@ bool StdMeshers_Quadrangle_2D::CheckHypothesis
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================