Removed workaround within GeomLib_CheckCurveOnSurface.
//
virtual void Perform() {
BOPAlgo_Algo::UserBreak();
- IntTools_FaceFace::Perform(myF, myF);
+ IntTools_FaceFace::Perform (myF, myF, myRunParallel);
}
//
protected:
BOPAlgo_FaceSelfIntersect& aFaceSelfIntersect = aVFace.Appended();
//
+ aFaceSelfIntersect.SetRunParallel (myRunParallel);
aFaceSelfIntersect.SetIndex(i);
aFaceSelfIntersect.SetFace(aF);
aFaceSelfIntersect.SetTolF(aTolF);
myTrsf = aTrsf.Inverted();
}
- IntTools_FaceFace::Perform (aF1, aF2);
+ IntTools_FaceFace::Perform (aF1, aF2, myRunParallel);
}
catch (Standard_Failure const&)
{
//
BOPAlgo_FaceFace& aFaceFace=aVFaceFace.Appended();
//
+ aFaceFace.SetRunParallel (myRunParallel);
aFaceFace.SetIndices(nF1, nF2);
aFaceFace.SetFaces(aF1, aF2);
aFaceFace.SetBoxes (myDS->ShapeInfo (nF1).Box(), myDS->ShapeInfo (nF2).Box());
aFF.SetList(aListOfPnts);
aFF.SetFuzzyValue (BOPTest_Objects::FuzzyValue());
//
- aFF.Perform (aF1, aF2);
+ aFF.Perform (aF1, aF2, BOPTest_Objects::RunParallel());
//
anIsDone=aFF.IsDone();
if (!anIsDone) {
//function : Perform
//purpose :
//=======================================================================
-#ifndef HAVE_TBB
-//After fixing bug # 26365, this fragment should be deleted
-//(together the text "#ifdef HAVE_TBB")
-
-void GeomLib_CheckCurveOnSurface::Perform(const Handle(Geom2d_Curve)& thePCurve,
- const Standard_Boolean)
-{
- const Standard_Boolean isTheMTDisabled = Standard_True;
-#else
void GeomLib_CheckCurveOnSurface::Perform(const Handle(Geom2d_Curve)& thePCurve,
const Standard_Boolean isTheMTDisabled)
{
-#endif
if( myCurve.IsNull() ||
mySurface.IsNull() ||
thePCurve.IsNull())
//function : Perform
//purpose : intersect surfaces of the faces
//=======================================================================
-void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
- const TopoDS_Face& aF2)
+void IntTools_FaceFace::Perform (const TopoDS_Face& aF1,
+ const TopoDS_Face& aF2,
+ const Standard_Boolean theToRunParallel)
{
if (myContext.IsNull()) {
myContext=new IntTools_Context;
MakeCurve(i, dom1, dom2, TolArc);
}
//
- ComputeTolReached3d();
+ ComputeTolReached3d (theToRunParallel);
//
if (bReverse) {
Handle(Geom2d_Curve) aC2D1, aC2D2;
//function :ComputeTolReached3d
//purpose :
//=======================================================================
-void IntTools_FaceFace::ComputeTolReached3d()
+void IntTools_FaceFace::ComputeTolReached3d (const Standard_Boolean theToRunParallel)
{
Standard_Integer i, j, aNbLin = mySeqOfCurve.Length();
if (!aNbLin) {
// Look for the maximal deviation between 3D and 2D curves
Standard_Real aD, aT;
const Handle(Geom_Surface)& aS = !j ? aS1 : aS2;
- if (IntTools_Tools::ComputeTolerance
- (aC3D, aC2D, aS, aFirst, aLast, aD, aT))
+ if (IntTools_Tools::ComputeTolerance (aC3D, aC2D, aS, aFirst, aLast, aD, aT, Precision::PConfusion(), theToRunParallel))
{
if (aD > aTolC)
{
//! Intersects underliing surfaces of F1 and F2
//! Use sum of tolerance of F1 and F2 as intersection
//! criteria
- Standard_EXPORT void Perform (const TopoDS_Face& F1, const TopoDS_Face& F2);
+ Standard_EXPORT void Perform (const TopoDS_Face& F1,
+ const TopoDS_Face& F2,
+ const Standard_Boolean theToRunParallel = Standard_False);
//! Returns True if the intersection was successful
//! as a maximal deviation between 3D curve and 2D curves on faces.<br>
//! If there are no 2D curves the maximal deviation between 3D curves
//! and surfaces is computed.
- Standard_EXPORT void ComputeTolReached3d();
+ Standard_EXPORT void ComputeTolReached3d (const Standard_Boolean theToRunParallel);
protected:
const Standard_Real theLast,
Standard_Real& theMaxDist,
Standard_Real& theMaxPar,
- const Standard_Real theTolRange)
+ const Standard_Real theTolRange,
+ const Standard_Boolean theToRunParallel)
{
GeomLib_CheckCurveOnSurface aCS;
//
aCS.Init(theCurve3D, theSurf, theFirst, theLast, theTolRange);
- aCS.Perform(theCurve2D);
+ aCS.Perform (theCurve2D, !theToRunParallel);
if (!aCS.IsDone()) {
return Standard_False;
}
const Standard_Real theLast,
Standard_Real& theMaxDist,
Standard_Real& theMaxPar,
- const Standard_Real theTolRange =
- Precision::PConfusion());
+ const Standard_Real theTolRange = Precision::PConfusion(),
+ const Standard_Boolean theToRunParallel = Standard_False);
//! Computes the correct Intersection range for