Salome HOME
PAL19272 CEA patch 4.1.1 / 3.2.9: problem with nodes or corners
authoreap <eap@opencascade.com>
Mon, 17 Mar 2008 13:56:56 +0000 (13:56 +0000)
committereap <eap@opencascade.com>
Mon, 17 Mar 2008 13:56:56 +0000 (13:56 +0000)
     Remove nodes on vertices at CLEAN event if !algo->NeedDescretBoundary()

src/SMESH/SMESH_subMesh.cxx

index 3a1c9fa0db92a3a399bc0a27412a672fec34f677..fa2ea74decdc4a9479f2e4efd8312591bebeaa38 100644 (file)
@@ -625,16 +625,16 @@ SMESH_Hypothesis::Hypothesis_Status
     if ( ! CanAddHypothesis( anHyp )) // check dimension
       return SMESH_Hypothesis::HYP_BAD_DIM;
 
-    if(anHyp->GetDim() == 3 && !_father->HasShapeToMesh()
-       && event == ADD_ALGO) {
-      //Only NETGEN_3D and GHS3D_3D can be assigned to the Mesh w/o geometryy
-      bool isNetgen3D = (strcmp( "NETGEN_3D", anHyp->GetName()) == 0);
-      bool  isGhs3d = (strcmp( "GHS3D_3D", anHyp->GetName()) == 0);
-      if( !isNetgen3D && !isGhs3d)
-        return SMESH_Hypothesis::HYP_BAD_DIM;
-    }
-      
-
+    // EAP: __NOT__ Only NETGEN_3D and GHS3D_3D can be assigned to the Mesh w/o geometryy,
+    // but any algo which !NeedShape()
+//     if(anHyp->GetDim() == 3 && !_father->HasShapeToMesh()
+//        && event == ADD_ALGO) {
+//       //Only NETGEN_3D and GHS3D_3D can be assigned to the Mesh w/o geometryy
+//       bool isNetgen3D = (strcmp( "NETGEN_3D", anHyp->GetName()) == 0);
+//       bool  isGhs3d = (strcmp( "GHS3D_3D", anHyp->GetName()) == 0);
+//       if( !isNetgen3D && !isGhs3d)
+//         return SMESH_Hypothesis::HYP_BAD_DIM;
+//     }
     
     if ( /*!anHyp->IsAuxiliary() &&*/ GetSimilarAttached( _subShape, anHyp ) )
       return SMESH_Hypothesis::HYP_ALREADY_EXIST;
@@ -1223,7 +1223,10 @@ bool SMESH_subMesh::ComputeStateEngine(int event)
     _computeState = READY_TO_COMPUTE;
     SMESHDS_SubMesh* smDS = GetSubMeshDS();
     if ( smDS && smDS->NbNodes() ) {
-      _computeState = COMPUTE_OK;
+      if ( event == CLEAN ) // this occures for algo which !NeedDescretBoundary() (PAL19272)
+        cleanSubMesh( this );
+      else
+        _computeState = COMPUTE_OK;
     }
     else if ( event == COMPUTE && !_alwaysComputed ) {
       const TopoDS_Vertex & V = TopoDS::Vertex( _subShape );