Salome HOME
Regression of bugs/L9
authoreap <eap@opencascade.com>
Tue, 26 Oct 2010 08:33:55 +0000 (08:33 +0000)
committereap <eap@opencascade.com>
Tue, 26 Oct 2010 08:33:55 +0000 (08:33 +0000)
-  theMesh.GetSubMesh(theShape)->ComputeStateEngine( SMESH_subMesh::CLEAN );
+  // CLEAN event is incorrectly ptopagated seemingly due to Propagation hyp
+  // so TEMPORARY solution is to clean the submesh manually
+  //theMesh.GetSubMesh(theShape)->ComputeStateEngine( SMESH_subMesh::CLEAN );
+  if (SMESHDS_SubMesh * subMeshDS = meshDS->MeshElements(theShape))

src/StdMeshers/StdMeshers_Regular_1D.cxx

index 504b2b919280ec44af9ba934e07f750cdf5cb822..6771e53edc90f14dbdcba2d5e0d7ca8b2dd159be 100644 (file)
@@ -948,7 +948,23 @@ bool StdMeshers_Regular_1D::Compute(SMESH_Mesh & theMesh, const TopoDS_Shape & t
     return error( COMPERR_BAD_INPUT_MESH, "No node on vertex");
 
   // remove elements created by e.g. patern mapping (PAL21999)
-  theMesh.GetSubMesh(theShape)->ComputeStateEngine( SMESH_subMesh::CLEAN );
+  // CLEAN event is incorrectly ptopagated seemingly due to Propagation hyp
+  // so TEMPORARY solution is to clean the submesh manually
+  //theMesh.GetSubMesh(theShape)->ComputeStateEngine( SMESH_subMesh::CLEAN );
+  if (SMESHDS_SubMesh * subMeshDS = meshDS->MeshElements(theShape))
+  {
+    SMDS_ElemIteratorPtr ite = subMeshDS->GetElements();
+    while (ite->more())
+      meshDS->RemoveFreeElement(ite->next(), subMeshDS);
+    SMDS_NodeIteratorPtr itn = subMeshDS->GetNodes();
+    while (itn->more()) {
+      const SMDS_MeshNode * node = itn->next();
+      if ( node->NbInverseElements() == 0 )
+        meshDS->RemoveFreeNode(node, subMeshDS);
+      else
+        meshDS->RemoveNode(node);
+    }
+  }
 
   if (!Curve.IsNull())
   {