mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-04 13:13:25 +03:00
0026365: Optimization of work of OSD_Parallel class members for GeomLib_CheckCurveOnSurface
Removed workaround within GeomLib_CheckCurveOnSurface.
This commit is contained in:
@@ -356,8 +356,9 @@ static Standard_Boolean isTreatAnalityc(const BRepAdaptor_Surface& theBAS1,
|
||||
//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;
|
||||
@@ -560,7 +561,7 @@ void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
|
||||
MakeCurve(i, dom1, dom2, TolArc);
|
||||
}
|
||||
//
|
||||
ComputeTolReached3d();
|
||||
ComputeTolReached3d (theToRunParallel);
|
||||
//
|
||||
if (bReverse) {
|
||||
Handle(Geom2d_Curve) aC2D1, aC2D2;
|
||||
@@ -624,7 +625,7 @@ void IntTools_FaceFace::Perform(const TopoDS_Face& aF1,
|
||||
//function :ComputeTolReached3d
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
void IntTools_FaceFace::ComputeTolReached3d()
|
||||
void IntTools_FaceFace::ComputeTolReached3d (const Standard_Boolean theToRunParallel)
|
||||
{
|
||||
Standard_Integer i, j, aNbLin = mySeqOfCurve.Length();
|
||||
if (!aNbLin) {
|
||||
@@ -662,8 +663,7 @@ void IntTools_FaceFace::ComputeTolReached3d()
|
||||
// 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)
|
||||
{
|
||||
|
@@ -48,7 +48,9 @@ public:
|
||||
//! 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
|
||||
@@ -106,7 +108,7 @@ protected:
|
||||
//! 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:
|
||||
|
||||
|
@@ -792,12 +792,13 @@ Standard_Boolean IntTools_Tools::ComputeTolerance
|
||||
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;
|
||||
}
|
||||
|
@@ -172,8 +172,8 @@ public:
|
||||
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
|
||||
|
Reference in New Issue
Block a user