+ TopoDS_Shape mainShape = myMesh->ShapeToMesh();
+ bool hasShapeToMesh = ( myMesh->SubMeshIndices().size() > 1 );
+ if ( !mainShape.IsNull() && hasShapeToMesh )
+ {
+ // define EPS by max tolerance of the mainShape (IPAL53097)
+ TopExp_Explorer subShape;
+ for ( subShape.Init( mainShape, TopAbs_FACE ); subShape.More(); subShape.Next() ) {
+ EPS = Max( EPS, BRep_Tool::Tolerance( TopoDS::Face( subShape.Current() )));
+ }
+ for ( subShape.Init( mainShape, TopAbs_EDGE ); subShape.More(); subShape.Next() ) {
+ EPS = Max( EPS, BRep_Tool::Tolerance( TopoDS::Edge( subShape.Current() )));
+ }
+ for ( subShape.Init( mainShape, TopAbs_VERTEX ); subShape.More(); subShape.Next() ) {
+ EPS = Max( EPS, BRep_Tool::Tolerance( TopoDS::Vertex( subShape.Current() )));
+ }
+ EPS *= 2.;
+ }