mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-09 13:22:24 +03:00
0032485: Modeling Algorithms - Add Clone() function for adapters
Provide ShallowCopy() functions for adapters & evaluators of curves, 2d curves and surfaces. This will allow using copies of the same adapter in multi-thread calculations.
This commit is contained in:
@@ -79,6 +79,34 @@ BRepAdaptor_CompCurve::BRepAdaptor_CompCurve(const TopoDS_Wire& theWire,
|
||||
Initialize(theWire, theIsAC, theFirst, theLast, theTolerance);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ShallowCopy
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Adaptor3d_Curve) BRepAdaptor_CompCurve::ShallowCopy() const
|
||||
{
|
||||
Handle(BRepAdaptor_CompCurve) aCopy = new BRepAdaptor_CompCurve();
|
||||
|
||||
aCopy->myWire = myWire;
|
||||
aCopy->TFirst = TFirst;
|
||||
aCopy->TLast = TLast;
|
||||
aCopy->PTol = PTol;
|
||||
aCopy->myCurves = new (BRepAdaptor_HArray1OfCurve) (1, myCurves->Size());
|
||||
for (Standard_Integer anI = 1; anI <= myCurves->Size(); ++anI)
|
||||
{
|
||||
const Handle(Adaptor3d_Curve) aCurve = myCurves->Value(anI).ShallowCopy();
|
||||
const BRepAdaptor_Curve& aBrepCurve = *(Handle(BRepAdaptor_Curve)::DownCast(aCurve));
|
||||
aCopy->myCurves->SetValue(anI, aBrepCurve);
|
||||
}
|
||||
aCopy->myKnots = myKnots;
|
||||
aCopy->CurIndex = CurIndex;
|
||||
aCopy->Forward = Forward;
|
||||
aCopy->IsbyAC = IsbyAC;
|
||||
|
||||
return aCopy;
|
||||
}
|
||||
|
||||
void BRepAdaptor_CompCurve::Initialize(const TopoDS_Wire& W,
|
||||
const Standard_Boolean AC)
|
||||
{
|
||||
|
@@ -74,6 +74,9 @@ public:
|
||||
//! <W>.
|
||||
Standard_EXPORT BRepAdaptor_CompCurve(const TopoDS_Wire& W, const Standard_Boolean KnotByCurvilinearAbcissa, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol);
|
||||
|
||||
//! Shallow copy of adaptor
|
||||
Standard_EXPORT virtual Handle(Adaptor3d_Curve) ShallowCopy() const Standard_OVERRIDE;
|
||||
|
||||
//! Sets the wire <W>.
|
||||
Standard_EXPORT void Initialize (const TopoDS_Wire& W, const Standard_Boolean KnotByCurvilinearAbcissa);
|
||||
|
||||
|
@@ -73,6 +73,30 @@ BRepAdaptor_Curve::BRepAdaptor_Curve(const TopoDS_Edge& E,
|
||||
Initialize(E,F);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ShallowCopy
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Adaptor3d_Curve) BRepAdaptor_Curve::ShallowCopy() const
|
||||
{
|
||||
Handle(BRepAdaptor_Curve) aCopy = new BRepAdaptor_Curve();
|
||||
|
||||
aCopy->myTrsf = myTrsf;
|
||||
|
||||
const Handle(Adaptor3d_Curve) aCurve = myCurve.ShallowCopy();
|
||||
const GeomAdaptor_Curve& aGeomCurve = *(Handle(GeomAdaptor_Curve)::DownCast(aCurve));
|
||||
aCopy->myCurve = aGeomCurve;
|
||||
|
||||
if (!myConSurf.IsNull())
|
||||
{
|
||||
aCopy->myConSurf = Handle(Adaptor3d_CurveOnSurface)::DownCast(myConSurf->ShallowCopy());
|
||||
}
|
||||
aCopy->myEdge = myEdge;
|
||||
|
||||
return aCopy;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Reset
|
||||
//purpose :
|
||||
|
@@ -82,6 +82,9 @@ public:
|
||||
//! the face.
|
||||
Standard_EXPORT BRepAdaptor_Curve(const TopoDS_Edge& E, const TopoDS_Face& F);
|
||||
|
||||
//! Shallow copy of adaptor
|
||||
Standard_EXPORT virtual Handle(Adaptor3d_Curve) ShallowCopy() const Standard_OVERRIDE;
|
||||
|
||||
//! Reset currently loaded curve (undone Load()).
|
||||
Standard_EXPORT void Reset();
|
||||
|
||||
|
@@ -43,6 +43,27 @@ BRepAdaptor_Curve2d::BRepAdaptor_Curve2d(const TopoDS_Edge& E,
|
||||
Initialize(E,F);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : ShallowCopy
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Adaptor2d_Curve2d) BRepAdaptor_Curve2d::ShallowCopy() const
|
||||
{
|
||||
Handle(BRepAdaptor_Curve2d) aCopy = new BRepAdaptor_Curve2d();
|
||||
|
||||
aCopy->myCurve = myCurve;
|
||||
aCopy->myTypeCurve = myTypeCurve;
|
||||
aCopy->myFirst = myFirst;
|
||||
aCopy->myLast = myLast;
|
||||
aCopy->myBSplineCurve = myBSplineCurve;
|
||||
if (!myNestedEvaluator.IsNull())
|
||||
{
|
||||
aCopy->myNestedEvaluator = myNestedEvaluator->ShallowCopy();
|
||||
}
|
||||
|
||||
return aCopy;
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Initialize
|
||||
|
@@ -49,6 +49,9 @@ public:
|
||||
|
||||
//! Creates with the pcurve of <E> on <F>.
|
||||
Standard_EXPORT BRepAdaptor_Curve2d(const TopoDS_Edge& E, const TopoDS_Face& F);
|
||||
|
||||
//! Shallow copy of adaptor
|
||||
Standard_EXPORT virtual Handle(Adaptor2d_Curve2d) ShallowCopy() const Standard_OVERRIDE;
|
||||
|
||||
//! Initialize with the pcurve of <E> on <F>.
|
||||
Standard_EXPORT void Initialize (const TopoDS_Edge& E, const TopoDS_Face& F);
|
||||
|
@@ -63,6 +63,24 @@ BRepAdaptor_Surface::BRepAdaptor_Surface(const TopoDS_Face& F,
|
||||
}
|
||||
|
||||
|
||||
//=======================================================================
|
||||
//function : ShallowCopy
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
|
||||
Handle(Adaptor3d_Surface) BRepAdaptor_Surface::ShallowCopy() const
|
||||
{
|
||||
Handle(BRepAdaptor_Surface) aCopy = new BRepAdaptor_Surface();
|
||||
|
||||
const Handle(Adaptor3d_Surface) aSurface = mySurf.ShallowCopy();
|
||||
const GeomAdaptor_Surface& aGeomSurface = *(Handle(GeomAdaptor_Surface)::DownCast(aSurface));
|
||||
aCopy->mySurf = aGeomSurface;
|
||||
|
||||
aCopy->myTrsf = myTrsf;
|
||||
aCopy->myFace = myFace;
|
||||
|
||||
return aCopy;
|
||||
}
|
||||
//=======================================================================
|
||||
//function : Initialize
|
||||
//purpose :
|
||||
|
@@ -68,6 +68,9 @@ public:
|
||||
//! the parameter range in the UV space of the
|
||||
//! restriction.
|
||||
Standard_EXPORT BRepAdaptor_Surface(const TopoDS_Face& F, const Standard_Boolean R = Standard_True);
|
||||
|
||||
//! Shallow copy of adaptor
|
||||
Standard_EXPORT virtual Handle(Adaptor3d_Surface) ShallowCopy() const Standard_OVERRIDE;
|
||||
|
||||
//! Sets the surface to the geometry of <F>.
|
||||
Standard_EXPORT void Initialize (const TopoDS_Face& F, const Standard_Boolean Restriction = Standard_True);
|
||||
|
Reference in New Issue
Block a user