Salome HOME
fix bug PAL10974: check if SubMeshesComputed() by presence of nodes in submesh.
authoreap <eap@opencascade.com>
Tue, 20 Dec 2005 11:49:47 +0000 (11:49 +0000)
committereap <eap@opencascade.com>
Tue, 20 Dec 2005 11:49:47 +0000 (11:49 +0000)
src/SMESH/SMESH_subMesh.cxx

index 5e67bd73a041d0035e7afa0e7f23f3ae07810612..d3f8e90f347825aa22ef17f21c7b871b571ba196 100644 (file)
@@ -195,12 +195,19 @@ bool SMESH_subMesh::SubMeshesComputed()
   for (itsub = subMeshes.begin(); itsub != subMeshes.end(); itsub++)
   {
     SMESH_subMesh *sm = (*itsub).second;
-
-    const TopoDS_Shape & ss = sm->GetSubShape();
-    int type = ss.ShapeType();
-    bool computeOk = (sm->GetComputeState() == COMPUTE_OK);
+    SMESHDS_SubMesh * ds = sm->GetSubMeshDS();
+    // PAL10974.
+    // There are some tricks with compute states, e.g. Penta_3D leaves
+    // one face with READY_TO_COMPUTE state in order to be able to
+    // recompute 3D when a locale triangle hypo changes (see PAL7428).
+    // So we check if mesh is really present
+    //bool computeOk = (sm->GetComputeState() == COMPUTE_OK);
+    bool computeOk = ( ds && ds->GetNodes()->more() );
     if (!computeOk)
     {
+      const TopoDS_Shape & ss = sm->GetSubShape();
+      int type = ss.ShapeType();
+
       subMeshesComputed = false;
 
       switch (type)