mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-15 21:03:07 +05:00
0021422: EDF 1963 SMESH: Viscous layer algorithm fails in some cases
protect from SIGSEGV when used with "Viscous layers"
This commit is contained in:
parent
b8043c6073
commit
3b5470266a
@ -1689,16 +1689,17 @@ bool StdMeshers_PrismAsBlock::GetLayersTransformation(vector<gp_Trsf> & trsf) co
|
||||
for ( int iE = 0; iE < nbEdgesInWires.front(); ++iE, ++edgeIt )
|
||||
{
|
||||
if ( BRep_Tool::Degenerated( *edgeIt )) continue;
|
||||
const TParam2ColumnMap& u2colMap =
|
||||
const TParam2ColumnMap* u2colMap =
|
||||
GetParam2ColumnMap( myHelper->GetMeshDS()->ShapeToIndex( *edgeIt ), isReverse );
|
||||
if ( !u2colMap ) return false;
|
||||
isReverse = ( edgeIt->Orientation() == TopAbs_REVERSED );
|
||||
double f = u2colMap.begin()->first, l = u2colMap.rbegin()->first;
|
||||
double f = u2colMap->begin()->first, l = u2colMap->rbegin()->first;
|
||||
if ( isReverse ) swap ( f, l );
|
||||
const int nbCol = 5;
|
||||
for ( int i = 0; i < nbCol; ++i )
|
||||
{
|
||||
double u = f + i/double(nbCol) * ( l - f );
|
||||
const TNodeColumn* col = & getColumn( & u2colMap, u )->second;
|
||||
const TNodeColumn* col = & getColumn( u2colMap, u )->second;
|
||||
if ( columns.empty() || col != columns.back() )
|
||||
columns.push_back( col );
|
||||
}
|
||||
|
@ -148,15 +148,18 @@ public:
|
||||
* \brief Return TParam2ColumnMap for a base edge
|
||||
* \param baseEdgeID - base edge SMESHDS Index
|
||||
* \param isReverse - columns in-block orientation
|
||||
* \retval const TParam2ColumnMap& - map
|
||||
* \retval const TParam2ColumnMap* - map
|
||||
*/
|
||||
const TParam2ColumnMap& GetParam2ColumnMap(const int baseEdgeID,
|
||||
const TParam2ColumnMap* GetParam2ColumnMap(const int baseEdgeID,
|
||||
bool & isReverse) const
|
||||
{
|
||||
std::pair< TParam2ColumnMap*, bool > col_frw =
|
||||
myShapeIndex2ColumnMap.find( baseEdgeID )->second;
|
||||
std::map< int, std::pair< TParam2ColumnMap*, bool > >::const_iterator i_mo =
|
||||
myShapeIndex2ColumnMap.find( baseEdgeID );
|
||||
if ( i_mo == myShapeIndex2ColumnMap.end() ) return 0;
|
||||
|
||||
const std::pair< TParam2ColumnMap*, bool >& col_frw = i_mo->second;
|
||||
isReverse = !col_frw.second;
|
||||
return * col_frw.first;
|
||||
return col_frw.first;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
Loading…
Reference in New Issue
Block a user