Salome HOME
23250: [CEA 1766] 3D tab is empty when editing mesh
authoreap <eap@opencascade.com>
Thu, 3 Mar 2016 12:42:23 +0000 (15:42 +0300)
committereap <eap@opencascade.com>
Thu, 3 Mar 2016 12:42:23 +0000 (15:42 +0300)
+ minor changes in docs

+ fix other problems with Mesh Dialog:
1) at mesh edition, old hypothesis remain assigned after playing with
   Mesh Type and Hypo Sets (change is in isSelectedHyp())
2) When a 3D algo is unset due to change of Mesh Type, its hypotheses remain
   assigned and a new hyp can be created

16 files changed:
doc/salome/examples/filters_ex01.py
doc/salome/examples/filters_ex09.py
doc/salome/examples/filters_ex10.py
doc/salome/examples/filters_ex13.py
doc/salome/examples/filters_ex17.py
doc/salome/examples/filters_ex18.py
doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png
doc/salome/gui/SMESH/input/about_filters.doc
doc/salome/gui/SMESH/input/about_meshes.doc
doc/salome/gui/SMESH/input/selection_filter_library.doc
doc/salome/gui/SMESH/input/tui_filters.doc
src/SMESHGUI/SMESHGUI_MeshDlg.cxx
src/SMESHGUI/SMESHGUI_MeshOp.cxx
src/SMESHGUI/SMESHGUI_MeshOp.h
src/SMESH_PY/smeshstudytools.py
src/SMESH_SWIG/smeshBuilder.py

index 88305c9..8af735e 100644 (file)
@@ -1,4 +1,5 @@
 # Aspect ratio
+# This script demonstrates various usages of filters
 
 # create mesh
 from SMESH_mechanic import *
index 9efa008..dd64159 100644 (file)
@@ -1,23 +1,21 @@
 # Free borders
 
-# create mesh
-
-import salome
+# initialize SALOME and modules
+import salome, SMESH
 salome.salome_init()
-import GEOM
 from salome.geom import geomBuilder
 geompy = geomBuilder.New(salome.myStudy)
-
-import SMESH, SALOMEDS
 from salome.smesh import smeshBuilder
 smesh =  smeshBuilder.New(salome.myStudy)
 
+# create mesh
 face = geompy.MakeFaceHW(100, 100, 1)
 geompy.addToStudy( face, "quadrangle" )
 mesh = smesh.Mesh(face)
 mesh.Segment().NumberOfSegments(10)
 mesh.Triangle().MaxElementArea(25)
 mesh.Compute()
+
 # get all free borders
 filter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_FreeBorders)
 ids = mesh.GetIdsFromFilter(filter)
index 423b910..bf6f741 100644 (file)
@@ -1,23 +1,21 @@
 # Free edges
 
-# create mesh
-
-import salome
+# initialize SALOME and modules
+import salome, SMESH
 salome.salome_init()
-import GEOM
 from salome.geom import geomBuilder
 geompy = geomBuilder.New(salome.myStudy)
-
-import SMESH, SALOMEDS
 from salome.smesh import smeshBuilder
 smesh =  smeshBuilder.New(salome.myStudy)
 
+# create mesh
 face = geompy.MakeFaceHW(100, 100, 1)
 geompy.addToStudy( face, "quadrangle" )
 mesh = smesh.Mesh(face)
 mesh.Segment().NumberOfSegments(10)
 mesh.Triangle().MaxElementArea(25)
 mesh.Compute()
+
 # get all faces with free edges
 filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_FreeEdges)
 ids = mesh.GetIdsFromFilter(filter)
index f56d39f..8d80770 100644 (file)
@@ -4,7 +4,7 @@
 from SMESH_mechanic import *
 # remove some faces to have faces with bare borders
 mesh.RemoveElements( mesh.GetElementsByType(SMESH.FACE)[0:5] )
-# get all faces bare borders
+# get all faces with bare borders
 filter = smesh.GetFilter(SMESH.FACE, SMESH.FT_BareBorderFace)
 ids = mesh.GetIdsFromFilter(filter)
 print "Faces with bare borders:", ids
index c3f80d6..9dc01b4 100644 (file)
@@ -1,16 +1,12 @@
 # Double nodes
 
-
 import salome
 salome.salome_init()
-import GEOM
 from salome.geom import geomBuilder
 geompy = geomBuilder.New(salome.myStudy)
-
-import SMESH, SALOMEDS
+import SMESH
 from salome.smesh import smeshBuilder
 smesh =  smeshBuilder.New(salome.myStudy)
-import salome_notebook
 
 # make a mesh on a box
 box = geompy.MakeBoxDXDYDZ(100,100,100)
@@ -20,8 +16,8 @@ mesh.Quadrangle()
 mesh.Hexahedron()
 mesh.Compute()
 # copy all elements with translation
-mesh.TranslateObject( mesh, smesh.MakeDirStruct( 10,0,0), Copy=True )
-# create filters to find nodes equal within tolerance of 1e-5
+mesh.TranslateObject( mesh, [10,0,0], Copy=True )
+# create  a filter to find nodes equal within tolerance of 1e-5
 filter = smesh.GetFilter(SMESH.NODE, SMESH.FT_EqualNodes, Tolerance=1e-5)
 # get equal nodes
 print "Number of equal nodes:", len( mesh.GetIdsFromFilter( filter ))
index 805f54e..32950cc 100644 (file)
@@ -1,8 +1,25 @@
 # Borders at multi-connection
 
-# create mesh
-from SMESH_mechanic import *
-# get border edges with number of connected faces = 5
-filter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_MultiConnection, 5)
+import salome
+salome.salome_init()
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+import SMESH
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New(salome.myStudy)
+
+# make a mesh on a box
+box = geompy.MakeBoxDXDYDZ(100,100,100)
+mesh = smesh.Mesh( box, "Box" )
+mesh.Segment().NumberOfSegments(10)
+mesh.Quadrangle()
+mesh.Hexahedron()
+mesh.Compute()
+# copy all elements with translation and merge nodes
+mesh.TranslateObject( mesh, [10,0,0], Copy=True )
+mesh.MergeNodes( mesh.FindCoincidentNodes( 1e-5 ))
+
+# get mesh edges with number of connected elements (faces and volumes) == 3
+filter = smesh.GetFilter(SMESH.EDGE, SMESH.FT_MultiConnection, 3)
 ids = mesh.GetIdsFromFilter(filter)
-print "Number of border edges with 5 faces connected:", len(ids)
+print "Number of border edges with 3 faces connected:", len(ids)
index a1e799a..3508518 100644 (file)
Binary files a/doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png and b/doc/salome/gui/SMESH/images/bare_border_volumes_smpl.png differ
index f331fa4..7468931 100644 (file)
@@ -4,11 +4,11 @@
 
 \b Filters allow picking only the mesh elements satisfying to a
 specific condition or a set of conditions. Filters can be used to create
-or edit mesh groups, remove elements from the mesh object, control
+or edit mesh groups, remove elements from the mesh, control
 mesh quality by different parameters, etc.
 
 Several criteria can be combined together by using logical operators \a
-AND and \a OR. In addition, applied filter criterion can be reverted
+AND and \a OR. In addition, a filter criterion can be reverted
 using logical operator \a NOT.
 
 Some filtering criteria use the functionality of \ref quality_page "mesh quality controls"
@@ -27,6 +27,8 @@ about selection filters and their usage in GUI.
   entities (nodes or elements) for the operations, which require the
   list of entities as input parameter (create/modify group, remove
   nodes/elements, etc) and for the operations, which accept objects
-  as input parameter. The page \ref tui_filters_page provides
-  examples of the filters usage in Python scripts.
+  (groups, sub-meshes) as input parameter. The page \ref
+  tui_filters_page provides examples of the filters usage in Python
+  scripts.
+
 */
index 621a47e..1490bce 100644 (file)
@@ -100,7 +100,8 @@ The mesh can include the following entities:
 Every mesh entity has an attribute associating it to a sub-shape it is
 generated on (if any). The node generated on the geometrical edge or
 surface in addition stores its position in parametric space of the
-associated geometrical entity.
+associated geometrical entity. This attribute is set up by meshing
+algorithms generating elements and nodes.
 
 Mesh entities are identified by integer IDs starting from 1.
 Nodes and elements are counted separately, i.e. there can be a node
index c87d928..145c48f 100644 (file)
@@ -73,7 +73,9 @@ the filtering algorithm works faster because node-to-shape association
 is used instead of measuring distance between nodes and the shape, and
 \b Tolerance is not used. If the threshold shape is any other shape,
 the algorithm works slower because distance between nodes and the
-shape is measured and is compared with \b Tolerance.
+shape is measured and is compared with \b Tolerance. The latter
+approach (distance measurement) is also used if an element is not
+associated to any shape.
 </li><li>
 <b>Lying on Geom</b> selects entities whose at least one node
 lies on the shape defined by the <b>Threshold Value</b>.
@@ -82,7 +84,9 @@ the filtering algorithm works faster because node-to-shape association
 is used instead of measuring distance between nodes and the shape, and
 \b Tolerance is not used. If the threshold shape is any other shape,
 the algorithm works slower because distance between nodes and the
-shape is measured and is compared with \b Tolerance.
+shape is measured and is compared with \b Tolerance. The latter
+approach (distance measurement) is also used if an element is not
+associated to any shape.
 </li><li>
 <b>Belong to Mesh Group</b> selects entities included into the mesh group
 defined by the <b>Threshold Value</b>.
index cfe65ff..7356103 100755 (executable)
@@ -6,7 +6,7 @@
 
 Filters allow picking only the mesh elements satisfying to a
 specific condition or a set of conditions. Filters can be used to create
-or edit mesh groups, remove elements from the mesh object, control
+or edit mesh groups, remove elements from the mesh, control
 mesh quality by different parameters, etc.
 
 Several filtering criteria can be combined together by using logical
@@ -24,7 +24,7 @@ Python scripts.
 
 \section filter_aspect_ratio Aspect ratio
 
-Filter 2D mesh elements (faces) according to the aspect ratio value:
+filters 2D mesh elements (faces) according to the aspect ratio value:
 - element type should be \a SMESH.FACE
 - functor type should be \a SMESH.FT_AspectRatio
 - threshold is floating point value (aspect ratio)
@@ -35,7 +35,7 @@ Filter 2D mesh elements (faces) according to the aspect ratio value:
 
 \section filter_aspect_ratio_3d Aspect ratio 3D
 
-Filter 3D mesh elements (volumes) according to the aspect ratio value:
+filters 3D mesh elements (volumes) according to the aspect ratio value:
 - element type is \a SMESH.VOLUME
 - functor type is \a SMESH.FT_AspectRatio3D
 - threshold is floating point value (aspect ratio)
@@ -46,7 +46,7 @@ Filter 3D mesh elements (volumes) according to the aspect ratio value:
 
 \section filter_warping_angle Warping angle
 
-Filter 2D mesh elements (faces) according to the warping angle value:
+filters 2D mesh elements (faces) according to the warping angle value:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_Warping
 - threshold is floating point value (warping angle)
@@ -57,7 +57,7 @@ Filter 2D mesh elements (faces) according to the warping angle value:
 
 \section filter_minimum_angle Minimum angle
 
-Filter 2D mesh elements (faces) according to the minimum angle value:
+filters 2D mesh elements (faces) according to the minimum angle value:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_MinimumAngle
 - threshold is floating point value (minimum angle)
@@ -68,7 +68,7 @@ Filter 2D mesh elements (faces) according to the minimum angle value:
 
 \section filter_taper Taper
 
-Filter 2D mesh elements (faces) according to the taper value:
+filters 2D mesh elements (faces) according to the taper value:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_Taper
 - threshold is floating point value (taper)
@@ -79,7 +79,7 @@ Filter 2D mesh elements (faces) according to the taper value:
 
 \section filter_skew Skew
 
-Filter 2D mesh elements (faces) according to the skew value:
+filters 2D mesh elements (faces) according to the skew value:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_Skew
 - threshold is floating point value (skew)
@@ -90,7 +90,7 @@ Filter 2D mesh elements (faces) according to the skew value:
 
 \section filter_area Area
 
-Filter 2D mesh elements (faces) according to the area value:
+filters 2D mesh elements (faces) according to the area value:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_Area
 - threshold is floating point value (area)
@@ -101,7 +101,7 @@ Filter 2D mesh elements (faces) according to the area value:
 
 \section filter_volume Volume
 
-Filter 3D mesh elements (volumes) according to the volume value:
+filters 3D mesh elements (volumes) according to the volume value:
 - element type is \a SMESH.VOLUME
 - functor type is \a SMESH.FT_Volume3D
 - threshold is floating point value (volume)
@@ -112,7 +112,7 @@ Filter 3D mesh elements (volumes) according to the volume value:
 
 \section filter_free_borders Free borders
 
-Filter 1D mesh elements (edges) which represent free borders of a mesh:
+filters 1D mesh elements (edges) which represent free borders of a mesh:
 - element type is \a SMESH.EDGE
 - functor type is \a SMESH.FT_FreeBorders
 - threshold value is not required
@@ -123,8 +123,8 @@ Filter 1D mesh elements (edges) which represent free borders of a mesh:
 
 \section filter_free_edges Free edges
 
-Filter 2D mesh elements (faces) consisting of edges belonging to one
-element of mesh only:
+filters 2D mesh elements (faces) having edges (i.e. links between
+nodes, not mesh segments) belonging to one face of mesh only:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_FreeEdges
 - threshold value is not required
@@ -135,7 +135,7 @@ element of mesh only:
 
 \section filter_free_nodes Free nodes
 
-Filter free nodes:
+filters free nodes:
 - element type is \a SMESH.NODE
 - functor type is \a SMESH.FT_FreeNodes
 - threshold value is not required
@@ -146,7 +146,7 @@ Filter free nodes:
 
 \section filter_free_faces Free faces
 
-Filter free faces:
+filters free faces:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_FreeFaces
 - threshold value is not required
@@ -157,7 +157,7 @@ Filter free faces:
 
 \section filter_bare_border_faces Bare border faces
 
-Filter faces with bare borders:
+filters faces with bare borders:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_BareBorderFace
 - threshold value is not required
@@ -168,7 +168,7 @@ Filter faces with bare borders:
 
 \section filter_coplanar_faces Coplanar faces
 
-Filter faces with bare borders:
+filters coplanar faces:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_CoplanarFaces
 - threshold value is the face ID
@@ -178,7 +178,7 @@ Filter faces with bare borders:
 
 \section filter_over_constrained_faces Over-constrained faces
 
-Filter over-constrained faces:
+filters over-constrained faces:
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_OverConstrainedFace
 - threshold value is not required
@@ -189,7 +189,7 @@ Filter over-constrained faces:
 
 \section filter_double_elements Double edges, Double faces, Double volumes
 
-filter mesh elements basing on the same set of nodes:
+filters mesh elements basing on the same set of nodes:
 - element type is either \a SMESH.EGDE, \a SMESH.FACE or \a SMESH.VOLUME
 - functor type is either \a SMESH.FT_EqualEdges, \a
           SMESH.FT_EqualFaces or \a SMESH.FT_EqualVolumes,
@@ -211,8 +211,8 @@ filters mesh nodes which are coincident with other nodes (within a given toleran
 
 \section filter_borders_multiconnection Borders at multi-connection
 
-Filter border 1D mesh elements (edges) according to the specified number of
-connections (faces belonging the border edges)
+filters 1D mesh elements (segments) according to the specified number of
+connections (faces and volumes on whose border the segment lies):
 - element type is \a SMESH.EDGE
 - functor type is \a SMESH.FT_MultiConnection
 - threshold is integer value (number of connections)
@@ -223,8 +223,8 @@ connections (faces belonging the border edges)
 
 \section filter_borders_multiconnection_2d Borders at multi-connection 2D
 
-Filter 2D mesh elements (faces) which consist of edges belonging
-to the specified number of mesh elements
+filters 2D mesh elements (faces) with the specified maximal number of
+faces connected to a border (link between nodes, not mesh segment):
 - element type is \a SMESH.FACE
 - functor type is \a SMESH.FT_MultiConnection2D
 - threshold is integer value (number of connections)
@@ -235,7 +235,7 @@ to the specified number of mesh elements
 
 \section filter_length Length
 
-Filter 1D mesh elements (edges) according to the edge length value:
+filters 1D mesh elements (edges) according to the edge length value:
 - element type should be \a SMESH.EDGE
 - functor type should be \a SMESH.FT_Length
 - threshold is floating point value (length)
@@ -246,8 +246,8 @@ Filter 1D mesh elements (edges) according to the edge length value:
 
 \section filter_length_2d Length 2D
 
-Filter 2D mesh elements (faces) corresponding to the maximum length.
-value of its edges:
+filters 2D mesh elements (faces) according to the maximum length of its
+edges (links between nodes):
 - element type should be \a SMESH.FACE
 - functor type should be \a SMESH.FT_Length2D
 - threshold is floating point value (edge length)
@@ -258,11 +258,11 @@ value of its edges:
 
 \section filter_max_element_length_2d Element Diameter 2D
 
-Filter 2D mesh elements (faces) corresponding to the maximum length
-value of its edges and diagonals:
+filters 2D mesh elements (faces) according to the maximum length
+of its edges and diagonals:
 - element type should be \a SMESH.FACE
 - functor type should be \a SMESH.FT_MaxElementLength2D
-- threshold is floating point value (edge/diagonal length)
+- threshold is floating point value (length)
 
 \tui_script{filters_ex22.py}
 
@@ -270,8 +270,8 @@ value of its edges and diagonals:
 
 \section filter_max_element_length_3d Element Diameter 3D
 
-Filter 3D mesh elements (volumes) corresponding to the maximum length
-value of its edges and diagonals:
+filters 3D mesh elements (volumes) according to the maximum length
+of its edges and diagonals:
 - element type should be \a SMESH.VOLUME
 - functor type should be \a SMESH.FT_MaxElementLength3D
 - threshold is floating point value (edge/diagonal length)
@@ -282,7 +282,8 @@ value of its edges and diagonals:
 
 \section filter_bare_border_volumes Bare border volumes
 
-Filter 3D mesh elements with bare borders:
+filters 3D mesh elements with bare borders, i.e. having a facet not
+shared with other volumes and without a face on it:
 - element type is \a SMESH.VOLUME
 - functor type is \a SMESH.FT_BareBorderVolume
 - threshold value is not required
@@ -293,7 +294,7 @@ Filter 3D mesh elements with bare borders:
 
 \section filter_over_constrained_volumes Over-constrained volumes
 
-Filter over-constrained volumes:
+filters over-constrained volumes, whose all nodes are on the mesh boundary:
 - element type is \a SMESH.VOLUME
 - functor type is \a SMESH.FT_OverConstrainedVolume
 - threshold value is not required
@@ -304,7 +305,7 @@ Filter over-constrained volumes:
 
 \section filter_belong_to_group Belong to Mesh Group
 
-Filter mesh entities (nodes or elements) included in a mesh group
+filters mesh entities (nodes or elements) included in a mesh group
 defined by threshold value:
 - element type can be any entity type, from \a  SMESH.NODE to \a SMESH.VOLUME
 - functor type should be \a SMESH.FT_BelongToMeshGroup
@@ -314,27 +315,31 @@ defined by threshold value:
 
 \section filter_belong_to_geom Belong to Geom
 
-Filter mesh entities (nodes or elements) which all nodes lie on the
+filters mesh entities (nodes or elements) which all nodes lie on the
 shape defined by threshold value:
 - element type can be any entity type, from \a  SMESH.NODE to \a SMESH.VOLUME
 - functor type should be \a SMESH.FT_BelongToGeom
 - threshold is geometrical object
+- tolerance is a distance between a node and the geometrical object;
+it is used if an node is not associated to any geometry.
 
 \tui_script{filters_ex26.py}
 
 \section filter_lying_on_geom Lying on Geom
 
-Filter mesh entities (nodes or elements) at least one node of which lies on the
+filters mesh entities (nodes or elements) at least one node of which lies on the
 shape defined by threshold value:
 - element type can be any entity type, from \a  SMESH.NODE to \a SMESH.VOLUME
 - functor type should be \a SMESH.FT_LyingOnGeom
 - threshold is geometrical object
+- tolerance is a distance between a node and the geometrical object;
+it is used if an node is not associated to any geometry.
 
 \tui_script{filters_ex27.py}
 
 \section filter_belong_to_plane Belong to Plane
 
-Filter mesh entities (nodes or elements) which all nodes belong to the
+filters mesh entities (nodes or elements) which all nodes belong to the
 plane defined by threshold value with the given tolerance:
 - element type can be: \a  SMESH.NODE, \a SMESH.EDGE, \a SMESH.FACE
 - functor type should be \a SMESH.FT_BelongToPlane
@@ -345,7 +350,7 @@ plane defined by threshold value with the given tolerance:
 
 \section filter_belong_to_cylinder Belong to Cylinder
 
-Filter mesh entities (nodes or elements) which all nodes belong to the
+filters mesh entities (nodes or elements) which all nodes belong to the
 cylindrical face defined by threshold value with the given tolerance:
 - element type can be: \a , \a SMESH.EDGE, \a SMESH.FACE
 - functor type should be \a SMESH.FT_BelongToCylinder
@@ -356,7 +361,7 @@ cylindrical face defined by threshold value with the given tolerance:
 
 \section filter_belong_to_surface Belong to Surface
 
-Filter mesh entities (nodes or elements) which all nodes belong to the
+filters mesh entities (nodes or elements) which all nodes belong to the
 arbitrary surface defined by threshold value with the given tolerance:
 - element type can be: \a  SMESH.NODE, \a SMESH.EDGE, \a SMESH.FACE
 - functor type should be \a SMESH.FT_BelongToGenSurface
@@ -367,7 +372,7 @@ arbitrary surface defined by threshold value with the given tolerance:
 
 \section filter_range_of_ids Range of IDs
 
-Filter mesh entities elements (nodes or elements) according to the
+filters mesh entities elements (nodes or elements) according to the
 specified identifiers range:
 - element type can be any entity type, from \a  SMESH.NODE to \a SMESH.VOLUME
 - functor type is \a SMESH.FT_RangeOfIds
@@ -377,7 +382,7 @@ specified identifiers range:
 
 \section filter_bad_oriented_volume Badly oriented volume
 
-Filter 3D mesh elements (volumes), which are incorrectly oriented from
+filters 3D mesh elements (volumes), which are incorrectly oriented from
 the point of view of MED convention. 
 - element type should be \a SMESH.VOLUME
 - functor type is \a SMESH.FT_BadOrientedVolume
@@ -387,7 +392,7 @@ the point of view of MED convention.
 
 \section filter_linear_or_quadratic Linear / quadratic
 
-Filter linear / quadratic mesh elements:
+filters linear / quadratic mesh elements:
 - element type should be any element type, e.g.: \a SMESH.EDGE, \a SMESH.FACE, \a SMESH.VOLUME
 - functor type is \a SMESH.FT_LinearOrQuadratic
 - threshold is not required
@@ -398,7 +403,7 @@ elements are selected, otherwise (by default) linear elements are selected
 
 \section filter_group_color Group color
 
-Filter mesh entities, belonging to the group with the color defined by the threshold value.
+filters mesh entities, belonging to the group with the color defined by the threshold value.
 - element type can be any entity type, from \a  SMESH.NODE to \a SMESH.VOLUME
 - functor type is \a SMESH.FT_GroupColor
 - threshold should be of SALOMEDS.Color type
@@ -407,7 +412,7 @@ Filter mesh entities, belonging to the group with the color defined by the thres
 
 \section filter_geom_type Geometry type
 
-Filter mesh elements by the geometric type defined with the threshold
+filters mesh elements by the geometric type defined with the threshold
 value. The list of available geometric types depends on the element
 entity type.
 - element type should be any element type, e.g.: \a SMESH.EDGE, \a SMESH.FACE, \a SMESH.VOLUME
index 4973a5d..253ef61 100644 (file)
@@ -338,17 +338,24 @@ void SMESHGUI_MeshTab::setCurrentHyp( const int theId, const int theIndex )
   }
   else // more than one additional hyp assigned
   {
-    // move a hyp from myHypCombo[ AddHyp ] to myAddHypList
-    for ( int i = 1, nb = myHypCombo[ AddHyp ]->count(); i < nb; ++i )
+    if ( theIndex > 0 )
     {
-      int curIndex = myHypCombo[ AddHyp ]->itemData( i ).toInt();
-      if ( theIndex == curIndex )
+      // move a hyp from myHypCombo[ AddHyp ] to myAddHypList
+      for ( int i = 1, nb = myHypCombo[ AddHyp ]->count(); i < nb; ++i )
       {
-        addItem( myHypCombo[ AddHyp ]->itemText( i ), theId, theIndex );
-        myHypCombo[ AddHyp ]->removeItem( i );
-        break;
+        int curIndex = myHypCombo[ AddHyp ]->itemData( i ).toInt();
+        if ( theIndex == curIndex )
+        {
+          addItem( myHypCombo[ AddHyp ]->itemText( i ), theId, theIndex );
+          myHypCombo[ AddHyp ]->removeItem( i );
+          break;
+        }
       }
     }
+    else
+    {
+      myAddHypList->clear();
+    }
   }
 }
 
index 6905321..cc873f1 100644 (file)
@@ -2010,6 +2010,9 @@ int SMESHGUI_MeshOp::currentHyp( const int theDim, const int theHypType ) const
 
 bool SMESHGUI_MeshOp::isSelectedHyp( int theDim, int theHypType, int theIndex) const
 {
+  if ( theIndex < 0 )
+    return false;
+
   if ( theHypType < AddHyp ) // only one hyp can be selected
     return currentHyp( theDim, theHypType ) == theIndex;
 
@@ -2050,17 +2053,28 @@ bool SMESHGUI_MeshOp::isAccessibleDim( const int theDim ) const
   * \param theDim - dimension of hypothesis or algorithm
   * \param theHypType - Type of hypothesis (Algo, MainHyp, AddHyp)
   * \param theIndex - Index of hypothesis
+  * \param updateHypsOnAlgoDeselection - to clear and disable hyps if algo deselected
  *
  * Gets current hypothesis or algorithms
  */
 //================================================================================
-void SMESHGUI_MeshOp::setCurrentHyp( const int theDim,
-                                     const int theHypType,
-                                     const int theIndex )
+void SMESHGUI_MeshOp::setCurrentHyp( const int  theDim,
+                                     const int  theHypType,
+                                     const int  theIndex,
+                                     const bool updateHypsOnAlgoDeselection)
 {
   myIgnoreAlgoSelection = true;
   myDlg->tab( theDim )->setCurrentHyp( theHypType, theIndex + 1 );
   myIgnoreAlgoSelection = false;
+
+  if ( updateHypsOnAlgoDeselection && theHypType == Algo && theIndex < 0 )
+  {
+    const QStringList noHyps;
+    myDlg->tab( theDim )->setAvailableHyps( MainHyp, noHyps );
+    myDlg->tab( theDim )->setExistingHyps ( MainHyp, noHyps );
+    myDlg->tab( theDim )->setAvailableHyps( AddHyp,  noHyps );
+    myDlg->tab( theDim )->setExistingHyps ( AddHyp,  noHyps );
+  }
 }
 
 //================================================================================
@@ -2645,7 +2659,7 @@ void SMESHGUI_MeshOp::setAvailableMeshType( const QStringList& theTypeMesh )
   * \param theIndex - Index of current type of mesh
  */
 //================================================================================
-void SMESHGUI_MeshOp::onAlgoSetByMeshType( const int theTabIndex, const int theIndex)
+void SMESHGUI_MeshOp::onAlgoSetByMeshType( const int theTabIndex, const int theIndex )
 {
   setFilteredAlgoData( theTabIndex, theIndex);
 }
@@ -2705,8 +2719,8 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
       }
     else
       for ( int i = SMESH::DIM_0D; i <= SMESH::DIM_3D; i++ ) {
-        if ( i > myMaxShapeDim || ( isReqDisBound && i != aReqDim ) ) myDlg->disableTab( i );
-        else                                                          myDlg->enableTab( i );
+        if ( i > myMaxShapeDim || ( isReqDisBound && i < aReqDim ) ) myDlg->disableTab( i );
+        else                                                         myDlg->enableTab( i );
       }
     myDlg->setCurrentTab( theTabIndex );
   }
@@ -2740,7 +2754,7 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
       //set new algorithm list and select the current algorithm
       myDlg->tab( dim )->setAvailableHyps( Algo, anAvailableAlgs );
       anCurrentCompareType = ( anCompareType == "HEXA" || anCompareType == "QUAD" ) ? "QUAD" : "TRIA";
-      setCurrentHyp( dim, Algo, anCurrentAvailableAlgo );
+      setCurrentHyp( dim, Algo, anCurrentAvailableAlgo, /*updateHyps=*/true );
     }
 
     for ( int i = myMaxShapeDim; i >= SMESH::DIM_0D; i-- ) {
@@ -2753,7 +2767,7 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
         for (int j = myMaxShapeDim; j >= SMESH::DIM_0D; j--) {
           if ( currentHyp( j, Algo ) < 0 ) {
             myDlg->disableTab( j );
-            setCurrentHyp( j , Algo, -1 );
+            setCurrentHyp( j , Algo, -1, /*updateHyps=*/true );
           }
         }
         break;
@@ -2763,8 +2777,8 @@ void SMESHGUI_MeshOp::setFilteredAlgoData( const int theTabIndex, const int theI
       }
     }
     if ( aDim == SMESH::DIM_2D) {
+      setCurrentHyp( SMESH::DIM_3D, Algo, -1, /*updateHyps=*/true );
       myDlg->disableTab( SMESH::DIM_3D );
-      setCurrentHyp( SMESH::DIM_3D, Algo, -1);
     }
 
     int currentTab = ( theTabIndex <= aDim ) ? theTabIndex : aDim;
index 35bd506..6d26686 100644 (file)
@@ -128,7 +128,7 @@ private:
   bool                           isSelectedHyp( int, int, int ) const;
   int                            nbDlgHypTypes( const int ) const;
   bool                           isAccessibleDim( const int ) const;
-  void                           setCurrentHyp( const int, const int, const int );
+  void                           setCurrentHyp( const int, const int, const int, const bool=false);
   void                           setDefaultName( const QString& prefix="" ) const;
   SMESH::SMESH_Hypothesis_var    getAlgo( const int );
   void                           readMesh();
index 51bcc35..7d42772 100644 (file)
@@ -127,8 +127,8 @@ class SMeshStudyTools:
         from salome.smesh import smeshBuilder
         smesh = smeshBuilder.New(self.editor.study)
 
-        meshObject=smesh.IDToObject(entry)
-        return meshObject
+        meshObject=salome.IDToObject(entry)
+        return smesh.Mesh( meshObject )
     
     ## Returns the SMESH object associated to the specified \em SObject,
     #  (the SObject is an item in the objects browser).
index 2c98e16..67e3c71 100644 (file)
@@ -1970,7 +1970,7 @@ class Mesh:
     #  @param groupName the name of the mesh group
     #  @param elementType the type of elements in the group; either of 
     #         (SMESH.NODE, SMESH.EDGE, SMESH.FACE, SMESH.VOLUME).
-    #  @param elemIDs the list of ids
+    #  @param elemIDs either the list of ids, group, sub-mesh, or filter
     #  @return SMESH_Group
     #  @ingroup l2_grps_create
     def MakeGroupByIds(self, groupName, elementType, elemIDs):