#include <TopoDS_Solid.hxx>
#include <gp.hxx>
#include <gp_Pnt.hxx>
-#if OCC_VERSION_LARGE > 0x06050400
#include <BRepClass3d.hxx>
-#else
-#include <BRepTools.hxx>
-#endif
using namespace std;
// get 2 shells
TopoDS_Solid solid = TopoDS::Solid( aShape );
-#if OCC_VERSION_LARGE > 0x06050400
TopoDS_Shell outerShell = BRepClass3d::OuterShell( solid );
-#else
- TopoDS_Shell outerShell = BRepTools::OuterShell( solid );
-#endif
TopoDS_Shape innerShell;
int nbShells = 0;
for ( TopoDS_Iterator It (solid); It.More(); It.Next(), ++nbShells )
// ----------------------------------
ProjectionUtils::TShapeShapeMap shape2ShapeMaps[2];
- if ( !ProjectionUtils::FindSubShapeAssociation( innerShell, &aMesh,
- outerShell, &aMesh,
- shape2ShapeMaps[0])
- &&
- !ProjectionUtils::FindSubShapeAssociation( innerShell.Reversed(), &aMesh,
- outerShell, &aMesh,
- shape2ShapeMaps[1]))
+ bool mapOk1 = ProjectionUtils::FindSubShapeAssociation( innerShell, &aMesh,
+ outerShell, &aMesh,
+ shape2ShapeMaps[0]);
+ bool mapOk2 = ProjectionUtils::FindSubShapeAssociation( innerShell.Reversed(), &aMesh,
+ outerShell, &aMesh,
+ shape2ShapeMaps[1]);
+ if ( !mapOk1 && !mapOk2 )
return error(COMPERR_BAD_SHAPE,"Topology of inner and outer shells seems different" );
int iMap;
}
// Find matching nodes of in and out faces
- TNodeNodeMap nodeIn2OutMap;
+ ProjectionUtils::TNodeNodeMap nodeIn2OutMap;
if ( ! ProjectionUtils::FindMatchingNodesOnFaces( inFace, &aMesh, outFace, &aMesh,
shape2ShapeMap, nodeIn2OutMap ))
return error(COMPERR_BAD_INPUT_MESH,SMESH_Comment("Mesh on faces #")
{
// get 2 shells
TopoDS_Solid solid = TopoDS::Solid( aShape );
-#if OCC_VERSION_LARGE > 0x06050400
TopoDS_Shell outerShell = BRepClass3d::OuterShell( solid );
-#else
- TopoDS_Shell outerShell = BRepTools::OuterShell( solid );
-#endif
TopoDS_Shape innerShell;
int nbShells = 0;
for ( TopoDS_Iterator It (solid); It.More(); It.Next(), ++nbShells )
* \brief Return true if the algorithm can mesh this shape
* \param [in] aShape - shape to check
* \param [in] toCheckAll - if true, this check returns OK if all shapes are OK,
- * else, returns OK if all at least one shape is OK
+ * else, returns OK if at least one shape is OK
*/
//================================================================================
}
shell[ nbShells-1 ] = It.Value();
}
- if ( nbShells != 2 ) continue;
+ if ( nbShells != 2 ) {
+ if ( toCheckAll ) return false;
+ continue;
+ }
int nbFaces1 = SMESH_MesherHelper:: Count( shell[0], TopAbs_FACE, 0 );
int nbFaces2 = SMESH_MesherHelper:: Count( shell[1], TopAbs_FACE, 0 );