Salome HOME
projects
/
modules
/
smesh.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Windows compatibility.
[modules/smesh.git]
/
src
/
SMESH
/
SMESH_Gen.cxx
diff --git
a/src/SMESH/SMESH_Gen.cxx
b/src/SMESH/SMESH_Gen.cxx
index 84ffb381c138695efe739e5f4820f685fa80894b..752b5f6ebaded468801dc43866724e1972e05ace 100644
(file)
--- a/
src/SMESH/SMESH_Gen.cxx
+++ b/
src/SMESH/SMESH_Gen.cxx
@@
-35,6
+35,7
@@
#include "SMDS_MeshNode.hxx"
#include "SMESHDS_Document.hxx"
#include "SMESH_HypoFilter.hxx"
#include "SMDS_MeshNode.hxx"
#include "SMESHDS_Document.hxx"
#include "SMESH_HypoFilter.hxx"
+#include "SMESH_Mesh.hxx"
#include "SMESH_MesherHelper.hxx"
#include "SMESH_subMesh.hxx"
#include "SMESH_MesherHelper.hxx"
#include "SMESH_subMesh.hxx"
@@
-122,13
+123,16
@@
SMESH_Mesh* SMESH_Gen::CreateMesh(int theStudyId, bool theIsEmbeddedMode)
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
const TopoDS_Shape & aShape,
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
const TopoDS_Shape & aShape,
- const bool aShapeOnly /*=false*/,
- const bool anUpward /*=false*/,
+ const int aFlags /*= COMPACT_MESH*/,
const ::MeshDimension aDim /*=::MeshDim_3D*/,
TSetOfInt* aShapesId /*=0*/)
{
MEMOSTAT;
const ::MeshDimension aDim /*=::MeshDim_3D*/,
TSetOfInt* aShapesId /*=0*/)
{
MEMOSTAT;
+ const bool aShapeOnly = aFlags & SHAPE_ONLY;
+ const bool anUpward = aFlags & UPWARD;
+ const bool aCompactMesh = aFlags & COMPACT_MESH;
+
bool ret = true;
SMESH_subMesh *sm = aMesh.GetSubMesh(aShape);
bool ret = true;
SMESH_subMesh *sm = aMesh.GetSubMesh(aShape);
@@
-140,7
+144,7
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
SMESH_subMeshIteratorPtr smIt;
// Fix of Issue 22150. Due to !BLSURF->OnlyUnaryInput(), BLSURF computes edges
SMESH_subMeshIteratorPtr smIt;
// Fix of Issue 22150. Due to !BLSURF->OnlyUnaryInput(), BLSURF computes edges
- // that must be computed by Projection 1D-2D wh
en
Projection asks to compute
+ // that must be computed by Projection 1D-2D wh
ile the
Projection asks to compute
// one face only.
SMESH_subMesh::compute_event computeEvent =
aShapeOnly ? SMESH_subMesh::COMPUTE_SUBMESH : SMESH_subMesh::COMPUTE;
// one face only.
SMESH_subMesh::compute_event computeEvent =
aShapeOnly ? SMESH_subMesh::COMPUTE_SUBMESH : SMESH_subMesh::COMPUTE;
@@
-330,7
+334,8
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
SMESH_Hypothesis::Hypothesis_Status status;
if ( subAlgo->CheckHypothesis( aMesh, aSubShape, status ))
// mesh a lower smToCompute starting from vertices
SMESH_Hypothesis::Hypothesis_Status status;
if ( subAlgo->CheckHypothesis( aMesh, aSubShape, status ))
// mesh a lower smToCompute starting from vertices
- Compute( aMesh, aSubShape, aShapeOnly, /*anUpward=*/true, aDim, aShapesId );
+ Compute( aMesh, aSubShape, aFlags | SHAPE_ONLY_UPWARD, aDim, aShapesId );
+ // Compute( aMesh, aSubShape, aShapeOnly, /*anUpward=*/true, aDim, aShapesId );
}
}
}
}
}
}
@@
-361,17
+366,14
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
// -----------------------------------------------
// mesh the rest sub-shapes starting from vertices
// -----------------------------------------------
// -----------------------------------------------
// mesh the rest sub-shapes starting from vertices
// -----------------------------------------------
- ret = Compute( aMesh, aShape, a
ShapeOnly, /*anUpward=*/true
, aDim, aShapesId );
+ ret = Compute( aMesh, aShape, a
Flags | UPWARD
, aDim, aShapesId );
}
MEMOSTAT;
}
MEMOSTAT;
- SMESHDS_Mesh *myMesh = aMesh.GetMeshDS();
- //MESSAGE("*** compactMesh after compute");
- myMesh->compactMesh();
-
// fix quadratic mesh by bending iternal links near concave boundary
// fix quadratic mesh by bending iternal links near concave boundary
- if ( aShape.IsSame( aMesh.GetShapeToMesh() ) &&
+ if ( aCompactMesh && // a final compute
+ aShape.IsSame( aMesh.GetShapeToMesh() ) &&
!aShapesId && // not preview
ret ) // everything is OK
{
!aShapesId && // not preview
ret ) // everything is OK
{
@@
-381,6
+383,10
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
aHelper.FixQuadraticElements( sm->GetComputeError() );
}
}
aHelper.FixQuadraticElements( sm->GetComputeError() );
}
}
+
+ if ( aCompactMesh )
+ aMesh.GetMeshDS()->compactMesh();
+
return ret;
}
return ret;
}