mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2024-12-27 09:50:34 +05:00
0022297: BR_new_bop3/Occdev_3f4689a163 => Faces are missing after an extrusion
Fix IsFreeFace() for a polyhedron
This commit is contained in:
parent
b10e5c9adf
commit
c2a497190b
@ -1507,17 +1507,21 @@ bool SMDS_VolumeTool::IsFreeFace( int faceIndex, const SMDS_MeshElement** otherV
|
|||||||
const SMDS_MeshNode** nodes = GetFaceNodes( faceIndex );
|
const SMDS_MeshNode** nodes = GetFaceNodes( faceIndex );
|
||||||
|
|
||||||
// a set of facet nodes w/o medium ones and w/o nodes[0]
|
// a set of facet nodes w/o medium ones and w/o nodes[0]
|
||||||
set< const SMDS_MeshNode* > nodeSet;
|
set< const SMDS_MeshElement* > nodeSet;
|
||||||
const int di = myVolume->IsQuadratic() ? 2 : 1;
|
const int di = myVolume->IsQuadratic() ? 2 : 1;
|
||||||
for ( int i = di; i < myFaceNbNodes; i += di )
|
for ( int i = di; i < myFaceNbNodes; i += di )
|
||||||
nodeSet.insert( nodes[i] );
|
nodeSet.insert( nodes[i] );
|
||||||
|
|
||||||
SMDS_ElemIteratorPtr eIt = nodes[0]->GetInverseElementIterator( SMDSAbs_Volume );
|
SMDS_ElemIteratorPtr eIt = nodes[0]->GetInverseElementIterator( SMDSAbs_Volume );
|
||||||
|
SMDS_ElemIteratorPtr nIt;
|
||||||
while ( eIt->more() ) {
|
while ( eIt->more() ) {
|
||||||
const SMDS_MeshElement* vol = eIt->next();
|
const SMDS_MeshElement* vol = eIt->next();
|
||||||
if ( vol != myVolume ) {
|
if ( vol != myVolume ) {
|
||||||
size_t nbShared = 0;
|
size_t nbShared = 0;
|
||||||
SMDS_NodeIteratorPtr nIt = vol->nodeIterator();
|
if ( const SMDS_VtkVolume* v = dynamic_cast< const SMDS_VtkVolume* >( vol ))
|
||||||
|
nIt = v->uniqueNodesIterator();
|
||||||
|
else
|
||||||
|
nIt = vol->nodesIterator();
|
||||||
while ( nIt->more() )
|
while ( nIt->more() )
|
||||||
if (( nbShared += nodeSet.count( nIt->next() )) == nodeSet.size() )
|
if (( nbShared += nodeSet.count( nIt->next() )) == nodeSet.size() )
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user