Salome HOME
fix PAL8469. set "Warning" icon to mesh or submesh just published
authoreap <eap@opencascade.com>
Wed, 30 Mar 2005 09:30:04 +0000 (09:30 +0000)
committereap <eap@opencascade.com>
Wed, 30 Mar 2005 09:30:04 +0000 (09:30 +0000)
src/SMESH_I/SMESH_Gen_i_1.cxx

index 4e50171a648b0b8e3008c47a33cff4e9d063c95e..ac8641de2bd5858d9565ca42babe85209531ee41 100644 (file)
@@ -471,7 +471,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishMesh (SALOMEDS::Study_ptr   theStudy,
     else
       aTag++;
 
-    aMeshSO = publish (theStudy, theMesh, father, aTag, "ICON_SMESH_TREE_MESH" );
+    aMeshSO = publish (theStudy, theMesh, father, aTag, "ICON_SMESH_TREE_MESH_WARN" );
     if ( aMeshSO->_is_nil() )
       return aMeshSO._retn();
   }
@@ -593,7 +593,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishSubMesh (SALOMEDS::Study_ptr      theS
     SetName( aRootSO, aRootName );
 
     // Add new submesh to corresponding sub-tree
-    aSubMeshSO = publish (theStudy, theSubMesh, aRootSO, 0, "ICON_SMESH_TREE_MESH");
+    aSubMeshSO = publish (theStudy, theSubMesh, aRootSO, 0, "ICON_SMESH_TREE_MESH_WARN");
     if ( aSubMeshSO->_is_nil() )
       return aSubMeshSO._retn();
   }
@@ -773,7 +773,19 @@ bool SMESH_Gen_i::AddHypothesisToShape(SALOMEDS::Study_ptr         theStudy,
   SALOMEDS::SObject_var aMeshOrSubMesh =
     GetMeshOrSubmeshByShape( theStudy, theMesh, theShape );
   if ( aMeshOrSubMesh->_is_nil() )
-    return false;
+  {
+    // publish submesh
+    TopoDS_Shape aShape = GeomObjectToShape( theShape );
+    SMESH_Mesh_i* mesh_i = objectToServant<SMESH_Mesh_i>( theMesh );
+    if ( !aShape.IsNull() && mesh_i && mesh_i->GetImpl().GetMeshDS() ) {
+      SMESHDS_Mesh* meshDS = mesh_i->GetImpl().GetMeshDS();
+      int shapeID = meshDS->ShapeToIndex( aShape );
+      SMESH::SMESH_subMesh_var aSubMesh = mesh_i->getSubMesh(shapeID);
+      aMeshOrSubMesh = PublishSubMesh( theStudy, theMesh, aSubMesh, theShape );
+    }
+    if ( aMeshOrSubMesh->_is_nil() )
+      return false;
+  }
 
   //Find or Create Applied Hypothesis root
   bool aIsAlgo = !SMESH::SMESH_Algo::_narrow( theHyp )->_is_nil();