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
correction des valeurs
[modules/smesh.git]
/
src
/
SMESH
/
SMESH_Gen.cxx
diff --git
a/src/SMESH/SMESH_Gen.cxx
b/src/SMESH/SMESH_Gen.cxx
index 6635311805968590d0925c6ec593dc4f387f2483..399cef5292790aacec51ed47b3b44f6c63d80bd7 100644
(file)
--- a/
src/SMESH/SMESH_Gen.cxx
+++ b/
src/SMESH/SMESH_Gen.cxx
@@
-1,4
+1,4
@@
-// Copyright (C) 2007-202
0
CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-202
1
CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@
-142,7
+142,6
@@
SMESH_Gen::~SMESH_Gen()
//=============================================================================
SMESH_Mesh* SMESH_Gen::CreateMesh(bool theIsEmbeddedMode)
//=============================================================================
SMESH_Mesh* SMESH_Gen::CreateMesh(bool theIsEmbeddedMode)
- throw(SALOME_Exception)
{
Unexpect aCatch(SalomeException);
{
Unexpect aCatch(SalomeException);
@@
-339,12
+338,13
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
std::vector< SMESH_subMesh* > smVec;
for ( aShapeDim = 0; aShapeDim < 4; ++aShapeDim )
std::vector< SMESH_subMesh* > smVec;
for ( aShapeDim = 0; aShapeDim < 4; ++aShapeDim )
+ smVec.insert( smVec.end(),
+ smWithAlgoSupportingSubmeshes[aShapeDim].begin(),
+ smWithAlgoSupportingSubmeshes[aShapeDim].end() );
{
// ------------------------------------------------
// sort list of sub-meshes according to mesh order
// ------------------------------------------------
{
// ------------------------------------------------
// sort list of sub-meshes according to mesh order
// ------------------------------------------------
- smVec.assign( smWithAlgoSupportingSubmeshes[ aShapeDim ].begin(),
- smWithAlgoSupportingSubmeshes[ aShapeDim ].end() );
aMesh.SortByMeshOrder( smVec );
// ------------------------------------------------------------
aMesh.SortByMeshOrder( smVec );
// ------------------------------------------------------------
@@
-355,20
+355,29
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
for ( size_t i = 0; i < smVec.size(); ++i )
{
sm = smVec[i];
for ( size_t i = 0; i < smVec.size(); ++i )
{
sm = smVec[i];
+ if ( sm->GetComputeState() != SMESH_subMesh::READY_TO_COMPUTE)
+ continue;
+
+ const TopAbs_ShapeEnum shapeType = sm->GetSubShape().ShapeType();
// get a shape the algo is assigned to
if ( !GetAlgo( sm, & algoShape ))
continue; // strange...
// look for more local algos
// get a shape the algo is assigned to
if ( !GetAlgo( sm, & algoShape ))
continue; // strange...
// look for more local algos
- smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+ if ( SMESH_subMesh* algoSM = aMesh.GetSubMesh( algoShape ))
+ smIt = algoSM->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+ else
+ smIt = sm->getDependsOnIterator(!includeSelf, !complexShapeFirst);
+
while ( smIt->more() )
{
SMESH_subMesh* smToCompute = smIt->next();
const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
const int aShapeDim = GetShapeDim( aSubShape );
while ( smIt->more() )
{
SMESH_subMesh* smToCompute = smIt->next();
const TopoDS_Shape& aSubShape = smToCompute->GetSubShape();
const int aShapeDim = GetShapeDim( aSubShape );
- if ( aShapeDim < 1 ) continue;
+ if ( aShapeDim < 1 || aSubShape.ShapeType() == shapeType )
+ continue;
// check for preview dimension limitations
if ( aShapesId && GetShapeDim( aSubShape.ShapeType() ) > (int)aDim )
// check for preview dimension limitations
if ( aShapesId && GetShapeDim( aSubShape.ShapeType() ) > (int)aDim )
@@
-392,22
+401,15
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
Compute( aMesh, aSubShape, aFlags | SHAPE_ONLY_UPWARD, aDim, aShapesId, localAllowed );
}
}
Compute( aMesh, aSubShape, aFlags | SHAPE_ONLY_UPWARD, aDim, aShapesId, localAllowed );
}
}
- }
- // --------------------------------
- // apply the all-dimensional algos
- // --------------------------------
- for ( size_t i = 0; i < smVec.size(); ++i )
- {
- sm = smVec[i];
- if ( sm->GetComputeState() == SMESH_subMesh::READY_TO_COMPUTE)
+ // --------------------------------
+ // apply the all-dimensional algo
+ // --------------------------------
{
{
- const TopAbs_ShapeEnum shapeType = sm->GetSubShape().ShapeType();
+ if (_compute_canceled)
+ return false;
// check for preview dimension limitations
if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
continue;
// check for preview dimension limitations
if ( aShapesId && GetShapeDim( shapeType ) > (int)aDim )
continue;
-
- if (_compute_canceled)
- return false;
sm->SetAllowedSubShapes( fillAllowed( shapeSM, aShapeOnly, allowedSubShapes ));
setCurrentSubMesh( sm );
sm->ComputeStateEngine( computeEvent );
sm->SetAllowedSubShapes( fillAllowed( shapeSM, aShapeOnly, allowedSubShapes ));
setCurrentSubMesh( sm );
sm->ComputeStateEngine( computeEvent );
@@
-417,7
+419,7
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
aShapesId->insert( sm->GetId() );
}
}
aShapesId->insert( sm->GetId() );
}
}
- }
// loop on shape dimensions
+ }
// -----------------------------------------------
// mesh the rest sub-shapes starting from vertices
// -----------------------------------------------
// mesh the rest sub-shapes starting from vertices
@@
-453,8
+455,8
@@
bool SMESH_Gen::Compute(SMESH_Mesh & aMesh,
* Prepare Compute a mesh
*/
//=============================================================================
* Prepare Compute a mesh
*/
//=============================================================================
-void SMESH_Gen::PrepareCompute(SMESH_Mesh &
aMesh
,
- const TopoDS_Shape &
aShape
)
+void SMESH_Gen::PrepareCompute(SMESH_Mesh &
/*aMesh*/
,
+ const TopoDS_Shape &
/*aShape*/
)
{
_compute_canceled = false;
resetCurrentSubMesh();
{
_compute_canceled = false;
resetCurrentSubMesh();
@@
-465,8
+467,8
@@
void SMESH_Gen::PrepareCompute(SMESH_Mesh & aMesh,
* Cancel Compute a mesh
*/
//=============================================================================
* Cancel Compute a mesh
*/
//=============================================================================
-void SMESH_Gen::CancelCompute(SMESH_Mesh &
aMesh
,
- const TopoDS_Shape &
aShape
)
+void SMESH_Gen::CancelCompute(SMESH_Mesh &
/*aMesh*/
,
+ const TopoDS_Shape &
/*aShape*/
)
{
_compute_canceled = true;
if ( const SMESH_subMesh* sm = GetCurrentSubMesh() )
{
_compute_canceled = true;
if ( const SMESH_subMesh* sm = GetCurrentSubMesh() )
@@
-1053,10
+1055,10
@@
std::vector< std::string > SMESH_Gen::GetPluginXMLPaths()
}
// get a separator from rootDir
}
// get a separator from rootDir
- for (
pos = strlen( rootDir )-1; pos >= 0 && sep.empty(); --pos
)
- if ( rootDir[
pos] == '/' || rootDir[pos
] == '\\' )
+ for (
int i = strlen( rootDir )-1; i >= 0 && sep.empty(); --i
)
+ if ( rootDir[
i] == '/' || rootDir[i
] == '\\' )
{
{
- sep = rootDir[
pos
];
+ sep = rootDir[
i
];
break;
}
#ifdef WIN32
break;
}
#ifdef WIN32
@@
-1075,15
+1077,18
@@
std::vector< std::string > SMESH_Gen::GetPluginXMLPaths()
xmlPath += sep + plugin + ".xml";
bool fileOK;
#ifdef WIN32
xmlPath += sep + plugin + ".xml";
bool fileOK;
#ifdef WIN32
-#ifdef UNICODE
+
#ifdef UNICODE
const wchar_t* path = Kernel_Utils::decode_s(xmlPath);
const wchar_t* path = Kernel_Utils::decode_s(xmlPath);
-#else
+
#else
const char* path = xmlPath.c_str();
const char* path = xmlPath.c_str();
-#endif
+ #endif
+
fileOK = (GetFileAttributes(path) != INVALID_FILE_ATTRIBUTES);
fileOK = (GetFileAttributes(path) != INVALID_FILE_ATTRIBUTES);
-#ifdef UNICODE
+
+ #ifdef UNICODE
delete path;
delete path;
-#endif
+ #endif
+
#else
fileOK = (access(xmlPath.c_str(), F_OK) == 0);
#endif
#else
fileOK = (access(xmlPath.c_str(), F_OK) == 0);
#endif