]> SALOME platform Git repositories - modules/smesh.git/commitdiff
Salome HOME
23570: EDF17299 - Problem with filters eap/23570
authoreap <eap@opencascade.com>
Mon, 9 Jul 2018 15:15:13 +0000 (18:15 +0300)
committereap <eap@opencascade.com>
Mon, 9 Jul 2018 15:15:13 +0000 (18:15 +0300)
    + fix persistence of Group on Filter
    + minor fix of docs

doc/salome/gui/SMESH/input/constructing_submeshes.rst
doc/salome/gui/SMESH/input/smeshpy_interface.rst
src/Controls/SMESH_Controls.cxx
src/SMESH_I/SMESH_PreMeshInfo.cxx

index 3f414135d37ad6bcaef6b90633af956f1ea1dfe0..0630c3ba0a30a1b53d8e8bd666e8ab5e6fb9e73c 100644 (file)
@@ -12,7 +12,9 @@ different meshing parameters than those assigned to the main shape.
 Structurally, the sub-mesh is a mesh on a certain sub-shape, or a group of
 sub-shapes, possibly generated using different meshing algorithms
 and/or hypotheses than those used to generate the mesh on other
-sub-shapes.
+sub-shapes. Elements generated on a sub-shape can be retrieved without
+explicit creation of a sub-mesh by creating a *Group on Geometry* using
+:ref:`Create Groups from Geometry <create_groups_from_geometry_page>` dialog.
 
 Creation of a sub-mesh allows to control individually meshing of a
 certain sub-shape, thus to get a locally coarser or finer mesh, to get
index 7a71f5cb6b01d2c1dcf1e7a61c5f4c1624cd3ec2..27d5accec33cc0c1cb751f34a18737b5d7618ca6 100644 (file)
@@ -75,7 +75,7 @@ by calling *dir()* Python built-in function.
 
 All methods of the Mesh Group can be found in :ref:`tui_create_standalone_group` sample script.
 
-An example below demonstrates usage of the Python API for 3d mesh
+An example below demonstrates usage of the Python API for 3D mesh
 generation and for retrieving information on mesh nodes and elements.
 
 .. _example_3d_mesh:
index 1ccd96f9905611d39a69424bcebb65a90f437dc6..464ac1fd39e10e2dfd9d224743cff0a2cd6feec1 100644 (file)
@@ -4561,6 +4561,7 @@ ElementsOnShape::Classifier::~Classifier()
 
 bool ElementsOnShape::Classifier::isOutOfSolid (const gp_Pnt& p)
 {
+  if ( isOutOfBox( p )) return true;
   mySolidClfr->Perform( p, myTol );
   return ( mySolidClfr->State() != TopAbs_IN && mySolidClfr->State() != TopAbs_ON );
 }
@@ -4572,6 +4573,7 @@ bool ElementsOnShape::Classifier::isOutOfBox (const gp_Pnt& p)
 
 bool ElementsOnShape::Classifier::isOutOfFace  (const gp_Pnt& p)
 {
+  if ( isOutOfBox( p )) return true;
   myProjFace.Perform( p );
   if ( myProjFace.IsDone() && myProjFace.LowerDistance() <= myTol )
   {
@@ -4588,6 +4590,7 @@ bool ElementsOnShape::Classifier::isOutOfFace  (const gp_Pnt& p)
 
 bool ElementsOnShape::Classifier::isOutOfEdge  (const gp_Pnt& p)
 {
+  if ( isOutOfBox( p )) return true;
   myProjEdge.Perform( p );
   return ! ( myProjEdge.NbPoints() > 0 && myProjEdge.LowerDistance() <= myTol );
 }
index 38c13009cc5bfc1dffbce082c3a746fedc897753..52a831b6da8030f1567a0b991a5e1c028edada8e 100644 (file)
@@ -61,7 +61,7 @@ using namespace std;
 
 namespace
 {
-  enum {  GroupOnFilter_OutOfDate = -1 };
+  enum {  GroupOnFilter_OutOfDate = -777 };
 
   // a map to count not yet loaded meshes 
   static std::map< int, int > theStudyIDToMeshCounter;
@@ -259,7 +259,7 @@ namespace
     std::vector<int> data;
 
     for ( size_t i = 0; i < meshInfo->length(); ++i )
-      if ( meshInfo[i] > 0 )
+      if ( meshInfo[i] > 0 || meshInfo[i] == GroupOnFilter_OutOfDate )
       {
         data.push_back( DriverMED::GetMedGeoType( SMDSAbs_EntityType( i ))); //medTypes[ i ] );
         data.push_back( meshInfo[ i ] );