From: asuraven Date: Tue, 27 Jul 2021 15:45:16 +0000 (+0300) Subject: 0032485: More ShallowCopy()+ X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=refs%2Fheads%2FCR32485_1;p=occt-copy.git 0032485: More ShallowCopy()+ --- diff --git a/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx b/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx index afabec1d47..5e36cabf35 100644 --- a/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx +++ b/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx @@ -732,8 +732,14 @@ Handle(Adaptor3d_Curve) Adaptor3d_CurveOnSurface::ShallowCopy() const aCopy->myType = myType; aCopy->myCirc = myCirc; aCopy->myLin = myLin; - aCopy->myFirstSurf = myFirstSurf->ShallowCopy(); - aCopy->myLastSurf = myLastSurf->ShallowCopy(); + if (!myFirstSurf.IsNull()) + { + aCopy->myFirstSurf = myFirstSurf->ShallowCopy(); + } + if (!myLastSurf.IsNull()) + { + aCopy->myLastSurf = myLastSurf->ShallowCopy(); + } aCopy->myIntervals = myIntervals; aCopy->myIntCont = myIntCont; diff --git a/src/BRepAdaptor/BRepAdaptor_Curve2d.cxx b/src/BRepAdaptor/BRepAdaptor_Curve2d.cxx index 941ae240c1..9e44457aa5 100644 --- a/src/BRepAdaptor/BRepAdaptor_Curve2d.cxx +++ b/src/BRepAdaptor/BRepAdaptor_Curve2d.cxx @@ -58,7 +58,10 @@ Handle(Adaptor2d_Curve2d) BRepAdaptor_Curve2d::ShallowCopy() const aCopy->myLast = myLast; aCopy->myBSplineCurve = myBSplineCurve; aCopy->myCurveCache = myCurveCache; - aCopy->myNestedEvaluator = myNestedEvaluator; + if (!myNestedEvaluator.IsNull()) + { + aCopy->myNestedEvaluator = myNestedEvaluator->ShallowCopy(); + } return aCopy; } diff --git a/src/Geom2dAdaptor/Geom2dAdaptor_Curve.cxx b/src/Geom2dAdaptor/Geom2dAdaptor_Curve.cxx index a0b630f34c..b3ce81771b 100644 --- a/src/Geom2dAdaptor/Geom2dAdaptor_Curve.cxx +++ b/src/Geom2dAdaptor/Geom2dAdaptor_Curve.cxx @@ -79,7 +79,10 @@ Handle(Adaptor2d_Curve2d) Geom2dAdaptor_Curve::ShallowCopy() const aCopy->myFirst = myFirst; aCopy->myLast = myLast; aCopy->myBSplineCurve = myBSplineCurve; - aCopy->myNestedEvaluator = myNestedEvaluator; + if(!myNestedEvaluator.IsNull()) + { + aCopy->myNestedEvaluator = myNestedEvaluator->ShallowCopy(); + } return aCopy; } diff --git a/src/Geom2dEvaluator/Geom2dEvaluator_Curve.hxx b/src/Geom2dEvaluator/Geom2dEvaluator_Curve.hxx index 4c99991a8e..9a82007b1b 100644 --- a/src/Geom2dEvaluator/Geom2dEvaluator_Curve.hxx +++ b/src/Geom2dEvaluator/Geom2dEvaluator_Curve.hxx @@ -44,6 +44,8 @@ public: virtual gp_Vec2d DN(const Standard_Real theU, const Standard_Integer theDerU) const = 0; + virtual Handle(Geom2dEvaluator_Curve) ShallowCopy() const = 0; + DEFINE_STANDARD_RTTI_INLINE(Geom2dEvaluator_Curve,Standard_Transient) }; diff --git a/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.cxx b/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.cxx index 88e3421484..1cef815680 100644 --- a/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.cxx +++ b/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.cxx @@ -113,6 +113,17 @@ gp_Vec2d Geom2dEvaluator_OffsetCurve::DN(const Standard_Real theU, return aDN; } +Handle(Geom2dEvaluator_Curve) Geom2dEvaluator_OffsetCurve::ShallowCopy() const +{ + Handle(Geom2dEvaluator_OffsetCurve) aCopy = new Geom2dEvaluator_OffsetCurve(); + + aCopy->myBaseCurve = myBaseCurve; + aCopy->myBaseAdaptor = Handle(Geom2dAdaptor_Curve)::DownCast(myBaseAdaptor->ShallowCopy()); + aCopy->myOffset = myOffset; + + return aCopy; +} + void Geom2dEvaluator_OffsetCurve::BaseD0(const Standard_Real theU, gp_Pnt2d& theValue) const diff --git a/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.hxx b/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.hxx index 356a89e9fc..ca48b412c1 100644 --- a/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.hxx +++ b/src/Geom2dEvaluator/Geom2dEvaluator_OffsetCurve.hxx @@ -23,6 +23,8 @@ class Geom2dEvaluator_OffsetCurve : public Geom2dEvaluator_Curve { public: + Standard_EXPORT Geom2dEvaluator_OffsetCurve() {} + //! Initialize evaluator by curve Standard_EXPORT Geom2dEvaluator_OffsetCurve( const Handle(Geom2d_Curve)& theBase, @@ -53,6 +55,8 @@ public: Standard_EXPORT gp_Vec2d DN(const Standard_Real theU, const Standard_Integer theDeriv) const Standard_OVERRIDE; + Standard_EXPORT Handle(Geom2dEvaluator_Curve) ShallowCopy() const Standard_OVERRIDE; + DEFINE_STANDARD_RTTIEXT(Geom2dEvaluator_OffsetCurve,Geom2dEvaluator_Curve) private: diff --git a/src/GeomAdaptor/GeomAdaptor_Curve.cxx b/src/GeomAdaptor/GeomAdaptor_Curve.cxx index 33fb3cca9c..7115a0f80f 100644 --- a/src/GeomAdaptor/GeomAdaptor_Curve.cxx +++ b/src/GeomAdaptor/GeomAdaptor_Curve.cxx @@ -77,7 +77,10 @@ Handle(Adaptor3d_Curve) GeomAdaptor_Curve::ShallowCopy() const aCopy->myFirst = myFirst; aCopy->myLast = myLast; aCopy->myBSplineCurve = myBSplineCurve; - aCopy->myNestedEvaluator = myNestedEvaluator; + if (!myNestedEvaluator.IsNull()) + { + aCopy->myNestedEvaluator = myNestedEvaluator->ShallowCopy(); + } return aCopy; } diff --git a/src/GeomAdaptor/GeomAdaptor_Surface.cxx b/src/GeomAdaptor/GeomAdaptor_Surface.cxx index 010caba62f..3c912b8a61 100644 --- a/src/GeomAdaptor/GeomAdaptor_Surface.cxx +++ b/src/GeomAdaptor/GeomAdaptor_Surface.cxx @@ -133,7 +133,10 @@ Handle(Adaptor3d_Surface) GeomAdaptor_Surface::ShallowCopy() const aCopy->myBSplineSurface = myBSplineSurface; aCopy->mySurfaceType = mySurfaceType; - aCopy->myNestedEvaluator = myNestedEvaluator; + if (!myNestedEvaluator.IsNull()) + { + aCopy->myNestedEvaluator = myNestedEvaluator->ShallowCopy(); + } return aCopy; } diff --git a/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx b/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx index cb963d5660..73960a3d1e 100644 --- a/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx +++ b/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx @@ -82,7 +82,10 @@ Handle(Adaptor3d_Surface) GeomAdaptor_SurfaceOfLinearExtrusion::ShallowCopy() co aCopy->mySurfaceCache = mySurfaceCache; aCopy->mySurfaceType = mySurfaceType; - aCopy->myNestedEvaluator = myNestedEvaluator; + if (!myNestedEvaluator.IsNull()) + { + aCopy->myNestedEvaluator = myNestedEvaluator->ShallowCopy(); + } return aCopy; } diff --git a/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx b/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx index aefd264d78..a9658116cc 100644 --- a/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx +++ b/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx @@ -72,18 +72,21 @@ Handle(Adaptor3d_Surface) GeomAdaptor_SurfaceOfRevolution::ShallowCopy() const aCopy->myHaveAxis = myHaveAxis; aCopy->myAxeRev = myAxeRev; - aCopy->mySurface = mySurface; - aCopy->myUFirst = myUFirst; - aCopy->myULast = myULast; - aCopy->myVFirst = myVFirst; - aCopy->myVLast = myVLast; - aCopy->myTolU = myTolU; - aCopy->myTolV = myTolV; + aCopy->mySurface = mySurface; + aCopy->myUFirst = myUFirst; + aCopy->myULast = myULast; + aCopy->myVFirst = myVFirst; + aCopy->myVLast = myVLast; + aCopy->myTolU = myTolU; + aCopy->myTolV = myTolV; aCopy->myBSplineSurface = myBSplineSurface; - aCopy->mySurfaceCache = mySurfaceCache; + aCopy->mySurfaceCache = mySurfaceCache; - aCopy->mySurfaceType = mySurfaceType; - aCopy->myNestedEvaluator = myNestedEvaluator; + aCopy->mySurfaceType = mySurfaceType; + if (!myNestedEvaluator.IsNull()) + { + aCopy->myNestedEvaluator = myNestedEvaluator->ShallowCopy(); + } return aCopy; } diff --git a/src/GeomEvaluator/GeomEvaluator_Curve.hxx b/src/GeomEvaluator/GeomEvaluator_Curve.hxx index 6d57afad87..4a13acad50 100644 --- a/src/GeomEvaluator/GeomEvaluator_Curve.hxx +++ b/src/GeomEvaluator/GeomEvaluator_Curve.hxx @@ -44,6 +44,8 @@ public: virtual gp_Vec DN(const Standard_Real theU, const Standard_Integer theDerU) const = 0; + virtual Handle(GeomEvaluator_Curve) ShallowCopy() const = 0; + DEFINE_STANDARD_RTTI_INLINE(GeomEvaluator_Curve,Standard_Transient) }; diff --git a/src/GeomEvaluator/GeomEvaluator_OffsetCurve.cxx b/src/GeomEvaluator/GeomEvaluator_OffsetCurve.cxx index d01328ba5d..6be9c3df08 100644 --- a/src/GeomEvaluator/GeomEvaluator_OffsetCurve.cxx +++ b/src/GeomEvaluator/GeomEvaluator_OffsetCurve.cxx @@ -117,6 +117,18 @@ gp_Vec GeomEvaluator_OffsetCurve::DN(const Standard_Real theU, return aDN; } +Handle(GeomEvaluator_Curve) GeomEvaluator_OffsetCurve::ShallowCopy() const +{ + Handle(GeomEvaluator_OffsetCurve) aCopy = new GeomEvaluator_OffsetCurve(); + + aCopy->myBaseCurve = myBaseCurve; + aCopy->myBaseAdaptor = Handle(GeomAdaptor_Curve)::DownCast(myBaseAdaptor->ShallowCopy()); + aCopy->myOffset = myOffset; + aCopy->myOffsetDir = myOffsetDir; + + return aCopy; +} + void GeomEvaluator_OffsetCurve::BaseD0(const Standard_Real theU, gp_Pnt& theValue) const diff --git a/src/GeomEvaluator/GeomEvaluator_OffsetCurve.hxx b/src/GeomEvaluator/GeomEvaluator_OffsetCurve.hxx index 1e894ce3b0..0e0324cb97 100644 --- a/src/GeomEvaluator/GeomEvaluator_OffsetCurve.hxx +++ b/src/GeomEvaluator/GeomEvaluator_OffsetCurve.hxx @@ -24,6 +24,8 @@ class GeomEvaluator_OffsetCurve : public GeomEvaluator_Curve { public: + Standard_EXPORT GeomEvaluator_OffsetCurve() {} + //! Initialize evaluator by curve Standard_EXPORT GeomEvaluator_OffsetCurve( const Handle(Geom_Curve)& theBase, @@ -59,6 +61,8 @@ public: Standard_EXPORT gp_Vec DN(const Standard_Real theU, const Standard_Integer theDeriv) const Standard_OVERRIDE; + Standard_EXPORT virtual Handle(GeomEvaluator_Curve) ShallowCopy() const Standard_OVERRIDE; + DEFINE_STANDARD_RTTIEXT(GeomEvaluator_OffsetCurve,GeomEvaluator_Curve) private: diff --git a/src/GeomEvaluator/GeomEvaluator_OffsetSurface.cxx b/src/GeomEvaluator/GeomEvaluator_OffsetSurface.cxx index b154668fb1..11ebcbf190 100644 --- a/src/GeomEvaluator/GeomEvaluator_OffsetSurface.cxx +++ b/src/GeomEvaluator/GeomEvaluator_OffsetSurface.cxx @@ -408,6 +408,17 @@ gp_Vec GeomEvaluator_OffsetSurface::DN( } } +Handle(GeomEvaluator_Surface) GeomEvaluator_OffsetSurface::ShallowCopy() const +{ + Handle(GeomEvaluator_OffsetSurface) aCopy = new GeomEvaluator_OffsetSurface(); + + aCopy->myBaseSurf = myBaseSurf; + aCopy->myBaseAdaptor = Handle(GeomAdaptor_Surface)::DownCast(myBaseAdaptor->ShallowCopy()); + aCopy->myOffset = myOffset; + aCopy->myOscSurf = myOscSurf; + + return aCopy; +} void GeomEvaluator_OffsetSurface::BaseD0(const Standard_Real theU, const Standard_Real theV, gp_Pnt& theValue) const diff --git a/src/GeomEvaluator/GeomEvaluator_OffsetSurface.hxx b/src/GeomEvaluator/GeomEvaluator_OffsetSurface.hxx index b6e6cb7d9d..59ba840d94 100644 --- a/src/GeomEvaluator/GeomEvaluator_OffsetSurface.hxx +++ b/src/GeomEvaluator/GeomEvaluator_OffsetSurface.hxx @@ -24,6 +24,8 @@ class GeomEvaluator_OffsetSurface : public GeomEvaluator_Surface { public: + Standard_EXPORT GeomEvaluator_OffsetSurface() {} + //! Initialize evaluator by surface Standard_EXPORT GeomEvaluator_OffsetSurface( const Handle(Geom_Surface)& theBase, @@ -63,6 +65,8 @@ public: const Standard_Integer theDerU, const Standard_Integer theDerV) const Standard_OVERRIDE; + Standard_EXPORT Handle(GeomEvaluator_Surface) ShallowCopy() const Standard_OVERRIDE; + DEFINE_STANDARD_RTTIEXT(GeomEvaluator_OffsetSurface,GeomEvaluator_Surface) private: diff --git a/src/GeomEvaluator/GeomEvaluator_Surface.hxx b/src/GeomEvaluator/GeomEvaluator_Surface.hxx index 4ec9aa5dbd..23fdcf8227 100644 --- a/src/GeomEvaluator/GeomEvaluator_Surface.hxx +++ b/src/GeomEvaluator/GeomEvaluator_Surface.hxx @@ -49,6 +49,8 @@ public: virtual gp_Vec DN(const Standard_Real theU, const Standard_Real theV, const Standard_Integer theDerU, const Standard_Integer theDerV) const = 0; + virtual Handle(GeomEvaluator_Surface) ShallowCopy() const = 0; + DEFINE_STANDARD_RTTI_INLINE(GeomEvaluator_Surface,Standard_Transient) }; diff --git a/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.cxx b/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.cxx index b6a65e3e61..127276ef94 100644 --- a/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.cxx +++ b/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.cxx @@ -119,3 +119,14 @@ gp_Vec GeomEvaluator_SurfaceOfExtrusion::DN( return aResult; } +Handle(GeomEvaluator_Surface) GeomEvaluator_SurfaceOfExtrusion::ShallowCopy() const +{ + Handle(GeomEvaluator_SurfaceOfExtrusion) aCopy = new GeomEvaluator_SurfaceOfExtrusion(); + + aCopy->myBaseCurve = myBaseCurve; + aCopy->myBaseAdaptor = myBaseAdaptor->ShallowCopy(); + aCopy->myDirection = myDirection; + + return aCopy; +} + diff --git a/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.hxx b/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.hxx index 8b2a08c81c..99cb29aa14 100644 --- a/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.hxx +++ b/src/GeomEvaluator/GeomEvaluator_SurfaceOfExtrusion.hxx @@ -24,6 +24,8 @@ class GeomEvaluator_SurfaceOfExtrusion : public GeomEvaluator_Surface { public: + Standard_EXPORT GeomEvaluator_SurfaceOfExtrusion() {} + //! Initialize evaluator by surface Standard_EXPORT GeomEvaluator_SurfaceOfExtrusion(const Handle(Geom_Curve)& theBase, const gp_Dir& theExtrusionDir); @@ -59,6 +61,8 @@ public: const Standard_Integer theDerU, const Standard_Integer theDerV) const Standard_OVERRIDE; + Standard_EXPORT Handle(GeomEvaluator_Surface) ShallowCopy() const Standard_OVERRIDE; + DEFINE_STANDARD_RTTIEXT(GeomEvaluator_SurfaceOfExtrusion,GeomEvaluator_Surface) private: diff --git a/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.cxx b/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.cxx index fbce3b0a5b..b0815833d7 100644 --- a/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.cxx +++ b/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.cxx @@ -203,3 +203,14 @@ gp_Vec GeomEvaluator_SurfaceOfRevolution::DN( return aResult; } +Handle(GeomEvaluator_Surface) GeomEvaluator_SurfaceOfRevolution::ShallowCopy() const +{ + Handle(GeomEvaluator_SurfaceOfRevolution) aCopy = new GeomEvaluator_SurfaceOfRevolution(); + + aCopy->myBaseCurve = myBaseCurve; + aCopy->myBaseAdaptor = myBaseAdaptor->ShallowCopy(); + aCopy->myRotAxis = myRotAxis; + + return aCopy; +} + diff --git a/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.hxx b/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.hxx index 97085349a4..d4c511f9dd 100644 --- a/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.hxx +++ b/src/GeomEvaluator/GeomEvaluator_SurfaceOfRevolution.hxx @@ -26,6 +26,8 @@ class GeomEvaluator_SurfaceOfRevolution : public GeomEvaluator_Surface { public: + Standard_EXPORT GeomEvaluator_SurfaceOfRevolution() {} + //! Initialize evaluator by revolved curve, the axis of revolution and the location Standard_EXPORT GeomEvaluator_SurfaceOfRevolution(const Handle(Geom_Curve)& theBase, const gp_Dir& theRevolDir, @@ -71,6 +73,8 @@ public: const Standard_Integer theDerU, const Standard_Integer theDerV) const Standard_OVERRIDE; + Standard_EXPORT Handle(GeomEvaluator_Surface) ShallowCopy() const Standard_OVERRIDE; + DEFINE_STANDARD_RTTIEXT(GeomEvaluator_SurfaceOfRevolution,GeomEvaluator_Surface) private: diff --git a/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx b/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx index 23d5c07e18..6bb4e9f56b 100644 --- a/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx +++ b/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx @@ -238,7 +238,7 @@ class GeomLib_CheckCurveOnSurface_Local public: GeomLib_CheckCurveOnSurface_Local( const Handle(Adaptor3d_Curve) theCurve3D, - const Handle(Adaptor3d_Curve)& theCurveOnSurface, + const Handle(Adaptor3d_Curve) theCurveOnSurface, const TColStd_Array1OfReal& theIntervalsArr, const Standard_Real theEpsilonRange, const Standard_Integer theNbParticles): @@ -253,13 +253,13 @@ public: } GeomLib_CheckCurveOnSurface_Local( - const Handle(HArray1OfHCurve) theAdaptorArray, - const Handle(Adaptor3d_Curve)& theCurveOnSurface, + const Handle(HArray1OfHCurve) theCurveArray, + const Handle(HArray1OfHCurve) theCurveOnSurfaceArray, const TColStd_Array1OfReal& theIntervalsArr, const Standard_Real theEpsilonRange, const Standard_Integer theNbParticles) : - myAdaptorArray(theAdaptorArray), - myCurveOnSurface(theCurveOnSurface), + myCurveArray(theCurveArray), + myCurveOnSurfaceArray(theCurveOnSurfaceArray), mySubIntervals(theIntervalsArr), myEpsilonRange(theEpsilonRange), myNbParticles(theNbParticles), @@ -293,8 +293,8 @@ public: void operator()(int theThreadIndex, int theElemIndex) const { - GeomLib_CheckCurveOnSurface_TargetFunc aFunc(myAdaptorArray->Value(theThreadIndex), - myCurveOnSurface, + GeomLib_CheckCurveOnSurface_TargetFunc aFunc(myCurveArray->Value(theThreadIndex), + myCurveOnSurfaceArray->Value(theThreadIndex), mySubIntervals.Value(theElemIndex), mySubIntervals.Value(theElemIndex + 1)); @@ -331,8 +331,9 @@ public: private: GeomLib_CheckCurveOnSurface_Local operator=(GeomLib_CheckCurveOnSurface_Local&); const Handle(Adaptor3d_Curve) myCurve3D; - Handle(HArray1OfHCurve) myAdaptorArray; - const Handle(Adaptor3d_Curve)& myCurveOnSurface; + const Handle(Adaptor3d_Curve) myCurveOnSurface; + Handle(HArray1OfHCurve) myCurveArray; + Handle(HArray1OfHCurve) myCurveOnSurfaceArray; const TColStd_Array1OfReal& mySubIntervals; const Standard_Real myEpsilonRange; @@ -442,12 +443,15 @@ void GeomLib_CheckCurveOnSurface::Perform(const Handle(Adaptor3d_CurveOnSurface) { const Handle(OSD_ThreadPool)& aThreadPool = OSD_ThreadPool::DefaultPool(); const int aNbThreads = isMultiThread ? Min(anIntervals.Size(), aThreadPool->NbDefaultThreadsToLaunch()) : 1; - Handle(HArray1OfHCurve) anAdaptorArray = new HArray1OfHCurve(0, aNbThreads - 1); + Handle(HArray1OfHCurve) aCurveArray = new HArray1OfHCurve(0, aNbThreads - 1); + Handle(HArray1OfHCurve) aCurveOnSurfaceArray = new HArray1OfHCurve(0, aNbThreads - 1); for (Standard_Integer anI = 0; anI < aNbThreads; ++anI) { - anAdaptorArray->SetValue(anI, myCurve->ShallowCopy()); +// Handle(Adaptor3d_Curve) aShallowCurve = myCurve->ShallowCopy(); + aCurveArray->SetValue(anI, myCurve->ShallowCopy()); + aCurveOnSurfaceArray->SetValue(anI, theCurveOnSurface->ShallowCopy()); } - GeomLib_CheckCurveOnSurface_Local aComp(anAdaptorArray, theCurveOnSurface, anIntervals, + GeomLib_CheckCurveOnSurface_Local aComp(aCurveArray, aCurveOnSurfaceArray, anIntervals, anEpsilonRange, aNbParticles); OSD_ThreadPool::Launcher aLauncher(*aThreadPool, aNbThreads); aLauncher.Perform(anIntervals.Lower(), anIntervals.Upper(), aComp);