+
+ //================================================================================
+ /*!
+ * \brief Check if a face is in a SOLID
+ */
+ //================================================================================
+
+ bool isInSolid( vector<const SMDS_MeshNode*> & faceNodes,
+ const int nbNodes,
+ const int solidID )
+ {
+ if ( !faceNodes[0] )
+ return true; // NOT_QUAD
+ for ( int i = 0; i < nbNodes; ++i )
+ {
+ int shapeID = faceNodes[i]->GetShapeID();
+ if ( shapeID == solidID )
+ return true;
+ }
+ faceNodes.resize( nbNodes );
+ std::vector<const SMDS_MeshElement*> vols;
+ SMDS_Mesh::GetElementsByNodes( faceNodes, vols, SMDSAbs_Volume );
+ bool inSolid = false;
+ for ( size_t i = 0; i < vols.size() && !inSolid; ++i )
+ {
+ int shapeID = vols[i]->GetShapeID();
+ inSolid = ( shapeID == solidID );
+ }
+ faceNodes.push_back( faceNodes[0] );
+ return inSolid;
+ }