From: asuraven Date: Fri, 23 Jul 2021 16:15:28 +0000 (+0300) Subject: 0032485: More ShallowCopy() X-Git-Url: http://git.dev.opencascade.org/gitweb/?a=commitdiff_plain;h=64da2170b9daa76bd81d5d277affa8d0680f367a;p=occt-copy.git 0032485: More ShallowCopy() --- diff --git a/src/Adaptor2d/Adaptor2d_OffsetCurve.cxx b/src/Adaptor2d/Adaptor2d_OffsetCurve.cxx index 6a7e86eb9c..1ed2ccf3ae 100644 --- a/src/Adaptor2d/Adaptor2d_OffsetCurve.cxx +++ b/src/Adaptor2d/Adaptor2d_OffsetCurve.cxx @@ -99,7 +99,7 @@ Handle(Adaptor2d_Curve2d) Adaptor2d_OffsetCurve::ShallowCopy() const { Handle(Adaptor2d_OffsetCurve) aCopy = new Adaptor2d_OffsetCurve(); - aCopy->myCurve = myCurve; + aCopy->myCurve = myCurve->ShallowCopy(); aCopy->myOffset = myOffset; aCopy->myFirst = myFirst; aCopy->myLast = myLast; diff --git a/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx b/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx index 3967462bc2..afabec1d47 100644 --- a/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx +++ b/src/Adaptor3d/Adaptor3d_CurveOnSurface.cxx @@ -727,13 +727,13 @@ Handle(Adaptor3d_Curve) Adaptor3d_CurveOnSurface::ShallowCopy() const { Handle(Adaptor3d_CurveOnSurface) aCopy = new Adaptor3d_CurveOnSurface(); - aCopy->mySurface = mySurface; - aCopy->myCurve = myCurve; + aCopy->mySurface = mySurface->ShallowCopy(); + aCopy->myCurve = myCurve->ShallowCopy(); aCopy->myType = myType; aCopy->myCirc = myCirc; aCopy->myLin = myLin; - aCopy->myFirstSurf = myFirstSurf; - aCopy->myLastSurf = myLastSurf; + aCopy->myFirstSurf = myFirstSurf->ShallowCopy(); + aCopy->myLastSurf = myLastSurf->ShallowCopy(); aCopy->myIntervals = myIntervals; aCopy->myIntCont = myIntCont; diff --git a/src/Adaptor3d/Adaptor3d_IsoCurve.cxx b/src/Adaptor3d/Adaptor3d_IsoCurve.cxx index 092943093a..c8315f8419 100644 --- a/src/Adaptor3d/Adaptor3d_IsoCurve.cxx +++ b/src/Adaptor3d/Adaptor3d_IsoCurve.cxx @@ -112,7 +112,8 @@ Adaptor3d_IsoCurve::Adaptor3d_IsoCurve(const Handle(Adaptor3d_Surface)& theS, Handle(Adaptor3d_Curve) Adaptor3d_IsoCurve::ShallowCopy() const { Handle(Adaptor3d_IsoCurve) aCopy = new Adaptor3d_IsoCurve(); - aCopy->mySurface = mySurface; + + aCopy->mySurface = mySurface->ShallowCopy(); aCopy->myIso = myIso; aCopy->myFirst = myFirst; aCopy->myLast = myLast; diff --git a/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx b/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx index ca1834ec01..2cf7998f0a 100644 --- a/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx +++ b/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx @@ -92,7 +92,13 @@ Handle(Adaptor3d_Curve) BRepAdaptor_CompCurve::ShallowCopy() const aCopy->TFirst = TFirst; aCopy->TLast = TLast; aCopy->PTol = PTol; - aCopy->myCurves = myCurves; + 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; diff --git a/src/BRepAdaptor/BRepAdaptor_Curve.cxx b/src/BRepAdaptor/BRepAdaptor_Curve.cxx index 99d5f011fb..6f0c0baaea 100644 --- a/src/BRepAdaptor/BRepAdaptor_Curve.cxx +++ b/src/BRepAdaptor/BRepAdaptor_Curve.cxx @@ -88,7 +88,7 @@ Handle(Adaptor3d_Curve) BRepAdaptor_Curve::ShallowCopy() const aCopy->myTrsf = myTrsf; aCopy->myCurve = Handle(GeomAdaptor_Curve)::DownCast(myCurve->ShallowCopy()); - aCopy->myConSurf = myConSurf; + aCopy->myConSurf = Handle(Adaptor3d_CurveOnSurface)::DownCast(myConSurf->ShallowCopy()); aCopy->myEdge = myEdge; return aCopy; diff --git a/src/BRepAdaptor/BRepAdaptor_Surface.cxx b/src/BRepAdaptor/BRepAdaptor_Surface.cxx index d16ccc62d6..9afbd7d4ed 100644 --- a/src/BRepAdaptor/BRepAdaptor_Surface.cxx +++ b/src/BRepAdaptor/BRepAdaptor_Surface.cxx @@ -72,7 +72,7 @@ Handle(Adaptor3d_Surface) BRepAdaptor_Surface::ShallowCopy() const { Handle(BRepAdaptor_Surface) aCopy = new BRepAdaptor_Surface(); - aCopy->mySurf = mySurf; + aCopy->mySurf = Handle(GeomAdaptor_Surface)::DownCast(mySurf->ShallowCopy()); aCopy->myTrsf = myTrsf; aCopy->myFace = myFace; @@ -92,13 +92,14 @@ void BRepAdaptor_Surface::Initialize(const TopoDS_Face& F, if (aSurface.IsNull()) return; + mySurf = new GeomAdaptor_Surface; if (Restriction) { Standard_Real umin,umax,vmin,vmax; BRepTools::UVBounds(F,umin,umax,vmin,vmax); - mySurf.Load(aSurface,umin,umax,vmin,vmax); + mySurf->Load(aSurface,umin,umax,vmin,vmax); } else - mySurf.Load(aSurface); + mySurf->Load(aSurface); myTrsf = L.Transformation(); } @@ -110,7 +111,7 @@ void BRepAdaptor_Surface::Initialize(const TopoDS_Face& F, const GeomAdaptor_Surface& BRepAdaptor_Surface::Surface() const { - return mySurf; + return *mySurf; } @@ -121,7 +122,7 @@ const GeomAdaptor_Surface& BRepAdaptor_Surface::Surface() const GeomAdaptor_Surface& BRepAdaptor_Surface::ChangeSurface() { - return mySurf; + return *mySurf; } @@ -165,7 +166,7 @@ Standard_Real BRepAdaptor_Surface::Tolerance() const void BRepAdaptor_Surface::UIntervals(TColStd_Array1OfReal& T, const GeomAbs_Shape S) const { - mySurf.UIntervals(T,S); + mySurf->UIntervals(T,S); } @@ -177,7 +178,7 @@ void BRepAdaptor_Surface::UIntervals(TColStd_Array1OfReal& T, void BRepAdaptor_Surface::VIntervals(TColStd_Array1OfReal& T, const GeomAbs_Shape S) const { - mySurf.VIntervals(T,S); + mySurf->VIntervals(T,S); } @@ -192,7 +193,7 @@ Handle(Adaptor3d_Surface) BRepAdaptor_Surface::UTrim const Standard_Real Tol ) const { Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(); - HS->Load (Handle(Geom_Surface)::DownCast(mySurf.Surface()->Transformed(myTrsf))); + HS->Load (Handle(Geom_Surface)::DownCast(mySurf->Surface()->Transformed(myTrsf))); return HS->UTrim(First,Last,Tol); } @@ -208,7 +209,7 @@ Handle(Adaptor3d_Surface) BRepAdaptor_Surface::VTrim const Standard_Real Tol) const { Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(); - HS->Load (Handle(Geom_Surface)::DownCast(mySurf.Surface()->Transformed(myTrsf))); + HS->Load (Handle(Geom_Surface)::DownCast(mySurf->Surface()->Transformed(myTrsf))); return HS->VTrim(First,Last,Tol); } @@ -221,7 +222,7 @@ Handle(Adaptor3d_Surface) BRepAdaptor_Surface::VTrim gp_Pnt BRepAdaptor_Surface::Value(const Standard_Real U, const Standard_Real V) const { - return mySurf.Value(U,V).Transformed(myTrsf); + return mySurf->Value(U,V).Transformed(myTrsf); } //======================================================================= @@ -233,7 +234,7 @@ void BRepAdaptor_Surface::D0(const Standard_Real U, const Standard_Real V, gp_Pnt& P) const { - mySurf.D0(U,V,P); + mySurf->D0(U,V,P); P.Transform(myTrsf); } @@ -248,7 +249,7 @@ void BRepAdaptor_Surface::D1(const Standard_Real U, gp_Vec& D1U, gp_Vec& D1V)const { - mySurf.D1(U,V,P,D1U,D1V); + mySurf->D1(U,V,P,D1U,D1V); P.Transform(myTrsf); D1U.Transform(myTrsf); D1V.Transform(myTrsf); @@ -268,7 +269,7 @@ void BRepAdaptor_Surface::D2(const Standard_Real U, gp_Vec& D2V, gp_Vec& D2UV)const { - mySurf.D2(U,V,P,D1U,D1V,D2U,D2V,D2UV); + mySurf->D2(U,V,P,D1U,D1V,D2U,D2V,D2UV); P.Transform(myTrsf); D1U.Transform(myTrsf); D1V.Transform(myTrsf); @@ -291,7 +292,7 @@ void BRepAdaptor_Surface::D3(const Standard_Real U, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV)const { - mySurf.D3(U,V,P,D1U,D1V,D2U,D2V,D2UV,D3U,D3V,D3UUV,D3UVV); + mySurf->D3(U,V,P,D1U,D1V,D2U,D2V,D2UV,D3U,D3V,D3UUV,D3UVV); P.Transform(myTrsf); D1U.Transform(myTrsf); D1V.Transform(myTrsf); @@ -315,7 +316,7 @@ gp_Vec BRepAdaptor_Surface::DN(const Standard_Real U, const Standard_Integer Nu, const Standard_Integer Nv) const { - return mySurf.DN(U,V,Nu,Nv).Transformed(myTrsf); + return mySurf->DN(U,V,Nu,Nv).Transformed(myTrsf); } //======================================================================= @@ -325,7 +326,7 @@ gp_Vec BRepAdaptor_Surface::DN(const Standard_Real U, gp_Pln BRepAdaptor_Surface::Plane()const { - return mySurf.Plane().Transformed(myTrsf); + return mySurf->Plane().Transformed(myTrsf); } @@ -336,7 +337,7 @@ gp_Pln BRepAdaptor_Surface::Plane()const gp_Cylinder BRepAdaptor_Surface::Cylinder()const { - return mySurf.Cylinder().Transformed(myTrsf); + return mySurf->Cylinder().Transformed(myTrsf); } @@ -347,7 +348,7 @@ gp_Cylinder BRepAdaptor_Surface::Cylinder()const gp_Sphere BRepAdaptor_Surface::Sphere()const { - return mySurf.Sphere().Transformed(myTrsf); + return mySurf->Sphere().Transformed(myTrsf); } @@ -358,7 +359,7 @@ gp_Sphere BRepAdaptor_Surface::Sphere()const gp_Cone BRepAdaptor_Surface::Cone()const { - return mySurf.Cone().Transformed(myTrsf); + return mySurf->Cone().Transformed(myTrsf); } //======================================================================= @@ -368,7 +369,7 @@ gp_Cone BRepAdaptor_Surface::Cone()const gp_Torus BRepAdaptor_Surface::Torus()const { - return mySurf.Torus().Transformed(myTrsf); + return mySurf->Torus().Transformed(myTrsf); } //======================================================================= @@ -379,7 +380,7 @@ gp_Torus BRepAdaptor_Surface::Torus()const Handle(Geom_BezierSurface) BRepAdaptor_Surface::Bezier() const { return Handle(Geom_BezierSurface)::DownCast - (mySurf.Bezier()->Transformed(myTrsf)); + (mySurf->Bezier()->Transformed(myTrsf)); } @@ -391,7 +392,7 @@ Handle(Geom_BezierSurface) BRepAdaptor_Surface::Bezier() const Handle(Geom_BSplineSurface) BRepAdaptor_Surface::BSpline() const { return Handle(Geom_BSplineSurface)::DownCast - (mySurf.BSpline()->Transformed(myTrsf)); + (mySurf->BSpline()->Transformed(myTrsf)); } @@ -402,7 +403,7 @@ Handle(Geom_BSplineSurface) BRepAdaptor_Surface::BSpline() const gp_Ax1 BRepAdaptor_Surface::AxeOfRevolution() const { - return mySurf.AxeOfRevolution().Transformed(myTrsf); + return mySurf->AxeOfRevolution().Transformed(myTrsf); } @@ -413,7 +414,7 @@ gp_Ax1 BRepAdaptor_Surface::AxeOfRevolution() const gp_Dir BRepAdaptor_Surface::Direction() const { - return mySurf.Direction().Transformed(myTrsf); + return mySurf->Direction().Transformed(myTrsf); } @@ -425,7 +426,7 @@ gp_Dir BRepAdaptor_Surface::Direction() const Handle(Adaptor3d_Curve) BRepAdaptor_Surface::BasisCurve() const { Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(); - HS->Load (Handle(Geom_Surface)::DownCast(mySurf.Surface()->Transformed(myTrsf))); + HS->Load (Handle(Geom_Surface)::DownCast(mySurf->Surface()->Transformed(myTrsf))); return HS->BasisCurve(); } @@ -439,7 +440,7 @@ Handle(Adaptor3d_Curve) BRepAdaptor_Surface::BasisCurve() const Handle(Adaptor3d_Surface) BRepAdaptor_Surface::BasisSurface() const { Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(); - HS->Load (Handle(Geom_Surface)::DownCast(mySurf.Surface()->Transformed(myTrsf))); + HS->Load (Handle(Geom_Surface)::DownCast(mySurf->Surface()->Transformed(myTrsf))); return HS->BasisSurface(); } @@ -451,6 +452,6 @@ Handle(Adaptor3d_Surface) BRepAdaptor_Surface::BasisSurface() const Standard_Real BRepAdaptor_Surface::OffsetValue() const { - return mySurf.OffsetValue(); + return mySurf->OffsetValue(); } diff --git a/src/BRepAdaptor/BRepAdaptor_Surface.hxx b/src/BRepAdaptor/BRepAdaptor_Surface.hxx index ed067dc619..24d9ab7c08 100644 --- a/src/BRepAdaptor/BRepAdaptor_Surface.hxx +++ b/src/BRepAdaptor/BRepAdaptor_Surface.hxx @@ -90,27 +90,27 @@ public: //! Returns the face tolerance. Standard_EXPORT Standard_Real Tolerance() const; - virtual Standard_Real FirstUParameter() const Standard_OVERRIDE { return mySurf.FirstUParameter(); } + virtual Standard_Real FirstUParameter() const Standard_OVERRIDE { return mySurf->FirstUParameter(); } - virtual Standard_Real LastUParameter() const Standard_OVERRIDE { return mySurf.LastUParameter(); } + virtual Standard_Real LastUParameter() const Standard_OVERRIDE { return mySurf->LastUParameter(); } - virtual Standard_Real FirstVParameter() const Standard_OVERRIDE { return mySurf.FirstVParameter(); } + virtual Standard_Real FirstVParameter() const Standard_OVERRIDE { return mySurf->FirstVParameter(); } - virtual Standard_Real LastVParameter() const Standard_OVERRIDE { return mySurf.LastVParameter(); } + virtual Standard_Real LastVParameter() const Standard_OVERRIDE { return mySurf->LastVParameter(); } - virtual GeomAbs_Shape UContinuity() const Standard_OVERRIDE { return mySurf.UContinuity(); } + virtual GeomAbs_Shape UContinuity() const Standard_OVERRIDE { return mySurf->UContinuity(); } - virtual GeomAbs_Shape VContinuity() const Standard_OVERRIDE { return mySurf.VContinuity(); } + virtual GeomAbs_Shape VContinuity() const Standard_OVERRIDE { return mySurf->VContinuity(); } //! If necessary, breaks the surface in U intervals of //! continuity . And returns the number of //! intervals. - virtual Standard_Integer NbUIntervals (const GeomAbs_Shape theSh) const Standard_OVERRIDE { return mySurf.NbUIntervals (theSh); } + virtual Standard_Integer NbUIntervals (const GeomAbs_Shape theSh) const Standard_OVERRIDE { return mySurf->NbUIntervals (theSh); } //! If necessary, breaks the surface in V intervals of //! continuity . And returns the number of //! intervals. - virtual Standard_Integer NbVIntervals (const GeomAbs_Shape theSh) const Standard_OVERRIDE { return mySurf.NbVIntervals (theSh); } + virtual Standard_Integer NbVIntervals (const GeomAbs_Shape theSh) const Standard_OVERRIDE { return mySurf->NbVIntervals (theSh); } //! Returns the intervals with the requested continuity //! in the U direction. @@ -133,17 +133,17 @@ public: //! If >= Standard_EXPORT Handle(Adaptor3d_Surface) VTrim (const Standard_Real First, const Standard_Real Last, const Standard_Real Tol) const Standard_OVERRIDE; - virtual Standard_Boolean IsUClosed() const Standard_OVERRIDE { return mySurf.IsUClosed(); } + virtual Standard_Boolean IsUClosed() const Standard_OVERRIDE { return mySurf->IsUClosed(); } - virtual Standard_Boolean IsVClosed() const Standard_OVERRIDE { return mySurf.IsVClosed(); } + virtual Standard_Boolean IsVClosed() const Standard_OVERRIDE { return mySurf->IsVClosed(); } - virtual Standard_Boolean IsUPeriodic() const Standard_OVERRIDE { return mySurf.IsUPeriodic(); } + virtual Standard_Boolean IsUPeriodic() const Standard_OVERRIDE { return mySurf->IsUPeriodic(); } - virtual Standard_Real UPeriod() const Standard_OVERRIDE { return mySurf.UPeriod(); } + virtual Standard_Real UPeriod() const Standard_OVERRIDE { return mySurf->UPeriod(); } - virtual Standard_Boolean IsVPeriodic() const Standard_OVERRIDE { return mySurf.IsVPeriodic(); } + virtual Standard_Boolean IsVPeriodic() const Standard_OVERRIDE { return mySurf->IsVPeriodic(); } - virtual Standard_Real VPeriod() const Standard_OVERRIDE { return mySurf.VPeriod(); } + virtual Standard_Real VPeriod() const Standard_OVERRIDE { return mySurf->VPeriod(); } //! Computes the point of parameters U,V on the surface. Standard_EXPORT gp_Pnt Value (const Standard_Real U, const Standard_Real V) const Standard_OVERRIDE; @@ -178,17 +178,17 @@ public: //! Returns the parametric U resolution corresponding //! to the real space resolution . - virtual Standard_Real UResolution (const Standard_Real theR3d) const Standard_OVERRIDE { return mySurf.UResolution (theR3d); } + virtual Standard_Real UResolution (const Standard_Real theR3d) const Standard_OVERRIDE { return mySurf->UResolution (theR3d); } //! Returns the parametric V resolution corresponding //! to the real space resolution . - virtual Standard_Real VResolution (const Standard_Real theR3d) const Standard_OVERRIDE { return mySurf.VResolution (theR3d); } + virtual Standard_Real VResolution (const Standard_Real theR3d) const Standard_OVERRIDE { return mySurf->VResolution (theR3d); } //! Returns the type of the surface : Plane, Cylinder, //! Cone, Sphere, Torus, BezierSurface, //! BSplineSurface, SurfaceOfRevolution, //! SurfaceOfExtrusion, OtherSurface - virtual GeomAbs_SurfaceType GetType() const Standard_OVERRIDE { return mySurf.GetType(); } + virtual GeomAbs_SurfaceType GetType() const Standard_OVERRIDE { return mySurf->GetType(); } Standard_EXPORT gp_Pln Plane() const Standard_OVERRIDE; @@ -200,21 +200,21 @@ public: Standard_EXPORT gp_Torus Torus() const Standard_OVERRIDE; - virtual Standard_Integer UDegree() const Standard_OVERRIDE { return mySurf.UDegree(); } + virtual Standard_Integer UDegree() const Standard_OVERRIDE { return mySurf->UDegree(); } - virtual Standard_Integer NbUPoles() const Standard_OVERRIDE { return mySurf.NbUPoles(); } + virtual Standard_Integer NbUPoles() const Standard_OVERRIDE { return mySurf->NbUPoles(); } - virtual Standard_Integer VDegree() const Standard_OVERRIDE { return mySurf.VDegree(); } + virtual Standard_Integer VDegree() const Standard_OVERRIDE { return mySurf->VDegree(); } - virtual Standard_Integer NbVPoles() const Standard_OVERRIDE { return mySurf.NbVPoles(); } + virtual Standard_Integer NbVPoles() const Standard_OVERRIDE { return mySurf->NbVPoles(); } - virtual Standard_Integer NbUKnots() const Standard_OVERRIDE { return mySurf.NbUKnots(); } + virtual Standard_Integer NbUKnots() const Standard_OVERRIDE { return mySurf->NbUKnots(); } - virtual Standard_Integer NbVKnots() const Standard_OVERRIDE { return mySurf.NbVKnots(); } + virtual Standard_Integer NbVKnots() const Standard_OVERRIDE { return mySurf->NbVKnots(); } - virtual Standard_Boolean IsURational() const Standard_OVERRIDE { return mySurf.IsURational(); } + virtual Standard_Boolean IsURational() const Standard_OVERRIDE { return mySurf->IsURational(); } - virtual Standard_Boolean IsVRational() const Standard_OVERRIDE { return mySurf.IsVRational(); } + virtual Standard_Boolean IsVRational() const Standard_OVERRIDE { return mySurf->IsVRational(); } Standard_EXPORT Handle(Geom_BezierSurface) Bezier() const Standard_OVERRIDE; @@ -240,7 +240,7 @@ public: private: - GeomAdaptor_Surface mySurf; + Handle(GeomAdaptor_Surface) mySurf; gp_Trsf myTrsf; TopoDS_Face myFace; diff --git a/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx b/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx index e98a66884b..cb963d5660 100644 --- a/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx +++ b/src/GeomAdaptor/GeomAdaptor_SurfaceOfLinearExtrusion.cxx @@ -67,7 +67,7 @@ Handle(Adaptor3d_Surface) GeomAdaptor_SurfaceOfLinearExtrusion::ShallowCopy() co { Handle(GeomAdaptor_SurfaceOfLinearExtrusion) aCopy = new GeomAdaptor_SurfaceOfLinearExtrusion(); - aCopy->myBasisCurve = myBasisCurve; + aCopy->myBasisCurve = myBasisCurve->ShallowCopy(); aCopy->myDirection = myDirection; aCopy->myHaveDir = myHaveDir; diff --git a/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx b/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx index 7260856980..aefd264d78 100644 --- a/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx +++ b/src/GeomAdaptor/GeomAdaptor_SurfaceOfRevolution.cxx @@ -67,7 +67,7 @@ Handle(Adaptor3d_Surface) GeomAdaptor_SurfaceOfRevolution::ShallowCopy() const { Handle(GeomAdaptor_SurfaceOfRevolution) aCopy = new GeomAdaptor_SurfaceOfRevolution(); - aCopy->myBasisCurve = myBasisCurve; + aCopy->myBasisCurve = myBasisCurve->ShallowCopy(); aCopy->myAxis = myAxis; aCopy->myHaveAxis = myHaveAxis; aCopy->myAxeRev = myAxeRev; diff --git a/src/GeomFill/GeomFill_SnglrFunc.cxx b/src/GeomFill/GeomFill_SnglrFunc.cxx index 28e802c2fe..337f52e50a 100644 --- a/src/GeomFill/GeomFill_SnglrFunc.cxx +++ b/src/GeomFill/GeomFill_SnglrFunc.cxx @@ -36,7 +36,7 @@ GeomFill_SnglrFunc::GeomFill_SnglrFunc(const Handle(Adaptor3d_Curve)& HC) : Handle(Adaptor3d_Curve) GeomFill_SnglrFunc::ShallowCopy() const { - Handle(GeomFill_SnglrFunc) aCopy = new GeomFill_SnglrFunc(myHCurve); + Handle(GeomFill_SnglrFunc) aCopy = new GeomFill_SnglrFunc(myHCurve->ShallowCopy()); aCopy->ratio = ratio; return aCopy; } diff --git a/src/ProjLib/ProjLib_CompProjectedCurve.cxx b/src/ProjLib/ProjLib_CompProjectedCurve.cxx index 0500f58c47..80d49e5765 100644 --- a/src/ProjLib/ProjLib_CompProjectedCurve.cxx +++ b/src/ProjLib/ProjLib_CompProjectedCurve.cxx @@ -640,8 +640,8 @@ Handle(Adaptor2d_Curve2d) ProjLib_CompProjectedCurve::ShallowCopy() const { Handle(ProjLib_CompProjectedCurve) aCopy = new ProjLib_CompProjectedCurve(); - aCopy->mySurface = mySurface; - aCopy->myCurve = myCurve; + aCopy->mySurface = mySurface->ShallowCopy(); + aCopy->myCurve = myCurve->ShallowCopy(); aCopy->myNbCurves = myNbCurves; aCopy->mySequence = mySequence; aCopy->myTolU = myTolU; diff --git a/src/ProjLib/ProjLib_ProjectOnPlane.cxx b/src/ProjLib/ProjLib_ProjectOnPlane.cxx index 7da0316787..dd5f21ddba 100644 --- a/src/ProjLib/ProjLib_ProjectOnPlane.cxx +++ b/src/ProjLib/ProjLib_ProjectOnPlane.cxx @@ -455,7 +455,7 @@ Handle(Adaptor3d_Curve) ProjLib_ProjectOnPlane::ShallowCopy() const { Handle(ProjLib_ProjectOnPlane) aCopy = new ProjLib_ProjectOnPlane(); - aCopy->myCurve = myCurve; + aCopy->myCurve = myCurve->ShallowCopy(); aCopy->myPlane = myPlane; aCopy->myDirection = myDirection; aCopy->myKeepParam = myKeepParam; @@ -463,7 +463,7 @@ Handle(Adaptor3d_Curve) ProjLib_ProjectOnPlane::ShallowCopy() const aCopy->myLastPar = myLastPar; aCopy->myTolerance = myTolerance; aCopy->myType = myType; - aCopy->myResult = myResult; + aCopy->myResult = Handle(GeomAdaptor_Curve)::DownCast(myResult->ShallowCopy()); aCopy->myIsApprox = myIsApprox; return aCopy; diff --git a/src/ProjLib/ProjLib_ProjectedCurve.cxx b/src/ProjLib/ProjLib_ProjectedCurve.cxx index 64db5c578f..edf2a7967f 100644 --- a/src/ProjLib/ProjLib_ProjectedCurve.cxx +++ b/src/ProjLib/ProjLib_ProjectedCurve.cxx @@ -381,8 +381,8 @@ Handle(Adaptor2d_Curve2d) ProjLib_ProjectedCurve::ShallowCopy() const Handle(ProjLib_ProjectedCurve) aCopy = new ProjLib_ProjectedCurve(); aCopy->myTolerance = myTolerance; - aCopy->mySurface = mySurface; - aCopy->myCurve = myCurve; + aCopy->mySurface = mySurface->ShallowCopy(); + aCopy->myCurve = myCurve->ShallowCopy(); aCopy->myResult = myResult; aCopy->myDegMin = myDegMin; aCopy->myDegMax = myDegMax;