mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-01 20:30:35 +05:00
0021893: EDF 2133 SMESH : Improvement of 3D extrusion algorithm
Make SubMeshesComputed() public Make getDependsOnIterator() const
This commit is contained in:
parent
907db98bc4
commit
154b1ad73e
@ -264,11 +264,11 @@ bool SMESH_subMesh::IsMeshComputed() const
|
|||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
* Return true if all sub-meshes have been meshed
|
||||||
*/
|
*/
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
||||||
bool SMESH_subMesh::subMeshesComputed()
|
bool SMESH_subMesh::SubMeshesComputed() const
|
||||||
{
|
{
|
||||||
int myDim = SMESH_Gen::GetShapeDim( _subShape );
|
int myDim = SMESH_Gen::GetShapeDim( _subShape );
|
||||||
int dimToCheck = myDim - 1;
|
int dimToCheck = myDim - 1;
|
||||||
@ -1398,7 +1398,7 @@ bool SMESH_subMesh::ComputeStateEngine(int event)
|
|||||||
if (!algo->OnlyUnaryInput())
|
if (!algo->OnlyUnaryInput())
|
||||||
shape = getCollection( gen, algo, subComputed );
|
shape = getCollection( gen, algo, subComputed );
|
||||||
else
|
else
|
||||||
subComputed = subMeshesComputed();
|
subComputed = SubMeshesComputed();
|
||||||
ret = ( algo->NeedDiscreteBoundary() ? subComputed :
|
ret = ( algo->NeedDiscreteBoundary() ? subComputed :
|
||||||
algo->SupportSubmeshes() ? true :
|
algo->SupportSubmeshes() ? true :
|
||||||
( !subComputed || _father->IsNotConformAllowed() ));
|
( !subComputed || _father->IsNotConformAllowed() ));
|
||||||
@ -1953,7 +1953,7 @@ TopoDS_Shape SMESH_subMesh::getCollection(SMESH_Gen * theGen,
|
|||||||
SMESH_Algo* theAlgo,
|
SMESH_Algo* theAlgo,
|
||||||
bool & theSubComputed)
|
bool & theSubComputed)
|
||||||
{
|
{
|
||||||
theSubComputed = subMeshesComputed();
|
theSubComputed = SubMeshesComputed();
|
||||||
|
|
||||||
TopoDS_Shape mainShape = _father->GetMeshDS()->ShapeToMesh();
|
TopoDS_Shape mainShape = _father->GetMeshDS()->ShapeToMesh();
|
||||||
|
|
||||||
@ -1986,7 +1986,7 @@ TopoDS_Shape SMESH_subMesh::getCollection(SMESH_Gen * theGen,
|
|||||||
if (strcmp( anAlgo->GetName(), theAlgo->GetName()) == 0 && // same algo
|
if (strcmp( anAlgo->GetName(), theAlgo->GetName()) == 0 && // same algo
|
||||||
anAlgo->GetUsedHypothesis( *_father, S, ignoreAuxiliaryHyps ) == aUsedHyp) // same hyps
|
anAlgo->GetUsedHypothesis( *_father, S, ignoreAuxiliaryHyps ) == aUsedHyp) // same hyps
|
||||||
aBuilder.Add( aCompound, S );
|
aBuilder.Add( aCompound, S );
|
||||||
if ( !subMesh->subMeshesComputed() )
|
if ( !subMesh->SubMeshesComputed() )
|
||||||
theSubComputed = false;
|
theSubComputed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2362,22 +2362,23 @@ namespace {
|
|||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
SMESH_subMeshIteratorPtr SMESH_subMesh::getDependsOnIterator(const bool includeSelf,
|
SMESH_subMeshIteratorPtr SMESH_subMesh::getDependsOnIterator(const bool includeSelf,
|
||||||
const bool reverse)
|
const bool reverse) const
|
||||||
{
|
{
|
||||||
|
SMESH_subMesh *me = (SMESH_subMesh*) this;
|
||||||
SMESH_subMesh *prepend=0, *append=0;
|
SMESH_subMesh *prepend=0, *append=0;
|
||||||
if ( includeSelf ) {
|
if ( includeSelf ) {
|
||||||
if ( reverse ) prepend = this;
|
if ( reverse ) prepend = me;
|
||||||
else append = this;
|
else append = me;
|
||||||
}
|
}
|
||||||
typedef map < int, SMESH_subMesh * > TMap;
|
typedef map < int, SMESH_subMesh * > TMap;
|
||||||
if ( reverse )
|
if ( reverse )
|
||||||
{
|
{
|
||||||
return SMESH_subMeshIteratorPtr
|
return SMESH_subMeshIteratorPtr
|
||||||
( new _Iterator( new SMDS_mapReverseIterator<TMap>( DependsOn() ), prepend, append ));
|
( new _Iterator( new SMDS_mapReverseIterator<TMap>( me->DependsOn() ), prepend, append ));
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
return SMESH_subMeshIteratorPtr
|
return SMESH_subMeshIteratorPtr
|
||||||
( new _Iterator( new SMDS_mapIterator<TMap>( DependsOn() ), prepend, append ));
|
( new _Iterator( new SMDS_mapIterator<TMap>( me->DependsOn() ), prepend, append ));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ class SMESH_EXPORT SMESH_subMesh
|
|||||||
* \brief Return iterator on the submeshes this one depends on
|
* \brief Return iterator on the submeshes this one depends on
|
||||||
*/
|
*/
|
||||||
SMESH_subMeshIteratorPtr getDependsOnIterator(const bool includeSelf,
|
SMESH_subMeshIteratorPtr getDependsOnIterator(const bool includeSelf,
|
||||||
const bool complexShapeFirst);
|
const bool complexShapeFirst) const;
|
||||||
|
|
||||||
const TopoDS_Shape & GetSubShape() const;
|
const TopoDS_Shape & GetSubShape() const;
|
||||||
|
|
||||||
@ -253,6 +253,8 @@ public:
|
|||||||
void SetIsAlwaysComputed(bool isAlCo);
|
void SetIsAlwaysComputed(bool isAlCo);
|
||||||
bool IsAlwaysComputed() { return _alwaysComputed; }
|
bool IsAlwaysComputed() { return _alwaysComputed; }
|
||||||
|
|
||||||
|
bool SubMeshesComputed() const;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Find common submeshes (based on shared subshapes with other
|
* \brief Find common submeshes (based on shared subshapes with other
|
||||||
@ -267,9 +269,6 @@ protected:
|
|||||||
// ==================================================================
|
// ==================================================================
|
||||||
void insertDependence(const TopoDS_Shape aSubShape);
|
void insertDependence(const TopoDS_Shape aSubShape);
|
||||||
|
|
||||||
bool subMeshesComputed();
|
|
||||||
//bool SubMeshesReady();
|
|
||||||
|
|
||||||
void removeSubMeshElementsAndNodes();
|
void removeSubMeshElementsAndNodes();
|
||||||
void updateDependantsState(const compute_event theEvent);
|
void updateDependantsState(const compute_event theEvent);
|
||||||
void updateSubMeshState(const compute_state theState);
|
void updateSubMeshState(const compute_state theState);
|
||||||
|
Loading…
Reference in New Issue
Block a user