From: eap Date: Thu, 8 Aug 2013 12:34:43 +0000 (+0000) Subject: 0022297: BR_new_bop3/Occdev_3f4689a163 => Faces are missing after an extrusion X-Git-Tag: V7_3_0a1~214 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=c2a497190b48059c752b3e2019009aca3a00ee44;p=modules%2Fsmesh.git 0022297: BR_new_bop3/Occdev_3f4689a163 => Faces are missing after an extrusion Fix IsFreeFace() for a polyhedron --- diff --git a/src/SMDS/SMDS_VolumeTool.cxx b/src/SMDS/SMDS_VolumeTool.cxx index 982942827..56e7a3132 100644 --- a/src/SMDS/SMDS_VolumeTool.cxx +++ b/src/SMDS/SMDS_VolumeTool.cxx @@ -1507,17 +1507,21 @@ bool SMDS_VolumeTool::IsFreeFace( int faceIndex, const SMDS_MeshElement** otherV const SMDS_MeshNode** nodes = GetFaceNodes( faceIndex ); // 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; for ( int i = di; i < myFaceNbNodes; i += di ) nodeSet.insert( nodes[i] ); SMDS_ElemIteratorPtr eIt = nodes[0]->GetInverseElementIterator( SMDSAbs_Volume ); + SMDS_ElemIteratorPtr nIt; while ( eIt->more() ) { const SMDS_MeshElement* vol = eIt->next(); if ( vol != myVolume ) { 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() ) if (( nbShared += nodeSet.count( nIt->next() )) == nodeSet.size() ) {