diff --git a/samples/OCCTOverview/code/AdaptorCurve2d_AIS.cxx b/samples/OCCTOverview/code/AdaptorCurve2d_AIS.cxx index 0fa262ba39..d99c2eb3d6 100644 --- a/samples/OCCTOverview/code/AdaptorCurve2d_AIS.cxx +++ b/samples/OCCTOverview/code/AdaptorCurve2d_AIS.cxx @@ -55,7 +55,7 @@ void AdaptorCurve2d_AIS::Compute (const Handle(PrsMgr_PresentationManager)&, return; } - Geom2dAdaptor_Curve anAdaptor(myGeom2dCurve); + Handle(Geom2dAdaptor_Curve) anAdaptor = new Geom2dAdaptor_Curve(myGeom2dCurve); GCPnts_QuasiUniformDeflection anEdgeDistrib(anAdaptor, 1.e-2); if (anEdgeDistrib.IsDone()) { @@ -72,9 +72,9 @@ void AdaptorCurve2d_AIS::Compute (const Handle(PrsMgr_PresentationManager)&, if (myDisplayPole) { - if (anAdaptor.GetType() == GeomAbs_BezierCurve) + if (anAdaptor->GetType() == GeomAbs_BezierCurve) { - Handle(Geom2d_BezierCurve) aBezier = anAdaptor.Bezier(); + Handle(Geom2d_BezierCurve) aBezier = anAdaptor->Bezier(); Handle(Graphic3d_ArrayOfPolylines) anArrayOfVertex = new Graphic3d_ArrayOfPolylines(aBezier->NbPoles()); for (int i = 1; i <= aBezier->NbPoles(); i++) { @@ -87,9 +87,9 @@ void AdaptorCurve2d_AIS::Compute (const Handle(PrsMgr_PresentationManager)&, aPrsGroup->AddPrimitiveArray(anArrayOfVertex); } - if (anAdaptor.GetType() == GeomAbs_BSplineCurve) + if (anAdaptor->GetType() == GeomAbs_BSplineCurve) { - Handle(Geom2d_BSplineCurve) aBSpline = anAdaptor.BSpline(); + Handle(Geom2d_BSplineCurve) aBSpline = anAdaptor->BSpline(); Handle(Graphic3d_ArrayOfPolylines) anArrayOfVertex = new Graphic3d_ArrayOfPolylines(aBSpline->NbPoles()); for (int i = 1; i <= aBSpline->NbPoles(); i++) { @@ -103,11 +103,11 @@ void AdaptorCurve2d_AIS::Compute (const Handle(PrsMgr_PresentationManager)&, } } - if (myDisplayCurbure && (anAdaptor.GetType() != GeomAbs_Line)) + if (myDisplayCurbure && (anAdaptor->GetType() != GeomAbs_Line)) { - const Standard_Integer nbintv = anAdaptor.NbIntervals(GeomAbs_CN); + const Standard_Integer nbintv = anAdaptor->NbIntervals(GeomAbs_CN); TColStd_Array1OfReal TI(1, nbintv + 1); - anAdaptor.Intervals(TI, GeomAbs_CN); + anAdaptor->Intervals(TI, GeomAbs_CN); Standard_Real Resolution = 1.0e-9, Curvature; Geom2dLProp_CLProps2d LProp(myGeom2dCurve, 2, Resolution); gp_Pnt2d P1, P2; diff --git a/samples/OCCTOverview/code/AdaptorCurve_AIS.cxx b/samples/OCCTOverview/code/AdaptorCurve_AIS.cxx index 18ef438ba3..afefc5e706 100644 --- a/samples/OCCTOverview/code/AdaptorCurve_AIS.cxx +++ b/samples/OCCTOverview/code/AdaptorCurve_AIS.cxx @@ -30,7 +30,7 @@ void AdaptorCurve_AIS::Compute (const Handle(PrsMgr_PresentationManager)&, const Handle(Prs3d_Presentation)& thePrs, const Standard_Integer theMode) { - GeomAdaptor_Curve anAdaptorCurve(myCurve); + Handle(GeomAdaptor_Curve) anAdaptorCurve = new GeomAdaptor_Curve(myCurve); switch (theMode) { case 1: diff --git a/samples/OCCTOverview/code/GeometrySamples.cxx b/samples/OCCTOverview/code/GeometrySamples.cxx index 278e5e1089..25559c249e 100644 --- a/samples/OCCTOverview/code/GeometrySamples.cxx +++ b/samples/OCCTOverview/code/GeometrySamples.cxx @@ -1840,7 +1840,7 @@ void GeometrySamples::BoundingBoxOfSurface3dSample() // Compute BSpline surface bounding box. Bnd_Box aBndBox; - BndLib_AddSurface::AddOptimal(GeomAdaptor_Surface(aBSplineSurf), Precision::Confusion(), aBndBox); + BndLib_AddSurface::AddOptimal(new GeomAdaptor_Surface(aBSplineSurf), Precision::Confusion(), aBndBox); myResult << "Bounding box:" << std::endl; myResult << " Min corner = [ " << aBndBox.CornerMin().X() << ", " @@ -1881,7 +1881,7 @@ void GeometrySamples::BoundingBoxOfCurves3dSample() // Compute BSpline curve bounding box. Bnd_Box aBndBox; - BndLib_Add3dCurve::AddOptimal(GeomAdaptor_Curve(aBSplineCurve), Precision::Confusion(), aBndBox); + BndLib_Add3dCurve::AddOptimal(new GeomAdaptor_Curve(aBSplineCurve), Precision::Confusion(), aBndBox); myResult << "Bounding box:" << std::endl; myResult << " Min corner = [ " << aBndBox.CornerMin().X() << ", " diff --git a/samples/OCCTOverview/code/Sample2D_Face.cxx b/samples/OCCTOverview/code/Sample2D_Face.cxx index 462ec01f9a..8d1b7f5937 100644 --- a/samples/OCCTOverview/code/Sample2D_Face.cxx +++ b/samples/OCCTOverview/code/Sample2D_Face.cxx @@ -102,7 +102,7 @@ void Sample2D_Face::FillData(Standard_Boolean isSizesRecompute) for (TopExp_Explorer anEdgeIter (myshape, TopAbs_EDGE); anEdgeIter.More(); anEdgeIter.Next()) { const TopoDS_Edge& anEdge = TopoDS::Edge (anEdgeIter.Current()); - BRepAdaptor_Curve2d aCurveOnEdge (anEdge, aFace); + Handle(BRepAdaptor_Curve2d) aCurveOnEdge = new BRepAdaptor_Curve2d(anEdge, aFace); GCPnts_QuasiUniformDeflection anEdgeDistrib(aCurveOnEdge, 1.e-2); if (!anEdgeDistrib.IsDone()) { @@ -153,7 +153,7 @@ void Sample2D_Face::FillData(Standard_Boolean isSizesRecompute) if (!aTrimmedCurve.IsNull()) { Handle(Geom_Curve) aCurve3d = GeomLib::To3d(gp_Ax2(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1)), aTrimmedCurve); - BRepAdaptor_Curve2d aCurveOnEdge (anEdge, aFace); + Handle(BRepAdaptor_Curve2d) aCurveOnEdge = new BRepAdaptor_Curve2d(anEdge, aFace); GCPnts_QuasiUniformDeflection anEdgeDistrib (aCurveOnEdge, 1.e-2); if (!anEdgeDistrib.IsDone()) { @@ -253,7 +253,7 @@ void Sample2D_Face::Compute (const Handle(PrsMgr_PresentationManager)& , // make a 3D curve from 2D trimmed curve to display it Handle(Geom_Curve) aCurve3d = GeomLib::To3d(gp_Ax2(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1)), aTrimmedCurve); // make distribution of points - BRepAdaptor_Curve2d aCurveOnEdge (anEdge, aFace); + Handle(BRepAdaptor_Curve2d) aCurveOnEdge = new BRepAdaptor_Curve2d(anEdge, aFace); GCPnts_QuasiUniformDeflection anEdgeDistrib(aCurveOnEdge, 1.e-2); if (anEdgeDistrib.IsDone()) { diff --git a/samples/mfc/standard/01_Geometry/src/GeomSources.cpp b/samples/mfc/standard/01_Geometry/src/GeomSources.cpp index eab054b3a9..ec05df816e 100755 --- a/samples/mfc/standard/01_Geometry/src/GeomSources.cpp +++ b/samples/mfc/standard/01_Geometry/src/GeomSources.cpp @@ -655,7 +655,7 @@ void GeomSources::gpTest9(CGeometryDoc* aDoc) Standard_Real radius = 5; Handle(Geom2d_Circle) C = new Geom2d_Circle(gp::OX2d(),radius); - Geom2dAdaptor_Curve GAC (C); + Handle(Geom2dAdaptor_Curve) GAC = new Geom2dAdaptor_Curve(C); Standard_Real startparam = 10*M_PI/180; Standard_Real abscissa = 45*M_PI/180; gp_Pnt2d P1; @@ -668,23 +668,23 @@ void GeomSources::gpTest9(CGeometryDoc* aDoc) //============================================================== TCollection_AsciiString Message (" \n\ - \n\ - \n\ -Standard_Real radius = 5; \n\ -Handle(Geom2d_Circle) C = \n\ - new Geom2d_Circle(gp::OX2d(),radius); \n\ -Geom2dAdaptor_Curve GAC (C); \n\ -Standard_Real startparam = 10*PI180; \n\ -Standard_Real abscissa = 45*PI180; \n\ -gp_Pnt2d P1; \n\ -C->D0(startparam,P1); \n\ -// abscissa is the distance along the curve from startparam \n\ -GCPnts_AbscissaPoint AP (GAC, abscissa, startparam); \n\ -gp_Pnt2d P2; \n\ -if (AP.IsDone()){C->D0(AP.Parameter(),P2);} \n\ -// P is now correctly set \n\ - \n\ - \n"); + \n\ + \n\ +Standard_Real radius = 5; \n\ +Handle(Geom2d_Circle) C = \n\ + new Geom2d_Circle(gp::OX2d(),radius); \n\ +Handle(Geom2dAdaptor_Curve) GAC = new Geom2dAdaptor_Curve(C); \n\ +Standard_Real startparam = 10*PI180; \n\ +Standard_Real abscissa = 45*PI180; \n\ +gp_Pnt2d P1; \n\ +C->D0(startparam,P1); \n\ +// abscissa is the distance along the curve from startparam \n\ +GCPnts_AbscissaPoint AP (GAC, abscissa, startparam); \n\ +gp_Pnt2d P2; \n\ +if (AP.IsDone()){C->D0(AP.Parameter(),P2);} \n\ +// P is now correctly set \n\ + \n\ + \n"); AddSeparator(aDoc,Message); //-------------------------------------------------------------- Handle(ISession2D_Curve) aCurve = new ISession2D_Curve(C); @@ -723,7 +723,7 @@ void GeomSources::gpTest10(CGeometryDoc* aDoc) Standard_Real radius = 5; Handle(Geom2d_Circle) C = new Geom2d_Circle(gp::OX2d(),radius); - Geom2dAdaptor_Curve GAC (C); + Handle(Geom2dAdaptor_Curve) GAC = new Geom2dAdaptor_Curve(C); Standard_Real abscissa = 3; GCPnts_UniformAbscissa UA (GAC,abscissa); TColgp_SequenceOfPnt2d aSequence; @@ -743,29 +743,29 @@ void GeomSources::gpTest10(CGeometryDoc* aDoc) //============================================================== TCollection_AsciiString Message (" \ - \n\ -gp_Pnt2d P; \n\ -Standard_Real radius = 5; \n\ -Handle(Geom2d_Circle) C = \n\ - new Geom2d_Circle(gp::OX2d(),radius); \n\ -Geom2dAdaptor_Curve GAC (C); \n\ -Standard_Real abscissa = 3; \n\ -GCPnts_UniformAbscissa UA (GAC,abscissa); \n\ -TColgp_SequenceOfPnt2d aSequence; \n\ -if (UA.IsDone()) \n\ - { \n\ - Standard_Real N = UA.NbPoints(); \n\ - Standard_Integer count = 1; \n\ - for(;count<=N;count++) \n\ - { \n\ - C->D0(UA.Parameter(count),P); \n\ - Standard_Real Parameter = UA.Parameter(count); \n\ - // append P in a Sequence \n\ - aSequence.Append(P); \n\ - } \n\ -} \n\ -Standard_Real Abscissa = UA.Abscissa(); \n\ - \n"); + \n\ +gp_Pnt2d P; \n\ +Standard_Real radius = 5; \n\ +Handle(Geom2d_Circle) C = \n\ + new Geom2d_Circle(gp::OX2d(),radius); \n\ +Handle(Geom2dAdaptor_Curve) GAC = new Geom2dAdaptor_Curve(C); \n\ +Standard_Real abscissa = 3; \n\ +GCPnts_UniformAbscissa UA (GAC,abscissa); \n\ +TColgp_SequenceOfPnt2d aSequence; \n\ +if (UA.IsDone()) \n\ + { \n\ + Standard_Real N = UA.NbPoints(); \n\ + Standard_Integer count = 1; \n\ + for(;count<=N;count++) \n\ + { \n\ + C->D0(UA.Parameter(count),P); \n\ + Standard_Real Parameter = UA.Parameter(count); \n\ + // append P in a Sequence \n\ + aSequence.Append(P); \n\ + } \n\ +} \n\ +Standard_Real Abscissa = UA.Abscissa(); \n\ + \n"); AddSeparator(aDoc,Message); //-------------------------------------------------------------- Handle(ISession2D_Curve) aCurve = new ISession2D_Curve(C); @@ -3895,21 +3895,21 @@ void GeomSources::gpTest48(CGeometryDoc* aDoc) Handle(Geom2d_BSplineCurve) SPL2 = anInterpolation.Curve(); Bnd_Box2d aCBox; - Geom2dAdaptor_Curve GACC (C); + Handle(Geom2dAdaptor_Curve) GACC = new Geom2dAdaptor_Curve(C); BndLib_Add2dCurve::Add (GACC,Precision::Approximation(),aCBox); Standard_Real aCXmin, aCYmin, aCXmax, aCYmax; aCBox.Get( aCXmin, aCYmin, aCXmax,aCYmax); Bnd_Box2d aSPL1Box; - Geom2dAdaptor_Curve GAC1 (SPL1); + Handle(Geom2dAdaptor_Curve) GAC1 = new Geom2dAdaptor_Curve(SPL1); BndLib_Add2dCurve::Add (GAC1,Precision::Approximation(),aSPL1Box); Standard_Real aSPL1Xmin,aSPL1Ymin,aSPL1Xmax,aSPL1Ymax; aSPL1Box.Get( aSPL1Xmin, aSPL1Ymin, aSPL1Xmax,aSPL1Ymax); Bnd_Box2d aSPL2Box; - Geom2dAdaptor_Curve GAC2 (SPL2); + Handle(Geom2dAdaptor_Curve) GAC2 = new Geom2dAdaptor_Curve(SPL2); BndLib_Add2dCurve::Add (GAC2,Precision::Approximation(),aSPL2Box); Standard_Real aSPL2Xmin,aSPL2Ymin,aSPL2Xmax,aSPL2Ymax; @@ -3930,14 +3930,14 @@ Handle(Geom2d_BSplineCurve) SPL1 ; // SPL1 = ... \n\ Handle(Geom2d_BSplineCurve) SPL2 ; // SPL2 = ... \n\ \n\ Bnd_Box2d aCBox; \n\ -Geom2dAdaptor_Curve GACC (C); \n\ +Handle(Geom2dAdaptor_Curve) GACC = new Geom2dAdaptor_Curve(C); \n\ BndLib_Add2dCurve::Add (GACC,Precision::Approximation(),aCBox); \n\ \n\ Standard_Real aCXmin, aCYmin, aCXmax, aCYmax; \n\ aCBox.Get( aCXmin, aCYmin, aCXmax,aCYmax); \n\ \n\ Bnd_Box2d aSPL1Box; \n\ -Geom2dAdaptor_Curve GAC1 (SPL1); \n\ +Handle(Geom2dAdaptor_Curve) GAC1 = new Geom2dAdaptor_Curve(SPL1); \n\ BndLib_Add2dCurve::Add (GAC1,Precision::Approximation(),aSPL1Box); \n\ \n\ Standard_Real aSPL1Xmin,aSPL1Ymin,aSPL1Xmax,aSPL1Ymax; \n\ @@ -3945,7 +3945,7 @@ aSPL1Box.Get( aSPL1Xmin, aSPL1Ymin, aSPL1Xmax,aSPL1Ymax); \n"); Message += "\ \n\ Bnd_Box2d aSPL2Box; \n\ -Geom2dAdaptor_Curve GAC2 (SPL2); \n\ +Handle(Geom2dAdaptor_Curve) GAC2 = new Geom2dAdaptor_Curve(SPL2); \n\ BndLib_Add2dCurve::Add (GAC2,Precision::Approximation(),aSPL2Box); \n\ \n\ Standard_Real aSPL2Xmin,aSPL2Ymin,aSPL2Xmax,aSPL2Ymax; \n\ @@ -4005,7 +4005,7 @@ void GeomSources::gpTest49(CGeometryDoc* aDoc) Handle(Geom_Circle) C = new Geom_Circle(anAxis,radius); - GeomAdaptor_Curve GAC (C); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C); BndLib_Add3dCurve::Add (GAC,Precision::Approximation(),aBox); Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax ; @@ -4021,7 +4021,7 @@ gp_Ax2 anAxis(gp_Pnt(0,0,0),gp_Dir(1,2,-5)); \n\ \n\ Handle(Geom_Circle) C = \n\ new Geom_Circle(anAxis,radius); \n\ -GeomAdaptor_Curve GAC (C); \n\ +Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C); \n\ BndLib_Add3dCurve::Add (GAC,Precision::Approximation(),aBox); \n\ \n\ Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax ; \n\ @@ -4097,7 +4097,7 @@ void GeomSources::gpTest50(CGeometryDoc* aDoc) GeomFill_FillingStyle Type = GeomFill_StretchStyle; GeomFill_BSplineCurves aGeomFill1(SPL1,SPL2,Type); Handle(Geom_BSplineSurface) aSurf = aGeomFill1.Surface(); - GeomAdaptor_Surface GAS (aSurf); + Handle(GeomAdaptor_Surface) GAS = new GeomAdaptor_Surface(aSurf); Bnd_Box aBox; BndLib_AddSurface::Add (GAS,Precision::Approximation(),aBox); @@ -4122,19 +4122,19 @@ array2.SetValue(2,gp_Pnt (-20, 20, 0)); \n\ array2.SetValue(3,gp_Pnt ( 20, 30,-10)); \n\ array2.SetValue(4,gp_Pnt ( 30, 70,-20)); \n\ array2.SetValue(5,gp_Pnt ( 40, 90,-10)); \n\ -Handle(Geom_BSplineCurve) SPL2 = \n\ +Handle(Geom_BSplineCurve) SPL2 = \n\ GeomAPI_PointsToBSpline(array2).Curve(); \n\ - \n\ -GeomFill_FillingStyle Type = GeomFill_StretchStyle; \n\ -GeomFill_BSplineCurves aGeomFill1(SPL1,SPL2,Type); \n\ -Handle(Geom_BSplineSurface) aSurf = aGeomFill1.Surface(); \n\ -GeomAdaptor_Surface GAS (aSurf); \n\ -Bnd_Box aBox; \n\ -BndLib_AddSurface::Add (GAS,Precision::Approximation(),aBox); \n\ - \n\ -Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax ; \n\ -aBox.Get( aXmin, aYmin,aZmin, aXmax,aYmax,aZmax); \n\ - \n"); + \n\ +GeomFill_FillingStyle Type = GeomFill_StretchStyle; \n\ +GeomFill_BSplineCurves aGeomFill1(SPL1,SPL2,Type); \n\ +Handle(Geom_BSplineSurface) aSurf = aGeomFill1.Surface(); \n\ +Handle(GeomAdaptor_Surface) GAS = new GeomAdaptor_Surface(aSurf); \n\ +Bnd_Box aBox; \n\ +BndLib_AddSurface::Add (GAS,Precision::Approximation(),aBox); \n\ + \n\ +Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax ; \n\ +aBox.Get( aXmin, aYmin,aZmin, aXmax,aYmax,aZmax); \n\ + \n"); AddSeparator(aDoc,Message); //-------------------------------------------------------------- diff --git a/samples/mfc/standard/01_Geometry/src/ISession2D/ISession2D_Curve.cpp b/samples/mfc/standard/01_Geometry/src/ISession2D/ISession2D_Curve.cpp index f93c03f9ea..869a147f10 100755 --- a/samples/mfc/standard/01_Geometry/src/ISession2D/ISession2D_Curve.cpp +++ b/samples/mfc/standard/01_Geometry/src/ISession2D/ISession2D_Curve.cpp @@ -34,7 +34,7 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager)& , aPrsGroup->SetGroupPrimitivesAspect (myDrawer->LineAspect()->Aspect()); aPrsGroup->SetGroupPrimitivesAspect (myDrawer->PointAspect()->Aspect()); - Geom2dAdaptor_Curve anAdaptor(myGeom2dCurve); + Handle(Geom2dAdaptor_Curve) anAdaptor = new Geom2dAdaptor_Curve(myGeom2dCurve); GCPnts_QuasiUniformDeflection anEdgeDistrib(anAdaptor,1.e-2); if(anEdgeDistrib.IsDone()) { @@ -48,9 +48,9 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager)& , if (myDisplayPole) { - if (anAdaptor.GetType() == GeomAbs_BezierCurve ) + if (anAdaptor->GetType() == GeomAbs_BezierCurve ) { - Handle(Geom2d_BezierCurve) aBezier = anAdaptor.Bezier(); + Handle(Geom2d_BezierCurve) aBezier = anAdaptor->Bezier(); Handle(Graphic3d_ArrayOfPolylines) anArrayOfVertex = new Graphic3d_ArrayOfPolylines(aBezier->NbPoles()); for(int i=1;i<=aBezier->NbPoles();i++) { @@ -60,9 +60,9 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager)& , aPrsGroup->AddPrimitiveArray (anArrayOfVertex); } - if (anAdaptor.GetType() == GeomAbs_BSplineCurve ) + if (anAdaptor->GetType() == GeomAbs_BSplineCurve ) { - Handle(Geom2d_BSplineCurve) aBSpline = anAdaptor.BSpline(); + Handle(Geom2d_BSplineCurve) aBSpline = anAdaptor->BSpline(); Handle(Graphic3d_ArrayOfPolylines) anArrayOfVertex = new Graphic3d_ArrayOfPolylines(aBSpline->NbPoles()); @@ -76,12 +76,12 @@ void ISession2D_Curve::Compute(const Handle(PrsMgr_PresentationManager)& , } } - if (myDisplayCurbure && (anAdaptor.GetType() != GeomAbs_Line)) + if (myDisplayCurbure && (anAdaptor->GetType() != GeomAbs_Line)) { Standard_Integer ii; - Standard_Integer intrv, nbintv = anAdaptor.NbIntervals(GeomAbs_CN); + Standard_Integer intrv, nbintv = anAdaptor->NbIntervals(GeomAbs_CN); TColStd_Array1OfReal TI(1,nbintv+1); - anAdaptor.Intervals(TI,GeomAbs_CN); + anAdaptor->Intervals(TI,GeomAbs_CN); Standard_Real Resolution = 1.0e-9, Curvature; Geom2dLProp_CLProps2d LProp(myGeom2dCurve, 2, Resolution); gp_Pnt2d P1, P2; diff --git a/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Curve.cpp b/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Curve.cpp index b43c27bb0a..bfb23b38c7 100755 --- a/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Curve.cpp +++ b/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Curve.cpp @@ -18,7 +18,7 @@ void ISession_Curve::Compute (const Handle(PrsMgr_PresentationManager)& , const Handle(Prs3d_Presentation)& thePrs, const Standard_Integer theMode) { - GeomAdaptor_Curve anAdaptorCurve (myCurve); + Handle(GeomAdaptor_Curve) anAdaptorCurve = new GeomAdaptor_Curve(myCurve); switch (theMode) { case 1: diff --git a/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Surface.cpp b/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Surface.cpp index ecf15e5373..9bbeaff171 100755 --- a/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Surface.cpp +++ b/samples/mfc/standard/01_Geometry/src/ISession2D/ISession_Surface.cpp @@ -22,8 +22,7 @@ void ISession_Surface::Compute (const Handle(PrsMgr_PresentationManager)& , const Handle(Prs3d_Presentation)& thePrs, const Standard_Integer theMode) { - GeomAdaptor_Surface anAdaptorSurface (mySurface); - Handle(GeomAdaptor_Surface) anAdaptorHSurface = new GeomAdaptor_Surface (mySurface); + Handle(GeomAdaptor_Surface) anAdaptorSurface = new GeomAdaptor_Surface (mySurface); Handle(Prs3d_Drawer) aPoleDrawer = new Prs3d_Drawer(); aPoleDrawer->SetOwnLineAspects(); @@ -41,7 +40,7 @@ void ISession_Surface::Compute (const Handle(PrsMgr_PresentationManager)& , } case 0: { - StdPrs_WFSurface::Add (thePrs, anAdaptorHSurface, myDrawer); + StdPrs_WFSurface::Add (thePrs, anAdaptorSurface, myDrawer); break; } } diff --git a/src/AIS/AIS_Axis.cxx b/src/AIS/AIS_Axis.cxx index 9580e5c223..0461300701 100644 --- a/src/AIS/AIS_Axis.cxx +++ b/src/AIS/AIS_Axis.cxx @@ -188,7 +188,7 @@ void AIS_Axis::Compute (const Handle(PrsMgr_PresentationManager)& , thePrs->SetInfiniteState (myInfiniteState); if (!myIsXYZAxis) { - GeomAdaptor_Curve curv (myComponent); + Handle(GeomAdaptor_Curve) curv = new GeomAdaptor_Curve(myComponent); StdPrs_Curve::Add (thePrs, curv, myDrawer); } else diff --git a/src/AIS/AIS_Circle.cxx b/src/AIS/AIS_Circle.cxx index ef85e9b0ce..0d2e155c3a 100644 --- a/src/AIS/AIS_Circle.cxx +++ b/src/AIS/AIS_Circle.cxx @@ -211,7 +211,7 @@ void AIS_Circle::UnsetWidth() void AIS_Circle::ComputeCircle (const Handle(Prs3d_Presentation)& thePresentation) { - GeomAdaptor_Curve curv(myComponent); + Handle(GeomAdaptor_Curve) curv = new GeomAdaptor_Curve(myComponent); Standard_Real prevdev = myDrawer->DeviationCoefficient(); myDrawer->SetDeviationCoefficient (1.e-5); StdPrs_DeflectionCurve::Add (thePresentation, curv, myDrawer); @@ -226,7 +226,7 @@ void AIS_Circle::ComputeCircle (const Handle(Prs3d_Presentation)& thePresentatio //======================================================================= void AIS_Circle::ComputeArc (const Handle(Prs3d_Presentation)& thePresentation) { - GeomAdaptor_Curve curv(myComponent, myUStart, myUEnd); + Handle(GeomAdaptor_Curve) curv = new GeomAdaptor_Curve(myComponent, myUStart, myUEnd); Standard_Real prevdev = myDrawer->DeviationCoefficient(); myDrawer->SetDeviationCoefficient (1.e-5); StdPrs_DeflectionCurve::Add (thePresentation, curv, myDrawer); diff --git a/src/AIS/AIS_Line.cxx b/src/AIS/AIS_Line.cxx index 246d468abe..4fbacc9059 100644 --- a/src/AIS/AIS_Line.cxx +++ b/src/AIS/AIS_Line.cxx @@ -211,7 +211,7 @@ void AIS_Line::UnsetWidth() //======================================================================= void AIS_Line::ComputeInfiniteLine( const Handle(Prs3d_Presentation)& aPresentation) { - GeomAdaptor_Curve curv(myComponent); + Handle(GeomAdaptor_Curve) curv = new GeomAdaptor_Curve(myComponent); StdPrs_Curve::Add(aPresentation,curv,myDrawer); //pas de prise en compte lors du FITALL @@ -230,7 +230,7 @@ void AIS_Line::ComputeSegmentLine( const Handle(Prs3d_Presentation)& aPresentati myComponent = new Geom_Line(P1,gp_Dir(P2.XYZ()-P1.XYZ())); Standard_Real dist = P1.Distance(P2); - GeomAdaptor_Curve curv(myComponent,0.,dist); + Handle(GeomAdaptor_Curve) curv = new GeomAdaptor_Curve(myComponent,0.,dist); StdPrs_Curve::Add(aPresentation,curv,myDrawer); } diff --git a/src/AIS/AIS_Plane.cxx b/src/AIS/AIS_Plane.cxx index b04a7a9cec..ab660a929c 100644 --- a/src/AIS/AIS_Plane.cxx +++ b/src/AIS/AIS_Plane.cxx @@ -222,7 +222,7 @@ void AIS_Plane::Compute (const Handle(PrsMgr_PresentationManager)& , ComputeFrame(); const Handle(Geom_Plane)& pl = myComponent; Handle(Geom_Plane) thegoodpl (Handle(Geom_Plane)::DownCast(pl->Translated(pl->Location(),myCenter))); - GeomAdaptor_Surface surf(thegoodpl); + Handle(GeomAdaptor_Surface) surf = new GeomAdaptor_Surface(thegoodpl); StdPrs_Plane::Add (thePrs, surf, myDrawer); } else diff --git a/src/Approx/Approx_CurvlinFunc.cxx b/src/Approx/Approx_CurvlinFunc.cxx index ba82388e95..75f5398921 100644 --- a/src/Approx/Approx_CurvlinFunc.cxx +++ b/src/Approx/Approx_CurvlinFunc.cxx @@ -93,7 +93,7 @@ static void findfourpoints(const Standard_Real , } } -/*static Standard_Real curvature(const Standard_Real U, const Adaptor3d_Curve& C) +/*static Standard_Real curvature(const Standard_Real U, const Handle(Adaptor3d_Curve)& C) { Standard_Real k, tau, mod1, mod2, OMEGA; gp_Pnt P; @@ -151,34 +151,40 @@ Approx_CurvlinFunc::Approx_CurvlinFunc(const Handle(Adaptor2d_Curve2d)& C2D1, co void Approx_CurvlinFunc::Init() { - Adaptor3d_CurveOnSurface CurOnSur; - + Handle(Adaptor3d_CurveOnSurface) CurOnSur; + switch(myCase) { case 1: - Init (*myC3D, mySi_1, myUi_1); - myFirstU1 = myC3D->FirstParameter(); - myLastU1 = myC3D->LastParameter(); - myFirstU2 = myLastU2 = 0; - break; + { + Init(myC3D, mySi_1, myUi_1); + myFirstU1 = myC3D->FirstParameter(); + myLastU1 = myC3D->LastParameter(); + myFirstU2 = myLastU2 = 0; + break; + } case 2: - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); - Init(CurOnSur, mySi_1, myUi_1); - myFirstU1 = CurOnSur.FirstParameter(); - myLastU1 = CurOnSur.LastParameter(); - myFirstU2 = myLastU2 = 0; - break; + { + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); + CurOnSur->Load(myC2D1); + CurOnSur->Load(mySurf1); + Init(CurOnSur, mySi_1, myUi_1); + myFirstU1 = CurOnSur->FirstParameter(); + myLastU1 = CurOnSur->LastParameter(); + myFirstU2 = myLastU2 = 0; + break; + } case 3: - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); - Init(CurOnSur, mySi_1, myUi_1); - myFirstU1 = CurOnSur.FirstParameter(); - myLastU1 = CurOnSur.LastParameter(); - CurOnSur.Load(myC2D2); - CurOnSur.Load(mySurf2); - Init(CurOnSur, mySi_2, myUi_2); - myFirstU2 = CurOnSur.FirstParameter(); - myLastU2 = CurOnSur.LastParameter(); + { + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); + Init(CurOnSur, mySi_1, myUi_1); + myFirstU1 = CurOnSur->FirstParameter(); + myLastU1 = CurOnSur->LastParameter(); + CurOnSur->Load(myC2D2); + CurOnSur->Load(mySurf2); + Init(CurOnSur, mySi_2, myUi_2); + myFirstU2 = CurOnSur->FirstParameter(); + myLastU2 = CurOnSur->LastParameter(); + } } Length(); @@ -190,20 +196,20 @@ void Approx_CurvlinFunc::Init() //purpose : Init the values //history : 23/10/1998 PMN : Cut at curve's discontinuities //======================================================================= -void Approx_CurvlinFunc::Init(Adaptor3d_Curve& C, Handle(TColStd_HArray1OfReal)& Si, - Handle(TColStd_HArray1OfReal)& Ui) const +void Approx_CurvlinFunc::Init (const Handle(Adaptor3d_Curve)& C, Handle(TColStd_HArray1OfReal)& Si, + Handle(TColStd_HArray1OfReal)& Ui) const { Standard_Real Step, FirstU, LastU; Standard_Integer i, j, k, NbInt, NbIntC3; - FirstU = C.FirstParameter(); - LastU = C.LastParameter(); + FirstU = C->FirstParameter(); + LastU = C->LastParameter(); NbInt = 10; - NbIntC3 = C.NbIntervals(GeomAbs_C3); + NbIntC3 = C->NbIntervals(GeomAbs_C3); TColStd_Array1OfReal Disc(1, NbIntC3+1); if (NbIntC3 >1) { - C.Intervals(Disc, GeomAbs_C3); + C->Intervals(Disc, GeomAbs_C3); } else { Disc(1) = FirstU; @@ -325,46 +331,44 @@ void Approx_CurvlinFunc::Trim(const Standard_Real First, const Standard_Real Las if ((Last - First) < Tol) return; Standard_Real FirstU, LastU; - Adaptor3d_CurveOnSurface CurOnSur; - Handle(Adaptor3d_CurveOnSurface) HCurOnSur; + Handle(Adaptor3d_CurveOnSurface) CurOnSur; + Handle(Adaptor3d_CurveOnSurface) TCurOnSur; switch(myCase) { case 1: myC3D = myC3D->Trim(myFirstU1, myLastU1, Tol); - FirstU = GetUParameter(*myC3D, First, 1); - LastU = GetUParameter (*myC3D, Last, 1); + FirstU = GetUParameter(myC3D, First, 1); + LastU = GetUParameter (myC3D, Last, 1); myC3D = myC3D->Trim(FirstU, LastU, Tol); break; case 3: - CurOnSur.Load(myC2D2); - CurOnSur.Load(mySurf2); - HCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur.Trim(myFirstU2, myLastU2, Tol)); - myC2D2 = HCurOnSur->GetCurve(); - mySurf2 = HCurOnSur->GetSurface(); - CurOnSur.Load(myC2D2); - CurOnSur.Load(mySurf2); + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D2, mySurf2); + TCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur->Trim(myFirstU2, myLastU2, Tol)); + myC2D2 = TCurOnSur->GetCurve(); + mySurf2 = TCurOnSur->GetSurface(); + CurOnSur->Load(myC2D2); + CurOnSur->Load(mySurf2); FirstU = GetUParameter(CurOnSur, First, 1); LastU = GetUParameter(CurOnSur, Last, 1); - HCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur.Trim(FirstU, LastU, Tol)); - myC2D2 = HCurOnSur->GetCurve(); - mySurf2 = HCurOnSur->GetSurface(); + TCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur->Trim(FirstU, LastU, Tol)); + myC2D2 = TCurOnSur->GetCurve(); + mySurf2 = TCurOnSur->GetSurface(); Standard_FALLTHROUGH case 2: - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); - HCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur.Trim(myFirstU1, myLastU1, Tol)); - myC2D1 = HCurOnSur->GetCurve(); - mySurf1 = HCurOnSur->GetSurface(); - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); + TCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur->Trim(myFirstU1, myLastU1, Tol)); + myC2D1 = TCurOnSur->GetCurve(); + mySurf1 = TCurOnSur->GetSurface(); + CurOnSur->Load(myC2D1); + CurOnSur->Load(mySurf1); FirstU = GetUParameter(CurOnSur, First, 1); LastU = GetUParameter(CurOnSur, Last, 1); - HCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur.Trim(FirstU, LastU, Tol)); - myC2D1 = HCurOnSur->GetCurve(); - mySurf1 = HCurOnSur->GetSurface(); + TCurOnSur = Handle(Adaptor3d_CurveOnSurface)::DownCast (CurOnSur->Trim(FirstU, LastU, Tol)); + myC2D1 = TCurOnSur->GetCurve(); + mySurf1 = TCurOnSur->GetSurface(); } myFirstS = First; myLastS = Last; @@ -372,41 +376,39 @@ void Approx_CurvlinFunc::Trim(const Standard_Real First, const Standard_Real Las void Approx_CurvlinFunc::Length() { - Adaptor3d_CurveOnSurface CurOnSur; + Handle(Adaptor3d_CurveOnSurface) CurOnSur; Standard_Real FirstU, LastU; switch(myCase){ case 1: FirstU = myC3D->FirstParameter(); LastU = myC3D->LastParameter(); - myLength = Length (*myC3D, FirstU, LastU); + myLength = Length (myC3D, FirstU, LastU); myLength1 = myLength2 = 0; break; case 2: - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); - FirstU = CurOnSur.FirstParameter(); - LastU = CurOnSur.LastParameter(); + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); + FirstU = CurOnSur->FirstParameter(); + LastU = CurOnSur->LastParameter(); myLength = Length(CurOnSur, FirstU, LastU); myLength1 = myLength2 = 0; break; case 3: - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); - FirstU = CurOnSur.FirstParameter(); - LastU = CurOnSur.LastParameter(); + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); + FirstU = CurOnSur->FirstParameter(); + LastU = CurOnSur->LastParameter(); myLength1 = Length(CurOnSur, FirstU, LastU); - CurOnSur.Load(myC2D2); - CurOnSur.Load(mySurf2); - FirstU = CurOnSur.FirstParameter(); - LastU = CurOnSur.LastParameter(); + CurOnSur->Load(myC2D2); + CurOnSur->Load(mySurf2); + FirstU = CurOnSur->FirstParameter(); + LastU = CurOnSur->LastParameter(); myLength2 = Length(CurOnSur, FirstU, LastU); myLength = (myLength1 + myLength2)/2; } } -Standard_Real Approx_CurvlinFunc::Length(Adaptor3d_Curve& C, const Standard_Real FirstU, const Standard_Real LastU) const +Standard_Real Approx_CurvlinFunc::Length(const Handle(Adaptor3d_Curve)& C, const Standard_Real FirstU, const Standard_Real LastU) const { Standard_Real Length; @@ -423,24 +425,22 @@ Standard_Real Approx_CurvlinFunc::GetLength() const Standard_Real Approx_CurvlinFunc::GetSParameter(const Standard_Real U) const { Standard_Real S=0, S1, S2; - Adaptor3d_CurveOnSurface CurOnSur; + Handle(Adaptor3d_CurveOnSurface) CurOnSur; switch (myCase) { case 1: - S = GetSParameter (*myC3D, U, myLength); + S = GetSParameter (myC3D, U, myLength); break; case 2: - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); S = GetSParameter(CurOnSur, U, myLength); break; case 3: - CurOnSur.Load(myC2D1); - CurOnSur.Load(mySurf1); - S1 = GetSParameter(CurOnSur, U, myLength1); - CurOnSur.Load(myC2D2); - CurOnSur.Load(mySurf2); - S2 = GetSParameter(CurOnSur, U, myLength2); + CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); + S1 = GetSParameter(CurOnSur, U, myLength1); + CurOnSur->Load(myC2D2); + CurOnSur->Load(mySurf2); + S2 = GetSParameter(CurOnSur, U, myLength2); S = (S1 + S2)/2; } return S; @@ -448,9 +448,9 @@ Standard_Real Approx_CurvlinFunc::GetSParameter(const Standard_Real U) const -Standard_Real Approx_CurvlinFunc::GetUParameter(Adaptor3d_Curve& C, - const Standard_Real S, - const Standard_Integer NumberOfCurve) const +Standard_Real Approx_CurvlinFunc::GetUParameter (const Handle(Adaptor3d_Curve)& C, + const Standard_Real S, + const Standard_Integer NumberOfCurve) const { Standard_Real deltaS, base, U, Length; Standard_Integer NbInt, NInterval, i; @@ -513,12 +513,12 @@ Standard_Real Approx_CurvlinFunc::GetUParameter(Adaptor3d_Curve& C, return U; } -Standard_Real Approx_CurvlinFunc::GetSParameter(Adaptor3d_Curve& C, const Standard_Real U, const Standard_Real Len) const +Standard_Real Approx_CurvlinFunc::GetSParameter(const Handle(Adaptor3d_Curve)& C, const Standard_Real U, const Standard_Real Len) const { Standard_Real S, Origin; - Origin = C.FirstParameter(); - S = myFirstS + Length(C, Origin, U)/Len; + Origin = C->FirstParameter(); + S = myFirstS + Length(C, Origin, U)/Len; return S; } @@ -530,7 +530,7 @@ Standard_Boolean Approx_CurvlinFunc::EvalCase1(const Standard_Real S, const Stan gp_Vec dC_dU, dC_dS, d2C_dU2, d2C_dS2; Standard_Real U, Mag, dU_dS, d2U_dS2; - U = GetUParameter (*myC3D, S, 1); + U = GetUParameter (myC3D, S, 1); switch(Order) { @@ -612,16 +612,16 @@ Standard_Boolean Approx_CurvlinFunc::EvalCurOnSur(const Standard_Real S, const S if (NumberOfCurve == 1) { Cur2D = myC2D1; - Surf = mySurf1; - Adaptor3d_CurveOnSurface CurOnSur(myC2D1, mySurf1); + Surf = mySurf1; + Handle(Adaptor3d_CurveOnSurface) CurOnSur = new Adaptor3d_CurveOnSurface(myC2D1, mySurf1); U = GetUParameter(CurOnSur, S, 1); if(myCase == 3) Length = myLength1; else Length = myLength; } else if (NumberOfCurve == 2) { Cur2D = myC2D2; - Surf = mySurf2; - Adaptor3d_CurveOnSurface CurOnSur(myC2D2, mySurf2); + Surf = mySurf2; + Handle(Adaptor3d_CurveOnSurface) CurOnSur = new Adaptor3d_CurveOnSurface(myC2D2, mySurf2); U = GetUParameter(CurOnSur, S, 2); Length = myLength2; } diff --git a/src/Approx/Approx_CurvlinFunc.hxx b/src/Approx/Approx_CurvlinFunc.hxx index c97e46146b..e096a82901 100644 --- a/src/Approx/Approx_CurvlinFunc.hxx +++ b/src/Approx/Approx_CurvlinFunc.hxx @@ -64,14 +64,14 @@ public: Standard_EXPORT void Length(); //! Computes length of the curve segment. - Standard_EXPORT Standard_Real Length (Adaptor3d_Curve& C, const Standard_Real FirstU, const Standard_Real LasrU) const; + Standard_EXPORT Standard_Real Length (const Handle(Adaptor3d_Curve)& C, const Standard_Real FirstU, const Standard_Real LasrU) const; Standard_EXPORT Standard_Real GetLength() const; //! returns original parameter corresponding S. if //! Case == 1 computation is performed on myC2D1 and mySurf1, //! otherwise it is done on myC2D2 and mySurf2. - Standard_EXPORT Standard_Real GetUParameter (Adaptor3d_Curve& C, const Standard_Real S, const Standard_Integer NumberOfCurve) const; + Standard_EXPORT Standard_Real GetUParameter (const Handle(Adaptor3d_Curve)& C, const Standard_Real S, const Standard_Integer NumberOfCurve) const; //! returns original parameter corresponding S. Standard_EXPORT Standard_Real GetSParameter (const Standard_Real U) const; @@ -100,10 +100,10 @@ private: Standard_EXPORT void Init(); - Standard_EXPORT void Init (Adaptor3d_Curve& C, Handle(TColStd_HArray1OfReal)& Si, Handle(TColStd_HArray1OfReal)& Ui) const; + Standard_EXPORT void Init (const Handle(Adaptor3d_Curve)& C, Handle(TColStd_HArray1OfReal)& Si, Handle(TColStd_HArray1OfReal)& Ui) const; //! returns curvilinear parameter corresponding U. - Standard_EXPORT Standard_Real GetSParameter (Adaptor3d_Curve& C, const Standard_Real U, const Standard_Real Length) const; + Standard_EXPORT Standard_Real GetSParameter (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, const Standard_Real Length) const; Standard_EXPORT Standard_Boolean EvalCurOnSur (const Standard_Real S, const Standard_Integer Order, TColStd_Array1OfReal& Result, const Standard_Integer NumberOfCurve) const; diff --git a/src/Approx/Approx_SameParameter.cxx b/src/Approx/Approx_SameParameter.cxx index 9bb7b22e24..1d5f756dc8 100644 --- a/src/Approx/Approx_SameParameter.cxx +++ b/src/Approx/Approx_SameParameter.cxx @@ -111,7 +111,7 @@ static void ProjectPointOnCurve(const Standard_Real InitValue, const gp_Pnt& APoint, const Standard_Real Tolerance, const Standard_Integer NumIteration, - const Adaptor3d_Curve& Curve, + const Handle(Adaptor3d_Curve)& Curve, Standard_Boolean& Status, Standard_Real& Result) { @@ -125,7 +125,7 @@ static void ProjectPointOnCurve(const Standard_Real InitValue, do { num_iter++; - Curve.D2(param, a_point, d1, d2); + Curve->D2(param, a_point, d1, d2); vector = gp_Vec(a_point,APoint); func = vector.Dot(d1); @@ -143,8 +143,8 @@ static void ProjectPointOnCurve(const Standard_Real InitValue, if( Abs(func_derivative) > Toler ) param -= func / func_derivative; - param = Max(param,Curve.FirstParameter()); - param = Min(param,Curve.LastParameter()); + param = Max(param,Curve->FirstParameter()); + param = Min(param,Curve->LastParameter()); } } while (not_done && num_iter <= NumIteration); @@ -156,7 +156,7 @@ static void ProjectPointOnCurve(const Standard_Real InitValue, //purpose : //======================================================================= static Standard_Real ComputeTolReached(const Handle(Adaptor3d_Curve)& c3d, - const Adaptor3d_CurveOnSurface& cons, + const Handle(Adaptor3d_CurveOnSurface)& cons, const Standard_Integer nbp) { Standard_Real d2 = 0.0; // Square max discrete deviation. @@ -170,7 +170,7 @@ static Standard_Real ComputeTolReached(const Handle(Adaptor3d_Curve)& c3d, try { Pc3d = c3d->Value(u); - Pcons = cons.Value(u); + Pcons = cons->Value(u); } catch (Standard_Failure const&) { @@ -202,7 +202,7 @@ static Standard_Boolean Check(const TColStd_Array1OfReal& FlatKnots, const Standard_Integer nbp, const Standard_Real *pc3d, const Handle(Adaptor3d_Curve)& c3d, - const Adaptor3d_CurveOnSurface& cons, + const Handle(Adaptor3d_CurveOnSurface)& cons, Standard_Real& tol, const Standard_Real oldtol) { @@ -217,8 +217,8 @@ static Standard_Boolean Check(const TColStd_Array1OfReal& FlatKnots, Standard_Real aParamFirst = 3.0 * pc3d[0] - 2.0 * pc3d[nbp - 1]; Standard_Real aParamLast = 3.0 * pc3d[nbp - 1] - 2.0 * pc3d[0]; - Standard_Real FirstPar = cons.FirstParameter(); - Standard_Real LastPar = cons.LastParameter(); + Standard_Real FirstPar = cons->FirstParameter(); + Standard_Real LastPar = cons->LastParameter(); if (aParamFirst < FirstPar) aParamFirst = FirstPar; if (aParamLast > LastPar) @@ -247,7 +247,7 @@ static Standard_Boolean Check(const TColStd_Array1OfReal& FlatKnots, return Standard_False; } tprev = tcons; - gp_Pnt Pcons = cons.Value(tcons); + gp_Pnt Pcons = cons->Value(tcons); Standard_Real temp = Pc3d.SquareDistance(Pcons); if(temp > d2) d2 = temp; } @@ -337,9 +337,9 @@ void Approx_SameParameter::Build(const Standard_Real Tolerance) // Create and fill data structure. Approx_SameParameter_Data aData; - aData.myCOnS = Adaptor3d_CurveOnSurface(myHCurve2d,mySurf); - aData.myC2dPF = aData.myCOnS.FirstParameter(); - aData.myC2dPL = aData.myCOnS.LastParameter(); + aData.myCOnS = new Adaptor3d_CurveOnSurface(myHCurve2d,mySurf); + aData.myC2dPF = aData.myCOnS->FirstParameter(); + aData.myC2dPL = aData.myCOnS->LastParameter(); aData.myC3dPF = myC3d->FirstParameter(); aData.myC3dPL = myC3d->LastParameter(); aData.myNbPnt = 0; // No points initially. @@ -376,7 +376,7 @@ void Approx_SameParameter::Build(const Standard_Real Tolerance) if(aData.myNbPnt < aNbPnt ) { myTolReached = ComputeTolReached(myC3d,aData.myCOnS, 2 * myNbSamples); - myCurve2d = Geom2dAdaptor::MakeCurve (*myHCurve2d); + myCurve2d = Geom2dAdaptor::MakeCurve (myHCurve2d); myDone = Standard_False; return; } @@ -444,11 +444,11 @@ void Approx_SameParameter::Build(const Standard_Real Tolerance) if (anApproximator.IsDone() || anApproximator.HasResult()) { - Adaptor3d_CurveOnSurface ACS = aData.myCOnS; + Handle(Adaptor3d_CurveOnSurface) ACS = Handle(Adaptor3d_CurveOnSurface)::DownCast(aData.myCOnS->ShallowCopy()); GeomLib_MakeCurvefromApprox aCurveBuilder(anApproximator); Handle(Geom2d_BSplineCurve) aC2d = aCurveBuilder.Curve2dFromTwo1d(1,2); Handle(Adaptor2d_Curve2d) aHCurve2d = new Geom2dAdaptor_Curve(aC2d); - aData.myCOnS.Load(aHCurve2d); + aData.myCOnS->Load(aHCurve2d); myTolReached = ComputeTolReached(myC3d,aData.myCOnS, 2 * myNbSamples); const Standard_Real aMult = 250.0; // To be tolerant with discrete tolerance. @@ -482,9 +482,9 @@ void Approx_SameParameter::Build(const Standard_Real Tolerance) // using data from the last loop iteration or initial data. Use data set with minimal deflection. // Original 2d curve. - aData.myCOnS.Load(myHCurve2d); + aData.myCOnS->Load(myHCurve2d); myTolReached = ComputeTolReached(myC3d,aData.myCOnS, 2 * myNbSamples); - myCurve2d = Geom2dAdaptor::MakeCurve (*myHCurve2d); + myCurve2d = Geom2dAdaptor::MakeCurve (myHCurve2d); // Approximation curve. Standard_Integer num_knots = aData.myNbPnt + 7; @@ -515,7 +515,7 @@ void Approx_SameParameter::Build(const Standard_Real Tolerance) GeomLib_MakeCurvefromApprox aCurveBuilder(anApproximator); Handle(Geom2d_BSplineCurve) aC2d = aCurveBuilder.Curve2dFromTwo1d(1,2); Handle(Adaptor2d_Curve2d) aHCurve2d = new Geom2dAdaptor_Curve(aC2d); - aData.myCOnS.Load(aHCurve2d); + aData.myCOnS->Load(aHCurve2d); Standard_Real anApproxTol = ComputeTolReached(myC3d,aData.myCOnS,2 * myNbSamples); if (anApproxTol < myTolReached) @@ -527,7 +527,7 @@ void Approx_SameParameter::Build(const Standard_Real Tolerance) myDone = Standard_True; } - myCurveOnSurface = Handle(Adaptor3d_CurveOnSurface)::DownCast(aData.myCOnS.ShallowCopy()); + myCurveOnSurface = Handle(Adaptor3d_CurveOnSurface)::DownCast(aData.myCOnS->ShallowCopy()); } //======================================================================= @@ -643,18 +643,18 @@ Standard_Boolean Approx_SameParameter::CheckSameParameter(Approx_SameParameter_D // Compute initial distance on boundary points. gp_Pnt Pcons, Pc3d; - theData.myCOnS.D0(theData.myC2dPF, Pcons); + theData.myCOnS->D0(theData.myC2dPF, Pcons); myC3d->D0(theData.myC3dPF, Pc3d); Standard_Real dist2 = Pcons.SquareDistance(Pc3d); Standard_Real dmax2 = dist2; - theData.myCOnS.D0(theData.myC2dPL, Pcons); + theData.myCOnS->D0(theData.myC2dPL, Pcons); myC3d->D0(theData.myC3dPL, Pc3d); dist2 = Pcons.SquareDistance(Pc3d); dmax2 = Max(dmax2, dist2); Extrema_LocateExtPC Projector; - Projector.Initialize (*myC3d, theData.myC3dPF, theData.myC3dPL, theData.myTol); + Projector.Initialize (myC3d, theData.myC3dPF, theData.myC3dPL, theData.myTol); Standard_Integer count = 1; Standard_Real previousp = theData.myC3dPF, initp=0, curp; @@ -662,7 +662,7 @@ Standard_Boolean Approx_SameParameter::CheckSameParameter(Approx_SameParameter_D Standard_Boolean isProjOk = Standard_False; for (Standard_Integer ii = 1; ii < theData.myNbPnt; ii++) { - theData.myCOnS.D0(theData.myPC2d[ii],Pcons); + theData.myCOnS->D0(theData.myPC2d[ii],Pcons); myC3d->D0(theData.myPC3d[ii],Pc3d); dist2 = Pcons.SquareDistance(Pc3d); @@ -692,7 +692,7 @@ Standard_Boolean Approx_SameParameter::CheckSameParameter(Approx_SameParameter_D } else { - ProjectPointOnCurve(initp,Pcons,theData.myTol,30, *myC3d,isProjOk,curp); + ProjectPointOnCurve(initp,Pcons,theData.myTol,30, myC3d,isProjOk,curp); } isProjOk = isProjOk && // Good projection. curp > previousp + myDeltaMin && // Point is separated from previous. @@ -706,7 +706,7 @@ Standard_Boolean Approx_SameParameter::CheckSameParameter(Approx_SameParameter_D } // Whole parameter space search using general extrema. - Extrema_ExtPC PR(Pcons, *myC3d, theData.myC3dPF, theData.myC3dPL, theData.myTol); + Extrema_ExtPC PR(Pcons, myC3d, theData.myC3dPF, theData.myC3dPL, theData.myTol); if (!PR.IsDone() || PR.NbExt() == 0) // Lazy evaluation is used. continue; @@ -747,7 +747,7 @@ Standard_Boolean Approx_SameParameter::CheckSameParameter(Approx_SameParameter_D //function : ComputeTangents //purpose : Sub-method in Build. //======================================================================= -Standard_Boolean Approx_SameParameter::ComputeTangents(const Adaptor3d_CurveOnSurface & theCOnS, +Standard_Boolean Approx_SameParameter::ComputeTangents(const Handle(Adaptor3d_CurveOnSurface) & theCOnS, Standard_Real &theFirstTangent, Standard_Real &theLastTangent) const { @@ -758,7 +758,7 @@ Standard_Boolean Approx_SameParameter::ComputeTangents(const Adaptor3d_CurveOnSu // First point. const Standard_Real aParamFirst = myC3d->FirstParameter(); - theCOnS.D1(aParamFirst, aPntCOnS, aVecConS); + theCOnS->D1(aParamFirst, aPntCOnS, aVecConS); myC3d->D1(aParamFirst, aPnt, aVec); Standard_Real aMagnitude = aVecConS.Magnitude(); if (aMagnitude > aSmallMagnitude) @@ -768,7 +768,7 @@ Standard_Boolean Approx_SameParameter::ComputeTangents(const Adaptor3d_CurveOnSu // Last point. const Standard_Real aParamLast = myC3d->LastParameter(); - theCOnS.D1(aParamLast,aPntCOnS,aVecConS); + theCOnS->D1(aParamLast,aPntCOnS,aVecConS); myC3d->D1(aParamLast, aPnt, aVec); aMagnitude = aVecConS.Magnitude(); @@ -834,7 +834,7 @@ Standard_Boolean Approx_SameParameter::IncreaseNbPoles(const TColStd_Array1OfRea Standard_Real &theBestSqTol) const { Extrema_LocateExtPC Projector; - Projector.Initialize (*myC3d, myC3d->FirstParameter(), myC3d->LastParameter(), theData.myTol); + Projector.Initialize (myC3d, myC3d->FirstParameter(), myC3d->LastParameter(), theData.myTol); Standard_Real curp = 0.0; Standard_Boolean projok = Standard_False; @@ -862,7 +862,7 @@ Standard_Boolean Approx_SameParameter::IncreaseNbPoles(const TColStd_Array1OfRea Standard_Real uc3d = 0.5*(theData.myPC3d[ii]+theData.myPC3d[ii+1]); gp_Pnt Pcons; - theData.myCOnS.D0(ucons,Pcons); + theData.myCOnS->D0(ucons,Pcons); Projector.Perform(Pcons, uc3d); if (Projector.IsDone()) { @@ -873,7 +873,7 @@ Standard_Boolean Approx_SameParameter::IncreaseNbPoles(const TColStd_Array1OfRea } else { - ProjectPointOnCurve(uc3d,Pcons,theData.myTol,30, *myC3d,projok,curp); + ProjectPointOnCurve(uc3d,Pcons,theData.myTol,30, myC3d,projok,curp); } if(projok) { @@ -910,7 +910,7 @@ Standard_Boolean Approx_SameParameter::IncreaseNbPoles(const TColStd_Array1OfRea Standard_Real uc3d = 0.5*(theData.myPC3d[n]+theData.myPC3d[n+1]); gp_Pnt Pcons; - theData.myCOnS.D0(ucons,Pcons); + theData.myCOnS->D0(ucons,Pcons); Projector.Perform(Pcons, uc3d); if (Projector.IsDone()) { @@ -921,7 +921,7 @@ Standard_Boolean Approx_SameParameter::IncreaseNbPoles(const TColStd_Array1OfRea } else { - ProjectPointOnCurve(uc3d,Pcons,theData.myTol,30, *myC3d,projok,curp); + ProjectPointOnCurve(uc3d,Pcons,theData.myTol,30, myC3d,projok,curp); } if(projok) { diff --git a/src/Approx/Approx_SameParameter.hxx b/src/Approx/Approx_SameParameter.hxx index 257a019336..f6c6ad8697 100644 --- a/src/Approx/Approx_SameParameter.hxx +++ b/src/Approx/Approx_SameParameter.hxx @@ -103,7 +103,7 @@ private: //! a lot of memory is used in intermediate computations. struct Approx_SameParameter_Data { - Adaptor3d_CurveOnSurface myCOnS; // Curve on surface. + Handle(Adaptor3d_CurveOnSurface) myCOnS; // Curve on surface. Standard_Integer myNbPnt; // Number of points. Standard_Real *myPC3d; // Parameters on 3d curve. Standard_Real *myPC2d; // Parameters on 2d curve. @@ -155,7 +155,7 @@ private: //! Computes tangents on boundary points. //@return true if tangents are not null and false otherwise. - Standard_Boolean ComputeTangents(const Adaptor3d_CurveOnSurface & theCOnS, + Standard_Boolean ComputeTangents(const Handle(Adaptor3d_CurveOnSurface) & theCOnS, Standard_Real &theFirstTangent, Standard_Real &theLastTangent) const; diff --git a/src/BOPAlgo/BOPAlgo_Builder_2.cxx b/src/BOPAlgo/BOPAlgo_Builder_2.cxx index f2ebfef171..3dbdfd7ca1 100644 --- a/src/BOPAlgo/BOPAlgo_Builder_2.cxx +++ b/src/BOPAlgo/BOPAlgo_Builder_2.cxx @@ -640,7 +640,7 @@ void BOPAlgo_Builder::FillSameDomainFaces(const Message_ProgressRange& theRange) { // At this stage, context should contain adaptor for all intersected faces, // so getting a type of the underlying surface should be done at no cost. - if (myContext->SurfaceAdaptor(TopoDS::Face(aF)).GetType() == GeomAbs_Plane) + if (myContext->SurfaceAdaptor(TopoDS::Face(aF))->GetType() == GeomAbs_Plane) { // Check bounding box of the face - it should not be open in any side const Bnd_Box& aBox = aSI.Box(); diff --git a/src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx b/src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx index 0e36f380fb..96ce6c4470 100644 --- a/src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx +++ b/src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx @@ -889,7 +889,7 @@ Standard_Boolean BOPAlgo_PaveFiller::GetPBBox(const TopoDS_Edge& theE, } else { // build bounding box - BRepAdaptor_Curve aBAC(theE); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(theE); Standard_Real aTol = BRep_Tool::Tolerance(theE) + Precision::Confusion(); BndLib_Add3dCurve::Add(aBAC, theSFirst, theSLast, aTol, theBox); thePBBox.Bind(thePB, theBox); diff --git a/src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx b/src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx index 0e4c6ed89f..3d7349de0e 100644 --- a/src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx +++ b/src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx @@ -373,9 +373,9 @@ void BOPAlgo_PaveFiller::PerformEF(const Message_ProgressRange& theRange) // Standard_Boolean bLinePlane = Standard_False; if (aNbCPrts) { - BRepAdaptor_Curve aBAC(aE); - bLinePlane = (aBAC.GetType() == GeomAbs_Line && - myContext->SurfaceAdaptor(aF).GetType() == GeomAbs_Plane); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(aE); + bLinePlane = (aBAC->GetType() == GeomAbs_Line && + myContext->SurfaceAdaptor(aF)->GetType() == GeomAbs_Plane); } // for (i=1; i<=aNbCPrts; ++i) { @@ -916,7 +916,7 @@ void BOPAlgo_PaveFiller::ForceInterfEF(const BOPDS_IndexedMapOfPaveBlock& theMPB // Projection tool GeomAPI_ProjectPointOnSurf& aProjPS = myContext->ProjPS(aF); - BRepAdaptor_Surface& aSurfAdaptor = myContext->SurfaceAdaptor (aF); + const Handle(BRepAdaptor_Surface)& aSurfAdaptor = myContext->SurfaceAdaptor (aF); // Iterate on pave blocks and combine pairs containing // the same vertices @@ -996,7 +996,7 @@ void BOPAlgo_PaveFiller::ForceInterfEF(const BOPDS_IndexedMapOfPaveBlock& theMPB if (!myContext->IsPointInFace(aF, gp_Pnt2d(U, V))) continue; - if (aSurfAdaptor.GetType() != GeomAbs_Plane || + if (aSurfAdaptor->GetType() != GeomAbs_Plane || aBAC.GetType() != GeomAbs_Line) { gp_Pnt aPOnS = aProjPS.NearestPoint(); diff --git a/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx b/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx index a4e454665d..2018310bdb 100644 --- a/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx +++ b/src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx @@ -76,8 +76,8 @@ #include // -static Standard_Real ToleranceFF(const BRepAdaptor_Surface& aBAS1, - const BRepAdaptor_Surface& aBAS2); +static Standard_Real ToleranceFF(const Handle(BRepAdaptor_Surface)& aBAS1, + const Handle(BRepAdaptor_Surface)& aBAS2); ///////////////////////////////////////////////////////////////////////// //======================================================================= @@ -322,10 +322,10 @@ void BOPAlgo_PaveFiller::PerformFF(const Message_ProgressRange& theRange) const TopoDS_Face& aF1 = (*(TopoDS_Face *)(&myDS->Shape(nF1))); const TopoDS_Face& aF2 = (*(TopoDS_Face *)(&myDS->Shape(nF2))); // - const BRepAdaptor_Surface& aBAS1 = myContext->SurfaceAdaptor(aF1); - const BRepAdaptor_Surface& aBAS2 = myContext->SurfaceAdaptor(aF2); - if (aBAS1.GetType() == GeomAbs_Plane && - aBAS2.GetType() == GeomAbs_Plane) { + const Handle(BRepAdaptor_Surface)& aBAS1 = myContext->SurfaceAdaptor(aF1); + const Handle(BRepAdaptor_Surface)& aBAS2 = myContext->SurfaceAdaptor(aF2); + if (aBAS1->GetType() == GeomAbs_Plane && + aBAS2->GetType() == GeomAbs_Plane) { // Check if the planes are really interfering Standard_Boolean bToIntersect = CheckPlanes(nF1, nF2); if (!bToIntersect) { @@ -347,8 +347,8 @@ void BOPAlgo_PaveFiller::PerformFF(const Message_ProgressRange& theRange) // Keep shift value to use it as the tolerance for intersection curves Standard_Real aShiftValue = 0.; - if (aBAS1.GetType() != GeomAbs_Plane || - aBAS2.GetType() != GeomAbs_Plane) { + if (aBAS1->GetType() != GeomAbs_Plane || + aBAS2->GetType() != GeomAbs_Plane) { Standard_Boolean isFound = Standard_False; for (TopExp_Explorer aExp1(aF1, TopAbs_EDGE); !isFound && aExp1.More(); aExp1.Next()) @@ -785,7 +785,7 @@ void BOPAlgo_PaveFiller::MakeBlocks(const Message_ProgressRange& theRange) // // check if the pave block has a valid range Standard_Real aFirst, aLast; - if (!BRepLib::FindValidRange(GeomAdaptor_Curve(aIC.Curve()), aTolR3D, + if (!BRepLib::FindValidRange(new GeomAdaptor_Curve(aIC.Curve()), aTolR3D, aT1, BRep_Tool::Pnt(aV1), Max (aTolR3D, BRep_Tool::Tolerance(aV1)), aT2, BRep_Tool::Pnt(aV2), Max (aTolR3D, BRep_Tool::Tolerance(aV2)), aFirst, aLast)) @@ -3176,7 +3176,7 @@ void BOPAlgo_PaveFiller::PutClosingPaveOnCurve(BOPDS_Curve& aNC) // Check if there will be valid range on the curve Standard_Real aFirst, aLast; Standard_Real aNewTolV = Max(aTolV, aDistVP + BOPTools_AlgoTools::DTolerance()); - if (!BRepLib::FindValidRange(GeomAdaptor_Curve(aIC.Curve()), aIC.Tolerance(), + if (!BRepLib::FindValidRange(new GeomAdaptor_Curve(aIC.Curve()), aIC.Tolerance(), aT[0], aP[0], aNewTolV, aT[1], aP[1], aNewTolV, aFirst, aLast)) @@ -3479,25 +3479,25 @@ void BOPAlgo_PaveFiller::RemovePaveBlocks(const TColStd_MapOfInteger& theEdges) //purpose : Computes the TolFF according to the tolerance value and // types of the faces. //======================================================================= -Standard_Real ToleranceFF(const BRepAdaptor_Surface& aBAS1, - const BRepAdaptor_Surface& aBAS2) +Standard_Real ToleranceFF(const Handle(BRepAdaptor_Surface)& aBAS1, + const Handle(BRepAdaptor_Surface)& aBAS2) { - Standard_Real aTol1 = aBAS1.Tolerance(); - Standard_Real aTol2 = aBAS2.Tolerance(); + Standard_Real aTol1 = aBAS1->Tolerance(); + Standard_Real aTol2 = aBAS2->Tolerance(); Standard_Real aTolFF = Max(aTol1, aTol2); // Standard_Boolean isAna1, isAna2; - isAna1 = (aBAS1.GetType() == GeomAbs_Plane || - aBAS1.GetType() == GeomAbs_Cylinder || - aBAS1.GetType() == GeomAbs_Cone || - aBAS1.GetType() == GeomAbs_Sphere || - aBAS1.GetType() == GeomAbs_Torus); + isAna1 = (aBAS1->GetType() == GeomAbs_Plane || + aBAS1->GetType() == GeomAbs_Cylinder || + aBAS1->GetType() == GeomAbs_Cone || + aBAS1->GetType() == GeomAbs_Sphere || + aBAS1->GetType() == GeomAbs_Torus); // - isAna2 = (aBAS2.GetType() == GeomAbs_Plane || - aBAS2.GetType() == GeomAbs_Cylinder || - aBAS2.GetType() == GeomAbs_Cone || - aBAS2.GetType() == GeomAbs_Sphere || - aBAS2.GetType() == GeomAbs_Torus); + isAna2 = (aBAS2->GetType() == GeomAbs_Plane || + aBAS2->GetType() == GeomAbs_Cylinder || + aBAS2->GetType() == GeomAbs_Cone || + aBAS2->GetType() == GeomAbs_Sphere || + aBAS2->GetType() == GeomAbs_Torus); // if (!isAna1 || !isAna2) { aTolFF = Max(aTolFF, 5.e-6); diff --git a/src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx b/src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx index c78e87804f..eb38bde365 100644 --- a/src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx +++ b/src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx @@ -277,8 +277,8 @@ class BOPAlgo_MPC : public BOPAlgo_ParallelAlgo { } else { - const BRepAdaptor_Surface& aBAS = myContext->SurfaceAdaptor(myF); - if (aBAS.IsUPeriodic() || aBAS.IsVPeriodic()) + const Handle(BRepAdaptor_Surface)& aBAS = myContext->SurfaceAdaptor(myF); + if (aBAS->IsUPeriodic() || aBAS->IsVPeriodic()) { // The curve already exists. Adjust it for periodic cases. BOPTools_AlgoTools2D::AdjustPCurveOnSurf diff --git a/src/BOPAlgo/BOPAlgo_PaveFiller_8.cxx b/src/BOPAlgo/BOPAlgo_PaveFiller_8.cxx index 6a90599df3..ff58a7fa97 100644 --- a/src/BOPAlgo/BOPAlgo_PaveFiller_8.cxx +++ b/src/BOPAlgo/BOPAlgo_PaveFiller_8.cxx @@ -254,15 +254,15 @@ void BOPAlgo_PaveFiller::ProcessDE(const Message_ProgressRange& theRange) const TopoDS_Face& aDF = (*(TopoDS_Face *)(&myDS->Shape(nFD))); // Standard_Real aTolV = BRep_Tool::Tolerance(aDV); - const BRepAdaptor_Surface& aBAS = myContext->SurfaceAdaptor(aDF); + const Handle(BRepAdaptor_Surface)& aBAS = myContext->SurfaceAdaptor(aDF); // // 2D intersection tolerance should be computed as a resolution // from the tolerance of vertex to resolve the touching cases Standard_Real aTolInt = Precision::PConfusion(); // UResolution from the tolerance of the vertex - Standard_Real aURes = aBAS.UResolution(aTolV); + Standard_Real aURes = aBAS->UResolution(aTolV); // VResolution from the tolerance of the vertex - Standard_Real aVRes = aBAS.VResolution(aTolV); + Standard_Real aVRes = aBAS->VResolution(aTolV); // aTolInt = Max(aTolInt, Max(aURes, aVRes)); // @@ -279,8 +279,7 @@ void BOPAlgo_PaveFiller::ProcessDE(const Message_ProgressRange& theRange) aTolCmp = Max(aTolCmp, (bUDir ? aURes : aVRes)); // // Prepare adaptor for the degenerated edge for intersection - Geom2dAdaptor_Curve aGAC1; - aGAC1.Load(aC2DDE, aTD1, aTD2); + Handle(Geom2dAdaptor_Curve) aGAC1 = new Geom2dAdaptor_Curve(aC2DDE, aTD1, aTD2); // BOPDS_ListIteratorOfListOfPaveBlock aItLPB(aLPBOut); for (; aItLPB.More(); aItLPB.Next()) { @@ -297,14 +296,14 @@ void BOPAlgo_PaveFiller::ProcessDE(const Message_ProgressRange& theRange) } // // Prepare adaptor for the passing edge for intersection - Geom2dAdaptor_Curve aGAC2; + Handle(Geom2dAdaptor_Curve) aGAC2 = new Geom2dAdaptor_Curve(); // Handle(Geom2d_Line) aL2D = Handle(Geom2d_Line)::DownCast(aC2D); if (!aL2D.IsNull()) { - aGAC2.Load(aC2D); + aGAC2->Load(aC2D); } else { - aGAC2.Load(aC2D, aT1, aT2); + aGAC2->Load(aC2D, aT1, aT2); } // Intersection Geom2dInt_GInter aGInter(aGAC1, aGAC2, aTolInt, aTolInt); diff --git a/src/BOPAlgo/BOPAlgo_Tools.cxx b/src/BOPAlgo/BOPAlgo_Tools.cxx index 13151f8413..0d8a3be24d 100644 --- a/src/BOPAlgo/BOPAlgo_Tools.cxx +++ b/src/BOPAlgo/BOPAlgo_Tools.cxx @@ -69,7 +69,7 @@ static TopTools_MapOfShape& theMEdgesNoUniquePlane); static - Standard_Boolean FindPlane(const BRepAdaptor_Curve& theCurve, + Standard_Boolean FindPlane(const Handle(BRepAdaptor_Curve)& theCurve, gp_Pln& thePlane); static @@ -84,7 +84,7 @@ static gp_Dir& theTgt); static - Standard_Boolean FindEdgeTangent(const BRepAdaptor_Curve& theCurve, + Standard_Boolean FindEdgeTangent(const Handle(BRepAdaptor_Curve)& theCurve, gp_Vec& theTangent); //======================================================================= @@ -410,7 +410,7 @@ Standard_Integer BOPAlgo_Tools::EdgesToWires(const TopoDS_Shape& theEdges, aExp.Init(aSEdges, TopAbs_EDGE); for (; aExp.More(); aExp.Next()) { const TopoDS_Edge& aE = TopoDS::Edge(aExp.Current()); - BRepAdaptor_Curve aBAC(aE); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(aE); // gp_Pln aPln; if (FindPlane(aBAC, aPln)) { @@ -773,7 +773,7 @@ Standard_Boolean FindEdgeTangent(const TopoDS_Edge& theEdge, gp_Dir *pDTE = theDMEdgeTgt.ChangeSeek(theEdge); if (!pDTE) { gp_Vec aVTE; - BRepAdaptor_Curve aBAC(theEdge); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(theEdge); if (!FindEdgeTangent(aBAC, aVTE)) { return Standard_False; } @@ -787,26 +787,26 @@ Standard_Boolean FindEdgeTangent(const TopoDS_Edge& theEdge, //function : FindEdgeTangent //purpose : Finds the tangent for the edge //======================================================================= -Standard_Boolean FindEdgeTangent(const BRepAdaptor_Curve& theCurve, +Standard_Boolean FindEdgeTangent(const Handle(BRepAdaptor_Curve)& theCurve, gp_Vec& theTangent) { - if (!theCurve.Is3DCurve()) { + if (!theCurve->Is3DCurve()) { return Standard_False; } // for the line the tangent is defined by the direction - if (theCurve.GetType() == GeomAbs_Line) { - theTangent = theCurve.Line().Position().Direction(); + if (theCurve->GetType() == GeomAbs_Line) { + theTangent = theCurve->Line().Position().Direction(); return Standard_True; } // // for other curves take D1 and check for its length - Standard_Real aT, aT1(theCurve.FirstParameter()), aT2(theCurve.LastParameter()); + Standard_Real aT, aT1(theCurve->FirstParameter()), aT2(theCurve->LastParameter()); const Standard_Integer aNbP = 11; const Standard_Real aDt = (aT2 - aT1) / aNbP; // for (aT = aT1 + aDt; aT <= aT2; aT += aDt) { gp_Pnt aP; - theCurve.D1(aT, aP, theTangent); + theCurve->D1(aT, aP, theTangent); if (theTangent.Magnitude() > Precision::Confusion()) { return Standard_True; } @@ -819,47 +819,47 @@ Standard_Boolean FindEdgeTangent(const BRepAdaptor_Curve& theCurve, //function : FindPlane //purpose : Finds the plane in which the edge is located //======================================================================= -Standard_Boolean FindPlane(const BRepAdaptor_Curve& theCurve, +Standard_Boolean FindPlane(const Handle(BRepAdaptor_Curve)& theCurve, gp_Pln& thePlane) { - if (!theCurve.Is3DCurve()) { + if (!theCurve->Is3DCurve()) { return Standard_False; } // Standard_Boolean bFound = Standard_True; gp_Vec aVN; - switch (theCurve.GetType()) { + switch (theCurve->GetType()) { case GeomAbs_Line: return Standard_False; case GeomAbs_Circle: - aVN = theCurve.Circle().Position().Direction(); + aVN = theCurve->Circle().Position().Direction(); break; case GeomAbs_Ellipse: - aVN = theCurve.Ellipse().Position().Direction(); + aVN = theCurve->Ellipse().Position().Direction(); break; case GeomAbs_Hyperbola: - aVN = theCurve.Hyperbola().Position().Direction(); + aVN = theCurve->Hyperbola().Position().Direction(); break; case GeomAbs_Parabola: - aVN = theCurve.Parabola().Position().Direction(); + aVN = theCurve->Parabola().Position().Direction(); break; default: { // for all other types of curve compute two tangent vectors // on the curve and cross them bFound = Standard_False; - Standard_Real aT, aT1(theCurve.FirstParameter()), aT2(theCurve.LastParameter()); + Standard_Real aT, aT1(theCurve->FirstParameter()), aT2(theCurve->LastParameter()); const Standard_Integer aNbP = 11; const Standard_Real aDt = (aT2 - aT1) / aNbP; // aT = aT1; gp_Pnt aP1; gp_Vec aV1; - theCurve.D1(aT, aP1, aV1); + theCurve->D1(aT, aP1, aV1); // for (aT = aT1 + aDt; aT <= aT2; aT += aDt) { gp_Pnt aP2; gp_Vec aV2; - theCurve.D1(aT, aP2, aV2); + theCurve->D1(aT, aP2, aV2); // aVN = aV1^aV2; if (aVN.Magnitude() > Precision::Confusion()) { @@ -872,7 +872,7 @@ Standard_Boolean FindPlane(const BRepAdaptor_Curve& theCurve, } // if (bFound) { - thePlane = gp_Pln(theCurve.Value(theCurve.FirstParameter()), gp_Dir(aVN)); + thePlane = gp_Pln(theCurve->Value(theCurve->FirstParameter()), gp_Dir(aVN)); } return bFound; } @@ -935,7 +935,7 @@ Standard_Boolean FindPlane(const TopoDS_Shape& theWire, if (theMEdgesNoUniquePlane.Contains(aE)) { continue; } - BRepAdaptor_Curve aBAC(aE); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(aE); if (FindPlane(aBAC, thePlane)) { return Standard_True; } diff --git a/src/BOPAlgo/BOPAlgo_WireSplitter_1.cxx b/src/BOPAlgo/BOPAlgo_WireSplitter_1.cxx index 6225ae596a..5ea71ee248 100644 --- a/src/BOPAlgo/BOPAlgo_WireSplitter_1.cxx +++ b/src/BOPAlgo/BOPAlgo_WireSplitter_1.cxx @@ -56,7 +56,7 @@ static Standard_Real Angle2D (const TopoDS_Vertex& aV, const TopoDS_Edge& anEdge, const TopoDS_Face& myFace, - const GeomAdaptor_Surface& aGAS, + const Handle(GeomAdaptor_Surface)& aGAS, const Standard_Boolean aFlag, const Handle(IntTools_Context)& theContext); @@ -86,7 +86,7 @@ static const Standard_Real aAngleOut); static - void Path (const GeomAdaptor_Surface& aGAS, + void Path (const Handle(GeomAdaptor_Surface)& aGAS, const TopoDS_Face& myFace, const MyDataMapOfShapeBoolean& aVertMap, const TopoDS_Vertex& aVa, @@ -103,16 +103,16 @@ static static Standard_Real Tolerance2D (const TopoDS_Vertex& aV, - const GeomAdaptor_Surface& aGAS); + const Handle(GeomAdaptor_Surface)& aGAS); static Standard_Real UTolerance2D (const TopoDS_Vertex& aV, - const GeomAdaptor_Surface& aGAS); + const Handle(GeomAdaptor_Surface)& aGAS); static Standard_Real VTolerance2D (const TopoDS_Vertex& aV, - const GeomAdaptor_Surface& aGAS); + const Handle(GeomAdaptor_Surface)& aGAS); static void RefineAngles(const TopoDS_Face& myFace, @@ -293,8 +293,8 @@ void BOPAlgo_WireSplitter::SplitBlock(const TopoDS_Face& myFace, } // // 3. Angles in mySmartMap - const BRepAdaptor_Surface& aBAS = theContext->SurfaceAdaptor(myFace); - const GeomAdaptor_Surface& aGAS=aBAS.Surface(); + const Handle(BRepAdaptor_Surface)& aBAS = theContext->SurfaceAdaptor(myFace); + const Handle(GeomAdaptor_Surface)& aGAS = aBAS->Surface(); // for (i=1; i<=aNb; i++) { const TopoDS_Vertex& aV = (*(TopoDS_Vertex *)(&mySmartMap.FindKey(i))); @@ -351,7 +351,7 @@ void BOPAlgo_WireSplitter::SplitBlock(const TopoDS_Face& myFace, // function: Path // purpose: //======================================================================= -void Path (const GeomAdaptor_Surface& aGAS, +void Path (const Handle(GeomAdaptor_Surface)& aGAS, const TopoDS_Face& myFace, const MyDataMapOfShapeBoolean& aVertMap, const TopoDS_Vertex& aVFirst, @@ -740,7 +740,7 @@ Standard_Integer NbWaysOut(const BOPAlgo_ListOfEdgeInfo& aLEInfo) Standard_Real Angle2D (const TopoDS_Vertex& aV, const TopoDS_Edge& anEdge, const TopoDS_Face& myFace, - const GeomAdaptor_Surface& aGAS, + const Handle(GeomAdaptor_Surface)& aGAS, const Standard_Boolean bIsIN, const Handle(IntTools_Context)& theContext) { @@ -825,16 +825,16 @@ Standard_Real Angle (const gp_Dir2d& aDir2D) // purpose: //======================================================================= Standard_Real Tolerance2D (const TopoDS_Vertex& aV, - const GeomAdaptor_Surface& aGAS) + const Handle(GeomAdaptor_Surface)& aGAS) { Standard_Real aTol2D, anUr, aVr, aTolV3D; GeomAbs_SurfaceType aType; // - aType=aGAS.GetType(); + aType=aGAS->GetType(); aTolV3D=BRep_Tool::Tolerance(aV); - anUr=aGAS.UResolution(aTolV3D); - aVr =aGAS.VResolution(aTolV3D); + anUr=aGAS->UResolution(aTolV3D); + aVr =aGAS->VResolution(aTolV3D); aTol2D=(aVr>anUr) ? aVr : anUr; // if (aTol2D < aTolV3D) { @@ -852,10 +852,10 @@ Standard_Real Angle (const gp_Dir2d& aDir2D) //purpose : //======================================================================= Standard_Real UTolerance2D (const TopoDS_Vertex& aV, - const GeomAdaptor_Surface& aGAS) + const Handle(GeomAdaptor_Surface)& aGAS) { const Standard_Real aTolV3D = BRep_Tool::Tolerance(aV); - const Standard_Real anUr = aGAS.UResolution(aTolV3D); + const Standard_Real anUr = aGAS->UResolution(aTolV3D); // return anUr; } @@ -865,10 +865,10 @@ Standard_Real UTolerance2D (const TopoDS_Vertex& aV, //purpose : //======================================================================= Standard_Real VTolerance2D (const TopoDS_Vertex& aV, - const GeomAdaptor_Surface& aGAS) + const Handle(GeomAdaptor_Surface)& aGAS) { const Standard_Real aTolV3D = BRep_Tool::Tolerance(aV); - const Standard_Real anVr = aGAS.VResolution(aTolV3D); + const Standard_Real anVr = aGAS->VResolution(aTolV3D); // return anVr; } @@ -1011,7 +1011,8 @@ Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV, gp_Pnt2d aPV, aP, aP1, aP2; Handle(Geom2d_Curve) aC2D; Handle(Geom2d_Line) aLi; - Geom2dAdaptor_Curve aGAC1, aGAC2; + Handle(Geom2dAdaptor_Curve) aGAC1 = new Geom2dAdaptor_Curve(); + Handle(Geom2dAdaptor_Curve) aGAC2 = new Geom2dAdaptor_Curve(); Geom2dInt_GInter aGInter; IntRes2d_Domain aDomain1, aDomain2; // @@ -1020,16 +1021,16 @@ Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV, aTolInt=1.e-10; // BOPTools_AlgoTools2D::CurveOnSurface(aE, myFace, aC2D, aT1, aT2, aTol, theContext); - aGAC1.Load(aC2D, aT1, aT2); + aGAC1->Load(aC2D, aT1, aT2); // aTV=BRep_Tool::Parameter (aV, aE, myFace); - aGAC1.D0(aTV, aPV); + aGAC1->D0(aTV, aPV); // aTOp = (fabs(aTV-aT1) < fabs(aTV-aT2)) ? aT2 : aT1; // const Standard_Real MaxDT = 0.3 * (aT2 - aT1); - aGAC1.D0(aT1, aP1); - aGAC1.D0(aT2, aP2); + aGAC1->D0(aT1, aP1); + aGAC1->D0(aT2, aP2); aDomain1.SetValues(aP1, aT1, aTolInt, aP2, aT2, aTolInt); // for (i=0; i<2; ++i) { @@ -1039,7 +1040,7 @@ Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV, gp_Dir2d aDiri(aXi, aYi); aLi=new Geom2d_Line(aPV, aDiri); // - aGAC2.Load(aLi); + aGAC2->Load(aLi); // aGInter.Perform(aGAC1, aDomain1, aGAC2, aDomain2, aTolInt, aTolInt); if (!aGInter.IsDone()) { @@ -1067,7 +1068,7 @@ Standard_Boolean RefineAngle2D(const TopoDS_Vertex& aV, } // aT = aT1max + aCf*dT; - aGAC1.D0(aT, aP); + aGAC1->D0(aT, aP); gp_Vec2d aV2D(aPV, aP); gp_Dir2d aDir2D(aV2D); // diff --git a/src/BOPTools/BOPTools_AlgoTools.cxx b/src/BOPTools/BOPTools_AlgoTools.cxx index 78322a73c5..07c502b459 100644 --- a/src/BOPTools/BOPTools_AlgoTools.cxx +++ b/src/BOPTools/BOPTools_AlgoTools.cxx @@ -1472,7 +1472,7 @@ Standard_Boolean BOPTools_AlgoTools::IsHole(const TopoDS_Shape& aW, break; //xx } // - BRepAdaptor_Curve2d aBAC2D(aE, aFF); + Handle(BRepAdaptor_Curve2d) aBAC2D = new BRepAdaptor_Curve2d(aE, aFF); aNbS=Geom2dInt_Geom2dCurveTool::NbSamples(aBAC2D); if (aNbS>2) { aNbS*=4; @@ -1487,10 +1487,10 @@ Standard_Boolean BOPTools_AlgoTools::IsHole(const TopoDS_Shape& aW, dU=-dU; } // - aBAC2D.D0(aU, aP2D0); + aBAC2D->D0(aU, aP2D0); for(i=2; i<=aNbS; i++) { aU=aU1+(i-1)*dU; - aBAC2D.D0(aU, aP2D1); + aBAC2D->D0(aU, aP2D1); aP2D0.Coord(aX0, aY0); aP2D1.Coord(aX1, aY1); // @@ -2152,26 +2152,26 @@ Standard_Real MinStep3D(const TopoDS_Edge& theE1, } // // try to compute the minimal 3D step - const BRepAdaptor_Surface& aBAS = theContext->SurfaceAdaptor(aF); + const Handle(BRepAdaptor_Surface)& aBAS = theContext->SurfaceAdaptor(aF); Standard_Real aR = 0.; - GeomAbs_SurfaceType aSType = aBAS.GetType(); + GeomAbs_SurfaceType aSType = aBAS->GetType(); switch (aSType) { case GeomAbs_Cylinder: { - aR = aBAS.Cylinder().Radius(); + aR = aBAS->Cylinder().Radius(); break; } case GeomAbs_Cone: { - gp_Lin aL(aBAS.Cone().Axis()); + gp_Lin aL(aBAS->Cone().Axis()); aR = aL.Distance(aP); break; } case GeomAbs_Sphere: { aDtMin = Max(aDtMin, 5.e-4); - aR = aBAS.Sphere().Radius(); + aR = aBAS->Sphere().Radius(); break; } case GeomAbs_Torus: { - aR = aBAS.Torus().MajorRadius(); + aR = aBAS->Torus().MajorRadius(); break; } default: @@ -2195,14 +2195,14 @@ Standard_Real MinStep3D(const TopoDS_Edge& theE1, const BOPTools_CoupleOfShape& aCS = aIt.Value(); const TopoDS_Face& aF = (*(TopoDS_Face*)(&aCS.Shape2())); // - const BRepAdaptor_Surface& aBAS = theContext->SurfaceAdaptor(aF); + const Handle(BRepAdaptor_Surface)& aBAS = theContext->SurfaceAdaptor(aF); // Standard_Real aUMin, aUMax, aVMin, aVMax; theContext->UVBounds(aF, aUMin, aUMax, aVMin, aVMax); // Standard_Real aDU = aUMax - aUMin; if (aDU > 0.) { - Standard_Real aURes = aBAS.UResolution(aDtMax); + Standard_Real aURes = aBAS->UResolution(aDtMax); if (2*aURes > aDU) { break; } @@ -2210,7 +2210,7 @@ Standard_Real MinStep3D(const TopoDS_Edge& theE1, // Standard_Real aDV = aVMax - aVMin; if (aDV > 0.) { - Standard_Real aVRes = aBAS.VResolution(aDtMax); + Standard_Real aVRes = aBAS->VResolution(aDtMax); if (2*aVRes > aDV) { break; } diff --git a/src/BOPTools/BOPTools_AlgoTools2D.cxx b/src/BOPTools/BOPTools_AlgoTools2D.cxx index 9bcafe1c33..d49b44f39e 100644 --- a/src/BOPTools/BOPTools_AlgoTools2D.cxx +++ b/src/BOPTools/BOPTools_AlgoTools2D.cxx @@ -251,24 +251,24 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnFace Handle(Geom2d_Curve)& theC2DA, const Handle(IntTools_Context)& theContext) { - BRepAdaptor_Surface aBASTmp; - const BRepAdaptor_Surface* pBAS; + Handle(BRepAdaptor_Surface) aBASTmp = new BRepAdaptor_Surface(); + Handle(BRepAdaptor_Surface) pBAS; if (!theContext.IsNull()) { - pBAS = &theContext->SurfaceAdaptor(theF); + pBAS = theContext->SurfaceAdaptor(theF); } else { - aBASTmp.Initialize(theF, Standard_True); - pBAS = &aBASTmp; + aBASTmp->Initialize(theF, Standard_True); + pBAS = aBASTmp; } // - BOPTools_AlgoTools2D::AdjustPCurveOnSurf(*pBAS, theFirst, theLast, theC2D, theC2DA); + BOPTools_AlgoTools2D::AdjustPCurveOnSurf(pBAS, theFirst, theLast, theC2D, theC2DA); } //======================================================================= //function : AdjustPCurveOnFace //purpose : //======================================================================= void BOPTools_AlgoTools2D::AdjustPCurveOnSurf - (const BRepAdaptor_Surface& aBAS, + (const Handle(BRepAdaptor_Surface)& aBAS, const Standard_Real aFirst, const Standard_Real aLast, const Handle(Geom2d_Curve)& aC2D, @@ -278,11 +278,11 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnSurf Standard_Real UMin, UMax, VMin, VMax, aT, u2, v2, du, dv, aDelta; Standard_Real aUPeriod; // - const TopoDS_Face& aF=aBAS.Face(); - UMin=aBAS.FirstUParameter(); - UMax=aBAS.LastUParameter(); - VMin=aBAS.FirstVParameter(); - VMax=aBAS.LastVParameter(); + const TopoDS_Face& aF=aBAS->Face(); + UMin=aBAS->FirstUParameter(); + UMax=aBAS->LastUParameter(); + VMin=aBAS->FirstVParameter(); + VMax=aBAS->LastVParameter(); // aDelta=Precision::PConfusion(); @@ -296,8 +296,8 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnSurf // // du du = 0.; - if (aBAS.IsUPeriodic()) { - aUPeriod = aBAS.UPeriod(); + if (aBAS->IsUPeriodic()) { + aUPeriod = aBAS->UPeriod(); // // a. try to clarify u2 using the precision (aDelta) @@ -311,10 +311,10 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnSurf GeomInt::AdjustPeriodic(u2, UMin, UMax, aUPeriod, u2, du, 0.); // if (du==0.) { - if (aBAS.GetType()==GeomAbs_Cylinder) { + if (aBAS->GetType()==GeomAbs_Cylinder) { Standard_Real aR, dFi, aTol; // - gp_Cylinder aCylinder=aBAS.Cylinder(); + gp_Cylinder aCylinder=aBAS->Cylinder(); aR=aCylinder.Radius(); aTol=MaxToleranceEdge(aF); dFi=aTol/aR; @@ -333,10 +333,10 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnSurf // dv dv = 0.; - if (aBAS.IsVPeriodic()) { + if (aBAS->IsVPeriodic()) { Standard_Real aVPeriod, aVm, aVr, aVmid, dVm, dVr; // - aVPeriod = aBAS.VPeriod(); + aVPeriod = aBAS->VPeriod(); mincond = (VMin - v2 > aDelta); maxcond = (v2 - VMax > aDelta); // @@ -361,8 +361,8 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnSurf Standard_Real u,v; u = u2 + du; v = v2 + dv; - if (aBAS.IsUPeriodic()) { - aUPeriod = aBAS.UPeriod(); + if (aBAS->IsUPeriodic()) { + aUPeriod = aBAS->UPeriod(); if ((UMax - UMin - 2*aDelta) > aUPeriod) { if ((u > (UMin + aDelta + aUPeriod)) || (u < (UMax - aDelta - aUPeriod))) { @@ -377,8 +377,8 @@ void BOPTools_AlgoTools2D::AdjustPCurveOnSurf } // u = u2 + du; - if (aBAS.IsVPeriodic()) { - Standard_Real aVPeriod = aBAS.VPeriod(); + if (aBAS->IsVPeriodic()) { + Standard_Real aVPeriod = aBAS->VPeriod(); if ((VMax - VMin - 2*aDelta) > aVPeriod) { if ((v > (VMin + aDelta + aVPeriod)) || (v < (VMax - aDelta - aVPeriod))) { @@ -521,14 +521,14 @@ void BOPTools_AlgoTools2D::MakePCurveOnFace Standard_Real& TolReached2d, const Handle(IntTools_Context)& theContext) { - BRepAdaptor_Surface aBASTmp; - const BRepAdaptor_Surface* pBAS; + Handle(BRepAdaptor_Surface) aBASTmp = new BRepAdaptor_Surface(); + Handle(BRepAdaptor_Surface) pBAS; if (!theContext.IsNull()) { - pBAS = &theContext->SurfaceAdaptor(aF); + pBAS = theContext->SurfaceAdaptor(aF); } else { - aBASTmp.Initialize(aF, Standard_True); - pBAS = &aBASTmp; + aBASTmp->Initialize(aF, Standard_True); + pBAS = aBASTmp; } // Handle(BRepAdaptor_Surface) aBAHS = new BRepAdaptor_Surface(*pBAS); @@ -622,7 +622,7 @@ void BOPTools_AlgoTools2D::MakePCurveOnFace // Adjust curve for periodic surface Handle(Geom2d_Curve) aC2DA; - BOPTools_AlgoTools2D::AdjustPCurveOnSurf (*pBAS, aT1, aT2, aC2D, aC2DA); + BOPTools_AlgoTools2D::AdjustPCurveOnSurf (pBAS, aT1, aT2, aC2D, aC2DA); aC2D = aC2DA; // Make sure that the range of the 2D curve is sufficient for representation of the 3D curve. @@ -639,7 +639,7 @@ void BOPTools_AlgoTools2D::MakePCurveOnFace } // compute the appropriate tolerance for the edge - Handle(Geom_Surface) aS = pBAS->Surface().Surface(); + Handle(Geom_Surface) aS = pBAS->Surface()->Surface(); aS = Handle(Geom_Surface)::DownCast(aS->Transformed(pBAS->Trsf())); // Standard_Real aT; diff --git a/src/BOPTools/BOPTools_AlgoTools2D.hxx b/src/BOPTools/BOPTools_AlgoTools2D.hxx index 5e4e8f36f6..120d9cef3f 100644 --- a/src/BOPTools/BOPTools_AlgoTools2D.hxx +++ b/src/BOPTools/BOPTools_AlgoTools2D.hxx @@ -129,7 +129,7 @@ public: //! Adjust P-Curve (3D-curve ) on surface . //! [aT1, aT2] - range to adjust - Standard_EXPORT static void AdjustPCurveOnSurf(const BRepAdaptor_Surface& aF, + Standard_EXPORT static void AdjustPCurveOnSurf(const Handle(BRepAdaptor_Surface)& aF, const Standard_Real aT1, const Standard_Real aT2, const Handle(Geom2d_Curve)& aC2D, diff --git a/src/BOPTools/BOPTools_AlgoTools3D.cxx b/src/BOPTools/BOPTools_AlgoTools3D.cxx index c620cbd701..34ef999c5e 100644 --- a/src/BOPTools/BOPTools_AlgoTools3D.cxx +++ b/src/BOPTools/BOPTools_AlgoTools3D.cxx @@ -961,7 +961,7 @@ Standard_Integer BOPTools_AlgoTools3D::PointInFace // Geom2dHatch_Hatcher& aHatcher = theContext->Hatcher(theF); // - Geom2dAdaptor_Curve aHCur(theL2D); + Handle(Geom2dAdaptor_Curve) aHCur = new Geom2dAdaptor_Curve(theL2D); // aHatcher.ClrHatchings(); aIH = aHatcher.AddHatching(aHCur); diff --git a/src/BOPTools/BOPTools_AlgoTools_1.cxx b/src/BOPTools/BOPTools_AlgoTools_1.cxx index 49357bf62f..c4dc0b1f09 100644 --- a/src/BOPTools/BOPTools_AlgoTools_1.cxx +++ b/src/BOPTools/BOPTools_AlgoTools_1.cxx @@ -488,7 +488,7 @@ static Standard_Real MapEdgeLength(const TopoDS_Edge& theEdge, Standard_Real aLen = 0.; if (!BRep_Tool::Degenerated(theEdge)) { - BRepAdaptor_Curve aCurve(theEdge); + Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve(theEdge); aLen = GCPnts_AbscissaPoint::Length(aCurve); } pLen = theMapEdgeLen.Bound(theEdge, aLen); @@ -505,7 +505,7 @@ namespace { const TopoDS_Edge* Edge; // Edge Standard_Real VParameter; // Parameter of the vertex on the edge Standard_Boolean IsClosed; // Closed flag of the edge - Geom2dAdaptor_Curve GAdaptor; // 2D adaptor for PCurve of the edge on the face + Handle(Geom2dAdaptor_Curve) GAdaptor; // 2D adaptor for PCurve of the edge on the face Standard_Real First; // First parameter in the range Standard_Real Last; // Last parameter in the rage }; @@ -532,10 +532,10 @@ static Standard_Real aMaxDist = 0.; Standard_Real aTol2d = 1.e-10; // - IntRes2d_Domain aDom1(theEData1.GAdaptor.Value(aT11), aT11, aTol2d, - theEData1.GAdaptor.Value(aT12), aT12, aTol2d); - IntRes2d_Domain aDom2(theEData2.GAdaptor.Value(aT21), aT21, aTol2d, - theEData2.GAdaptor.Value(aT22), aT22, aTol2d); + IntRes2d_Domain aDom1(theEData1.GAdaptor->Value(aT11), aT11, aTol2d, + theEData1.GAdaptor->Value(aT12), aT12, aTol2d); + IntRes2d_Domain aDom2(theEData2.GAdaptor->Value(aT21), aT21, aTol2d, + theEData2.GAdaptor->Value(aT22), aT22, aTol2d); // anInter.Perform(theEData1.GAdaptor, aDom1, theEData2.GAdaptor, aDom2, aTol2d, aTol2d); if (!anInter.IsDone() || (!anInter.NbSegments() && !anInter.NbPoints())) { @@ -658,7 +658,7 @@ void CorrectWires(const TopoDS_Face& aFx, if (aD2>aD2max) { aD2max=aD2; } - EdgeData anEData = {&aE, aT, isClosed, Geom2dAdaptor_Curve(aC2D), aT1, aT2}; + EdgeData anEData = {&aE, aT, isClosed, new Geom2dAdaptor_Curve(aC2D), aT1, aT2}; aLEPars.Append(anEData); } // @@ -894,7 +894,7 @@ void CorrectEdgeTolerance (const TopoDS_Edge& myShape, Handle(GeomAdaptor_Curve) aHCurve = new GeomAdaptor_Curve(ProjOnPlane); - ProjLib_ProjectedCurve proj(GAHS,aHCurve); + Handle(ProjLib_ProjectedCurve) proj = new ProjLib_ProjectedCurve(GAHS,aHCurve); Handle(Geom2d_Curve) PC = Geom2dAdaptor::MakeCurve(proj); Handle(Geom2dAdaptor_Curve) GHPC = new Geom2dAdaptor_Curve(PC, diff --git a/src/BRep/BRep_Tool.cxx b/src/BRep/BRep_Tool.cxx index f4d4c59df4..1f92807878 100644 --- a/src/BRep/BRep_Tool.cxx +++ b/src/BRep/BRep_Tool.cxx @@ -398,7 +398,7 @@ Handle(Geom2d_Curve) BRep_Tool::CurveOnPlane(const TopoDS_Edge& E, Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(GP); Handle(GeomAdaptor_Curve) HC = new GeomAdaptor_Curve(ProjOnPlane); - ProjLib_ProjectedCurve Proj(HS, HC); + Handle(ProjLib_ProjectedCurve) Proj = new ProjLib_ProjectedCurve(HS, HC); Handle(Geom2d_Curve) pc = Geom2dAdaptor::MakeCurve(Proj); if (pc->DynamicType() == STANDARD_TYPE(Geom2d_TrimmedCurve)) { diff --git a/src/BRepAdaptor/BRepAdaptor_Array1OfCurve.hxx b/src/BRepAdaptor/BRepAdaptor_Array1OfCurve.hxx index af19ab2bfd..1db335a5ad 100644 --- a/src/BRepAdaptor/BRepAdaptor_Array1OfCurve.hxx +++ b/src/BRepAdaptor/BRepAdaptor_Array1OfCurve.hxx @@ -20,7 +20,7 @@ #include #include -typedef NCollection_Array1 BRepAdaptor_Array1OfCurve; +typedef NCollection_Array1 BRepAdaptor_Array1OfCurve; #endif diff --git a/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx b/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx index 92a732e37c..9d9b5f4d62 100644 --- a/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx +++ b/src/BRepAdaptor/BRepAdaptor_CompCurve.cxx @@ -90,8 +90,8 @@ Handle(Adaptor3d_Curve) BRepAdaptor_CompCurve::ShallowCopy() const 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)); + const Handle(Adaptor3d_Curve) aCurve = myCurves->Value(anI)->ShallowCopy(); + const Handle(BRepAdaptor_Curve) aBrepCurve = Handle(BRepAdaptor_Curve)::DownCast(aCurve); aCopy->myCurves->SetValue(anI, aBrepCurve); } aCopy->myKnots = myKnots; @@ -129,7 +129,7 @@ Handle(Adaptor3d_Curve) BRepAdaptor_CompCurve::ShallowCopy() const E = wexp.Current(); if (! BRep_Tool::Degenerated(E)) { ii++; - myCurves->ChangeValue(ii).Initialize(E); + myCurves->ChangeValue(ii) = new BRepAdaptor_Curve(E); if (AC) { myKnots->SetValue(ii+1, myKnots->Value(ii)); myKnots->ChangeValue(ii+1) += @@ -141,12 +141,12 @@ Handle(Adaptor3d_Curve) BRepAdaptor_CompCurve::ShallowCopy() const Forward = Standard_True; // Default ; The Reverse Edges are parsed. if((NbEdge > 2) || ((NbEdge==2) && (!myWire.Closed())) ) { - TopAbs_Orientation Or = myCurves->Value(1).Edge().Orientation(); + TopAbs_Orientation Or = myCurves->Value(1)->Edge().Orientation(); TopoDS_Vertex VI, VL; - TopExp::CommonVertex(myCurves->Value(1).Edge(), - myCurves->Value(2).Edge(), + TopExp::CommonVertex(myCurves->Value(1)->Edge(), + myCurves->Value(2)->Edge(), VI); - VL = TopExp::LastVertex(myCurves->Value(1).Edge()); + VL = TopExp::LastVertex(myCurves->Value(1)->Edge()); if (VI.IsSame(VL)) { // The direction of parsing is always preserved if (Or == TopAbs_REVERSED) Forward = Standard_False; @@ -182,29 +182,29 @@ Handle(Adaptor3d_Curve) BRepAdaptor_CompCurve::ShallowCopy() const CurIndex = (i1+i2)/2; // Small optimization if (i1==i2) { if (l > f) - HC = Handle(BRepAdaptor_Curve)::DownCast(myCurves->Value(i1).Trim(f, l, PTol)); + HC = Handle(BRepAdaptor_Curve)::DownCast(myCurves->Value(i1)->Trim(f, l, PTol)); else - HC = Handle(BRepAdaptor_Curve)::DownCast(myCurves->Value(i1).Trim(l, f, PTol)); - myCurves->SetValue(i1, *HC); + HC = Handle(BRepAdaptor_Curve)::DownCast(myCurves->Value(i1)->Trim(l, f, PTol)); + myCurves->SetValue(i1, HC); } else { - const BRepAdaptor_Curve& c1 = myCurves->Value(i1); - const BRepAdaptor_Curve& c2 = myCurves->Value(i2); + const Handle(BRepAdaptor_Curve)& c1 = myCurves->Value(i1); + const Handle(BRepAdaptor_Curve)& c2 = myCurves->Value(i2); Standard_Real k; - k = c1.LastParameter(); + k = c1->LastParameter(); if (k>f) - HC = Handle(BRepAdaptor_Curve)::DownCast(c1.Trim(f, k, PTol)); + HC = Handle(BRepAdaptor_Curve)::DownCast(c1->Trim(f, k, PTol)); else - HC = Handle(BRepAdaptor_Curve)::DownCast(c1.Trim(k, f, PTol)); - myCurves->SetValue(i1, *HC); + HC = Handle(BRepAdaptor_Curve)::DownCast(c1->Trim(k, f, PTol)); + myCurves->SetValue(i1, HC); - k = c2.FirstParameter(); + k = c2->FirstParameter(); if (k<=l) - HC = Handle(BRepAdaptor_Curve)::DownCast(c2.Trim(k, l, PTol)); + HC = Handle(BRepAdaptor_Curve)::DownCast(c2->Trim(k, l, PTol)); else - HC = Handle(BRepAdaptor_Curve)::DownCast(c2.Trim(l, k, PTol)); - myCurves->SetValue(i2, *HC); + HC = Handle(BRepAdaptor_Curve)::DownCast(c2->Trim(l, k, PTol)); + myCurves->SetValue(i2, HC); } } @@ -221,7 +221,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Integer index = CurIndex; UonE = U; Prepare(UonE, d, index); - E = myCurves->Value(index).Edge(); + E = myCurves->Value(index)->Edge(); } Standard_Real BRepAdaptor_CompCurve::FirstParameter() const @@ -237,14 +237,14 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const GeomAbs_Shape BRepAdaptor_CompCurve::Continuity() const { if ( myCurves->Length() > 1) return GeomAbs_C0; - return myCurves->Value(1).Continuity(); + return myCurves->Value(1)->Continuity(); } Standard_Integer BRepAdaptor_CompCurve::NbIntervals(const GeomAbs_Shape S) const { Standard_Integer NbInt, ii; for (ii=1, NbInt=0; ii<=myCurves->Length(); ii++) - NbInt += myCurves->ChangeValue(ii).NbIntervals(S); + NbInt += myCurves->ChangeValue(ii)->NbIntervals(S); return NbInt; } @@ -256,9 +256,9 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Real f, F, delta; // First curve (direction of parsing of the edge) - n = myCurves->ChangeValue(1).NbIntervals(S); + n = myCurves->ChangeValue(1)->NbIntervals(S); Handle(TColStd_HArray1OfReal) Ti = new (TColStd_HArray1OfReal) (1, n+1); - myCurves->ChangeValue(1).Intervals(Ti->ChangeArray1(), S); + myCurves->ChangeValue(1)->Intervals(Ti->ChangeArray1(), S); InvPrepare(1, f, delta); F = myKnots->Value(1); if (delta < 0) { @@ -273,9 +273,9 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const // and the next for (ii=2; ii<=myCurves->Length(); ii++) { - n = myCurves->ChangeValue(ii).NbIntervals(S); + n = myCurves->ChangeValue(ii)->NbIntervals(S); if (n != Ti->Length()-1) Ti = new (TColStd_HArray1OfReal) (1, n+1); - myCurves->ChangeValue(ii).Intervals(Ti->ChangeArray1(), S); + myCurves->ChangeValue(ii)->Intervals(Ti->ChangeArray1(), S); InvPrepare(ii, f, delta); F = myKnots->Value(ii); if (delta < 0) { @@ -321,7 +321,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Real u = U, d; Standard_Integer index = CurIndex; Prepare(u, d, index); - return myCurves->Value(index).Value(u); + return myCurves->Value(index)->Value(u); } void BRepAdaptor_CompCurve::D0(const Standard_Real U, @@ -330,7 +330,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Real u = U, d; Standard_Integer index = CurIndex; Prepare(u, d, index); - myCurves->Value(index).D0(u, P); + myCurves->Value(index)->D0(u, P); } void BRepAdaptor_CompCurve::D1(const Standard_Real U, @@ -340,7 +340,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Real u = U, d; Standard_Integer index = CurIndex; Prepare(u, d, index); - myCurves->Value(index).D1(u, P, V); + myCurves->Value(index)->D1(u, P, V); V*=d; } @@ -352,7 +352,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Real u = U, d; Standard_Integer index = CurIndex; Prepare(u, d, index); - myCurves->Value(index).D2(u, P, V1, V2); + myCurves->Value(index)->D2(u, P, V1, V2); V1*=d; V2 *= d*d; } @@ -365,7 +365,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Real u = U, d; Standard_Integer index = CurIndex; Prepare(u, d, index); - myCurves->Value(index).D3(u, P, V1, V2, V3); + myCurves->Value(index)->D3(u, P, V1, V2, V3); V1*=d; V2 *= d*d; V3 *= d*d*d; @@ -378,7 +378,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Integer index = CurIndex; Prepare(u, d, index); - return (myCurves->Value(index).DN(u, N) * Pow(d, N)); + return (myCurves->Value(index)->DN(u, N) * Pow(d, N)); } Standard_Real BRepAdaptor_CompCurve::Resolution(const Standard_Real R3d) const @@ -386,7 +386,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const Standard_Real Res = 1.e200, r; Standard_Integer ii, L = myCurves->Length(); for (ii=1; ii<=L; ii++) { - r = myCurves->Value(ii).Resolution(R3d); + r = myCurves->Value(ii)->Resolution(R3d); if (r < Res) Res = r; } return Res; @@ -401,57 +401,57 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const gp_Lin BRepAdaptor_CompCurve::Line() const { - return myCurves->Value(1).Line(); + return myCurves->Value(1)->Line(); } gp_Circ BRepAdaptor_CompCurve::Circle() const { - return myCurves->Value(1).Circle(); + return myCurves->Value(1)->Circle(); } gp_Elips BRepAdaptor_CompCurve::Ellipse() const { - return myCurves->Value(1).Ellipse(); + return myCurves->Value(1)->Ellipse(); } gp_Hypr BRepAdaptor_CompCurve::Hyperbola() const { - return myCurves->Value(1).Hyperbola(); + return myCurves->Value(1)->Hyperbola(); } gp_Parab BRepAdaptor_CompCurve::Parabola() const { - return myCurves->Value(1).Parabola(); + return myCurves->Value(1)->Parabola(); } Standard_Integer BRepAdaptor_CompCurve::Degree() const { - return myCurves->Value(1).Degree(); + return myCurves->Value(1)->Degree(); } Standard_Boolean BRepAdaptor_CompCurve::IsRational() const { - return myCurves->Value(1).IsRational(); + return myCurves->Value(1)->IsRational(); } Standard_Integer BRepAdaptor_CompCurve::NbPoles() const { - return myCurves->Value(1).NbPoles(); + return myCurves->Value(1)->NbPoles(); } Standard_Integer BRepAdaptor_CompCurve::NbKnots() const { - return myCurves->Value(1).NbKnots(); + return myCurves->Value(1)->NbKnots(); } Handle(Geom_BezierCurve) BRepAdaptor_CompCurve::Bezier() const { - return myCurves->Value(1).Bezier(); + return myCurves->Value(1)->Bezier(); } Handle(Geom_BSplineCurve) BRepAdaptor_CompCurve::BSpline() const { - return myCurves->Value(1).BSpline(); + return myCurves->Value(1)->BSpline(); } //======================================================================= @@ -496,7 +496,7 @@ const TopoDS_Wire& BRepAdaptor_CompCurve::Wire() const } // Invert ? - const TopoDS_Edge& E = myCurves->Value(theCurIndex).Edge(); + const TopoDS_Edge& E = myCurves->Value(theCurIndex)->Edge(); TopAbs_Orientation Or = E.Orientation(); Standard_Boolean Reverse; Reverse = (Forward && (Or == TopAbs_REVERSED)) || @@ -521,7 +521,7 @@ void BRepAdaptor_CompCurve::InvPrepare(const Standard_Integer index, Standard_Real& Delta) const { // Invert? - const TopoDS_Edge& E = myCurves->Value(index).Edge(); + const TopoDS_Edge& E = myCurves->Value(index)->Edge(); TopAbs_Orientation Or = E.Orientation(); Standard_Boolean Reverse; Reverse = (Forward && (Or == TopAbs_REVERSED)) || diff --git a/src/BRepAdaptor/BRepAdaptor_Curve.cxx b/src/BRepAdaptor/BRepAdaptor_Curve.cxx index d82c69d26f..bfa22e44b0 100644 --- a/src/BRepAdaptor/BRepAdaptor_Curve.cxx +++ b/src/BRepAdaptor/BRepAdaptor_Curve.cxx @@ -80,8 +80,8 @@ Handle(Adaptor3d_Curve) BRepAdaptor_Curve::ShallowCopy() const aCopy->myTrsf = myTrsf; - const Handle(Adaptor3d_Curve) aCurve = myCurve.ShallowCopy(); - const GeomAdaptor_Curve& aGeomCurve = *(Handle(GeomAdaptor_Curve)::DownCast(aCurve)); + const Handle(Adaptor3d_Curve) aCurve = myCurve->ShallowCopy(); + const Handle(GeomAdaptor_Curve) aGeomCurve = Handle(GeomAdaptor_Curve)::DownCast(aCurve); aCopy->myCurve = aGeomCurve; if (!myConSurf.IsNull()) @@ -99,7 +99,7 @@ Handle(Adaptor3d_Curve) BRepAdaptor_Curve::ShallowCopy() const //======================================================================= void BRepAdaptor_Curve::Reset() { - myCurve.Reset(); + myCurve->Reset(); myConSurf.Nullify(); myEdge.Nullify(); myTrsf = gp_Trsf(); @@ -120,7 +120,8 @@ void BRepAdaptor_Curve::Initialize(const TopoDS_Edge& E) Handle(Geom_Curve) C = BRep_Tool::Curve(E,L,pf,pl); if (!C.IsNull()) { - myCurve.Load(C,pf,pl); + myCurve = new GeomAdaptor_Curve(); + myCurve->Load(C,pf,pl); } else { Handle(Geom2d_Curve) PC; @@ -147,7 +148,7 @@ void BRepAdaptor_Curve::Initialize(const TopoDS_Edge& E) //======================================================================= void BRepAdaptor_Curve::Initialize(const TopoDS_Edge& E, - const TopoDS_Face& F) + const TopoDS_Face& F) { myConSurf.Nullify(); @@ -202,7 +203,7 @@ Standard_Boolean BRepAdaptor_Curve::IsCurveOnSurface() const //purpose : //======================================================================= -const GeomAdaptor_Curve& BRepAdaptor_Curve::Curve() const +const Handle(GeomAdaptor_Curve)& BRepAdaptor_Curve::Curve() const { return myCurve; } @@ -212,9 +213,9 @@ const GeomAdaptor_Curve& BRepAdaptor_Curve::Curve() const //purpose : //======================================================================= -const Adaptor3d_CurveOnSurface& BRepAdaptor_Curve::CurveOnSurface() const +const Handle(Adaptor3d_CurveOnSurface)& BRepAdaptor_Curve::CurveOnSurface() const { - return *myConSurf; + return myConSurf; } //======================================================================= @@ -245,7 +246,7 @@ Standard_Real BRepAdaptor_Curve::Tolerance() const Standard_Real BRepAdaptor_Curve::FirstParameter() const { if (myConSurf.IsNull()) { - return myCurve.FirstParameter(); + return myCurve->FirstParameter(); } else { return myConSurf->FirstParameter(); @@ -257,10 +258,10 @@ Standard_Real BRepAdaptor_Curve::FirstParameter() const //purpose : //======================================================================= -Standard_Real BRepAdaptor_Curve::LastParameter() const +Standard_Real BRepAdaptor_Curve::LastParameter() const { if (myConSurf.IsNull()) { - return myCurve.LastParameter(); + return myCurve->LastParameter(); } else { return myConSurf->LastParameter(); @@ -275,7 +276,7 @@ Standard_Real BRepAdaptor_Curve::LastParameter() const GeomAbs_Shape BRepAdaptor_Curve::Continuity() const { if (myConSurf.IsNull()) { - return myCurve.Continuity(); + return myCurve->Continuity(); } else { return myConSurf->Continuity(); @@ -290,7 +291,7 @@ GeomAbs_Shape BRepAdaptor_Curve::Continuity() const Standard_Integer BRepAdaptor_Curve::NbIntervals(const GeomAbs_Shape S) const { if (myConSurf.IsNull()) { - return myCurve.NbIntervals(S); + return myCurve->NbIntervals(S); } else { return myConSurf->NbIntervals(S); @@ -306,7 +307,7 @@ void BRepAdaptor_Curve::Intervals(TColStd_Array1OfReal& T, const GeomAbs_Shape S) const { if (myConSurf.IsNull()) { - myCurve.Intervals(T, S); + myCurve->Intervals(T, S); } else { myConSurf->Intervals(T, S); @@ -320,17 +321,16 @@ void BRepAdaptor_Curve::Intervals(TColStd_Array1OfReal& T, //======================================================================= Handle(Adaptor3d_Curve) BRepAdaptor_Curve::Trim(const Standard_Real First, - const Standard_Real Last, - const Standard_Real Tol) const + const Standard_Real Last, + const Standard_Real Tol) const { // On fait une copie de this pour garder la trsf. Handle(BRepAdaptor_Curve) res; if (myConSurf.IsNull()){ - Standard_Real pf = FirstParameter(), pl = LastParameter(); - Handle(Geom_Curve) C = myCurve.Curve(); - const_cast(&myCurve)->Load(C,First,Last); - res = new BRepAdaptor_Curve (*this); - const_cast(&myCurve)->Load(C,pf,pl); + Handle(GeomAdaptor_Curve) aGAC = myCurve; + const_cast(myCurve) = Handle(GeomAdaptor_Curve)::DownCast(myCurve->Trim(First, Last, Tol)); + res = new BRepAdaptor_Curve(*this); + const_cast(myCurve) = aGAC; } else { Handle(Adaptor3d_CurveOnSurface) sav = myConSurf; @@ -350,7 +350,7 @@ Handle(Adaptor3d_Curve) BRepAdaptor_Curve::Trim(const Standard_Real First, Standard_Boolean BRepAdaptor_Curve::IsClosed() const { if (myConSurf.IsNull()) { - return myCurve.IsClosed(); + return myCurve->IsClosed(); } else { return myConSurf->IsClosed(); @@ -365,7 +365,7 @@ Standard_Boolean BRepAdaptor_Curve::IsClosed() const Standard_Boolean BRepAdaptor_Curve::IsPeriodic() const { if (myConSurf.IsNull()) { - return myCurve.IsPeriodic(); + return myCurve->IsPeriodic(); } else { return myConSurf->IsPeriodic(); @@ -380,7 +380,7 @@ Standard_Boolean BRepAdaptor_Curve::IsPeriodic() const Standard_Real BRepAdaptor_Curve::Period() const { if (myConSurf.IsNull()) { - return myCurve.Period(); + return myCurve->Period(); } else { return myConSurf->Period(); @@ -396,7 +396,7 @@ gp_Pnt BRepAdaptor_Curve::Value(const Standard_Real U) const { gp_Pnt P; if (myConSurf.IsNull()) - P = myCurve.Value(U); + P = myCurve->Value(U); else P = myConSurf->Value(U); P.Transform(myTrsf); @@ -411,7 +411,7 @@ gp_Pnt BRepAdaptor_Curve::Value(const Standard_Real U) const void BRepAdaptor_Curve::D0(const Standard_Real U, gp_Pnt& P) const { if (myConSurf.IsNull()) - myCurve.D0(U,P); + myCurve->D0(U,P); else myConSurf->D0(U,P); P.Transform(myTrsf); @@ -423,10 +423,10 @@ void BRepAdaptor_Curve::D0(const Standard_Real U, gp_Pnt& P) const //======================================================================= void BRepAdaptor_Curve::D1(const Standard_Real U, - gp_Pnt& P, gp_Vec& V) const + gp_Pnt& P, gp_Vec& V) const { if (myConSurf.IsNull()) - myCurve.D1(U,P,V); + myCurve->D1(U,P,V); else myConSurf->D1(U,P,V); P.Transform(myTrsf); @@ -439,10 +439,10 @@ void BRepAdaptor_Curve::D1(const Standard_Real U, //======================================================================= void BRepAdaptor_Curve::D2(const Standard_Real U, - gp_Pnt& P, gp_Vec& V1, gp_Vec& V2) const + gp_Pnt& P, gp_Vec& V1, gp_Vec& V2) const { if (myConSurf.IsNull()) - myCurve.D2(U,P,V1,V2); + myCurve->D2(U,P,V1,V2); else myConSurf->D2(U,P,V1,V2); P.Transform(myTrsf); @@ -456,11 +456,11 @@ void BRepAdaptor_Curve::D2(const Standard_Real U, //======================================================================= void BRepAdaptor_Curve::D3(const Standard_Real U, - gp_Pnt& P, - gp_Vec& V1, gp_Vec& V2, gp_Vec& V3) const + gp_Pnt& P, + gp_Vec& V1, gp_Vec& V2, gp_Vec& V3) const { if (myConSurf.IsNull()) - myCurve.D3(U,P,V1,V2,V3); + myCurve->D3(U,P,V1,V2,V3); else myConSurf->D3(U,P,V1,V2,V3); P.Transform(myTrsf); @@ -474,12 +474,12 @@ void BRepAdaptor_Curve::D3(const Standard_Real U, //purpose : //======================================================================= -gp_Vec BRepAdaptor_Curve::DN(const Standard_Real U, - const Standard_Integer N) const +gp_Vec BRepAdaptor_Curve::DN (const Standard_Real U, + const Standard_Integer N) const { gp_Vec V; if (myConSurf.IsNull()) - V = myCurve.DN(U,N); + V = myCurve->DN(U,N); else V = myConSurf->DN(U,N); V.Transform(myTrsf); @@ -494,7 +494,7 @@ gp_Vec BRepAdaptor_Curve::DN(const Standard_Real U, Standard_Real BRepAdaptor_Curve::Resolution(const Standard_Real R) const { if (myConSurf.IsNull()) { - return myCurve.Resolution(R); + return myCurve->Resolution(R); } else { return myConSurf->Resolution(R); @@ -509,7 +509,7 @@ Standard_Real BRepAdaptor_Curve::Resolution(const Standard_Real R) const GeomAbs_CurveType BRepAdaptor_Curve::GetType() const { if (myConSurf.IsNull()) { - return myCurve.GetType(); + return myCurve->GetType(); } else { return myConSurf->GetType(); @@ -525,7 +525,7 @@ gp_Lin BRepAdaptor_Curve::Line() const { gp_Lin L; if (myConSurf.IsNull()) - L = myCurve.Line(); + L = myCurve->Line(); else L = myConSurf->Line(); L.Transform(myTrsf); @@ -541,7 +541,7 @@ gp_Circ BRepAdaptor_Curve::Circle() const { gp_Circ C; if (myConSurf.IsNull()) - C = myCurve.Circle(); + C = myCurve->Circle(); else C = myConSurf->Circle(); C.Transform(myTrsf); @@ -557,7 +557,7 @@ gp_Elips BRepAdaptor_Curve::Ellipse() const { gp_Elips E; if (myConSurf.IsNull()) - E = myCurve.Ellipse(); + E = myCurve->Ellipse(); else E = myConSurf->Ellipse(); E.Transform(myTrsf); @@ -573,7 +573,7 @@ gp_Hypr BRepAdaptor_Curve::Hyperbola() const { gp_Hypr H; if (myConSurf.IsNull()) - H = myCurve.Hyperbola(); + H = myCurve->Hyperbola(); else H = myConSurf->Hyperbola(); H.Transform(myTrsf); @@ -589,7 +589,7 @@ gp_Parab BRepAdaptor_Curve::Parabola() const { gp_Parab P; if (myConSurf.IsNull()) - P = myCurve.Parabola(); + P = myCurve->Parabola(); else P = myConSurf->Parabola(); P.Transform(myTrsf); @@ -604,7 +604,7 @@ gp_Parab BRepAdaptor_Curve::Parabola() const Standard_Integer BRepAdaptor_Curve::Degree() const { if (myConSurf.IsNull()) - return myCurve.Degree(); + return myCurve->Degree(); else return myConSurf->Degree(); } @@ -617,7 +617,7 @@ Standard_Integer BRepAdaptor_Curve::Degree() const Standard_Boolean BRepAdaptor_Curve::IsRational() const { if (myConSurf.IsNull()) - return myCurve.IsRational(); + return myCurve->IsRational(); else return myConSurf->IsRational(); } @@ -629,7 +629,7 @@ Standard_Boolean BRepAdaptor_Curve::IsRational() const Standard_Integer BRepAdaptor_Curve::NbPoles() const { if (myConSurf.IsNull()) - return myCurve.NbPoles(); + return myCurve->NbPoles(); else return myConSurf->NbPoles(); } @@ -641,7 +641,7 @@ Standard_Integer BRepAdaptor_Curve::NbPoles() const Standard_Integer BRepAdaptor_Curve::NbKnots() const { if (myConSurf.IsNull()) - return myCurve.NbKnots(); + return myCurve->NbKnots(); else return myConSurf->NbKnots(); } @@ -655,7 +655,7 @@ Handle(Geom_BezierCurve) BRepAdaptor_Curve::Bezier() const { Handle(Geom_BezierCurve) BC; if (myConSurf.IsNull()) { - BC = myCurve.Bezier(); + BC = myCurve->Bezier(); } else { BC = myConSurf->Bezier(); @@ -674,7 +674,7 @@ Handle(Geom_BSplineCurve) BRepAdaptor_Curve::BSpline() const { Handle(Geom_BSplineCurve) BS; if (myConSurf.IsNull()) { - BS = myCurve.BSpline(); + BS = myCurve->BSpline(); } else { BS = myConSurf->BSpline(); @@ -690,10 +690,10 @@ Handle(Geom_BSplineCurve) BRepAdaptor_Curve::BSpline() const Handle(Geom_OffsetCurve) BRepAdaptor_Curve::OffsetCurve() const { - if ( !Is3DCurve() || myCurve.GetType() != GeomAbs_OffsetCurve) + if ( !Is3DCurve() || myCurve->GetType() != GeomAbs_OffsetCurve) throw Standard_NoSuchObject("BRepAdaptor_Curve::OffsetCurve"); - Handle(Geom_OffsetCurve) anOffC = myCurve.OffsetCurve(); + Handle(Geom_OffsetCurve) anOffC = myCurve->OffsetCurve(); return myTrsf.Form() == gp_Identity ? anOffC : Handle(Geom_OffsetCurve)::DownCast(anOffC->Transformed(myTrsf)); } diff --git a/src/BRepAdaptor/BRepAdaptor_Curve.hxx b/src/BRepAdaptor/BRepAdaptor_Curve.hxx index 642ebc3aef..99212a8a84 100644 --- a/src/BRepAdaptor/BRepAdaptor_Curve.hxx +++ b/src/BRepAdaptor/BRepAdaptor_Curve.hxx @@ -103,10 +103,10 @@ public: Standard_EXPORT Standard_Boolean IsCurveOnSurface() const; //! Returns the Curve of the edge. - Standard_EXPORT const GeomAdaptor_Curve& Curve() const; + Standard_EXPORT const Handle(GeomAdaptor_Curve)& Curve() const; //! Returns the CurveOnSurface of the edge. - Standard_EXPORT const Adaptor3d_CurveOnSurface& CurveOnSurface() const; + Standard_EXPORT const Handle(Adaptor3d_CurveOnSurface)& CurveOnSurface() const; //! Returns the edge. Standard_EXPORT const TopoDS_Edge& Edge() const; @@ -217,7 +217,7 @@ public: private: gp_Trsf myTrsf; - GeomAdaptor_Curve myCurve; + Handle(GeomAdaptor_Curve) myCurve; Handle(Adaptor3d_CurveOnSurface) myConSurf; TopoDS_Edge myEdge; diff --git a/src/BRepAdaptor/BRepAdaptor_Surface.cxx b/src/BRepAdaptor/BRepAdaptor_Surface.cxx index 66d769c103..76754d21d4 100644 --- a/src/BRepAdaptor/BRepAdaptor_Surface.cxx +++ b/src/BRepAdaptor/BRepAdaptor_Surface.cxx @@ -45,6 +45,7 @@ IMPLEMENT_STANDARD_RTTIEXT(BRepAdaptor_Surface, Adaptor3d_Surface) //======================================================================= BRepAdaptor_Surface::BRepAdaptor_Surface() { + mySurf = new GeomAdaptor_Surface(); } @@ -56,6 +57,7 @@ BRepAdaptor_Surface::BRepAdaptor_Surface() BRepAdaptor_Surface::BRepAdaptor_Surface(const TopoDS_Face& F, const Standard_Boolean R) { + mySurf = new GeomAdaptor_Surface(); Initialize(F,R); } @@ -69,9 +71,8 @@ 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; + const Handle(Adaptor3d_Surface) aSurface = mySurf->ShallowCopy(); + aCopy->mySurf = Handle(GeomAdaptor_Surface)::DownCast(aSurface); aCopy->myTrsf = myTrsf; aCopy->myFace = myFace; @@ -95,10 +96,10 @@ void BRepAdaptor_Surface::Initialize(const TopoDS_Face& F, 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(); } @@ -108,23 +109,11 @@ void BRepAdaptor_Surface::Initialize(const TopoDS_Face& F, //purpose : //======================================================================= -const GeomAdaptor_Surface& BRepAdaptor_Surface::Surface() const +const Handle(GeomAdaptor_Surface)& BRepAdaptor_Surface::Surface() const { return mySurf; } - -//======================================================================= -//function : ChangeSurface -//purpose : -//======================================================================= - -GeomAdaptor_Surface& BRepAdaptor_Surface::ChangeSurface() -{ - return mySurf; -} - - //======================================================================= //function : Trsf //purpose : @@ -165,7 +154,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 +166,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 +181,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 +197,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 +210,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 +222,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 +237,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 +257,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 +280,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 +304,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 +314,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 +325,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 +336,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 +347,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 +357,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 +368,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 +380,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 +391,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 +402,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 +414,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 +428,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 +440,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 9ac8e979d8..7fe0222306 100644 --- a/src/BRepAdaptor/BRepAdaptor_Surface.hxx +++ b/src/BRepAdaptor/BRepAdaptor_Surface.hxx @@ -71,10 +71,7 @@ public: Standard_EXPORT void Initialize (const TopoDS_Face& F, const Standard_Boolean Restriction = Standard_True); //! Returns the surface. - Standard_EXPORT const GeomAdaptor_Surface& Surface() const; - - //! Returns the surface. - Standard_EXPORT GeomAdaptor_Surface& ChangeSurface(); + Standard_EXPORT const Handle(GeomAdaptor_Surface)& Surface() const; //! Returns the surface coordinate system. Standard_EXPORT const gp_Trsf& Trsf() const; @@ -85,27 +82,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. @@ -128,17 +125,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. //! Tip: use GeomLib::NormEstim() to calculate surface normal at specified (U, V) point. @@ -174,17 +171,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; @@ -196,21 +193,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; @@ -236,7 +233,7 @@ public: private: - GeomAdaptor_Surface mySurf; + Handle(GeomAdaptor_Surface) mySurf; gp_Trsf myTrsf; TopoDS_Face myFace; diff --git a/src/BRepAlgo/BRepAlgo_NormalProjection.cxx b/src/BRepAlgo/BRepAlgo_NormalProjection.cxx index 65bc1922e0..8e4c32284b 100644 --- a/src/BRepAlgo/BRepAlgo_NormalProjection.cxx +++ b/src/BRepAlgo/BRepAlgo_NormalProjection.cxx @@ -244,7 +244,7 @@ void BRepAlgo_NormalProjection::SetDefaultParams() for(i = 1; i <= NbEdges; i++){ DescenList.Clear(); Handle(BRepAdaptor_Curve) hcur = new BRepAdaptor_Curve (TopoDS::Edge(Edges->Value(i))); - Elementary = IsElementary(*hcur); + Elementary = IsElementary(hcur); for(j = 1; j <= NbFaces; j++){ Handle(BRepAdaptor_Surface) hsur = new BRepAdaptor_Surface (TopoDS::Face(Faces->Value(j))); @@ -627,10 +627,10 @@ void BRepAlgo_NormalProjection::SetDefaultParams() //purpose : //======================================================================= - Standard_Boolean BRepAlgo_NormalProjection::IsElementary(const Adaptor3d_Curve& C) const + Standard_Boolean BRepAlgo_NormalProjection::IsElementary(const Handle(Adaptor3d_Curve)& C) const { GeomAbs_CurveType type; - type = C.GetType(); + type = C->GetType(); switch(type) { case GeomAbs_Line: case GeomAbs_Circle: diff --git a/src/BRepAlgo/BRepAlgo_NormalProjection.hxx b/src/BRepAlgo/BRepAlgo_NormalProjection.hxx index b91fb0d974..eeabba5f88 100644 --- a/src/BRepAlgo/BRepAlgo_NormalProjection.hxx +++ b/src/BRepAlgo/BRepAlgo_NormalProjection.hxx @@ -92,7 +92,7 @@ public: //! shape . Standard_EXPORT const TopTools_ListOfShape& Generated (const TopoDS_Shape& S); - Standard_EXPORT Standard_Boolean IsElementary (const Adaptor3d_Curve& C) const; + Standard_EXPORT Standard_Boolean IsElementary (const Handle(Adaptor3d_Curve)& C) const; //! build the result as a list of wire if possible in -- //! a first returns a wire only if there is only a wire. diff --git a/src/BRepApprox/BRepApprox_Approx.hxx b/src/BRepApprox/BRepApprox_Approx.hxx index f657cea66e..f23e338a3d 100644 --- a/src/BRepApprox/BRepApprox_Approx.hxx +++ b/src/BRepApprox/BRepApprox_Approx.hxx @@ -79,7 +79,7 @@ public: Standard_EXPORT BRepApprox_Approx(); - Standard_EXPORT void Perform (const BRepAdaptor_Surface& Surf1, const BRepAdaptor_Surface& Surf2, const Handle(BRepApprox_ApproxLine)& aLine, const Standard_Boolean ApproxXYZ = Standard_True, const Standard_Boolean ApproxU1V1 = Standard_True, const Standard_Boolean ApproxU2V2 = Standard_True, const Standard_Integer indicemin = 0, const Standard_Integer indicemax = 0); + Standard_EXPORT void Perform (const Handle(BRepAdaptor_Surface)& Surf1, const Handle(BRepAdaptor_Surface)& Surf2, const Handle(BRepApprox_ApproxLine)& aLine, const Standard_Boolean ApproxXYZ = Standard_True, const Standard_Boolean ApproxU1V1 = Standard_True, const Standard_Boolean ApproxU2V2 = Standard_True, const Standard_Integer indicemin = 0, const Standard_Integer indicemax = 0); Standard_EXPORT void Perform (const Handle(BRepApprox_ApproxLine)& aLine, const Standard_Boolean ApproxXYZ = Standard_True, const Standard_Boolean ApproxU1V1 = Standard_True, const Standard_Boolean ApproxU2V2 = Standard_True, const Standard_Integer indicemin = 0, const Standard_Integer indicemax = 0); @@ -120,7 +120,7 @@ protected: private: - Standard_EXPORT void Perform (const IntSurf_Quadric& Surf1, const BRepAdaptor_Surface& Surf2, const Handle(BRepApprox_ApproxLine)& aLine, const Standard_Boolean ApproxXYZ, const Standard_Boolean ApproxU1V1, const Standard_Boolean ApproxU2V2, const Standard_Integer indicemin, const Standard_Integer indicemax, const Standard_Boolean isTheQuadFirst); + Standard_EXPORT void Perform (const IntSurf_Quadric& Surf1, const Handle(BRepAdaptor_Surface)& Surf2, const Handle(BRepApprox_ApproxLine)& aLine, const Standard_Boolean ApproxXYZ, const Standard_Boolean ApproxU1V1, const Standard_Boolean ApproxU2V2, const Standard_Integer indicemin, const Standard_Integer indicemax, const Standard_Boolean isTheQuadFirst); Standard_EXPORT void UpdateTolReached(); diff --git a/src/BRepApprox/BRepApprox_Approx_0.cxx b/src/BRepApprox/BRepApprox_Approx_0.cxx index 84a7ba36ca..3cf80be598 100644 --- a/src/BRepApprox/BRepApprox_Approx_0.cxx +++ b/src/BRepApprox/BRepApprox_Approx_0.cxx @@ -37,7 +37,7 @@ #include -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepApprox/BRepApprox_SurfaceTool.cxx b/src/BRepApprox/BRepApprox_SurfaceTool.cxx index 180b2a89a2..3fe0dab784 100644 --- a/src/BRepApprox/BRepApprox_SurfaceTool.cxx +++ b/src/BRepApprox/BRepApprox_SurfaceTool.cxx @@ -19,24 +19,24 @@ #include #include -Standard_Integer BRepApprox_SurfaceTool::NbSamplesU (const BRepAdaptor_Surface&) +Standard_Integer BRepApprox_SurfaceTool::NbSamplesU (const Handle(BRepAdaptor_Surface)&) { return(10); } -Standard_Integer BRepApprox_SurfaceTool::NbSamplesV (const BRepAdaptor_Surface&) +Standard_Integer BRepApprox_SurfaceTool::NbSamplesV (const Handle(BRepAdaptor_Surface)&) { return(10); } -Standard_Integer BRepApprox_SurfaceTool::NbSamplesU (const BRepAdaptor_Surface&, +Standard_Integer BRepApprox_SurfaceTool::NbSamplesU (const Handle(BRepAdaptor_Surface)&, const Standard_Real, const Standard_Real) { return(10); } -Standard_Integer BRepApprox_SurfaceTool::NbSamplesV (const BRepAdaptor_Surface&, +Standard_Integer BRepApprox_SurfaceTool::NbSamplesV (const Handle(BRepAdaptor_Surface)&, const Standard_Real, const Standard_Real) { diff --git a/src/BRepApprox/BRepApprox_SurfaceTool.hxx b/src/BRepApprox/BRepApprox_SurfaceTool.hxx index b41da2a545..00f4f8755f 100644 --- a/src/BRepApprox/BRepApprox_SurfaceTool.hxx +++ b/src/BRepApprox/BRepApprox_SurfaceTool.hxx @@ -41,85 +41,85 @@ public: DEFINE_STANDARD_ALLOC - static Standard_Real FirstUParameter (const BRepAdaptor_Surface& S); + static Standard_Real FirstUParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real FirstVParameter (const BRepAdaptor_Surface& S); + static Standard_Real FirstVParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real LastUParameter (const BRepAdaptor_Surface& S); + static Standard_Real LastUParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real LastVParameter (const BRepAdaptor_Surface& S); + static Standard_Real LastVParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer NbUIntervals (const BRepAdaptor_Surface& S, const GeomAbs_Shape Sh); + static Standard_Integer NbUIntervals (const Handle(BRepAdaptor_Surface)& S, const GeomAbs_Shape Sh); - static Standard_Integer NbVIntervals (const BRepAdaptor_Surface& S, const GeomAbs_Shape Sh); + static Standard_Integer NbVIntervals (const Handle(BRepAdaptor_Surface)& S, const GeomAbs_Shape Sh); - static void UIntervals (const BRepAdaptor_Surface& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); + static void UIntervals (const Handle(BRepAdaptor_Surface)& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); - static void VIntervals (const BRepAdaptor_Surface& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); + static void VIntervals (const Handle(BRepAdaptor_Surface)& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); //! If >= - static Handle(Adaptor3d_Surface) UTrim (const BRepAdaptor_Surface& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); + static Handle(Adaptor3d_Surface) UTrim (const Handle(BRepAdaptor_Surface)& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); //! If >= - static Handle(Adaptor3d_Surface) VTrim (const BRepAdaptor_Surface& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); + static Handle(Adaptor3d_Surface) VTrim (const Handle(BRepAdaptor_Surface)& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); - static Standard_Boolean IsUClosed (const BRepAdaptor_Surface& S); + static Standard_Boolean IsUClosed (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsVClosed (const BRepAdaptor_Surface& S); + static Standard_Boolean IsVClosed (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsUPeriodic (const BRepAdaptor_Surface& S); + static Standard_Boolean IsUPeriodic (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real UPeriod (const BRepAdaptor_Surface& S); + static Standard_Real UPeriod (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsVPeriodic (const BRepAdaptor_Surface& S); + static Standard_Boolean IsVPeriodic (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real VPeriod (const BRepAdaptor_Surface& S); + static Standard_Real VPeriod (const Handle(BRepAdaptor_Surface)& S); - static gp_Pnt Value (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v); + static gp_Pnt Value (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v); - static void D0 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P); + static void D0 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P); - static void D1 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1u, gp_Vec& D1v); + static void D1 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1u, gp_Vec& D1v); - static void D2 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV); + static void D2 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV); - static void D3 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV); + static void D3 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV); - static gp_Vec DN (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, const Standard_Integer Nu, const Standard_Integer Nv); + static gp_Vec DN (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, const Standard_Integer Nu, const Standard_Integer Nv); - static Standard_Real UResolution (const BRepAdaptor_Surface& S, const Standard_Real R3d); + static Standard_Real UResolution (const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d); - static Standard_Real VResolution (const BRepAdaptor_Surface& S, const Standard_Real R3d); + static Standard_Real VResolution (const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d); - static GeomAbs_SurfaceType GetType (const BRepAdaptor_Surface& S); + static GeomAbs_SurfaceType GetType (const Handle(BRepAdaptor_Surface)& S); - static gp_Pln Plane (const BRepAdaptor_Surface& S); + static gp_Pln Plane (const Handle(BRepAdaptor_Surface)& S); - static gp_Cylinder Cylinder (const BRepAdaptor_Surface& S); + static gp_Cylinder Cylinder (const Handle(BRepAdaptor_Surface)& S); - static gp_Cone Cone (const BRepAdaptor_Surface& S); + static gp_Cone Cone (const Handle(BRepAdaptor_Surface)& S); - static gp_Torus Torus (const BRepAdaptor_Surface& S); + static gp_Torus Torus (const Handle(BRepAdaptor_Surface)& S); - static gp_Sphere Sphere (const BRepAdaptor_Surface& S); + static gp_Sphere Sphere (const Handle(BRepAdaptor_Surface)& S); - static Handle(Geom_BezierSurface) Bezier (const BRepAdaptor_Surface& S); + static Handle(Geom_BezierSurface) Bezier (const Handle(BRepAdaptor_Surface)& S); - static Handle(Geom_BSplineSurface) BSpline (const BRepAdaptor_Surface& S); + static Handle(Geom_BSplineSurface) BSpline (const Handle(BRepAdaptor_Surface)& S); - static gp_Ax1 AxeOfRevolution (const BRepAdaptor_Surface& S); + static gp_Ax1 AxeOfRevolution (const Handle(BRepAdaptor_Surface)& S); - static gp_Dir Direction (const BRepAdaptor_Surface& S); + static gp_Dir Direction (const Handle(BRepAdaptor_Surface)& S); - static Handle(Adaptor3d_Curve) BasisCurve (const BRepAdaptor_Surface& S); + static Handle(Adaptor3d_Curve) BasisCurve (const Handle(BRepAdaptor_Surface)& S); - Standard_EXPORT static Standard_Integer NbSamplesU (const BRepAdaptor_Surface& S); + Standard_EXPORT static Standard_Integer NbSamplesU (const Handle(BRepAdaptor_Surface)& S); - Standard_EXPORT static Standard_Integer NbSamplesV (const BRepAdaptor_Surface& S); + Standard_EXPORT static Standard_Integer NbSamplesV (const Handle(BRepAdaptor_Surface)& S); - Standard_EXPORT static Standard_Integer NbSamplesU (const BRepAdaptor_Surface& S, const Standard_Real u1, const Standard_Real u2); + Standard_EXPORT static Standard_Integer NbSamplesU (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u1, const Standard_Real u2); - Standard_EXPORT static Standard_Integer NbSamplesV (const BRepAdaptor_Surface& S, const Standard_Real v1, const Standard_Real v2); + Standard_EXPORT static Standard_Integer NbSamplesV (const Handle(BRepAdaptor_Surface)& S, const Standard_Real v1, const Standard_Real v2); diff --git a/src/BRepApprox/BRepApprox_SurfaceTool.lxx b/src/BRepApprox/BRepApprox_SurfaceTool.lxx index 56daedd75e..8b89a805a2 100644 --- a/src/BRepApprox/BRepApprox_SurfaceTool.lxx +++ b/src/BRepApprox/BRepApprox_SurfaceTool.lxx @@ -28,107 +28,107 @@ #include #include -inline Standard_Real BRepApprox_SurfaceTool::FirstUParameter(const BRepAdaptor_Surface& Surf){ return Surf.FirstUParameter(); } -inline Standard_Real BRepApprox_SurfaceTool::FirstVParameter(const BRepAdaptor_Surface& Surf){ return Surf.FirstVParameter();} -inline Standard_Real BRepApprox_SurfaceTool::LastUParameter(const BRepAdaptor_Surface& Surf){ return Surf.LastUParameter();} -inline Standard_Real BRepApprox_SurfaceTool::LastVParameter(const BRepAdaptor_Surface& Surf){ return Surf.LastVParameter();} +inline Standard_Real BRepApprox_SurfaceTool::FirstUParameter(const Handle(BRepAdaptor_Surface)& Surf){ return Surf->FirstUParameter(); } +inline Standard_Real BRepApprox_SurfaceTool::FirstVParameter(const Handle(BRepAdaptor_Surface)& Surf){ return Surf->FirstVParameter();} +inline Standard_Real BRepApprox_SurfaceTool::LastUParameter(const Handle(BRepAdaptor_Surface)& Surf){ return Surf->LastUParameter();} +inline Standard_Real BRepApprox_SurfaceTool::LastVParameter(const Handle(BRepAdaptor_Surface)& Surf){ return Surf->LastVParameter();} -inline Standard_Integer BRepApprox_SurfaceTool::NbUIntervals(const BRepAdaptor_Surface& Surf, +inline Standard_Integer BRepApprox_SurfaceTool::NbUIntervals(const Handle(BRepAdaptor_Surface)& Surf, const GeomAbs_Shape S){ - return Surf.NbUIntervals(S); + return Surf->NbUIntervals(S); } -inline Standard_Integer BRepApprox_SurfaceTool::NbVIntervals(const BRepAdaptor_Surface& Surf, +inline Standard_Integer BRepApprox_SurfaceTool::NbVIntervals(const Handle(BRepAdaptor_Surface)& Surf, const GeomAbs_Shape S){ - return Surf.NbVIntervals(S); + return Surf->NbVIntervals(S); } -inline void BRepApprox_SurfaceTool::UIntervals(const BRepAdaptor_Surface& Surf, +inline void BRepApprox_SurfaceTool::UIntervals(const Handle(BRepAdaptor_Surface)& Surf, TColStd_Array1OfReal& Tab, const GeomAbs_Shape S){ - Surf.UIntervals(Tab,S); + Surf->UIntervals(Tab,S); } -inline void BRepApprox_SurfaceTool::VIntervals(const BRepAdaptor_Surface& Surf, +inline void BRepApprox_SurfaceTool::VIntervals(const Handle(BRepAdaptor_Surface)& Surf, TColStd_Array1OfReal& Tab, const GeomAbs_Shape S){ - Surf.VIntervals(Tab,S); + Surf->VIntervals(Tab,S); } -inline Handle(Adaptor3d_Surface) BRepApprox_SurfaceTool::UTrim(const BRepAdaptor_Surface& Surf, +inline Handle(Adaptor3d_Surface) BRepApprox_SurfaceTool::UTrim(const Handle(BRepAdaptor_Surface)& Surf, const Standard_Real F, const Standard_Real L, const Standard_Real Tol) { - return Surf.UTrim(F,L,Tol); + return Surf->UTrim(F,L,Tol); } -inline Handle(Adaptor3d_Surface) BRepApprox_SurfaceTool::VTrim(const BRepAdaptor_Surface& Surf, +inline Handle(Adaptor3d_Surface) BRepApprox_SurfaceTool::VTrim(const Handle(BRepAdaptor_Surface)& Surf, const Standard_Real F, const Standard_Real L, const Standard_Real Tol) { - return Surf.VTrim(F,L,Tol); + return Surf->VTrim(F,L,Tol); } -inline Standard_Boolean BRepApprox_SurfaceTool::IsUClosed(const BRepAdaptor_Surface& S) +inline Standard_Boolean BRepApprox_SurfaceTool::IsUClosed(const Handle(BRepAdaptor_Surface)& S) { - return S.IsUClosed(); + return S->IsUClosed(); } -inline Standard_Boolean BRepApprox_SurfaceTool::IsVClosed(const BRepAdaptor_Surface& S) +inline Standard_Boolean BRepApprox_SurfaceTool::IsVClosed(const Handle(BRepAdaptor_Surface)& S) { - return S.IsVClosed(); + return S->IsVClosed(); } -inline Standard_Boolean BRepApprox_SurfaceTool::IsUPeriodic(const BRepAdaptor_Surface& S) +inline Standard_Boolean BRepApprox_SurfaceTool::IsUPeriodic(const Handle(BRepAdaptor_Surface)& S) { - return S.IsUPeriodic(); + return S->IsUPeriodic(); } -inline Standard_Real BRepApprox_SurfaceTool::UPeriod(const BRepAdaptor_Surface& S) +inline Standard_Real BRepApprox_SurfaceTool::UPeriod(const Handle(BRepAdaptor_Surface)& S) { - return S.UPeriod(); + return S->UPeriod(); } -inline Standard_Boolean BRepApprox_SurfaceTool::IsVPeriodic(const BRepAdaptor_Surface& S) +inline Standard_Boolean BRepApprox_SurfaceTool::IsVPeriodic(const Handle(BRepAdaptor_Surface)& S) { - return S.IsVPeriodic(); + return S->IsVPeriodic(); } -inline Standard_Real BRepApprox_SurfaceTool::VPeriod(const BRepAdaptor_Surface& S) +inline Standard_Real BRepApprox_SurfaceTool::VPeriod(const Handle(BRepAdaptor_Surface)& S) { - return S.VPeriod(); + return S->VPeriod(); } -inline gp_Pnt BRepApprox_SurfaceTool::Value(const BRepAdaptor_Surface& S, +inline gp_Pnt BRepApprox_SurfaceTool::Value(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V ) { - return S.Value(U,V); + return S->Value(U,V); } -inline void BRepApprox_SurfaceTool::D0(const BRepAdaptor_Surface& S, +inline void BRepApprox_SurfaceTool::D0(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P) { - S.D0(U,V,P); + S->D0(U,V,P); } -inline void BRepApprox_SurfaceTool::D1(const BRepAdaptor_Surface& S, +inline void BRepApprox_SurfaceTool::D1(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V) { - S.D1(U,V,P,D1U,D1V); + S->D1(U,V,P,D1U,D1V); } -inline void BRepApprox_SurfaceTool::D2(const BRepAdaptor_Surface& S, +inline void BRepApprox_SurfaceTool::D2(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, @@ -138,10 +138,10 @@ inline void BRepApprox_SurfaceTool::D2(const BRepAdaptor_Surface& S, gp_Vec& D2V, gp_Vec& D2UV) { - S.D2(U,V,P,D1U,D1V,D2U,D2V,D2UV); + S->D2(U,V,P,D1U,D1V,D2U,D2V,D2UV); } -inline void BRepApprox_SurfaceTool::D3(const BRepAdaptor_Surface& S, +inline void BRepApprox_SurfaceTool::D3(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, @@ -155,78 +155,78 @@ inline void BRepApprox_SurfaceTool::D3(const BRepAdaptor_Surface& S, gp_Vec& D3UUV, gp_Vec& D3UVV) { - S.D3(U,V,P,D1U,D1V,D2U,D2V,D2UV,D3U,D3V,D3UUV,D3UVV); + S->D3(U,V,P,D1U,D1V,D2U,D2V,D2UV,D3U,D3V,D3UUV,D3UVV); } -inline gp_Vec BRepApprox_SurfaceTool::DN(const BRepAdaptor_Surface& S, +inline gp_Vec BRepApprox_SurfaceTool::DN(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, const Standard_Integer Nu, const Standard_Integer Nv) { - return S.DN(U,V,Nu,Nv); + return S->DN(U,V,Nu,Nv); } -inline Standard_Real BRepApprox_SurfaceTool::UResolution(const BRepAdaptor_Surface& S, +inline Standard_Real BRepApprox_SurfaceTool::UResolution(const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d) { - return S.UResolution(R3d); + return S->UResolution(R3d); } -inline Standard_Real BRepApprox_SurfaceTool::VResolution(const BRepAdaptor_Surface& S, +inline Standard_Real BRepApprox_SurfaceTool::VResolution(const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d) { - return S.VResolution(R3d); + return S->VResolution(R3d); } -inline GeomAbs_SurfaceType BRepApprox_SurfaceTool::GetType(const BRepAdaptor_Surface& S ) +inline GeomAbs_SurfaceType BRepApprox_SurfaceTool::GetType(const Handle(BRepAdaptor_Surface)& S ) { - return S.GetType(); + return S->GetType(); } -inline gp_Pln BRepApprox_SurfaceTool::Plane(const BRepAdaptor_Surface& S) +inline gp_Pln BRepApprox_SurfaceTool::Plane(const Handle(BRepAdaptor_Surface)& S) { - return S.Plane(); + return S->Plane(); } -inline gp_Cylinder BRepApprox_SurfaceTool::Cylinder(const BRepAdaptor_Surface& S) +inline gp_Cylinder BRepApprox_SurfaceTool::Cylinder(const Handle(BRepAdaptor_Surface)& S) { - return S.Cylinder(); + return S->Cylinder(); } -inline gp_Cone BRepApprox_SurfaceTool::Cone(const BRepAdaptor_Surface& S) +inline gp_Cone BRepApprox_SurfaceTool::Cone(const Handle(BRepAdaptor_Surface)& S) { - return S.Cone(); + return S->Cone(); } -inline gp_Sphere BRepApprox_SurfaceTool::Sphere(const BRepAdaptor_Surface& S) +inline gp_Sphere BRepApprox_SurfaceTool::Sphere(const Handle(BRepAdaptor_Surface)& S) { - return S.Sphere(); + return S->Sphere(); } -inline gp_Torus BRepApprox_SurfaceTool::Torus(const BRepAdaptor_Surface& S) +inline gp_Torus BRepApprox_SurfaceTool::Torus(const Handle(BRepAdaptor_Surface)& S) { - return S.Torus(); + return S->Torus(); } -inline Handle(Geom_BezierSurface) BRepApprox_SurfaceTool::Bezier(const BRepAdaptor_Surface& S) { - return(S.Bezier()); +inline Handle(Geom_BezierSurface) BRepApprox_SurfaceTool::Bezier(const Handle(BRepAdaptor_Surface)& S) { + return(S->Bezier()); } -inline Handle(Geom_BSplineSurface) BRepApprox_SurfaceTool::BSpline(const BRepAdaptor_Surface& S) { - return(S.BSpline()); +inline Handle(Geom_BSplineSurface) BRepApprox_SurfaceTool::BSpline(const Handle(BRepAdaptor_Surface)& S) { + return(S->BSpline()); } -inline gp_Ax1 BRepApprox_SurfaceTool::AxeOfRevolution(const BRepAdaptor_Surface& S) { - return(S.AxeOfRevolution()); +inline gp_Ax1 BRepApprox_SurfaceTool::AxeOfRevolution(const Handle(BRepAdaptor_Surface)& S) { + return(S->AxeOfRevolution()); } -inline gp_Dir BRepApprox_SurfaceTool::Direction(const BRepAdaptor_Surface& S) { - return(S.Direction()); +inline gp_Dir BRepApprox_SurfaceTool::Direction(const Handle(BRepAdaptor_Surface)& S) { + return(S->Direction()); } -inline Handle(Adaptor3d_Curve) BRepApprox_SurfaceTool::BasisCurve(const BRepAdaptor_Surface& S) { - return(S.BasisCurve()); +inline Handle(Adaptor3d_Curve) BRepApprox_SurfaceTool::BasisCurve(const Handle(BRepAdaptor_Surface)& S) { + return(S->BasisCurve()); } diff --git a/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx b/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx index c36d415774..02b9d77975 100644 --- a/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx +++ b/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx @@ -42,7 +42,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox(const BRepAdaptor_Surface& S1, const BRepAdaptor_Surface& S2); + Standard_EXPORT BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox(const Handle(BRepAdaptor_Surface)& S1, const Handle(BRepAdaptor_Surface)& S2); Standard_EXPORT Standard_Integer NbVariables() const; @@ -69,9 +69,9 @@ public: gp_Dir2d DirectionOnS2() const; - const BRepAdaptor_Surface& AuxillarSurface1() const; + const Handle(BRepAdaptor_Surface) AuxillarSurface1() const; - const BRepAdaptor_Surface& AuxillarSurface2() const; + const Handle(BRepAdaptor_Surface) AuxillarSurface2() const; @@ -113,7 +113,7 @@ private: }; -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx b/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx index 6d28e71f90..ce39656048 100644 --- a/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx +++ b/src/BRepApprox/BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx @@ -23,7 +23,7 @@ #include -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox.hxx b/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox.hxx index ff53052dbd..5a5922c87e 100644 --- a/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox.hxx +++ b/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox.hxx @@ -47,9 +47,9 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT BRepApprox_TheImpPrmSvSurfacesOfApprox(const BRepAdaptor_Surface& Surf1, const IntSurf_Quadric& Surf2); + Standard_EXPORT BRepApprox_TheImpPrmSvSurfacesOfApprox(const Handle(BRepAdaptor_Surface)& Surf1, const IntSurf_Quadric& Surf2); - Standard_EXPORT BRepApprox_TheImpPrmSvSurfacesOfApprox(const IntSurf_Quadric& Surf1, const BRepAdaptor_Surface& Surf2); + Standard_EXPORT BRepApprox_TheImpPrmSvSurfacesOfApprox(const IntSurf_Quadric& Surf1, const Handle(BRepAdaptor_Surface)& Surf2); //! returns True if Tg,Tguv1 Tguv2 can be computed. Standard_EXPORT Standard_Boolean Compute (Standard_Real& u1, Standard_Real& v1, Standard_Real& u2, Standard_Real& v2, diff --git a/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox_0.cxx b/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox_0.cxx index b1c7bfe43e..b0c56d4f58 100644 --- a/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox_0.cxx +++ b/src/BRepApprox/BRepApprox_TheImpPrmSvSurfacesOfApprox_0.cxx @@ -27,7 +27,7 @@ #include -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx b/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx index 57c427ffab..4763da946a 100644 --- a/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx +++ b/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox.hxx @@ -47,7 +47,7 @@ public: DEFINE_STANDARD_ALLOC //! compute the solution point with the close point - Standard_EXPORT BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox(const TColStd_Array1OfReal& Param, const BRepAdaptor_Surface& S1, const BRepAdaptor_Surface& S2, const Standard_Real TolTangency); + Standard_EXPORT BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox(const TColStd_Array1OfReal& Param, const Handle(BRepAdaptor_Surface)& S1, const Handle(BRepAdaptor_Surface)& S2, const Standard_Real TolTangency); //! initialize the parameters to compute the solution point //! it 's possible to write to optimize: @@ -59,7 +59,7 @@ public: //! param(3)=... //! inter.Perform(Param,rsnld); //! } - Standard_EXPORT BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox(const BRepAdaptor_Surface& S1, const BRepAdaptor_Surface& S2, const Standard_Real TolTangency); + Standard_EXPORT BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox(const Handle(BRepAdaptor_Surface)& S1, const Handle(BRepAdaptor_Surface)& S2, const Standard_Real TolTangency); //! returns the best constant isoparametric to find //! the next intersection's point +stores the solution diff --git a/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx b/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx index af92d6c290..cbe79f72ad 100644 --- a/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx +++ b/src/BRepApprox/BRepApprox_TheInt2SOfThePrmPrmSvSurfacesOfApprox_0.cxx @@ -29,7 +29,7 @@ #include -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox.hxx b/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox.hxx index b99a68391c..3dec3730fb 100644 --- a/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox.hxx +++ b/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox.hxx @@ -46,7 +46,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT BRepApprox_ThePrmPrmSvSurfacesOfApprox(const BRepAdaptor_Surface& Surf1, const BRepAdaptor_Surface& Surf2); + Standard_EXPORT BRepApprox_ThePrmPrmSvSurfacesOfApprox(const Handle(BRepAdaptor_Surface)& Surf1, const Handle(BRepAdaptor_Surface)& Surf2); //! returns True if Tg,Tguv1 Tguv2 can be computed. Standard_EXPORT Standard_Boolean Compute (Standard_Real& u1, Standard_Real& v1, Standard_Real& u2, Standard_Real& v2, diff --git a/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox_0.cxx b/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox_0.cxx index f9ede77dfe..71205f0d35 100644 --- a/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox_0.cxx +++ b/src/BRepApprox/BRepApprox_ThePrmPrmSvSurfacesOfApprox_0.cxx @@ -26,7 +26,7 @@ #include -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox.hxx b/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox.hxx index de37d98a3d..bcafff85aa 100644 --- a/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox.hxx +++ b/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox.hxx @@ -46,11 +46,11 @@ public: Standard_EXPORT BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox(); - Standard_EXPORT BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox(const BRepAdaptor_Surface& PS, const IntSurf_Quadric& IS); + Standard_EXPORT BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox(const Handle(BRepAdaptor_Surface)& PS, const IntSurf_Quadric& IS); Standard_EXPORT BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox(const IntSurf_Quadric& IS); - void Set (const BRepAdaptor_Surface& PS); + void Set (const Handle(BRepAdaptor_Surface)& PS); void SetImplicitSurface (const IntSurf_Quadric& IS); @@ -80,7 +80,7 @@ public: const gp_Dir2d& Direction2d(); - const BRepAdaptor_Surface& PSurface() const; + const Handle(BRepAdaptor_Surface) PSurface() const; const IntSurf_Quadric& ISurface() const; @@ -118,7 +118,7 @@ private: }; -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox_0.cxx b/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox_0.cxx index bb9127908c..e42fd4dd78 100644 --- a/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox_0.cxx +++ b/src/BRepApprox/BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox_0.cxx @@ -27,7 +27,7 @@ #include -#define ThePSurface BRepAdaptor_Surface +#define ThePSurface Handle(BRepAdaptor_Surface) #define ThePSurface_hxx #define ThePSurfaceTool BRepApprox_SurfaceTool #define ThePSurfaceTool_hxx diff --git a/src/BRepBlend/BRepBlend_BlendTool.cxx b/src/BRepBlend/BRepBlend_BlendTool.cxx index ecd458bc7b..0e721c31b5 100644 --- a/src/BRepBlend/BRepBlend_BlendTool.cxx +++ b/src/BRepBlend/BRepBlend_BlendTool.cxx @@ -56,7 +56,7 @@ Standard_Boolean BRepBlend_BlendTool::Project(const gp_Pnt2d& P, const Standard_Real epsX = 1.e-8; const Standard_Integer Nbu = 20; const Standard_Real Tol = 1.e-5; - Extrema_EPCOfExtPC2d extrema(P, *C, Nbu, epsX, Tol); + Extrema_EPCOfExtPC2d extrema(P, C, Nbu, epsX, Tol); if (!extrema.IsDone()) return Standard_True; @@ -91,9 +91,9 @@ Standard_Boolean BRepBlend_BlendTool::Inters(const gp_Pnt2d& P1, gp_Dir2d d(v); Handle(Geom2d_Line) bid = new Geom2d_Line(P1,d); - Geom2dAdaptor_Curve seg(bid,-0.01*mag,1.01*mag); + Handle(Geom2dAdaptor_Curve) seg = new Geom2dAdaptor_Curve(bid,-0.01*mag,1.01*mag); - Geom2dInt_GInter inter (seg, *C, Tol, Tol); + Geom2dInt_GInter inter (seg, C, Tol, Tol); if (!inter.IsDone()) return Standard_False; diff --git a/src/BRepBndLib/BRepBndLib.cxx b/src/BRepBndLib/BRepBndLib.cxx index e8e3a98708..fa7b685b3f 100644 --- a/src/BRepBndLib/BRepBndLib.cxx +++ b/src/BRepBndLib/BRepBndLib.cxx @@ -45,7 +45,7 @@ #include #include // -static Standard_Boolean CanUseEdges(const Adaptor3d_Surface& BS); +static Standard_Boolean CanUseEdges(const Handle(Adaptor3d_Surface)& BS); // static void FindExactUVBounds(const TopoDS_Face F, Standard_Real& umin, Standard_Real& umax, @@ -53,13 +53,13 @@ static void FindExactUVBounds(const TopoDS_Face F, const Standard_Real Tol, Standard_Boolean& isNaturalRestriction); // -static void AdjustFaceBox(const BRepAdaptor_Surface& BS, +static void AdjustFaceBox(const Handle(BRepAdaptor_Surface)& BS, const Standard_Real umin, const Standard_Real umax, const Standard_Real vmin, const Standard_Real vmax, Bnd_Box& FaceBox, const Bnd_Box& EdgeBox, const Standard_Real Tol); // -static Standard_Boolean IsModifySize(const BRepAdaptor_Surface& theBS, +static Standard_Boolean IsModifySize(const Handle(BRepAdaptor_Surface)& theBS, const gp_Pln& thePln, const gp_Pnt& theP, const Standard_Real umin, const Standard_Real umax, const Standard_Real vmin, const Standard_Real vmax, @@ -76,10 +76,10 @@ void BRepBndLib::Add(const TopoDS_Shape& S, Bnd_Box& B, Standard_Boolean useTria TopExp_Explorer ex; // Add the faces - BRepAdaptor_Surface BS; + Handle(BRepAdaptor_Surface) BS = new BRepAdaptor_Surface(); TopLoc_Location l, aDummyLoc; Standard_Integer i, nbNodes; - BRepAdaptor_Curve BC; + Handle(BRepAdaptor_Curve) BC = new BRepAdaptor_Curve(); for (ex.Init(S,TopAbs_FACE); ex.More(); ex.Next()) { const TopoDS_Face& F = TopoDS::Face(ex.Current()); @@ -92,16 +92,16 @@ void BRepBndLib::Add(const TopoDS_Shape& S, Bnd_Box& B, Standard_Boolean useTria } else { if (!GS.IsNull()) { - BS.Initialize(F, Standard_False); - if (BS.GetType() != GeomAbs_Plane) { - BS.Initialize(F); + BS->Initialize(F, Standard_False); + if (BS->GetType() != GeomAbs_Plane) { + BS->Initialize(F); BndLib_AddSurface::Add(BS, BRep_Tool::Tolerance(F), B); } else { // on travaille directement sur les courbes 3d. TopExp_Explorer ex2(F, TopAbs_EDGE); if (!ex2.More()) { - BS.Initialize(F); + BS->Initialize(F); BndLib_AddSurface::Add(BS, BRep_Tool::Tolerance(F), B); } else { @@ -109,7 +109,7 @@ void BRepBndLib::Add(const TopoDS_Shape& S, Bnd_Box& B, Standard_Boolean useTria const TopoDS_Edge& anEdge = TopoDS::Edge(ex2.Current()); if (BRep_Tool::IsGeometric (anEdge)) { - BC.Initialize (anEdge); + BC->Initialize (anEdge); BndLib_Add3dCurve::Add (BC, BRep_Tool::Tolerance (anEdge), B); } } @@ -167,7 +167,7 @@ void BRepBndLib::Add(const TopoDS_Shape& S, Bnd_Box& B, Standard_Boolean useTria else { if (BRep_Tool::IsGeometric(E)) { - BC.Initialize(E); + BC->Initialize(E); BndLib_Add3dCurve::Add(BC, BRep_Tool::Tolerance(E), B); } } @@ -197,13 +197,13 @@ void BRepBndLib::AddClose(const TopoDS_Shape& S, Bnd_Box& B) // Add the edges - BRepAdaptor_Curve BC; + Handle(BRepAdaptor_Curve) BC = new BRepAdaptor_Curve(); for (ex.Init(S,TopAbs_EDGE); ex.More(); ex.Next()) { const TopoDS_Edge& anEdge = TopoDS::Edge (ex.Current()); if (BRep_Tool::IsGeometric (anEdge)) { - BC.Initialize (anEdge); + BC->Initialize (anEdge); BndLib_Add3dCurve::Add(BC,0.,B); } } @@ -226,11 +226,11 @@ void BRepBndLib::AddOptimal(const TopoDS_Shape& S, Bnd_Box& B, TopExp_Explorer ex; // Add the faces - BRepAdaptor_Surface BS; + Handle(BRepAdaptor_Surface) BS = new BRepAdaptor_Surface(); Handle(Poly_Triangulation) T; TopLoc_Location l; Standard_Integer i, nbNodes; - BRepAdaptor_Curve BC; + Handle(BRepAdaptor_Curve) BC = new BRepAdaptor_Curve(); for (ex.Init(S,TopAbs_FACE); ex.More(); ex.Next()) { const TopoDS_Face& F = TopoDS::Face(ex.Current()); @@ -248,11 +248,11 @@ void BRepBndLib::AddOptimal(const TopoDS_Shape& S, Bnd_Box& B, { const Handle(Geom_Surface)& GS = BRep_Tool::Surface(F, l); if (!GS.IsNull()) { - BS.Initialize(F, Standard_False); + BS->Initialize(F, Standard_False); if (CanUseEdges(BS)) { TopExp_Explorer ex2(F, TopAbs_EDGE); if (!ex2.More()) { - BS.Initialize(F); + BS->Initialize(F); Standard_Real Tol = useShapeTolerance? BRep_Tool::Tolerance(F) : 0.; BndLib_AddSurface::AddOptimal(BS, Tol, aLocBox); } @@ -266,7 +266,7 @@ void BRepBndLib::AddOptimal(const TopoDS_Shape& S, Bnd_Box& B, { continue; } - BC.Initialize(anE); + BC->Initialize(anE); Tol = useShapeTolerance? BRep_Tool::Tolerance(anE) : 0.; BndLib_Add3dCurve::AddOptimal(BC, Tol, anEBox); aLocBox.Add(anEBox); @@ -293,7 +293,7 @@ void BRepBndLib::AddOptimal(const TopoDS_Shape& S, Bnd_Box& B, { continue; } - BC.Initialize(anE); + BC->Initialize(anE); Tol = useShapeTolerance? BRep_Tool::Tolerance(anE) : 0.; BndLib_Add3dCurve::AddOptimal(BC, Tol, anEBox); EBox.Add(anEBox); @@ -359,7 +359,7 @@ void BRepBndLib::AddOptimal(const TopoDS_Shape& S, Bnd_Box& B, else { if (BRep_Tool::IsGeometric(E)) { - BC.Initialize(E); + BC->Initialize(E); Standard_Real Tol = useShapeTolerance? BRep_Tool::Tolerance(E) : 0.; BndLib_Add3dCurve::AddOptimal(BC, Tol, aLocBox); } @@ -392,9 +392,9 @@ void BRepBndLib::AddOptimal(const TopoDS_Shape& S, Bnd_Box& B, //purpose : Define is it possible using only edges bnd boxes // to get face bnd box //======================================================================= -Standard_Boolean CanUseEdges(const Adaptor3d_Surface& BS) +Standard_Boolean CanUseEdges(const Handle(Adaptor3d_Surface)& BS) { - GeomAbs_SurfaceType aST = BS.GetType(); + GeomAbs_SurfaceType aST = BS->GetType(); if(aST == GeomAbs_Plane || aST == GeomAbs_Cylinder || aST == GeomAbs_Cone || @@ -404,7 +404,7 @@ Standard_Boolean CanUseEdges(const Adaptor3d_Surface& BS) } else if(aST == GeomAbs_SurfaceOfRevolution) { - const Handle(Adaptor3d_Curve)& aBC = BS.BasisCurve(); + const Handle(Adaptor3d_Curve)& aBC = BS->BasisCurve(); if(aBC->GetType() == GeomAbs_Line) { return Standard_True; @@ -416,12 +416,12 @@ Standard_Boolean CanUseEdges(const Adaptor3d_Surface& BS) } else if(aST == GeomAbs_OffsetSurface) { - const Handle(Adaptor3d_Surface)& aS = BS.BasisSurface(); - return CanUseEdges (*aS); + const Handle(Adaptor3d_Surface)& aS = BS->BasisSurface(); + return CanUseEdges (aS); } else if(aST == GeomAbs_BSplineSurface) { - Handle(Geom_BSplineSurface) aBSpl = BS.BSpline(); + Handle(Geom_BSplineSurface) aBSpl = BS->BSpline(); if((aBSpl->UDegree() == 1 && aBSpl->NbUKnots() == 2) || (aBSpl->VDegree() == 1 && aBSpl->NbVKnots() == 2)) { @@ -434,7 +434,7 @@ Standard_Boolean CanUseEdges(const Adaptor3d_Surface& BS) } else if(aST == GeomAbs_BezierSurface) { - Handle(Geom_BezierSurface) aBz = BS.Bezier(); + Handle(Geom_BezierSurface) aBz = BS->Bezier(); if((aBz->UDegree() == 1 ) || (aBz->VDegree() == 1 )) { @@ -637,7 +637,7 @@ inline void Reorder(Standard_Real& a, Standard_Real& b) //function : IsModifySize //purpose : //======================================================================= -Standard_Boolean IsModifySize(const BRepAdaptor_Surface& theBS, +Standard_Boolean IsModifySize(const Handle(BRepAdaptor_Surface)& theBS, const gp_Pln& thePln, const gp_Pnt& theP, const Standard_Real umin, const Standard_Real umax, const Standard_Real vmin, const Standard_Real vmax, @@ -649,7 +649,7 @@ Standard_Boolean IsModifySize(const BRepAdaptor_Surface& theBS, Reorder(pu1, pu2); Reorder(pv1, pv2); Handle(Geom_Plane) aPlane = new Geom_Plane(thePln); - GeomAdaptor_Surface aGAPln(aPlane, pu1, pu2, pv1, pv2); + Handle(GeomAdaptor_Surface) aGAPln = new GeomAdaptor_Surface(aPlane, pu1, pu2, pv1, pv2); Extrema_ExtSS anExtr(aGAPln, theBS, pu1, pu2, pv1, pv2, umin, umax, vmin, vmax, theTolU, theTolV); if(anExtr.IsDone()) { @@ -698,7 +698,7 @@ Standard_Boolean IsModifySize(const BRepAdaptor_Surface& theBS, //function : AdjustFaceBox //purpose : //======================================================================= -void AdjustFaceBox(const BRepAdaptor_Surface& BS, +void AdjustFaceBox(const Handle(BRepAdaptor_Surface)& BS, const Standard_Real umin, const Standard_Real umax, const Standard_Real vmin, const Standard_Real vmax, Bnd_Box& FaceBox, @@ -720,9 +720,9 @@ void AdjustFaceBox(const BRepAdaptor_Surface& BS, FaceBox.Get(fxmin, fymin, fzmin, fxmax, fymax, fzmax); EdgeBox.Get(exmin, eymin, ezmin, exmax, eymax, ezmax); // - Standard_Real TolU = Max(BS.UResolution(Tol), Precision::PConfusion()); - Standard_Real TolV = Max(BS.VResolution(Tol), Precision::PConfusion()); - BRepTopAdaptor_FClass2d FClass(BS.Face(), Max(TolU, TolV)); + Standard_Real TolU = Max(BS->UResolution(Tol), Precision::PConfusion()); + Standard_Real TolV = Max(BS->VResolution(Tol), Precision::PConfusion()); + BRepTopAdaptor_FClass2d FClass(BS->Face(), Max(TolU, TolV)); // Standard_Boolean isModified = Standard_False; if(exmin > fxmin) diff --git a/src/BRepBndLib/BRepBndLib_1.cxx b/src/BRepBndLib/BRepBndLib_1.cxx index f77feec382..06d23dd3eb 100644 --- a/src/BRepBndLib/BRepBndLib_1.cxx +++ b/src/BRepBndLib/BRepBndLib_1.cxx @@ -35,12 +35,12 @@ // Function : IsLinear // purpose : Returns TRUE if theC is line-like. //======================================================================= -static Standard_Boolean IsLinear(const Adaptor3d_Curve& theC) +static Standard_Boolean IsLinear(const Handle(Adaptor3d_Curve)& theC) { - const GeomAbs_CurveType aCT = theC.GetType(); + const GeomAbs_CurveType aCT = theC->GetType(); if(aCT == GeomAbs_OffsetCurve) { - return IsLinear(GeomAdaptor_Curve(theC.OffsetCurve()->BasisCurve())); + return IsLinear(new GeomAdaptor_Curve(theC->OffsetCurve()->BasisCurve())); } if((aCT == GeomAbs_BSplineCurve) || (aCT == GeomAbs_BezierCurve)) @@ -49,8 +49,8 @@ static Standard_Boolean IsLinear(const Adaptor3d_Curve& theC) // represented with set of points. It will be possible made // in the future. - return ((theC.Degree() == 1) && - (theC.Continuity() != GeomAbs_C0)); + return ((theC->Degree() == 1) && + (theC->Continuity() != GeomAbs_C0)); } if(aCT == GeomAbs_Line) @@ -65,29 +65,29 @@ static Standard_Boolean IsLinear(const Adaptor3d_Curve& theC) // Function : IsPlanar // purpose : Returns TRUE if theS is plane-like. //======================================================================= -static Standard_Boolean IsPlanar(const Adaptor3d_Surface& theS) +static Standard_Boolean IsPlanar(const Handle(Adaptor3d_Surface)& theS) { - const GeomAbs_SurfaceType aST = theS.GetType(); + const GeomAbs_SurfaceType aST = theS->GetType(); if(aST == GeomAbs_OffsetSurface) { - return IsPlanar (*theS.BasisSurface()); + return IsPlanar (theS->BasisSurface()); } if(aST == GeomAbs_SurfaceOfExtrusion) { - return IsLinear (*theS.BasisCurve()); + return IsLinear (theS->BasisCurve()); } if((aST == GeomAbs_BSplineSurface) || (aST == GeomAbs_BezierSurface)) { - if((theS.UDegree() != 1) || (theS.VDegree() != 1)) + if((theS->UDegree() != 1) || (theS->VDegree() != 1)) return Standard_False; // Indeed, surfaces with C0-continuity and degree==1, may be // represented with set of points. It will be possible made // in the future. - return ((theS.UContinuity() != GeomAbs_C0) && (theS.VContinuity() != GeomAbs_C0)); + return ((theS->UContinuity() != GeomAbs_C0) && (theS->VContinuity() != GeomAbs_C0)); } if(aST == GeomAbs_Plane) @@ -157,7 +157,7 @@ static Standard_Integer PointsForOBB(const TopoDS_Shape& theS, const TopoDS_Edge &anE = TopoDS::Edge(anExpE.Current()); if (BRep_Tool::IsGeometric (anE)) { - const BRepAdaptor_Curve anAC(anE); + Handle(BRepAdaptor_Curve) anAC = new BRepAdaptor_Curve(anE); if (!IsLinear(anAC)) { if (!theIsTriangulationUsed) @@ -210,7 +210,7 @@ static Standard_Integer PointsForOBB(const TopoDS_Shape& theS, const TopoDS_Edge &anE = TopoDS::Edge(anExpE.Current()); if (BRep_Tool::IsGeometric (anE)) { - const BRepAdaptor_Curve anAC(anE); + Handle(BRepAdaptor_Curve) anAC = new BRepAdaptor_Curve(anE); if (IsLinear(anAC)) { // skip linear edge as its vertices have already been added diff --git a/src/BRepBuilderAPI/BRepBuilderAPI_Sewing.cxx b/src/BRepBuilderAPI/BRepBuilderAPI_Sewing.cxx index 65bb5ab958..18d0a94263 100644 --- a/src/BRepBuilderAPI/BRepBuilderAPI_Sewing.cxx +++ b/src/BRepBuilderAPI/BRepBuilderAPI_Sewing.cxx @@ -174,7 +174,7 @@ static Standard_Boolean IsClosedShape(const TopoDS_Shape& theshape, Standard_Real first,last; Handle(Geom_Curve) c3d = BRep_Tool::Curve(TopoDS::Edge(aedge), first, last); if (!c3d.IsNull()) { - GeomAdaptor_Curve cAdapt(c3d); + Handle(GeomAdaptor_Curve) cAdapt = new GeomAdaptor_Curve(c3d); Standard_Real length = GCPnts_AbscissaPoint::Length(cAdapt, first, last); TotLength += length; if (ve2.IsSame(v1) || ve2.IsSame(v2)) break; @@ -444,10 +444,10 @@ static Standard_Boolean findNMVertices(const TopoDS_Edge& theEdge, return Standard_False; Standard_Real first, last; Handle(Geom_Curve) c3d = BRep_Tool::Curve(theEdge,first, last); - GeomAdaptor_Curve GAC(c3d); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(c3d); Extrema_ExtPC locProj; locProj.Initialize(GAC, first, last); - gp_Pnt pfirst = GAC.Value(first), plast = GAC.Value(last); + gp_Pnt pfirst = GAC->Value(first), plast = GAC->Value(last); for (Standard_Integer i = 1; i <= nbV; i++) { @@ -574,10 +574,10 @@ TopoDS_Edge BRepBuilderAPI_Sewing::SameParameterEdge(const TopoDS_Edge& edgeFirs // Take the longest edge as first Standard_Real f, l; Handle(Geom_Curve) c3d1 = BRep_Tool::Curve(TopoDS::Edge(edgeFirst), f, l); - GeomAdaptor_Curve cAdapt1(c3d1); + Handle(GeomAdaptor_Curve) cAdapt1 = new GeomAdaptor_Curve(c3d1); Standard_Real len1 = GCPnts_AbscissaPoint::Length(cAdapt1, f, l); Handle(Geom_Curve) c3d2 = BRep_Tool::Curve(TopoDS::Edge(edgeLast), f, l); - GeomAdaptor_Curve cAdapt2(c3d2); + Handle(GeomAdaptor_Curve) cAdapt2 = new GeomAdaptor_Curve(c3d2); Standard_Real len2 = GCPnts_AbscissaPoint::Length(cAdapt2, f, l); if (len1 < len2) { edge1 = edgeLast; @@ -1017,7 +1017,7 @@ void BRepBuilderAPI_Sewing::EvaluateAngulars(TopTools_SequenceOfShape& sequenceS c3d->Transform(loc.Transformation()); } - GeomAdaptor_Curve adapt(c3d); + Handle(GeomAdaptor_Curve) adapt = new GeomAdaptor_Curve(c3d); GCPnts_UniformAbscissa uniAbs(adapt, npt, first, last); Standard_Real cumulateAngular = 0.0; @@ -1283,7 +1283,8 @@ Standard_Boolean BRepBuilderAPI_Sewing::IsMergedClosed(const TopoDS_Edge& Edge1, Standard_Real C2Umin, C2Vmin, C2Umax, C2Vmax; { //szv: Use brackets to destroy local variables Bnd_Box2d B1, B2; - Geom2dAdaptor_Curve aC2d1(C2d1), aC2d2(C2d2); + Handle(Geom2dAdaptor_Curve) aC2d1 = new Geom2dAdaptor_Curve(C2d1); + Handle(Geom2dAdaptor_Curve) aC2d2 = new Geom2dAdaptor_Curve(C2d2); BndLib_Add2dCurve::Add(aC2d1,first2d1,last2d1,Precision::PConfusion(),B1); BndLib_Add2dCurve::Add(aC2d2,first2d2,last2d2,Precision::PConfusion(),B2); B1.Get(C1Umin,C1Vmin,C1Umax,C1Vmax); @@ -3559,7 +3560,7 @@ Standard_Boolean BRepBuilderAPI_Sewing::MergedNearestEdges(const TopoDS_Shape& e for (i = 1; i <= nbSection; i++) { Standard_Real f, l; Handle(Geom_Curve) c3d = BRep_Tool::Curve(TopoDS::Edge(seqEdges(i)), f, l); - GeomAdaptor_Curve cAdapt(c3d); + Handle(GeomAdaptor_Curve) cAdapt = new GeomAdaptor_Curve(c3d); Standard_Real len = GCPnts_AbscissaPoint::Length(cAdapt, f, l); if (len > lenRef) { indRef = i; lenRef = len; } } @@ -3646,7 +3647,7 @@ void BRepBuilderAPI_Sewing::Cutting(const Message_ProgressRange& theProgress) { //szv: Use brackets to destroy local variables // Create bounding box around curve Bnd_Box aGlobalBox; - GeomAdaptor_Curve adptC(c3d,first,last); + Handle(GeomAdaptor_Curve) adptC = new GeomAdaptor_Curve(c3d,first,last); BndLib_Add3dCurve::Add(adptC,myTolerance,aGlobalBox); // Sort vertices to find candidates aSelector.SetCurrent (aGlobalBox); @@ -3848,7 +3849,7 @@ static Standard_Boolean IsDegeneratedWire(const TopoDS_Shape& wire) length = pfirst.Distance(plast); } else { - GeomAdaptor_Curve cAdapt(c3d); + Handle(GeomAdaptor_Curve) cAdapt = new GeomAdaptor_Curve(c3d); length = GCPnts_AbscissaPoint::Length(cAdapt, first, last); } Standard_Real tole = BRep_Tool::Tolerance(Ve1)+BRep_Tool::Tolerance(Ve2); @@ -4288,10 +4289,10 @@ void BRepBuilderAPI_Sewing::ProjectPointsOnCurve(const TColgp_Array1OfPnt& arrPn { arrDist.Init(-1.0); - GeomAdaptor_Curve GAC(c3d); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(c3d); Extrema_ExtPC locProj; locProj.Initialize(GAC, first, last); - gp_Pnt pfirst = GAC.Value(first), plast = GAC.Value(last); + gp_Pnt pfirst = GAC->Value(first), plast = GAC->Value(last); Standard_Integer find = 1;//(isConsiderEnds ? 1 : 2); Standard_Integer lind = arrPnt.Length();//(isConsiderEnds ? arrPnt.Length() : arrPnt.Length() -1); @@ -4316,7 +4317,7 @@ void BRepBuilderAPI_Sewing::ProjectPointsOnCurve(const TColgp_Array1OfPnt& arrPn isProjected = Standard_True; Extrema_POnCurv pOnC = locProj.Point(indMin); Standard_Real paramProj = pOnC.Parameter(); - gp_Pnt ptProj = GAC.Value(paramProj); + gp_Pnt ptProj = GAC->Value(paramProj); Standard_Real distProj2 = ptProj.SquareDistance(pt); if (!locProj.IsMin(indMin)) { if (Min(distF2,distL2) < dist2Min) { diff --git a/src/BRepCheck/BRepCheck.cxx b/src/BRepCheck/BRepCheck.cxx index a388e20ffb..314ef1d1c8 100644 --- a/src/BRepCheck/BRepCheck.cxx +++ b/src/BRepCheck/BRepCheck.cxx @@ -67,15 +67,15 @@ Standard_Boolean BRepCheck::SelfIntersection(const TopoDS_Wire& W, //function : PrecCurve //purpose : //======================================================================= -Standard_Real BRepCheck::PrecCurve(const Adaptor3d_Curve& aAC3D) +Standard_Real BRepCheck::PrecCurve(const Handle(Adaptor3d_Curve)& aAC3D) { Standard_Real aXEmax = RealEpsilon(); // - GeomAbs_CurveType aCT = aAC3D.GetType(); + GeomAbs_CurveType aCT = aAC3D->GetType(); if (aCT==GeomAbs_Ellipse) { Standard_Real aX[5]; // - gp_Elips aEL3D=aAC3D.Ellipse(); + gp_Elips aEL3D=aAC3D->Ellipse(); aEL3D.Location().Coord(aX[0], aX[1], aX[2]); aX[3]=aEL3D.MajorRadius(); aX[4]=aEL3D.MinorRadius(); diff --git a/src/BRepCheck/BRepCheck.hxx b/src/BRepCheck/BRepCheck.hxx index aec962a191..76d450ac39 100644 --- a/src/BRepCheck/BRepCheck.hxx +++ b/src/BRepCheck/BRepCheck.hxx @@ -44,7 +44,7 @@ public: Standard_EXPORT static Standard_Boolean SelfIntersection (const TopoDS_Wire& W, const TopoDS_Face& F, TopoDS_Edge& E1, TopoDS_Edge& E2); //! Returns the resolution on the 3d curve - Standard_EXPORT static Standard_Real PrecCurve(const Adaptor3d_Curve& aAC3D); + Standard_EXPORT static Standard_Real PrecCurve(const Handle(Adaptor3d_Curve)& aAC3D); //! Returns the resolution on the surface Standard_EXPORT static Standard_Real PrecSurface(const Handle(Adaptor3d_Surface)& aAHSurf); diff --git a/src/BRepCheck/BRepCheck_Edge.cxx b/src/BRepCheck/BRepCheck_Edge.cxx index 32d55b8cd7..d04373cdd3 100644 --- a/src/BRepCheck/BRepCheck_Edge.cxx +++ b/src/BRepCheck/BRepCheck_Edge.cxx @@ -454,7 +454,7 @@ void BRepCheck_Edge::InContext(const TopoDS_Shape& S) Handle(GeomAdaptor_Curve) aHCurve = new GeomAdaptor_Curve(ProjOnPlane); - ProjLib_ProjectedCurve proj(GAHS,aHCurve); + Handle(ProjLib_ProjectedCurve) proj = new ProjLib_ProjectedCurve(GAHS,aHCurve); Handle(Geom2d_Curve) PC = Geom2dAdaptor::MakeCurve(proj); Handle(Geom2dAdaptor_Curve) GHPC = new Geom2dAdaptor_Curve(PC, diff --git a/src/BRepCheck/BRepCheck_Face.cxx b/src/BRepCheck/BRepCheck_Face.cxx index f128ec6d4d..191e0cd995 100644 --- a/src/BRepCheck/BRepCheck_Face.cxx +++ b/src/BRepCheck/BRepCheck_Face.cxx @@ -216,7 +216,7 @@ BRepCheck_Status BRepCheck_Face::IntersectWires(const Standard_Boolean Update) exp1.Next(); } - Geom2dAdaptor_Curve aC; + Handle(Geom2dAdaptor_Curve) aC = new Geom2dAdaptor_Curve(); Standard_Real aFirst, aLast; DataMapOfShapeBox2d aMapShapeBox2d; for (exp1.Init (myShape, TopAbs_WIRE); exp1.More(); exp1.Next()) @@ -227,15 +227,15 @@ BRepCheck_Status BRepCheck_Face::IntersectWires(const Standard_Boolean Update) for (exp2.Init (aWire, TopAbs_EDGE); exp2.More(); exp2.Next()) { const TopoDS_Edge& anEdge = TopoDS::Edge (exp2.Current()); - aC.Load (BRep_Tool::CurveOnSurface (anEdge, TopoDS::Face (myShape), aFirst, aLast)); + aC->Load (BRep_Tool::CurveOnSurface (anEdge, TopoDS::Face (myShape), aFirst, aLast)); // To avoid exception in Segment if C1 is BSpline - if (aC.FirstParameter() > aFirst) + if (aC->FirstParameter() > aFirst) { - aFirst = aC.FirstParameter(); + aFirst = aC->FirstParameter(); } - if (aC.LastParameter() < aLast) + if (aC->LastParameter() < aLast) { - aLast = aC.LastParameter(); + aLast = aC->LastParameter(); } Bnd_Box2d aBoxE; BndLib_Add2dCurve::Add (aC, aFirst, aLast, 0., aBoxE); @@ -644,7 +644,8 @@ static Standard_Boolean Intersect(const TopoDS_Wire& wir1, PntSeq.Append( P ); } - Geom2dAdaptor_Curve C1,C2; + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(); gp_Pnt2d pfirst1,plast1,pfirst2,plast2; Standard_Real first1,last1,first2,last2; Geom2dInt_GInter Inter; @@ -655,10 +656,10 @@ static Standard_Boolean Intersect(const TopoDS_Wire& wir1, { const TopoDS_Edge& edg1 = TopoDS::Edge(exp1.Current()); // cur1.Initialize(edg1,F); - C1.Load( BRep_Tool::CurveOnSurface(edg1,F,first1,last1) ); + C1->Load( BRep_Tool::CurveOnSurface(edg1,F,first1,last1) ); // To avoid exception in Segment if C1 is BSpline - IFV - if(C1.FirstParameter() > first1) first1 = C1.FirstParameter(); - if(C1.LastParameter() < last1 ) last1 = C1.LastParameter(); + if(C1->FirstParameter() > first1) first1 = C1->FirstParameter(); + if(C1->LastParameter() < last1 ) last1 = C1->LastParameter(); Box1.SetVoid(); if (theMapEdgeBox.IsBound (edg1)) @@ -675,10 +676,10 @@ static Standard_Boolean Intersect(const TopoDS_Wire& wir1, if (!edg1.IsSame(edg2)) { //cur2.Initialize(edg2,F); - C2.Load( BRep_Tool::CurveOnSurface(edg2,F,first2,last2) ); + C2->Load( BRep_Tool::CurveOnSurface(edg2,F,first2,last2) ); // To avoid exception in Segment if C2 is BSpline - IFV - if(C2.FirstParameter() > first2) first2 = C2.FirstParameter(); - if(C2.LastParameter() < last2 ) last2 = C2.LastParameter(); + if(C2->FirstParameter() > first2) first2 = C2->FirstParameter(); + if(C2->LastParameter() < last2 ) last2 = C2->LastParameter(); Box2.SetVoid(); if (theMapEdgeBox.IsBound (edg2)) diff --git a/src/BRepCheck/BRepCheck_Wire.cxx b/src/BRepCheck/BRepCheck_Wire.cxx index 10e40a8165..1487ff93d8 100644 --- a/src/BRepCheck/BRepCheck_Wire.cxx +++ b/src/BRepCheck/BRepCheck_Wire.cxx @@ -98,7 +98,7 @@ inline Standard_Boolean IsOriented(const TopoDS_Shape& S) } static - void CurveDirForParameter(const Geom2dAdaptor_Curve& aC2d, + void CurveDirForParameter(const Handle(Geom2dAdaptor_Curve)& aC2d, const Standard_Real aPrm, gp_Pnt2d& Pnt, gp_Vec2d& aVec2d); @@ -415,7 +415,7 @@ Standard_Boolean IsDistanceIn3DTolerance (const gp_Pnt& thePnt_f, //purpose : //======================================================================= static -Standard_Boolean IsDistanceIn2DTolerance (const BRepAdaptor_Surface& aFaceSurface, +Standard_Boolean IsDistanceIn2DTolerance (const Handle(BRepAdaptor_Surface)& aFaceSurface, const gp_Pnt2d& thePnt, const gp_Pnt2d& thePntRef, const Standard_Real aTol3d, @@ -425,8 +425,8 @@ Standard_Boolean IsDistanceIn2DTolerance (const BRepAdaptor_Surface& aFaceSurfac const Standard_Boolean = Standard_True) #endif { - Standard_Real dumax = 0.01 * (aFaceSurface.LastUParameter() - aFaceSurface.FirstUParameter()); - Standard_Real dvmax = 0.01 * (aFaceSurface.LastVParameter() - aFaceSurface.FirstVParameter()); + Standard_Real dumax = 0.01 * (aFaceSurface->LastUParameter() - aFaceSurface->FirstUParameter()); + Standard_Real dvmax = 0.01 * (aFaceSurface->LastVParameter() - aFaceSurface->FirstVParameter()); Standard_Real dumin = Abs(thePnt.X() - thePntRef.X()); Standard_Real dvmin = Abs(thePnt.Y() - thePntRef.Y()); @@ -451,13 +451,13 @@ Standard_Boolean IsDistanceIn2DTolerance (const BRepAdaptor_Surface& aFaceSurfac std::cout << "; VLast = " << aFaceSurface.LastVParameter() << std::endl; } #endif - dumax = aFaceSurface.UResolution(aTol3d); - dvmax = aFaceSurface.VResolution(aTol3d); + dumax = aFaceSurface->UResolution(aTol3d); + dvmax = aFaceSurface->VResolution(aTol3d); gp_Pnt aP; gp_Vec aDU, aDV; Standard_Real um = (thePnt.X() + thePntRef.X()) / 2.; Standard_Real vm = (thePnt.Y() + thePntRef.Y()) / 2.; - aFaceSurface.D1(um, vm, aP, aDU, aDV); + aFaceSurface->D1(um, vm, aP, aDU, aDV); Standard_Real aMDU = aDU.Magnitude(); if (aMDU > Precision::Confusion()) { @@ -539,7 +539,7 @@ BRepCheck_Status BRepCheck_Wire::Closed2d(const TopoDS_Face& theFace, // 20/03/02 akm vvv : (OCC234) Hence this method will be used to check // both periodic and non-periodic faces // // this check is for periodic faces - BRepAdaptor_Surface aFaceSurface (theFace, Standard_False); + Handle(BRepAdaptor_Surface) aFaceSurface = new BRepAdaptor_Surface(theFace, Standard_False); // if (!aFaceSurface.IsUPeriodic() && !aFaceSurface.IsVPeriodic()) // { // if (Update) @@ -1004,7 +1004,8 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, gp_Pnt2d pfirst1,plast1,pfirst2,plast2; gp_Pnt P3d, P3d2; Handle(BRepAdaptor_Surface) HS; - Geom2dAdaptor_Curve C1, C2; + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(); Geom2dInt_GInter Inter; IntRes2d_Domain myDomain1; TopTools_IndexedMapOfOrientedShape EMap; @@ -1051,14 +1052,14 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, return(BRepCheck_SelfIntersectingWire); } // - C1.Load(pcu); + C1->Load(pcu); // To avoid exception in Segment if C1 is BSpline - IFV - if(!C1.IsPeriodic()) { - if(C1.FirstParameter() > first1) { - first1 = C1.FirstParameter(); + if(!C1->IsPeriodic()) { + if(C1->FirstParameter() > first1) { + first1 = C1->FirstParameter(); } - if(C1.LastParameter() < last1 ){ - last1 = C1.LastParameter(); + if(C1->LastParameter() < last1 ){ + last1 = C1->LastParameter(); } } // @@ -1068,7 +1069,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, BndLib_Add2dCurve::Add(C1, first1, last1, Precision::PConfusion(), boxes(i)); }//if (i == 1) { else { - C1.Load(tabCur(i)); + C1->Load(tabCur(i)); myDomain1 = tabDom[i-1]; } // @@ -1099,7 +1100,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, // Modified by Sergey KHROMOV - Mon Apr 15 12:34:22 2002 Begin } else { - gp_Pnt2d aP2d = C1.Value(IP.ParamOnFirst()); + gp_Pnt2d aP2d = C1->Value(IP.ParamOnFirst()); P3d = HS->Value(aP2d.X(), aP2d.Y()); } // Modified by Sergey KHROMOV - Mon Apr 15 12:34:22 2002 End @@ -1141,14 +1142,14 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, if (i == 1) { tabCur(j) = BRep_Tool::CurveOnSurface(E2,F,first2,last2); if (!tabCur(j).IsNull() && last2 > first2) { - C2.Load(tabCur(j)); + C2->Load(tabCur(j)); // To avoid exception in Segment if C2 is BSpline - IFV - if(!C2.IsPeriodic()) { - if(C2.FirstParameter() > first2) { - first2 = C2.FirstParameter(); + if(!C2->IsPeriodic()) { + if(C2->FirstParameter() > first2) { + first2 = C2->FirstParameter(); } - if(C2.LastParameter() < last2 ) { - last2 = C2.LastParameter(); + if(C2->LastParameter() < last2 ) { + last2 = C2->LastParameter(); } } // @@ -1169,7 +1170,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, } }// if (i == 1) { else { - C2.Load(tabCur(j)); + C2->Load(tabCur(j)); } // if (boxes(i).IsOut( boxes(j))) { @@ -1243,7 +1244,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, P3d.Transform(L.Transformation()); } else { - gp_Pnt2d aP2d = C1.Value(IP_ParamOnFirst); + gp_Pnt2d aP2d = C1->Value(IP_ParamOnFirst); P3d = HS->Value(aP2d.X(), aP2d.Y()); } // @@ -1252,7 +1253,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, P3d2.Transform(L2.Transformation()); } else { - gp_Pnt2d aP2d = C2.Value(IP_ParamOnSecond); + gp_Pnt2d aP2d = C2->Value(IP_ParamOnSecond); P3d2 = HS->Value(aP2d.X(), aP2d.Y()); } // Modified by Sergey KHROMOV - Mon Apr 15 12:34:22 2002 End @@ -1346,7 +1347,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, P1.Transform(L.Transformation()); } else { - gp_Pnt2d aP2d = C1.Value(u); + gp_Pnt2d aP2d = C1->Value(u); P1 = HS->Value(aP2d.X(), aP2d.Y()); } // Modified by Sergey KHROMOV - Mon Apr 15 12:34:22 2002 End @@ -1374,7 +1375,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, P2.Transform(L2.Transformation()); } else { - gp_Pnt2d aP2d = C2.Value(u); + gp_Pnt2d aP2d = C2->Value(u); P2 = HS->Value(aP2d.X(), aP2d.Y()); } // Modified by Sergey KHROMOV - Mon Apr 15 12:34:22 2002 End @@ -1448,8 +1449,8 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, if(aPCR1!=IntRes2d_Middle && aPCR2!=IntRes2d_Middle) { GeomAbs_CurveType aCT1, aCT2; //ZZ - aCT1=C1.GetType(); - aCT2=C2.GetType(); + aCT1=C1->GetType(); + aCT2=C2->GetType(); if (aCT1==GeomAbs_Line && aCT2==GeomAbs_Line) { // check for the two lines coincidence Standard_Real aPAR_T, aT11, aT12, aT21, aT22, aT1m, aT2m; @@ -1464,8 +1465,8 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, aTol2=aTolE1+aTolE2; aTol2=aTol2*aTol2; // - aL1=C1.Line(); - aL2=C2.Line(); + aL1=C1->Line(); + aL2=C2->Line(); // aT11=PSeg[0].ParamOnFirst(); aT12=PSeg[1].ParamOnFirst(); @@ -1473,7 +1474,7 @@ BRepCheck_Status BRepCheck_Wire::SelfIntersect(const TopoDS_Face& F, aT22=PSeg[1].ParamOnSecond(); // aT1m=(1.-aPAR_T)*aT11 + aPAR_T*aT12; - aP1m=C1.Value(aT1m); + aP1m=C1->Value(aT1m); // aD2=aL2.SquareDistance(aP1m); if (aD2Value(IP_ParamOnFirst); P3d.Transform(L.Transformation()); } else { - gp_Pnt2d aP2d = C1.Value(IP_ParamOnFirst); + gp_Pnt2d aP2d = C1->Value(IP_ParamOnFirst); P3d = HS->Value(aP2d.X(), aP2d.Y()); } if (!ConS2.IsNull()) { P3d2 = ConS2->Value(IP_ParamOnSecond); P3d2.Transform(L2.Transformation()); } else { - gp_Pnt2d aP2d = C2.Value(IP_ParamOnSecond); + gp_Pnt2d aP2d = C2->Value(IP_ParamOnSecond); P3d2 = HS->Value(aP2d.X(), aP2d.Y()); } // Modified by Sergey KHROMOV - Mon Apr 15 12:34:22 2002 End @@ -1692,7 +1693,7 @@ void ChoixUV(const TopoDS_Vertex& theVertex, Standard_Real a_gpResolution=gp::Resolution(); TopAbs_Orientation aVOrientation, anEdgOrientation; Standard_Real aParam = 0.0, aFirstParam = 0.0, aLastParam = 0.0, aParPiv = 0.0; - BRepAdaptor_Surface aFaceSurface(theFace,Standard_False); // no restriction + Handle(BRepAdaptor_Surface) aFaceSurface = new BRepAdaptor_Surface(theFace, Standard_False); // no restriction Handle(Geom2d_Curve) C2d = BRep_Tool::CurveOnSurface(theEdge, theFace, aFirstParam, aLastParam); if (C2d.IsNull())// JAG 10.12.96 @@ -1705,7 +1706,7 @@ void ChoixUV(const TopoDS_Vertex& theVertex, aMinAngle = RealLast(); aMaxAngle = RealFirst(); - CurveDirForParameter(C2d, aParPiv, aPntRef, aDerRef); + CurveDirForParameter(new Geom2dAdaptor_Curve(C2d), aParPiv, aPntRef, aDerRef); if (aVOrientation != anEdgOrientation) aDerRef.Reverse(); @@ -1727,7 +1728,7 @@ void ChoixUV(const TopoDS_Vertex& theVertex, if(!IsDistanceIn2DTolerance(aFaceSurface, aPnt, aPntRef, aTol3d, Standard_False)) continue; - CurveDirForParameter(aCA, aParam, aPnt, aDer); + CurveDirForParameter(new Geom2dAdaptor_Curve(aCA), aParam, aPnt, aDer); if (aVOrientation == anE.Orientation()) aDer.Reverse(); @@ -1820,7 +1821,7 @@ void ChoixUV(const TopoDS_Vertex& theVertex, //function : CurveDirForParameter //purpose : //======================================================================= -void CurveDirForParameter(const Geom2dAdaptor_Curve& aC2d, +void CurveDirForParameter(const Handle(Geom2dAdaptor_Curve)& aC2d, const Standard_Real aPrm, gp_Pnt2d& Pnt, gp_Vec2d& aVec2d) @@ -1828,11 +1829,11 @@ void CurveDirForParameter(const Geom2dAdaptor_Curve& aC2d, Standard_Real aTol=gp::Resolution(); Standard_Integer i; - aC2d.D1(aPrm, Pnt, aVec2d); + aC2d->D1(aPrm, Pnt, aVec2d); // if (aVec2d.Magnitude() <= aTol) { for (i = 2; i <= 100; i++){ - aVec2d = aC2d.DN(aPrm, i); + aVec2d = aC2d->DN(aPrm, i); if (aVec2d.Magnitude() > aTol) { break; } diff --git a/src/BRepClass/BRepClass_FaceClassifier.cxx b/src/BRepClass/BRepClass_FaceClassifier.cxx index b3736626f2..ec919ec3cf 100644 --- a/src/BRepClass/BRepClass_FaceClassifier.cxx +++ b/src/BRepClass/BRepClass_FaceClassifier.cxx @@ -105,7 +105,7 @@ void BRepClass_FaceClassifier::Perform(const TopoDS_Face& theF, aMaxDist=RealLast(); aIndice=0; // - BRepAdaptor_Surface aSurf(theF, Standard_False); + Handle(BRepAdaptor_Surface) aSurf = new BRepAdaptor_Surface(theF, Standard_False); BRepTools::UVBounds(theF, aU1, aU2, aV1, aV2); aExtrema.Initialize(aSurf, aU1, aU2, aV1, aV2, theTol, theTol); // diff --git a/src/BRepClass/BRepClass_Intersector.cxx b/src/BRepClass/BRepClass_Intersector.cxx index dae1ef8b12..cc62cd77a7 100644 --- a/src/BRepClass/BRepClass_Intersector.cxx +++ b/src/BRepClass/BRepClass_Intersector.cxx @@ -47,7 +47,7 @@ void GetTangentAsChord(const Handle(Geom2d_Curve)& thePCurve, static void RefineTolerance(const TopoDS_Face& aF, - const Geom2dAdaptor_Curve& aC, + const Handle(Geom2dAdaptor_Curve)& aC, const Standard_Real aT, Standard_Real& aTolZ); @@ -55,7 +55,7 @@ static Standard_Boolean CheckOn(IntRes2d_IntersectionPoint& thePntInter, const TopoDS_Face& theF, const gp_Lin2d& theL, - const Geom2dAdaptor_Curve& theCur, + const Handle(Geom2dAdaptor_Curve)& theCur, Standard_Real& theTolZ, const Standard_Real theFin, const Standard_Real theDeb); @@ -66,8 +66,8 @@ void CheckSkip(Geom2dInt_GInter& theInter, const BRepClass_Edge& theE, const Handle(Geom2d_Curve)& theC2D, const IntRes2d_Domain& theDL, - Geom2dAdaptor_Curve& theCur, - const Geom2dAdaptor_Curve& theCGA, + Handle(Geom2dAdaptor_Curve)& theCur, + const Handle(Geom2dAdaptor_Curve)& theCGA, Standard_Real& theFin, Standard_Real& theDeb, const Standard_Real theMaxTol, @@ -162,7 +162,7 @@ Standard_Boolean IsInter(Bnd_Box2d& theBox, Standard_Boolean CheckOn(IntRes2d_IntersectionPoint& thePntInter, const TopoDS_Face& theF, const gp_Lin2d& theL, - const Geom2dAdaptor_Curve& theCur, + const Handle(Geom2dAdaptor_Curve)& theCur, Standard_Real& theTolZ, const Standard_Real theFin, const Standard_Real theDeb) @@ -224,8 +224,8 @@ void CheckSkip(Geom2dInt_GInter& theInter, const BRepClass_Edge& theE, const Handle(Geom2d_Curve)& theC2D, const IntRes2d_Domain& theDL, - Geom2dAdaptor_Curve& theCur, - const Geom2dAdaptor_Curve& theCGA, + Handle(Geom2dAdaptor_Curve)& theCur, + const Handle(Geom2dAdaptor_Curve)& theCGA, Standard_Real& theFin, Standard_Real& theDeb, const Standard_Real theMaxTol, @@ -313,26 +313,26 @@ void CheckSkip(Geom2dInt_GInter& theInter, return; } // if we got - theCur.Load(aSkipC2D); - if (theCur.Curve().IsNull()) + theCur->Load(aSkipC2D); + if (theCur->Curve().IsNull()) { return; } Standard_Real atoldeb = 1.e-5, atolfin = 1.e-5; - theDeb = theCur.FirstParameter(); - theFin = theCur.LastParameter(); - theCur.D0(theDeb, thePdeb); - theCur.D0(theFin, thePfin); + theDeb = theCur->FirstParameter(); + theFin = theCur->LastParameter(); + theCur->D0(theDeb, thePdeb); + theCur->D0(theFin, thePfin); IntRes2d_Domain aDE(thePdeb, theDeb, atoldeb, thePfin, theFin, atolfin); // temporary periodic domain - if (theCur.Curve()->IsPeriodic()) + if (theCur->Curve()->IsPeriodic()) { - aDE.SetEquivalentParameters(theCur.FirstParameter(), - theCur.FirstParameter() + - theCur.Curve()->LastParameter() - - theCur.Curve()->FirstParameter()); + aDE.SetEquivalentParameters(theCur->FirstParameter(), + theCur->FirstParameter() + + theCur->Curve()->LastParameter() - + theCur->Curve()->FirstParameter()); } theInter = Geom2dInt_GInter(theCGA, theDL, theCur, aDE, @@ -373,7 +373,7 @@ void BRepClass_Intersector::Perform(const gp_Lin2d& L, aPntF = L.Location(); } // - Geom2dAdaptor_Curve C(aC2D, deb, fin); + Handle(Geom2dAdaptor_Curve) C = new Geom2dAdaptor_Curve(aC2D, deb, fin); // // Case of "ON": direct check of belonging to edge // taking into account the tolerance @@ -406,8 +406,8 @@ void BRepClass_Intersector::Perform(const gp_Lin2d& L, } } gp_Pnt2d pdeb, pfin; - C.D0(deb, pdeb); - C.D0(fin, pfin); + C->D0(deb, pdeb); + C->D0(fin, pfin); Standard_Real toldeb = 1.e-5, tolfin = 1.e-5; IntRes2d_Domain DL; @@ -421,15 +421,15 @@ void BRepClass_Intersector::Perform(const gp_Lin2d& L, IntRes2d_Domain DE(pdeb, deb, toldeb, pfin, fin, tolfin); // temporary periodic domain - if (C.Curve()->IsPeriodic()) { - DE.SetEquivalentParameters(C.FirstParameter(), - C.FirstParameter() + - C.Curve()->LastParameter() - - C.Curve()->FirstParameter()); + if (C->Curve()->IsPeriodic()) { + DE.SetEquivalentParameters(C->FirstParameter(), + C->FirstParameter() + + C->Curve()->LastParameter() - + C->Curve()->FirstParameter()); } Handle(Geom2d_Line) GL = new Geom2d_Line(L); - Geom2dAdaptor_Curve CGA(GL); + Handle(Geom2dAdaptor_Curve) CGA = new Geom2dAdaptor_Curve(GL); Geom2dInt_GInter Inter(CGA, DL, C, DE, Precision::PConfusion(), Precision::PIntersection()); @@ -481,7 +481,7 @@ void BRepClass_Intersector::LocalGeometry(const BRepClass_Edge& E, //purpose : //======================================================================= void RefineTolerance(const TopoDS_Face& aF, - const Geom2dAdaptor_Curve& aC, + const Handle(Geom2dAdaptor_Curve)& aC, const Standard_Real aT, Standard_Real& aTolZ) { @@ -498,7 +498,7 @@ void RefineTolerance(const TopoDS_Face& aF, aURes=aBAS.UResolution(aTolZ); aVRes=aBAS.VResolution(aTolZ); // - aC.D1(aT, aP2D, aV2D); + aC->D1(aT, aP2D, aV2D); gp_Dir2d aD2D(aV2D); // aTolX=aURes*aD2D.Y()+aVRes*aD2D.X(); diff --git a/src/BRepClass3d/BRepClass3d_BndBoxTree.cxx b/src/BRepClass3d/BRepClass3d_BndBoxTree.cxx index eb01f8f22f..67504fbb9c 100644 --- a/src/BRepClass3d/BRepClass3d_BndBoxTree.cxx +++ b/src/BRepClass3d/BRepClass3d_BndBoxTree.cxx @@ -38,7 +38,7 @@ Standard_Boolean BRepClass3d_BndBoxTreeSelectorPoint::Accept (const Standard_Int Standard_Real EdgeTSq = BRep_Tool::Tolerance(E); EdgeTSq *= EdgeTSq; Standard_Real f, l; - BRepAdaptor_Curve C(E); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(E); BRep_Tool::Range(E,f,l); // Edge-Point interference. @@ -86,11 +86,11 @@ Standard_Boolean BRepClass3d_BndBoxTreeSelectorLine::Accept (const Standard_Inte Standard_Real EdgeTSq = BRep_Tool::Tolerance(E); EdgeTSq *= EdgeTSq; Standard_Real f, l; - BRepAdaptor_Curve C(E); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(E); BRep_Tool::Range(E, f, l); // Edge-Line interference. - Extrema_ExtCC ExtCC(C, myLC, f, l, myLC.FirstParameter(), myLC.LastParameter()); + Extrema_ExtCC ExtCC(C, myLC, f, l, myLC->FirstParameter(), myLC->LastParameter()); if (ExtCC.IsDone()) { if (ExtCC.IsParallel()) diff --git a/src/BRepClass3d/BRepClass3d_BndBoxTree.hxx b/src/BRepClass3d/BRepClass3d_BndBoxTree.hxx index a817324ab1..63cbba0d20 100644 --- a/src/BRepClass3d/BRepClass3d_BndBoxTree.hxx +++ b/src/BRepClass3d/BRepClass3d_BndBoxTree.hxx @@ -83,6 +83,7 @@ public: BRepClass3d_BndBoxTreeSelectorLine(const TopTools_IndexedMapOfShape& theMapOfShape) : BRepClass3d_BndBoxTreeSelectorLine::Selector(), myMapOfShape(theMapOfShape), + myLC(new GeomAdaptor_Curve()), myIsValid(Standard_True) {} @@ -98,7 +99,7 @@ public: const Standard_Real theMaxParam) { myL = theL; - myLC.Load(new Geom_Line(theL), -Precision::PConfusion(), theMaxParam); + myLC->Load(new Geom_Line(theL), -Precision::PConfusion(), theMaxParam); } void GetEdgeParam(const Standard_Integer i, @@ -153,7 +154,7 @@ private: gp_Lin myL; NCollection_Sequence myEP; //output result (edge vs line) NCollection_Sequence myVP; //output result (vertex vs line) - GeomAdaptor_Curve myLC; + Handle(GeomAdaptor_Curve) myLC; Standard_Boolean myIsValid; }; diff --git a/src/BRepClass3d/BRepClass3d_SClassifier.cxx b/src/BRepClass3d/BRepClass3d_SClassifier.cxx index 1cbf729b23..310d74ff86 100644 --- a/src/BRepClass3d/BRepClass3d_SClassifier.cxx +++ b/src/BRepClass3d/BRepClass3d_SClassifier.cxx @@ -376,7 +376,7 @@ void BRepClass3d_SClassifier::Perform(BRepClass3d_SolidExplorer& SolidExplorer, if (Intersector3d.IsParallel()) { //Check distance between surface and point - BRepAdaptor_Surface aBAS(f, Standard_False); + Handle(BRepAdaptor_Surface) aBAS = new BRepAdaptor_Surface(f, Standard_False); Extrema_ExtPS aProj(P, aBAS, Precision::PConfusion(), Precision::PConfusion()); if (aProj.IsDone() && aProj.NbExt() > 0) { diff --git a/src/BRepClass3d/BRepClass3d_SolidExplorer.cxx b/src/BRepClass3d/BRepClass3d_SolidExplorer.cxx index 43b657b336..0e87c9177e 100644 --- a/src/BRepClass3d/BRepClass3d_SolidExplorer.cxx +++ b/src/BRepClass3d/BRepClass3d_SolidExplorer.cxx @@ -515,7 +515,7 @@ Standard_Integer BRepClass3d_SolidExplorer::OtherSegment(const gp_Pnt& P, _u = (U1 + U2) * 0.5; _v = (V1 + V2) * 0.5; - GeomAdaptor_Surface GA(BRep_Tool::Surface(face)); + Handle(GeomAdaptor_Surface) GA = new GeomAdaptor_Surface(BRep_Tool::Surface(face)); Extrema_ExtPS Ext(P, GA, TolU, TolV); // if (Ext.IsDone() && Ext.NbExt() > 0) { diff --git a/src/BRepExtrema/BRepExtrema_ExtCC.cxx b/src/BRepExtrema/BRepExtrema_ExtCC.cxx index d4c24eb0e8..6cdd472631 100644 --- a/src/BRepExtrema/BRepExtrema_ExtCC.cxx +++ b/src/BRepExtrema/BRepExtrema_ExtCC.cxx @@ -47,7 +47,7 @@ void BRepExtrema_ExtCC::Initialize(const TopoDS_Edge& E2) Standard_Real Tol = Min(BRep_Tool::Tolerance(E2), Precision::Confusion()); Tol = Max(Curv.Resolution(Tol), Precision::PConfusion()); BRep_Tool::Range(E2,V1,V2); - myExtCC.SetCurve (2, *myHC, V1, V2); + myExtCC.SetCurve (2, myHC, V1, V2); myExtCC.SetTolerance(2, Tol); } @@ -66,7 +66,7 @@ void BRepExtrema_ExtCC::Perform(const TopoDS_Edge& E1) Standard_Real Tol = Min(BRep_Tool::Tolerance(E1), Precision::Confusion()); Tol = Max(Curv.Resolution(Tol), Precision::PConfusion()); BRep_Tool::Range(E1,U1,U2); - myExtCC.SetCurve (1, *HC, U1, U2); + myExtCC.SetCurve (1, HC, U1, U2); myExtCC.SetTolerance(1, Tol); // If we enable SetSingleSolutionFlag Extrema will run much quicker on almost parallel curves // (e.g. bug 27665), however some solutions will be lost, e.g. see bug 28183. diff --git a/src/BRepExtrema/BRepExtrema_ExtCF.cxx b/src/BRepExtrema/BRepExtrema_ExtCF.cxx index 44e2c2fa3e..44586188d5 100644 --- a/src/BRepExtrema/BRepExtrema_ExtCF.cxx +++ b/src/BRepExtrema/BRepExtrema_ExtCF.cxx @@ -59,7 +59,7 @@ void BRepExtrema_ExtCF::Initialize(const TopoDS_Edge& E, const TopoDS_Face& F) // Standard_Real U1, U2, V1, V2; BRepTools::UVBounds(F, U1, U2, V1, V2); - myExtCS.Initialize (*myHS, U1, U2, V1, V2, aTolC, aTolS); + myExtCS.Initialize (myHS, U1, U2, V1, V2, aTolC, aTolS); } //======================================================================= @@ -81,7 +81,7 @@ void BRepExtrema_ExtCF::Perform(const TopoDS_Edge& E, const TopoDS_Face& F2) BRepAdaptor_Curve Curv(E); Handle(BRepAdaptor_Curve) HC = new BRepAdaptor_Curve(Curv); - myExtCS.Perform(*HC, U1, U2); + myExtCS.Perform(HC, U1, U2); if(!myExtCS.IsDone()) return; diff --git a/src/BRepExtrema/BRepExtrema_ExtFF.cxx b/src/BRepExtrema/BRepExtrema_ExtFF.cxx index 377e3e1e72..2101a0002b 100644 --- a/src/BRepExtrema/BRepExtrema_ExtFF.cxx +++ b/src/BRepExtrema/BRepExtrema_ExtFF.cxx @@ -54,7 +54,7 @@ void BRepExtrema_ExtFF::Initialize(const TopoDS_Face& F2) Tol = Max(Tol, Precision::PConfusion()); Standard_Real U1, U2, V1, V2; BRepTools::UVBounds(F2, U1, U2, V1, V2); - myExtSS.Initialize (*myHS, U1, U2, V1, V2, Tol); + myExtSS.Initialize (myHS, U1, U2, V1, V2, Tol); } //======================================================================= @@ -78,7 +78,7 @@ void BRepExtrema_ExtFF::Perform(const TopoDS_Face& F1, const TopoDS_Face& F2) Tol1 = Max(Tol1, Precision::PConfusion()); Standard_Real U1, U2, V1, V2; BRepTools::UVBounds(F1, U1, U2, V1, V2); - myExtSS.Perform (*HS1, U1, U2, V1, V2, Tol1); + myExtSS.Perform (HS1, U1, U2, V1, V2, Tol1); if (!myExtSS.IsDone()) return; diff --git a/src/BRepExtrema/BRepExtrema_ExtPC.cxx b/src/BRepExtrema/BRepExtrema_ExtPC.cxx index 23b6fb62d7..430d3b3dd9 100644 --- a/src/BRepExtrema/BRepExtrema_ExtPC.cxx +++ b/src/BRepExtrema/BRepExtrema_ExtPC.cxx @@ -45,7 +45,7 @@ void BRepExtrema_ExtPC::Initialize(const TopoDS_Edge& E) Standard_Real Tol = Min(BRep_Tool::Tolerance(E), Precision::Confusion()); Tol = Max(myHC->Resolution(Tol), Precision::PConfusion()); BRep_Tool::Range(E,U1,U2); - myExtPC.Initialize (*myHC, U1, U2, Tol); + myExtPC.Initialize (myHC, U1, U2, Tol); } //======================================================================= diff --git a/src/BRepExtrema/BRepExtrema_ExtPF.cxx b/src/BRepExtrema/BRepExtrema_ExtPF.cxx index 41493900b9..50a551d82a 100644 --- a/src/BRepExtrema/BRepExtrema_ExtPF.cxx +++ b/src/BRepExtrema/BRepExtrema_ExtPF.cxx @@ -48,15 +48,15 @@ void BRepExtrema_ExtPF::Initialize(const TopoDS_Face& TheFace, { // cette surface doit etre en champ. Extrema ne fait // pas de copie et prend seulement un pointeur dessus. - mySurf.Initialize(TheFace, Standard_False); + mySurf = new BRepAdaptor_Surface(TheFace, Standard_False); - if (mySurf.GetType() == GeomAbs_OtherSurface) + if (mySurf->GetType() == GeomAbs_OtherSurface) return; // protect against non-geometric type (e.g. triangulation) Standard_Real Tol = Min(BRep_Tool::Tolerance(TheFace), Precision::Confusion()); Standard_Real aTolU, aTolV; - aTolU = Max(mySurf.UResolution(Tol), Precision::PConfusion()); - aTolV = Max(mySurf.VResolution(Tol), Precision::PConfusion()); + aTolU = Max(mySurf->UResolution(Tol), Precision::PConfusion()); + aTolV = Max(mySurf->VResolution(Tol), Precision::PConfusion()); Standard_Real U1, U2, V1, V2; BRepTools::UVBounds(TheFace, U1, U2, V1, V2); myExtPS.SetFlag(TheFlag); @@ -75,7 +75,7 @@ void BRepExtrema_ExtPF::Perform(const TopoDS_Vertex& TheVertex, const TopoDS_Fac myPoints.Clear(); const gp_Pnt P = BRep_Tool::Pnt(TheVertex); - if (mySurf.GetType() == GeomAbs_OtherSurface) + if (mySurf->GetType() == GeomAbs_OtherSurface) return; // protect against non-geometric type (e.g. triangulation) myExtPS.Perform(P); diff --git a/src/BRepExtrema/BRepExtrema_ExtPF.hxx b/src/BRepExtrema/BRepExtrema_ExtPF.hxx index e132fc7e84..619394b01e 100644 --- a/src/BRepExtrema/BRepExtrema_ExtPF.hxx +++ b/src/BRepExtrema/BRepExtrema_ExtPF.hxx @@ -86,7 +86,7 @@ class BRepExtrema_ExtPF Extrema_ExtPS myExtPS; TColStd_SequenceOfReal mySqDist; Extrema_SequenceOfPOnSurf myPoints; - BRepAdaptor_Surface mySurf; + Handle(BRepAdaptor_Surface) mySurf; }; #endif diff --git a/src/BRepFeat/BRepFeat.cxx b/src/BRepFeat/BRepFeat.cxx index 725050a01f..2cb78ca9bf 100644 --- a/src/BRepFeat/BRepFeat.cxx +++ b/src/BRepFeat/BRepFeat.cxx @@ -126,7 +126,7 @@ Standard_Real BRepFeat::ParametricBarycenter(const TopoDS_Shape& S, Handle(Geom_Curve) C; Standard_Real f,l,prm; Standard_Integer i, nbp= 0; - GeomAdaptor_Curve TheCurve(CC); + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(CC); Extrema_ExtPC extpc; extpc.Initialize(TheCurve,CC->FirstParameter(),CC->LastParameter()); Standard_Real parbar = 0; @@ -236,9 +236,9 @@ void BRepFeat::ParametricMinMax(const TopoDS_Shape& S, Standard_Real f,l,prm; // Standard_Integer i, nbp= 0; Standard_Integer i; - GeomAdaptor_Curve TheCurve(CC); + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(CC); Extrema_ExtPC extpc; - extpc.Initialize(TheCurve,CC->FirstParameter(),CC->LastParameter()); + extpc.Initialize(TheCurve, CC->FirstParameter(),CC->LastParameter()); prbmin = RealLast(); prbmax = RealFirst(); for (; exp.More(); exp.Next()) { @@ -312,13 +312,13 @@ void BRepFeat::ParametricMinMax(const TopoDS_Shape& S, //======================================================================= static Standard_Boolean IsIn (BRepTopAdaptor_FClass2d& FC, - Geom2dAdaptor_Curve AC) + const Handle(Geom2dAdaptor_Curve)& AC) { Standard_Real Def = 100*Precision::Confusion(); GCPnts_QuasiUniformDeflection QU(AC,Def); for (Standard_Integer i = 1; i <= QU.NbPoints(); i++) { - gp_Pnt2d P = AC.Value(QU.Parameter(i)); + gp_Pnt2d P = AC->Value(QU.Parameter(i)); if (FC.Perform(P, Standard_False) == TopAbs_OUT) { return Standard_False; } @@ -462,8 +462,8 @@ Standard_Boolean BRepFeat::IsInside(const TopoDS_Face& F1, if(flagu == 1) PutInBoundsU(umin, umax, eps, uperiod, f1, l1, C); if(flagv == 1) PutInBoundsV(vmin, vmax, eps, vperiod, f1, l1, C); } - Geom2dAdaptor_Curve AC(C,f1,l1); - if (!IsIn(FC,AC)) { + Handle(Geom2dAdaptor_Curve) AC = new Geom2dAdaptor_Curve(C,f1,l1); + if (!IsIn(FC, AC)) { return Standard_False; } } diff --git a/src/BRepFeat/BRepFeat.hxx b/src/BRepFeat/BRepFeat.hxx index d4441dc105..9bc5f5ea86 100644 --- a/src/BRepFeat/BRepFeat.hxx +++ b/src/BRepFeat/BRepFeat.hxx @@ -97,7 +97,7 @@ public: Standard_EXPORT static Standard_Boolean IsInside (const TopoDS_Face& F1, const TopoDS_Face& F2); - Standard_EXPORT static Standard_Boolean IsInOut (const BRepTopAdaptor_FClass2d& FC, const Geom2dAdaptor_Curve& AC); + Standard_EXPORT static Standard_Boolean IsInOut (const BRepTopAdaptor_FClass2d& FC, const Handle(Geom2dAdaptor_Curve)& AC); Standard_EXPORT static void FaceUntil (const TopoDS_Shape& S, TopoDS_Face& F); diff --git a/src/BRepFill/BRepFill.cxx b/src/BRepFill/BRepFill.cxx index 38fd29fa4f..b8fcb12bba 100644 --- a/src/BRepFill/BRepFill.cxx +++ b/src/BRepFill/BRepFill.cxx @@ -925,7 +925,7 @@ void BRepFill::ComputeACR(const TopoDS_Wire& wire, TopoDS_Edge Ecur = TopoDS::Edge(anExp.Current()); ACR(nbEdges) = ACR(nbEdges-1); if (!BRep_Tool::Degenerated(Ecur)) { - BRepAdaptor_Curve anEcur(Ecur); + Handle(BRepAdaptor_Curve) anEcur = new BRepAdaptor_Curve(Ecur); ACR(nbEdges) += GCPnts_AbscissaPoint::Length(anEcur); } } diff --git a/src/BRepFill/BRepFill_AdvancedEvolved.cxx b/src/BRepFill/BRepFill_AdvancedEvolved.cxx index 2d5cdd19f5..8e39bd7456 100644 --- a/src/BRepFill/BRepFill_AdvancedEvolved.cxx +++ b/src/BRepFill/BRepFill_AdvancedEvolved.cxx @@ -1085,7 +1085,7 @@ void BRepFill_AdvancedEvolved::RemoveExcessSolids(const TopTools_ListOfShape& th class NormalFunc : public math_MultipleVarFunctionWithGradient { public: - NormalFunc(const Adaptor3d_CurveOnSurface& theCOS) :myCOnS(theCOS) + NormalFunc(const Handle(Adaptor3d_CurveOnSurface)& theCOS) :myCOnS(theCOS) { } @@ -1144,7 +1144,7 @@ protected: NormalFunc& operator=(NormalFunc&); private: - const Adaptor3d_CurveOnSurface& myCOnS; + const Handle(Adaptor3d_CurveOnSurface)& myCOnS; }; //======================================================================= diff --git a/src/BRepFill/BRepFill_CompatibleWires.cxx b/src/BRepFill/BRepFill_CompatibleWires.cxx index ebb01adf79..b457b845e4 100644 --- a/src/BRepFill/BRepFill_CompatibleWires.cxx +++ b/src/BRepFill/BRepFill_CompatibleWires.cxx @@ -310,12 +310,12 @@ static void WireContinuity (const TopoDS_Wire& W, TopExp::Vertices(Edge2,V2,Vbid,Standard_True); Standard_Real U1 = BRep_Tool::Parameter(V1,Edge1); Standard_Real U2 = BRep_Tool::Parameter(V2,Edge2); - BRepAdaptor_Curve Curve1(Edge1); - BRepAdaptor_Curve Curve2(Edge2); + Handle(BRepAdaptor_Curve) Curve1 = new BRepAdaptor_Curve(Edge1); + Handle(BRepAdaptor_Curve) Curve2 = new BRepAdaptor_Curve(Edge2); Standard_Real Eps = BRep_Tool::Tolerance(V2) + BRep_Tool::Tolerance(V1); if(j == nbEdges) - testconti = Curve1.Value(U1).IsEqual(Curve2.Value(U2), Eps); + testconti = Curve1->Value(U1).IsEqual(Curve2->Value(U2), Eps); if(testconti) { cont = BRepLProp::Continuity(Curve1,Curve2,U1,U2, diff --git a/src/BRepFill/BRepFill_Draft.cxx b/src/BRepFill/BRepFill_Draft.cxx index b8c9762958..918aca6ed5 100644 --- a/src/BRepFill/BRepFill_Draft.cxx +++ b/src/BRepFill/BRepFill_Draft.cxx @@ -97,7 +97,7 @@ static void ComputeTrsf(const TopoDS_Wire& W, // Calculate the Transformation gp_Ax3 N(Bary, D); Tf.SetTransformation(N); - BRepAdaptor_Curve AC; + Handle(BRepAdaptor_Curve) AC = new BRepAdaptor_Curve(); // BndLib_Add3dCurve BC; // transformation to the wire @@ -109,7 +109,7 @@ static void ComputeTrsf(const TopoDS_Wire& W, // Calculate the box Box.SetVoid(); for (Exp.Init(TheW); Exp.More(); Exp.Next()) { - AC.Initialize(Exp.Current()); + AC->Initialize(Exp.Current()); // BC.Add(AC, 0.1, Box); BndLib_Add3dCurve::Add(AC, 0.1, Box); } @@ -348,7 +348,7 @@ static Standard_Boolean GoodOrientation(const Bnd_Box& B, // box with bounds of the stop surface Handle(Geom_Surface) Surf; Surf = Handle(Geom_Surface)::DownCast(Surface->Transformed(Trsf)); - GeomAdaptor_Surface S1 (Surf); + Handle(GeomAdaptor_Surface) S1 = new GeomAdaptor_Surface(Surf); // BndLib_AddSurface AS; // AS.Add(S1, 0.1, SBox); BndLib_AddSurface::Add(S1, 0.1, SBox); @@ -395,7 +395,7 @@ static Standard_Boolean GoodOrientation(const Bnd_Box& B, Surf = Handle(Geom_Surface)::DownCast( // BT.Surface(TopoDS::Face(Ex.Current()))->Transformed(Trsf) ); BRep_Tool::Surface(TopoDS::Face(Ex.Current()))->Transformed(Trsf) ); - GeomAdaptor_Surface S1 (Surf); + Handle(GeomAdaptor_Surface) S1 = new GeomAdaptor_Surface(Surf); // bounding box of the current face // AS.Add(S1, Umin, Umax, Vmin, Vmax, 0.1, BSurf); BndLib_AddSurface::Add(S1, Umin, Umax, Vmin, Vmax, 0.1, BSurf); diff --git a/src/BRepFill/BRepFill_Evolved.cxx b/src/BRepFill/BRepFill_Evolved.cxx index 6655ffb441..8415dcb8ea 100644 --- a/src/BRepFill/BRepFill_Evolved.cxx +++ b/src/BRepFill/BRepFill_Evolved.cxx @@ -2427,8 +2427,8 @@ void BRepFill_Evolved::ContinuityOnOffsetEdge (const TopTools_ListOfShape&) // the regularities are already coded on the edges of elementary volevos Standard_Real U1 = BRep_Tool::Parameter(V,CurE); Standard_Real U2 = BRep_Tool::Parameter(V,PrecE); - BRepAdaptor_Curve Curve1(CurE); - BRepAdaptor_Curve Curve2(PrecE); + Handle(BRepAdaptor_Curve) Curve1 = new BRepAdaptor_Curve(CurE); + Handle(BRepAdaptor_Curve) Curve2 = new BRepAdaptor_Curve(PrecE); GeomAbs_Shape Continuity = BRepLProp::Continuity(Curve1,Curve2,U1,U2); if (Continuity >=1) { @@ -2459,8 +2459,8 @@ void BRepFill_Evolved::ContinuityOnOffsetEdge (const TopTools_ListOfShape&) //Closed profile. Standard_Real U1 = BRep_Tool::Parameter(VF,CurE); Standard_Real U2 = BRep_Tool::Parameter(VF,FirstE); - BRepAdaptor_Curve Curve1(CurE); - BRepAdaptor_Curve Curve2(FirstE); + Handle(BRepAdaptor_Curve) Curve1 = new BRepAdaptor_Curve(CurE); + Handle(BRepAdaptor_Curve) Curve2 = new BRepAdaptor_Curve(FirstE); GeomAbs_Shape Continuity = BRepLProp::Continuity(Curve1,Curve2,U1,U2); if (Continuity >=1) { @@ -3053,7 +3053,7 @@ void CutEdgeProf (const TopoDS_Edge& E, l= C2d->LastParameter(); Bnd_Box2d B; - Geom2dAdaptor_Curve AC2d(C2d); + Handle(Geom2dAdaptor_Curve) AC2d = new Geom2dAdaptor_Curve(C2d); BndLib_Add2dCurve::Add(AC2d,BRepFill_Confusion(),B); Standard_Real xmin,xmax; B.Get(xmin,U1,xmax,U2); @@ -3072,7 +3072,7 @@ void CutEdgeProf (const TopoDS_Edge& E, // modified by NIZHNY-EAP Wed Feb 2 16:33:05 2000 ___END___ // On calcule les intersection avec Oy. - Geom2dAdaptor_Curve ALine(Line); + Handle(Geom2dAdaptor_Curve) ALine = new Geom2dAdaptor_Curve(Line); Standard_Real Tol = Precision::Intersection(); Standard_Real TolC = 0.; diff --git a/src/BRepFill/BRepFill_LocationLaw.cxx b/src/BRepFill/BRepFill_LocationLaw.cxx index 55979ea65b..ee862fdce3 100644 --- a/src/BRepFill/BRepFill_LocationLaw.cxx +++ b/src/BRepFill/BRepFill_LocationLaw.cxx @@ -437,7 +437,7 @@ void BRepFill_LocationLaw::CurvilinearBounds(const Standard_Integer Index, for (ii=1, Length=0.; ii<=NbE; ii++) { myLaws->Value(ii)->GetDomain(f, l); - Length += AbsC.Length(*myLaws->Value(ii)->GetCurve(), myTol); + Length += AbsC.Length(myLaws->Value(ii)->GetCurve(), myTol); myLength->SetValue(ii+1, Length); } @@ -582,7 +582,7 @@ void BRepFill_LocationLaw::CurvilinearBounds(const Standard_Integer Index, else { GCPnts_AbscissaPoint AbsC(myTol, - *myLaws->Value(iedge)->GetCurve(), + myLaws->Value(iedge)->GetCurve(), Abcissa-myLength->Value(iedge), f); U = AbsC.Parameter(); } @@ -642,7 +642,7 @@ void BRepFill_LocationLaw::CurvilinearBounds(const Standard_Integer Index, CurvilinearBounds(Index, bid, Length); } - Length += AbsC.Length(*myLaws->Value(Index)->GetCurve(), + Length += AbsC.Length(myLaws->Value(Index)->GetCurve(), myLaws->Value(Index)->GetCurve()->FirstParameter(), Param, myTol); return Length; diff --git a/src/BRepFill/BRepFill_MultiLine.cxx b/src/BRepFill/BRepFill_MultiLine.cxx index 9f27aa77ab..7645b401bc 100644 --- a/src/BRepFill/BRepFill_MultiLine.cxx +++ b/src/BRepFill/BRepFill_MultiLine.cxx @@ -88,6 +88,11 @@ BRepFill_MultiLine::BRepFill_MultiLine() { myNbPnt2d = 2; myNbPnt = 1; + myU1 = new Geom2dAdaptor_Curve(); + myV1 = new Geom2dAdaptor_Curve(); + myU2 = new Geom2dAdaptor_Curve(); + myV2 = new Geom2dAdaptor_Curve(); + myBis = new Geom2dAdaptor_Curve(); } @@ -105,7 +110,7 @@ BRepFill_MultiLine::BRepFill_MultiLine(const TopoDS_Face& Face1, const Handle(Geom2d_Curve)& Bissec) : myFace1(Face1 ), myFace2(Face2 ), - myBis (Bissec), + myBis(new Geom2dAdaptor_Curve(Bissec)), myKPart(0) { // @@ -228,13 +233,13 @@ BRepFill_MultiLine::BRepFill_MultiLine(const TopoDS_Face& Face1, } // end try duplication - myU1 = Geom2dAdaptor_Curve(GeomProjLib::Curve2d(UU1, BasisPlane), + myU1 = new Geom2dAdaptor_Curve(GeomProjLib::Curve2d(UU1, BasisPlane), Umin, Umax); UU1->D1(Umin, P, DZ); RefPlane = new Geom_Plane(gp_Ax3(P,DZ,gp::DZ())); - myV1 = Geom2dAdaptor_Curve(GeomProjLib::Curve2d(VV1, RefPlane), + myV1 = new Geom2dAdaptor_Curve(GeomProjLib::Curve2d(VV1, RefPlane), Vmin, Vmax); @@ -334,12 +339,12 @@ BRepFill_MultiLine::BRepFill_MultiLine(const TopoDS_Face& Face1, } // end try duplication - myU2 = Geom2dAdaptor_Curve(GeomProjLib::Curve2d(UU2, BasisPlane), + myU2 = new Geom2dAdaptor_Curve(GeomProjLib::Curve2d(UU2, BasisPlane), Umin, Umax); UU2->D1(Umin, P, DZ); RefPlane = new Geom_Plane(gp_Ax3(P,DZ,gp::DZ())); - myV2 = Geom2dAdaptor_Curve(GeomProjLib::Curve2d(VV2, RefPlane), + myV2 = new Geom2dAdaptor_Curve(GeomProjLib::Curve2d(VV2, RefPlane), Vmin, Vmax); // eval if in a particular case. @@ -351,10 +356,10 @@ BRepFill_MultiLine::BRepFill_MultiLine(const TopoDS_Face& Face1, // - 2 surfaces are planes. myCont = GeomAbs_C0; - if ( myBis.GetType() == GeomAbs_Line) { - Standard_Real DeltaU = myBis.LastParameter() - myBis.FirstParameter(); - gp_Pnt2d aPnt1 = ValueOnF1(myBis.FirstParameter() + 0.1*DeltaU); - gp_Pnt2d aPnt2 = ValueOnF1(myBis.FirstParameter() + 0.9*DeltaU); + if ( myBis->GetType() == GeomAbs_Line) { + Standard_Real DeltaU = myBis->LastParameter() - myBis->FirstParameter(); + gp_Pnt2d aPnt1 = ValueOnF1(myBis->FirstParameter() + 0.1*DeltaU); + gp_Pnt2d aPnt2 = ValueOnF1(myBis->FirstParameter() + 0.9*DeltaU); if ( myIsoU1) { if ( Abs(aPnt1.Y() - aPnt2.Y()) < eps) myKPart = 1; @@ -398,13 +403,13 @@ void BRepFill_MultiLine::Curves(Handle(Geom_Curve)& Curve, gp_Pnt2d P1,P2,PMil; Standard_Real f,l; - P1 = ValueOnF1(myBis.FirstParameter()); - P2 = ValueOnF1(myBis.LastParameter()); + P1 = ValueOnF1(myBis->FirstParameter()); + P2 = ValueOnF1(myBis->LastParameter()); // find value of the with medium point // the ends can be degenerated points. - PMil = ValueOnF1(0.5*(myBis.FirstParameter() + myBis.LastParameter())); + PMil = ValueOnF1(0.5*(myBis->FirstParameter() + myBis->LastParameter())); TopLoc_Location L; Handle(Geom_Surface) S = BRep_Tool::Surface(myFace1,L); @@ -445,9 +450,9 @@ void BRepFill_MultiLine::Curves(Handle(Geom_Curve)& Curve, PCurve1 = new Geom2d_TrimmedCurve( PCurve1 ,f ,l); } - P1 = ValueOnF2(myBis.FirstParameter()); - P2 = ValueOnF2(myBis.LastParameter()); - PMil = ValueOnF2(0.5*(myBis.FirstParameter() + myBis.LastParameter())); + P1 = ValueOnF2(myBis->FirstParameter()); + P2 = ValueOnF2(myBis->LastParameter()); + PMil = ValueOnF2(0.5*(myBis->FirstParameter() + myBis->LastParameter())); if (!myIsoU2) { Sens = P1.Y() < P2.Y(); @@ -477,13 +482,13 @@ void BRepFill_MultiLine::Curves(Handle(Geom_Curve)& Curve, Handle(Geom_Plane) Plane = Handle(Geom_Plane)::DownCast(S); // eval the 3d curve corresponding to the bissectrice. - gp_Pnt2d P = myBis.Line().Location(); - gp_Dir2d D = myBis.Line().Direction(); + gp_Pnt2d P = myBis->Line().Location(); + gp_Dir2d D = myBis->Line().Direction(); Handle(Geom_Line) Line = new Geom_Line(gp_Pnt(P.X(),P.Y(),0.), gp_Dir(D.X(),D.Y(),0.) ); Handle(Geom_TrimmedCurve) TLine = - new Geom_TrimmedCurve(Line, myBis.FirstParameter(), - myBis.LastParameter()); + new Geom_TrimmedCurve(Line, myBis->FirstParameter(), + myBis->LastParameter()); Curve = GeomProjLib::ProjectOnPlane(TLine, Plane, gp::DZ(), Standard_False); @@ -522,7 +527,7 @@ void BRepFill_MultiLine::Curves(Handle(Geom_Curve)& Curve, Standard_Real BRepFill_MultiLine::FirstParameter() const { - return myBis.FirstParameter(); + return myBis->FirstParameter(); } @@ -533,7 +538,7 @@ Standard_Real BRepFill_MultiLine::FirstParameter() const Standard_Real BRepFill_MultiLine::LastParameter() const { - return myBis.LastParameter(); + return myBis->LastParameter(); } @@ -564,23 +569,23 @@ gp_Pnt BRepFill_MultiLine::Value(const Standard_Real U) const //======================================================================= static gp_Pnt2d ValueOnFace(const Standard_Real U, - const Geom2dAdaptor_Curve& TheBis, - const Geom2dAdaptor_Curve& TheU, - const Geom2dAdaptor_Curve& TheV, + const Handle(Geom2dAdaptor_Curve)& TheBis, + const Handle(Geom2dAdaptor_Curve)& TheU, + const Handle(Geom2dAdaptor_Curve)& TheV, const Standard_Boolean IsIsoU) { - gp_Pnt2d P = TheBis.Value(U); + gp_Pnt2d P = TheBis->Value(U); - Geom2dAPI_ProjectPointOnCurve Ext(P,TheU.Curve(), - TheU.FirstParameter(), - TheU.LastParameter()); + Geom2dAPI_ProjectPointOnCurve Ext(P,TheU->Curve(), + TheU->FirstParameter(), + TheU->LastParameter()); #ifdef DRAW if (AffichCurve) { char* TheUname = "TheU"; char* PP1name = "PP1"; - DrawTrSurf::Set(TheUname,TheU.Curve()); + DrawTrSurf::Set(TheUname,TheU->Curve()); DrawTrSurf::Set(PP1name,P); - // DrawTrSurf::Set("TheU",TheU.Curve()); + // DrawTrSurf::Set("TheU",TheU->Curve()); // DrawTrSurf::Set("PP1",P); } #endif @@ -595,19 +600,19 @@ static gp_Pnt2d ValueOnFace(const Standard_Real U, Dist = Ext.LowerDistance(); } // Control with `ends` - D1 = P.Distance(TheU.Value(TheU.FirstParameter())); - D2 = P.Distance(TheU.Value(TheU.LastParameter())); + D1 = P.Distance(TheU->Value(TheU->FirstParameter())); + D2 = P.Distance(TheU->Value(TheU->LastParameter())); if (D1 < Dist || D2 < Dist || Abs(D1 - Dist) < eps || Abs(D2 - Dist) < eps) { if ( Abs( D1 - D2) < eps) { - if ( TheU.GetType() == GeomAbs_Circle) { - gp_Vec2d Axis = TheU.Circle().XAxis().Direction(); - gp_Vec2d D12d = TheBis.DN(TheBis.FirstParameter(),1); + if ( TheU->GetType() == GeomAbs_Circle) { + gp_Vec2d Axis = TheU->Circle().XAxis().Direction(); + gp_Vec2d D12d = TheBis->DN(TheBis->FirstParameter(),1); Standard_Real Ang = Axis.Angle(D12d); - if ( !TheU.Circle().IsDirect()) Ang = -Ang; - UU = ElCLib::InPeriod( Ang, TheU.FirstParameter(), - TheU.FirstParameter() + 2*M_PI); - Dist = TheU.Circle().Radius(); + if ( !TheU->Circle().IsDirect()) Ang = -Ang; + UU = ElCLib::InPeriod( Ang, TheU->FirstParameter(), + TheU->FirstParameter() + 2*M_PI); + Dist = TheU->Circle().Radius(); } else { #ifdef OCCT_DEBUG @@ -619,25 +624,25 @@ static gp_Pnt2d ValueOnFace(const Standard_Real U, } else if ( D1 < D2) { Dist = D1; - UU = TheU.FirstParameter(); + UU = TheU->FirstParameter(); } else { Dist = D2; - UU = TheU.LastParameter(); + UU = TheU->LastParameter(); } } const Standard_Real Tol = Precision::Confusion(); Standard_Real VV; - gp_Pnt2d PF = TheV.Value(TheV.FirstParameter()); - gp_Pnt2d PL = TheV.Value(TheV.LastParameter()); + gp_Pnt2d PF = TheV->Value(TheV->FirstParameter()); + gp_Pnt2d PL = TheV->Value(TheV->LastParameter()); if (Abs(Dist - Abs(PF.Y())) < Tol) { - VV = TheV.FirstParameter(); + VV = TheV->FirstParameter(); } else if (Abs(Dist - Abs(PL.Y())) < Tol) { - VV = TheV.LastParameter(); + VV = TheV->LastParameter(); } else { // test if the curve is at the side `negative Y`. @@ -649,14 +654,14 @@ static gp_Pnt2d ValueOnFace(const Standard_Real U, #ifdef DRAW if (AffichCurve) { static Standard_CString aTheV = "TheV" ; - DrawTrSurf::Set(aTheV,TheV.Curve()); + DrawTrSurf::Set(aTheV,TheV->Curve()); static Standard_CString aLINF1 = "LINF1" ; DrawTrSurf::Set(aLINF1,Line); } #endif - Geom2dAdaptor_Curve Cu1 = TheV; - Geom2dAdaptor_Curve Cu2( Line); + Handle(Geom2dAdaptor_Curve) Cu1 = Handle(Geom2dAdaptor_Curve)::DownCast(TheV->ShallowCopy()); + Handle(Geom2dAdaptor_Curve) Cu2 = new Geom2dAdaptor_Curve(Line); Standard_Real TolConf = 0.; @@ -677,8 +682,8 @@ static gp_Pnt2d ValueOnFace(const Standard_Real U, IntRes2d_IntersectionSegment Seg = Intersector.Segment(1); Standard_Real VS1 = Seg.FirstPoint().ParamOnFirst(); Standard_Real VS2 = Seg.LastPoint().ParamOnFirst(); - gp_Pnt2d PS1 = TheV.Value(VS1); - gp_Pnt2d PS2 = TheV.Value(VS2); + gp_Pnt2d PS1 = TheV->Value(VS1); + gp_Pnt2d PS2 = TheV->Value(VS2); Standard_Real Alp = (Dist - PS1.Y())/(PS2.Y() - PS1.Y()); VV = Alp*(VS2 - VS1) + VS1; } @@ -688,9 +693,9 @@ static gp_Pnt2d ValueOnFace(const Standard_Real U, std::cout << " ---> ValueonFace failed at parameter U = " << U << std::endl; #endif if (Abs(Dist - PL.Y()) < Abs(Dist - PF.Y())) - VV = TheV.LastParameter(); + VV = TheV->LastParameter(); else - VV = TheV.FirstParameter(); + VV = TheV->FirstParameter(); } } } diff --git a/src/BRepFill/BRepFill_MultiLine.hxx b/src/BRepFill/BRepFill_MultiLine.hxx index 2244f4b050..e19b7c9ca4 100644 --- a/src/BRepFill/BRepFill_MultiLine.hxx +++ b/src/BRepFill/BRepFill_MultiLine.hxx @@ -98,13 +98,13 @@ public: private: TopoDS_Face myFace1; TopoDS_Face myFace2; - Geom2dAdaptor_Curve myU1; - Geom2dAdaptor_Curve myV1; - Geom2dAdaptor_Curve myU2; - Geom2dAdaptor_Curve myV2; + Handle(Geom2dAdaptor_Curve) myU1; + Handle(Geom2dAdaptor_Curve) myV1; + Handle(Geom2dAdaptor_Curve) myU2; + Handle(Geom2dAdaptor_Curve) myV2; Standard_Boolean myIsoU1; Standard_Boolean myIsoU2; - Geom2dAdaptor_Curve myBis; + Handle(Geom2dAdaptor_Curve) myBis; Standard_Integer myKPart; GeomAbs_Shape myCont; }; diff --git a/src/BRepFill/BRepFill_NSections.cxx b/src/BRepFill/BRepFill_NSections.cxx index 6e7f0c984b..fd817f45b5 100644 --- a/src/BRepFill/BRepFill_NSections.cxx +++ b/src/BRepFill/BRepFill_NSections.cxx @@ -780,8 +780,8 @@ void BRepFill_NSections::Init(const TColStd_SequenceOfReal & P, { Standard_Real U1 = BRep_Tool::Parameter(V1,Edge1); Standard_Real U2 = BRep_Tool::Parameter(V2,Edge2); - BRepAdaptor_Curve Curve1(Edge1); - BRepAdaptor_Curve Curve2(Edge2); + Handle(BRepAdaptor_Curve) Curve1 = new BRepAdaptor_Curve(Edge1); + Handle(BRepAdaptor_Curve) Curve2 = new BRepAdaptor_Curve(Edge2); Standard_Real Eps = BRep_Tool::Tolerance(V2) + BRep_Tool::Tolerance(V1); cont_jj = BRepLProp::Continuity(Curve1,Curve2,U1,U2, Eps, TolAngular); diff --git a/src/BRepFill/BRepFill_OffsetWire.cxx b/src/BRepFill/BRepFill_OffsetWire.cxx index 0c7cb2b840..b3119aa325 100644 --- a/src/BRepFill/BRepFill_OffsetWire.cxx +++ b/src/BRepFill/BRepFill_OffsetWire.cxx @@ -104,7 +104,7 @@ static Standard_Integer NbBISSEC = 0; // Modified by Sergey KHROMOV - Thu Nov 16 17:24:39 2000 Begin -static void QuasiFleche(const Adaptor3d_Curve& C, +static void QuasiFleche(const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection2, const Standard_Real Udeb, const gp_Pnt& Pdeb, @@ -119,7 +119,7 @@ static void QuasiFleche(const Adaptor3d_Curve& C, static Standard_Boolean PerformCurve (TColStd_SequenceOfReal& Parameters, TColgp_SequenceOfPnt& Points, - const Adaptor3d_Curve& C, + const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, @@ -517,7 +517,7 @@ void BRepFill_OffsetWire::Perform (const Standard_Real Offset, Standard_Real f, l; Handle(Geom_Curve) G3d = BRep_Tool::Curve(TopoDS::Edge(anE),f,l); - GeomAdaptor_Curve AC(G3d,f,l); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(G3d,f,l); PerformCurve(Parameters, Points, AC, aDefl, f, l, Precision::Confusion(), 2); @@ -2600,7 +2600,7 @@ static void CheckBadEdges(const TopoDS_Face& Spine, const Standard_Real Offset, static Standard_Boolean PerformCurve (TColStd_SequenceOfReal& Parameters, TColgp_SequenceOfPnt& Points, - const Adaptor3d_Curve& C, + const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, @@ -2612,11 +2612,11 @@ static Standard_Boolean PerformCurve (TColStd_SequenceOfReal& Parameters, gp_Pnt Pdeb, Pfin; gp_Vec Ddeb,Dfin; - C.D1(UU1,Pdeb,Ddeb); + C->D1(UU1,Pdeb,Ddeb); Parameters.Append(UU1); Points.Append(Pdeb); - C.D1(UU2,Pfin,Dfin); + C->D1(UU2,Pfin,Dfin); const Standard_Real aDelta = UU2 - UU1; const Standard_Real aDist = Pdeb.Distance(Pfin); @@ -2641,7 +2641,7 @@ static Standard_Boolean PerformCurve (TColStd_SequenceOfReal& Parameters, //purpose : //======================================================================= -static void QuasiFleche(const Adaptor3d_Curve& C, +static void QuasiFleche(const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection2, const Standard_Real Udeb, @@ -2661,7 +2661,7 @@ static void QuasiFleche(const Adaptor3d_Curve& C, gp_Vec Vdelta; if (Nbmin > 2) { Udelta /=(Nbmin-1); - C.D1(Udeb+Udelta,Pdelta,Vdelta); + C->D1(Udeb+Udelta,Pdelta,Vdelta); } else { Pdelta = Pfin; @@ -2689,7 +2689,7 @@ static void QuasiFleche(const Adaptor3d_Curve& C, } if (!flecheok) { gp_Pnt Pmid((Pdeb.XYZ()+Pdelta.XYZ())/2.); - gp_Pnt Pverif(C.Value(Udeb+Udelta/2.)); + gp_Pnt Pverif(C->Value(Udeb+Udelta/2.)); theFleche = Pmid.SquareDistance(Pverif); } diff --git a/src/BRepFill/BRepFill_ShapeLaw.cxx b/src/BRepFill/BRepFill_ShapeLaw.cxx index 03aeebc1e6..3d00bf2df2 100644 --- a/src/BRepFill/BRepFill_ShapeLaw.cxx +++ b/src/BRepFill/BRepFill_ShapeLaw.cxx @@ -424,8 +424,8 @@ void BRepFill_ShapeLaw::Init(const Standard_Boolean Build) Standard_Real U1 = BRep_Tool::Parameter(V1,Edge1); Standard_Real U2 = BRep_Tool::Parameter(V2,Edge2); - BRepAdaptor_Curve Curve1(Edge1); - BRepAdaptor_Curve Curve2(Edge2); + Handle(BRepAdaptor_Curve) Curve1 = new BRepAdaptor_Curve(Edge1); + Handle(BRepAdaptor_Curve) Curve2 = new BRepAdaptor_Curve(Edge2); Standard_Real Eps = BRep_Tool::Tolerance(V2) + BRep_Tool::Tolerance(V1); GeomAbs_Shape cont; diff --git a/src/BRepFill/BRepFill_Sweep.cxx b/src/BRepFill/BRepFill_Sweep.cxx index 1be188dd79..ee47d83e4e 100644 --- a/src/BRepFill/BRepFill_Sweep.cxx +++ b/src/BRepFill/BRepFill_Sweep.cxx @@ -1454,7 +1454,7 @@ static TopoDS_Edge BuildEdge(const Handle(Geom_Surface)& S, Iso->D0((Iso->FirstParameter()+Iso->LastParameter())/2, P); // if (P.Distance(BT.Pnt(V)) < tol) { if (P.Distance(BRep_Tool::Pnt(V)) < tol) { - GeomAdaptor_Curve AC(Iso); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(Iso); sing = GCPnts_AbscissaPoint::Length(AC, tol/4) < tol; } } @@ -1616,7 +1616,7 @@ static void UpdateEdge(TopoDS_Edge& E, Standard_Real tol = BRep_Tool::Tolerance(Vf); Iso->D0((Iso->FirstParameter()+Iso->LastParameter())/2, Pmid); if (Pmid.Distance(BRep_Tool::Pnt(Vf)) < tol) { - GeomAdaptor_Curve AC(Iso); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(Iso); sing = GCPnts_AbscissaPoint::Length(AC, tol/4) < tol; } } @@ -1759,7 +1759,7 @@ static Standard_Boolean IsDegen(const Handle(Geom_Surface)& S, for (ii=1, dt = (Umax-Umin)/(Nb+1); B && (ii<=Nb); ii++) { t = Umin + ii*dt; Iso = S->UIso(t); - GeomAdaptor_Curve AC(Iso); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(Iso); l = GC.Length(AC, Tol/4); B = (l <= Tol); } @@ -1777,7 +1777,7 @@ static Standard_Boolean IsDegen(const Handle(Geom_Surface)& S, for (ii=1, dt = (Vmax-Vmin)/(Nb+1); B && (ii<=Nb); ii++) { t = Vmin + ii*dt; Iso = S->VIso(t); - GeomAdaptor_Curve AC(Iso); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(Iso); l = GC.Length(AC, Tol/4); B = (l <= Tol); } diff --git a/src/BRepFill/BRepFill_TrimEdgeTool.cxx b/src/BRepFill/BRepFill_TrimEdgeTool.cxx index e6ae701b4c..3002559c42 100644 --- a/src/BRepFill/BRepFill_TrimEdgeTool.cxx +++ b/src/BRepFill/BRepFill_TrimEdgeTool.cxx @@ -83,6 +83,7 @@ static void SimpleExpression (const Bisector_Bisec& B, BRepFill_TrimEdgeTool::BRepFill_TrimEdgeTool() { + myBis = new Geom2dAdaptor_Curve(); } @@ -134,7 +135,7 @@ myOffset(Offset), // return the simple expression of the bissectrice Handle(Geom2d_Curve) Bis; SimpleExpression(myBisec, Bis); - myBis = Geom2dAdaptor_Curve(Bis); + myBis = new Geom2dAdaptor_Curve(Bis); #ifdef DRAW if ( Affich) { char* myBisname = "myBis"; @@ -172,16 +173,16 @@ static void Bubble(TColgp_SequenceOfPnt& Seq) //purpose : //======================================================================= -static void EvalParameters(const Geom2dAdaptor_Curve& Bis, - const Geom2dAdaptor_Curve& AC, +static void EvalParameters(const Handle(Geom2dAdaptor_Curve)& Bis, + const Handle(Geom2dAdaptor_Curve)& AC, TColgp_SequenceOfPnt& Params) { Geom2dInt_GInter Intersector; Standard_Real Tol = Precision::Confusion(); // Standard_Real TolC = 1.e-9; - Geom2dAdaptor_Curve CBis(Bis); - Geom2dAdaptor_Curve CAC (AC); + Handle(Geom2dAdaptor_Curve) CBis = Handle(Geom2dAdaptor_Curve)::DownCast(Bis->ShallowCopy()); + Handle(Geom2dAdaptor_Curve) CAC = Handle(Geom2dAdaptor_Curve)::DownCast(AC->ShallowCopy()); //Intersector = Geom2dInt_GInter(CBis, CAC, TolC, Tol); Intersector = Geom2dInt_GInter(CAC, CBis, Tol, Tol); @@ -214,8 +215,8 @@ static void EvalParameters(const Geom2dAdaptor_Curve& Bis, Seg = Intersector.Segment(i); U1 = Seg.FirstPoint().ParamOnSecond(); Standard_Real Ulast = Seg.LastPoint().ParamOnSecond(); - if ( Abs(U1 - CBis.FirstParameter()) <= Tol && - Abs(Ulast - CBis.LastParameter()) <= Tol ) { + if ( Abs(U1 - CBis->FirstParameter()) <= Tol && + Abs(Ulast - CBis->LastParameter()) <= Tol ) { P = gp_Pnt(U1,Seg.FirstPoint().ParamOnFirst(),0.); Params.Append(P); P = gp_Pnt(Ulast,Seg.LastPoint().ParamOnFirst(),0.); @@ -237,16 +238,16 @@ static void EvalParameters(const Geom2dAdaptor_Curve& Bis, Bubble( Params); } -static void EvalParametersBis(const Geom2dAdaptor_Curve& Bis, - const Geom2dAdaptor_Curve& AC, +static void EvalParametersBis(const Handle(Geom2dAdaptor_Curve)& Bis, + const Handle(Geom2dAdaptor_Curve)& AC, TColgp_SequenceOfPnt& Params, const Standard_Real Tol) { Geom2dInt_GInter Intersector; Standard_Real TolC = Tol; - Geom2dAdaptor_Curve CBis(Bis); - Geom2dAdaptor_Curve CAC (AC); + Handle(Geom2dAdaptor_Curve) CBis = Handle(Geom2dAdaptor_Curve)::DownCast(Bis->ShallowCopy()); + Handle(Geom2dAdaptor_Curve) CAC = Handle(Geom2dAdaptor_Curve)::DownCast(AC->ShallowCopy()); Intersector = Geom2dInt_GInter(CAC, CBis, TolC, Tol); @@ -278,8 +279,8 @@ static void EvalParametersBis(const Geom2dAdaptor_Curve& Bis, Seg = Intersector.Segment(i); U1 = Seg.FirstPoint().ParamOnSecond(); Standard_Real Ulast = Seg.LastPoint().ParamOnSecond(); - if ( Abs(U1 - CBis.FirstParameter()) <= Tol && - Abs(Ulast - CBis.LastParameter()) <= Tol ) { + if ( Abs(U1 - CBis->FirstParameter()) <= Tol && + Abs(Ulast - CBis->LastParameter()) <= Tol ) { P = gp_Pnt(U1,Seg.FirstPoint().ParamOnFirst(),0.); Params.Append(P); P = gp_Pnt(Ulast,Seg.LastPoint().ParamOnFirst(),0.); @@ -326,27 +327,27 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, Handle(Geom2d_Curve) C1; BRep_Tool::CurveOnSurface(Edge1,C1,Surf,L,f,l); - Geom2dAdaptor_Curve AC1(C1,f,l); + Handle(Geom2dAdaptor_Curve) AC1 = new Geom2dAdaptor_Curve(C1,f,l); Handle(Geom2d_Curve) C2; BRep_Tool::CurveOnSurface(Edge2,C2,Surf,L,f,l); - Geom2dAdaptor_Curve AC2(C2,f,l); + Handle(Geom2dAdaptor_Curve) AC2 = new Geom2dAdaptor_Curve(C2,f,l); #ifdef DRAW if ( AffichInt) { - f = AC1.FirstParameter(); - l = AC1.LastParameter(); + f = AC1->FirstParameter(); + l = AC1->LastParameter(); char name[32]; sprintf(name,"C1_%d", ++intind); DrawTrSurf::Set(name, new Geom2d_TrimmedCurve(C1,f,l)); - f = AC2.FirstParameter(); - l = AC2.LastParameter(); + f = AC2->FirstParameter(); + l = AC2->LastParameter(); sprintf(name,"C2_%d", intind); DrawTrSurf::Set(name, new Geom2d_TrimmedCurve(C2,f,l)); - f = myBis.FirstParameter(); - l = myBis.LastParameter(); + f = myBis->FirstParameter(); + l = myBis->LastParameter(); sprintf(name,"BIS%d", intind); - DrawTrSurf::Set(name, new Geom2d_TrimmedCurve(myBis.Curve(),f,l)); + DrawTrSurf::Set(name, new Geom2d_TrimmedCurve(myBis->Curve(),f,l)); sprintf(name,"E1_%d", intind); DBRep::Set(name, Edge1); sprintf(name,"E2_%d", intind); @@ -368,8 +369,8 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, Standard_Real TolInit= 1.e-9; Standard_Integer nn = 7; - if((AC1.GetType() != GeomAbs_Circle && AC1.GetType() != GeomAbs_Line) || - (AC2.GetType() != GeomAbs_Circle && AC2.GetType() != GeomAbs_Line)) { + if((AC1->GetType() != GeomAbs_Circle && AC1->GetType() != GeomAbs_Line) || + (AC2->GetType() != GeomAbs_Circle && AC2->GetType() != GeomAbs_Line)) { TolInit = 1.e-8; nn = 6; @@ -379,7 +380,7 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, { //Check, may be there are no intersections at all // for case myBis == Line - if(myBis.GetType() == GeomAbs_Line) + if(myBis->GetType() == GeomAbs_Line) { Standard_Real dmax = TolInit; Standard_Integer n = 0; @@ -390,36 +391,36 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, } dmax *= dmax; // - gp_Lin2d anL = myBis.Line(); + gp_Lin2d anL = myBis->Line(); Standard_Boolean isFar1 = Standard_True; Standard_Boolean isFar2 = Standard_True; gp_Pnt2d aP; // Standard_Real d = RealLast(); - AC1.D0(AC1.FirstParameter(), aP); + AC1->D0(AC1->FirstParameter(), aP); Standard_Real par = ElCLib::Parameter(anL, aP); - if(par >= myBis.FirstParameter() && par <= myBis.LastParameter()) + if(par >= myBis->FirstParameter() && par <= myBis->LastParameter()) { d = anL.SquareDistance(aP); } - AC1.D0(AC1.LastParameter(), aP); + AC1->D0(AC1->LastParameter(), aP); par = ElCLib::Parameter(anL, aP); - if(par >= myBis.FirstParameter() && par <= myBis.LastParameter()) + if(par >= myBis->FirstParameter() && par <= myBis->LastParameter()) { d = Min(anL.SquareDistance(aP), d); } isFar1 = d > dmax; // d = RealLast(); - AC2.D0(AC2.FirstParameter(), aP); + AC2->D0(AC2->FirstParameter(), aP); par = ElCLib::Parameter(anL, aP); - if(par >= myBis.FirstParameter() && par <= myBis.LastParameter()) + if(par >= myBis->FirstParameter() && par <= myBis->LastParameter()) { d = anL.SquareDistance(aP); } - AC2.D0(AC2.LastParameter(), aP); + AC2->D0(AC2->LastParameter(), aP); par = ElCLib::Parameter(anL, aP); - if(par >= myBis.FirstParameter() && par <= myBis.LastParameter()) + if(par >= myBis->FirstParameter() && par <= myBis->LastParameter()) { d = Min(anL.SquareDistance(aP), d); } @@ -463,10 +464,10 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, //std::cout << "Params.Length() == 0 && Points2.Length() == 1" << std::endl; Standard_Real dmin, dmax = 0.25*myOffset*myOffset; Standard_Real tBis = Points2(1).X(); - gp_Pnt2d PBis = myBis.Value(tBis); + gp_Pnt2d PBis = myBis->Value(tBis); - Standard_Real t = AC1.FirstParameter(); - gp_Pnt2d PC = AC1.Value(t); + Standard_Real t = AC1->FirstParameter(); + gp_Pnt2d PC = AC1->Value(t); dmin = PC.SquareDistance(PBis); gp_Pnt P(tBis, t, 0.); if(dmin < dmax) @@ -474,8 +475,8 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, Params.Append(P); } - t = AC1.LastParameter(); - PC = AC1.Value(t); + t = AC1->LastParameter(); + PC = AC1->Value(t); Standard_Real dmin1 = PC.SquareDistance(PBis); if(dmin > dmin1 && dmin1 < dmax ) { P.SetY(t); @@ -490,10 +491,10 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, //std::cout << "Params.Length() == 1 && Points2.Length() == 0" << std::endl; Standard_Real dmin, dmax = 0.25*myOffset*myOffset; Standard_Real tBis = Params(1).X(); - gp_Pnt2d PBis = myBis.Value(tBis); + gp_Pnt2d PBis = myBis->Value(tBis); - Standard_Real t = AC2.FirstParameter(); - gp_Pnt2d PC = AC2.Value(t); + Standard_Real t = AC2->FirstParameter(); + gp_Pnt2d PC = AC2->Value(t); dmin = PC.SquareDistance(PBis); gp_Pnt P(tBis, t, 0.); if(dmin < dmax) @@ -501,8 +502,8 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, Points2.Append(P); } - t = AC2.LastParameter(); - PC = AC2.Value(t); + t = AC2->LastParameter(); + PC = AC2->Value(t); Standard_Real dmin1 = PC.SquareDistance(PBis); if(dmin > dmin1 && dmin1 < dmax ) { P.SetY(t); @@ -596,11 +597,11 @@ void BRepFill_TrimEdgeTool::IntersectWith(const TopoDS_Edge& Edge1, { Standard_Real Delta = 2*M_PI - IC1.LastParameter() + IC1.FirstParameter(); if (ToExtendFirstPar && ToExtendLastPar) - init_fpar = AC1.FirstParameter() + Delta/2; + init_fpar = AC1->FirstParameter() + Delta/2; else if (ToExtendFirstPar) - init_fpar = AC1.FirstParameter() + Delta; + init_fpar = AC1->FirstParameter() + Delta; else if (ToExtendLastPar) - init_fpar = AC1.FirstParameter(); + init_fpar = AC1->FirstParameter(); init_lpar = init_fpar + IC1.LastParameter() - IC1.FirstParameter(); } } @@ -672,8 +673,8 @@ void BRepFill_TrimEdgeTool::AddOrConfuse(const Standard_Boolean Start, Geom2dAdaptor_Curve AC1(C1,f,l); - if (Start) PBis = myBis.Value(myBis.FirstParameter()); - else PBis = myBis.Value(myBis.LastParameter ()); + if (Start) PBis = myBis->Value(myBis->FirstParameter()); + else PBis = myBis->Value(myBis->LastParameter ()); // Test if the end of the bissectrice is in the set of intersection points. if (!Params.IsEmpty()) { @@ -725,11 +726,11 @@ void BRepFill_TrimEdgeTool::AddOrConfuse(const Standard_Boolean Start, Projector1.LowerDistanceParameter(), Projector2.LowerDistanceParameter()); if (Start) { - PInt.SetX (myBis.FirstParameter()); + PInt.SetX (myBis->FirstParameter()); Params.Prepend(PInt); } else { - PInt.SetX (myBis.LastParameter()); + PInt.SetX (myBis->LastParameter()); Params.Append(PInt); } } diff --git a/src/BRepFill/BRepFill_TrimEdgeTool.hxx b/src/BRepFill/BRepFill_TrimEdgeTool.hxx index 2fba09f557..6cd9e042bc 100644 --- a/src/BRepFill/BRepFill_TrimEdgeTool.hxx +++ b/src/BRepFill/BRepFill_TrimEdgeTool.hxx @@ -72,7 +72,7 @@ private: Handle(Geom2d_Curve) myC2; Standard_Real myOffset; Bisector_Bisec myBisec; - Geom2dAdaptor_Curve myBis; + Handle(Geom2dAdaptor_Curve) myBis; }; diff --git a/src/BRepFill/BRepFill_TrimShellCorner.cxx b/src/BRepFill/BRepFill_TrimShellCorner.cxx index 77efa8fbab..354dd3f48d 100644 --- a/src/BRepFill/BRepFill_TrimShellCorner.cxx +++ b/src/BRepFill/BRepFill_TrimShellCorner.cxx @@ -2262,12 +2262,12 @@ static Standard_Real ComputeAveragePlaneAndMaxDeviation(const TopoDS_Shape& aWir for (TopoDS_Iterator iter (aWire); iter.More(); iter.Next()) { const TopoDS_Edge& anEdge = TopoDS::Edge( iter.Value() ); - BRepAdaptor_Curve aCurve(anEdge); + Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve(anEdge); GCPnts_UniformAbscissa Distribution( aCurve, N+1 ); for (i = 1; i <= N; i++) { Standard_Real par = Distribution.Parameter(i); - Pnts( ind++ ) = aCurve.Value(par); + Pnts( ind++ ) = aCurve->Value(par); } } diff --git a/src/BRepFill/BRepFill_TrimSurfaceTool.cxx b/src/BRepFill/BRepFill_TrimSurfaceTool.cxx index 581e1e94e0..a952b2f792 100644 --- a/src/BRepFill/BRepFill_TrimSurfaceTool.cxx +++ b/src/BRepFill/BRepFill_TrimSurfaceTool.cxx @@ -209,8 +209,8 @@ static void EvalParameters(const TopoDS_Edge& Edge, // projection of 3d curves in the plane xOy Handle(Geom2d_Curve) C2d = GeomProjLib::Curve2d(CT,Plane); - Geom2dAdaptor_Curve AC(C2d); - Geom2dAdaptor_Curve ABis(Bis); + Handle(Geom2dAdaptor_Curve) AC = new Geom2dAdaptor_Curve(C2d); + Handle(Geom2dAdaptor_Curve) ABis = new Geom2dAdaptor_Curve(Bis); Intersector = Geom2dInt_GInter(ABis, AC, TolC, Tol); @@ -226,7 +226,7 @@ static void EvalParameters(const TopoDS_Edge& Edge, // don't do it rightaway from the beginning in order not to get // extra solutions those would cause *Exception*: incoherent intersection - GeomAbs_CurveType CType = AC.GetType(), BisType = ABis.GetType(); + GeomAbs_CurveType CType = AC->GetType(), BisType = ABis->GetType(); Standard_Boolean canElongateC = !(CType == GeomAbs_BezierCurve || CType == GeomAbs_BSplineCurve || CType == GeomAbs_OffsetCurve || @@ -241,11 +241,11 @@ static void EvalParameters(const TopoDS_Edge& Edge, if (canElongateC) { TC2d->SetTrim(TC2d->FirstParameter() - Tol, TC2d->LastParameter() + Tol); - AC.Load(TC2d); + AC->Load(TC2d); } if (canElongateBis) { TBis->SetTrim(TBis->FirstParameter() - Tol, TBis->LastParameter() + Tol); - ABis.Load(TBis); + ABis->Load(TBis); } Intersector = Geom2dInt_GInter(ABis, AC, TolC, Tol*10); diff --git a/src/BRepGProp/BRepGProp.cxx b/src/BRepGProp/BRepGProp.cxx index 43c9d08129..aeec930e2b 100644 --- a/src/BRepGProp/BRepGProp.cxx +++ b/src/BRepGProp/BRepGProp.cxx @@ -75,7 +75,7 @@ void BRepGProp::LinearProperties(const TopoDS_Shape& S, GProp_GProps& SProps, c P.Transform(S.Location()); SProps = GProp_GProps(P); - BRepAdaptor_Curve BAC; + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(); TopTools_MapOfShape anEMap; TopExp_Explorer ex; for (ex.Init(S,TopAbs_EDGE); ex.More(); ex.Next()) { @@ -102,7 +102,7 @@ void BRepGProp::LinearProperties(const TopoDS_Shape& S, GProp_GProps& SProps, c { if (IsGeom) { - BAC.Initialize(aE); + BAC->Initialize(aE); BRepGProp_Cinert CG(BAC, P); SProps.Add(CG); } diff --git a/src/BRepGProp/BRepGProp_Cinert.cxx b/src/BRepGProp/BRepGProp_Cinert.cxx index c9b349e293..6ff20a57ba 100644 --- a/src/BRepGProp/BRepGProp_Cinert.cxx +++ b/src/BRepGProp/BRepGProp_Cinert.cxx @@ -27,7 +27,7 @@ void BRepGProp_Cinert::SetLocation(const gp_Pnt& CLocation) loc = CLocation; } -void BRepGProp_Cinert::Perform (const BRepAdaptor_Curve& C) +void BRepGProp_Cinert::Perform (const Handle(BRepAdaptor_Curve)& C) { Standard_Real Ix, Iy, Iz, Ixx, Iyy, Izz, Ixy, Ixz, Iyz; @@ -148,7 +148,7 @@ void BRepGProp_Cinert::Perform (const BRepAdaptor_Curve& C) } -BRepGProp_Cinert::BRepGProp_Cinert (const BRepAdaptor_Curve& C, +BRepGProp_Cinert::BRepGProp_Cinert (const Handle(BRepAdaptor_Curve)& C, const gp_Pnt& CLocation) { SetLocation(CLocation); diff --git a/src/BRepGProp/BRepGProp_Cinert.hxx b/src/BRepGProp/BRepGProp_Cinert.hxx index 291260426a..d21e63e212 100644 --- a/src/BRepGProp/BRepGProp_Cinert.hxx +++ b/src/BRepGProp/BRepGProp_Cinert.hxx @@ -41,11 +41,11 @@ public: Standard_EXPORT BRepGProp_Cinert(); - Standard_EXPORT BRepGProp_Cinert(const BRepAdaptor_Curve& C, const gp_Pnt& CLocation); + Standard_EXPORT BRepGProp_Cinert(const Handle(BRepAdaptor_Curve)& C, const gp_Pnt& CLocation); Standard_EXPORT void SetLocation (const gp_Pnt& CLocation); - Standard_EXPORT void Perform (const BRepAdaptor_Curve& C); + Standard_EXPORT void Perform (const Handle(BRepAdaptor_Curve)& C); diff --git a/src/BRepGProp/BRepGProp_EdgeTool.cxx b/src/BRepGProp/BRepGProp_EdgeTool.cxx index 60685eac9f..b8a689f1af 100644 --- a/src/BRepGProp/BRepGProp_EdgeTool.cxx +++ b/src/BRepGProp/BRepGProp_EdgeTool.cxx @@ -22,19 +22,19 @@ #include #include -Standard_Real BRepGProp_EdgeTool::FirstParameter(const BRepAdaptor_Curve& C) +Standard_Real BRepGProp_EdgeTool::FirstParameter(const Handle(BRepAdaptor_Curve)& C) { - return C.FirstParameter(); + return C->FirstParameter(); } -Standard_Real BRepGProp_EdgeTool::LastParameter(const BRepAdaptor_Curve& C) +Standard_Real BRepGProp_EdgeTool::LastParameter(const Handle(BRepAdaptor_Curve)& C) { - return C.LastParameter(); + return C->LastParameter(); } -Standard_Integer BRepGProp_EdgeTool::IntegrationOrder(const BRepAdaptor_Curve& BAC) +Standard_Integer BRepGProp_EdgeTool::IntegrationOrder(const Handle(BRepAdaptor_Curve)& BAC) { - switch (BAC.GetType()) { + switch (BAC->GetType()) { case GeomAbs_Line : return 2; @@ -44,8 +44,8 @@ Standard_Integer BRepGProp_EdgeTool::IntegrationOrder(const BRepAdaptor_Curve& case GeomAbs_BezierCurve : { - const GeomAdaptor_Curve& GAC = BAC.Curve(); - const Handle(Geom_Curve)& GC = GAC.Curve(); + const Handle(GeomAdaptor_Curve)& GAC = BAC->Curve(); + const Handle(Geom_Curve)& GC = GAC->Curve(); Handle(Geom_BezierCurve) GBZC (Handle(Geom_BezierCurve)::DownCast (GC)); Standard_Integer n = 2*(GBZC->NbPoles()) - 1; return n; @@ -53,8 +53,8 @@ Standard_Integer BRepGProp_EdgeTool::IntegrationOrder(const BRepAdaptor_Curve& break; case GeomAbs_BSplineCurve : { - const GeomAdaptor_Curve& GAC = BAC.Curve(); - const Handle(Geom_Curve)& GC = GAC.Curve(); + const Handle(GeomAdaptor_Curve)& GAC = BAC->Curve(); + const Handle(Geom_Curve)& GC = GAC->Curve(); Handle(Geom_BSplineCurve) GBSC (Handle(Geom_BSplineCurve)::DownCast (GC)); Standard_Integer n = 2*(GBSC->NbPoles()) - 1; return n; @@ -66,29 +66,25 @@ Standard_Integer BRepGProp_EdgeTool::IntegrationOrder(const BRepAdaptor_Curve& } } -gp_Pnt BRepGProp_EdgeTool::Value(const BRepAdaptor_Curve& C, const Standard_Real U) +gp_Pnt BRepGProp_EdgeTool::Value(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U) { - return C.Value(U); + return C->Value(U); } -void BRepGProp_EdgeTool::D1(const BRepAdaptor_Curve& C, +void BRepGProp_EdgeTool::D1(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1) { - C.D1(U,P,V1); + C->D1(U,P,V1); } // modified by NIZHNY-MKK Thu Jun 9 12:15:15 2005.BEGIN -Standard_Integer BRepGProp_EdgeTool::NbIntervals(const BRepAdaptor_Curve& C,const GeomAbs_Shape S) +Standard_Integer BRepGProp_EdgeTool::NbIntervals(const Handle(BRepAdaptor_Curve)& C,const GeomAbs_Shape S) { - BRepAdaptor_Curve* pC = (BRepAdaptor_Curve*) &C; // at the moment actually NbIntervals() does not modify the - // object "C". So it is safe to do such a cast. - return pC->NbIntervals(S); + return C->NbIntervals(S); } -void BRepGProp_EdgeTool::Intervals(const BRepAdaptor_Curve& C,TColStd_Array1OfReal& T,const GeomAbs_Shape S) +void BRepGProp_EdgeTool::Intervals(const Handle(BRepAdaptor_Curve)& C,TColStd_Array1OfReal& T,const GeomAbs_Shape S) { - BRepAdaptor_Curve* pC = (BRepAdaptor_Curve*) &C; // at the moment actually Intervals() does not modify the - // object "C". So it is safe to do such a cast. - pC->Intervals(T, S); + C->Intervals(T, S); } // modified by NIZHNY-MKK Thu Jun 9 12:15:18 2005.END diff --git a/src/BRepGProp/BRepGProp_EdgeTool.hxx b/src/BRepGProp/BRepGProp_EdgeTool.hxx index 2e4197d77a..a751b5621d 100644 --- a/src/BRepGProp/BRepGProp_EdgeTool.hxx +++ b/src/BRepGProp/BRepGProp_EdgeTool.hxx @@ -41,13 +41,13 @@ public: //! Returns the parametric value of the start point of //! the curve. The curve is oriented from the start point //! to the end point. - Standard_EXPORT static Standard_Real FirstParameter (const BRepAdaptor_Curve& C); + Standard_EXPORT static Standard_Real FirstParameter (const Handle(BRepAdaptor_Curve)& C); //! Returns the parametric value of the end point of //! the curve. The curve is oriented from the start point //! to the end point. - Standard_EXPORT static Standard_Real LastParameter (const BRepAdaptor_Curve& C); + Standard_EXPORT static Standard_Real LastParameter (const Handle(BRepAdaptor_Curve)& C); //! Returns the number of Gauss points required to do @@ -55,26 +55,26 @@ public: //! Gauss method. For a polynomial curve of degree n //! the maxima of accuracy is obtained with an order //! of integration equal to 2*n-1. - Standard_EXPORT static Standard_Integer IntegrationOrder (const BRepAdaptor_Curve& C); + Standard_EXPORT static Standard_Integer IntegrationOrder (const Handle(BRepAdaptor_Curve)& C); //! Returns the point of parameter U on the loaded curve. - Standard_EXPORT static gp_Pnt Value (const BRepAdaptor_Curve& C, const Standard_Real U); + Standard_EXPORT static gp_Pnt Value (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U); //! Returns the point of parameter U and the first derivative //! at this point. - Standard_EXPORT static void D1 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1); + Standard_EXPORT static void D1 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1); //! Returns the number of intervals for continuity //! . May be one if Continuity(me) >= - Standard_EXPORT static Standard_Integer NbIntervals (const BRepAdaptor_Curve& C, const GeomAbs_Shape S); + Standard_EXPORT static Standard_Integer NbIntervals (const Handle(BRepAdaptor_Curve)& C, const GeomAbs_Shape S); //! Stores in the parameters bounding the intervals //! of continuity . //! //! The array must provide enough room to accommodate //! for the parameters. i.e. T.Length() > NbIntervals() - Standard_EXPORT static void Intervals (const BRepAdaptor_Curve& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); + Standard_EXPORT static void Intervals (const Handle(BRepAdaptor_Curve)& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); diff --git a/src/BRepGProp/BRepGProp_Face.cxx b/src/BRepGProp/BRepGProp_Face.cxx index 38892ac8a5..46c446fd4b 100644 --- a/src/BRepGProp/BRepGProp_Face.cxx +++ b/src/BRepGProp/BRepGProp_Face.cxx @@ -42,7 +42,7 @@ static const Standard_Real Epsilon1 = Epsilon(1.); Standard_Integer BRepGProp_Face::UIntegrationOrder() const { Standard_Integer Nu; - switch (mySurface.GetType()) + switch (mySurface->GetType()) { case GeomAbs_Plane : @@ -51,14 +51,14 @@ Standard_Integer BRepGProp_Face::UIntegrationOrder() const { case GeomAbs_BezierSurface : { - Nu = (*((Handle(Geom_BezierSurface)*)&((mySurface.Surface()).Surface())))->UDegree()+1; + Nu = (*((Handle(Geom_BezierSurface)*)&((mySurface->Surface())->Surface())))->UDegree()+1; Nu = Max(4,Nu); } break; case GeomAbs_BSplineSurface : { - Standard_Integer a = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->UDegree()+1; - Standard_Integer b = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->NbUKnots()-1; + Standard_Integer a = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->UDegree()+1; + Standard_Integer b = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->NbUKnots()-1; Nu = Max(4,a*b); } break; @@ -78,7 +78,7 @@ Standard_Integer BRepGProp_Face::UIntegrationOrder() const { Standard_Integer BRepGProp_Face::VIntegrationOrder() const { Standard_Integer Nv; - switch (mySurface.GetType()) { + switch (mySurface->GetType()) { case GeomAbs_Plane : Nv = 4; @@ -86,15 +86,15 @@ Standard_Integer BRepGProp_Face::VIntegrationOrder() const case GeomAbs_BezierSurface : { - Nv = (*((Handle(Geom_BezierSurface)*)&((mySurface.Surface()).Surface())))->VDegree()+1; + Nv = (*((Handle(Geom_BezierSurface)*)&((mySurface->Surface())->Surface())))->VDegree()+1; Nv = Max(4,Nv); } break; case GeomAbs_BSplineSurface : { - Standard_Integer a = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->VDegree()+1; - Standard_Integer b = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->NbVKnots()-1; + Standard_Integer a = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->VDegree()+1; + Standard_Integer b = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->NbVKnots()-1; Nv = Max(4,a*b); } break; @@ -115,7 +115,7 @@ Standard_Integer BRepGProp_Face::IntegrationOrder() const { Standard_Integer N; - switch (myCurve.GetType()) { + switch (myCurve->GetType()) { case GeomAbs_Line : N = 2; @@ -133,14 +133,14 @@ Standard_Integer BRepGProp_Face::IntegrationOrder() const case GeomAbs_BezierCurve : { - N = (*((Handle(Geom2d_BezierCurve)*)&(myCurve.Curve())))->Degree() + 1; + N = (*((Handle(Geom2d_BezierCurve)*)&(myCurve->Curve())))->Degree() + 1; } break; case GeomAbs_BSplineCurve : { - Standard_Integer a = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve.Curve())))->Degree() + 1; - Standard_Integer b = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve.Curve())))->NbKnots() - 1; + Standard_Integer a = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve->Curve())))->Degree() + 1; + Standard_Integer b = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve->Curve())))->NbKnots() - 1; N = a * b; } break; @@ -163,10 +163,10 @@ void BRepGProp_Face::Bounds(Standard_Real& U1, Standard_Real& V1, Standard_Real& V2)const { - U1 = mySurface.FirstUParameter(); - U2 = mySurface.LastUParameter(); - V1 = mySurface.FirstVParameter(); - V2 = mySurface.LastVParameter(); + U1 = mySurface->FirstUParameter(); + U2 = mySurface->LastUParameter(); + V1 = mySurface->FirstVParameter(); + V2 = mySurface->LastVParameter(); } //======================================================================= @@ -177,7 +177,7 @@ void BRepGProp_Face::Bounds(Standard_Real& U1, bool BRepGProp_Face::Load(const TopoDS_Edge& E) { Standard_Real a,b; - Handle(Geom2d_Curve) C = BRep_Tool::CurveOnSurface(E, mySurface.Face(), a,b); + Handle(Geom2d_Curve) C = BRep_Tool::CurveOnSurface(E, mySurface->Face(), a,b); if (C.IsNull()) { return false; @@ -188,7 +188,7 @@ bool BRepGProp_Face::Load(const TopoDS_Edge& E) b = C->ReversedParameter(x); C = C->Reversed(); } - myCurve.Load(C,a,b); + myCurve->Load(C,a,b); return true; } @@ -200,8 +200,8 @@ bool BRepGProp_Face::Load(const TopoDS_Edge& E) void BRepGProp_Face::Load(const TopoDS_Face& F) { TopoDS_Shape aLocalShape = F.Oriented(TopAbs_FORWARD); - mySurface.Initialize(TopoDS::Face(aLocalShape)); -// mySurface.Initialize(TopoDS::Face(F.Oriented(TopAbs_FORWARD))); + mySurface->Initialize(TopoDS::Face(aLocalShape)); +// mySurface->Initialize(TopoDS::Face(F.Oriented(TopAbs_FORWARD))); mySReverse = (F.Orientation() == TopAbs_REVERSED); } @@ -216,7 +216,7 @@ void BRepGProp_Face::Normal (const Standard_Real U, gp_Vec &VNor) const { gp_Vec D1U,D1V; - mySurface.D1(U,V,P,D1U,D1V); + mySurface->D1(U,V,P,D1U,D1V); VNor = D1U.Crossed(D1V); if (mySReverse) VNor.Reverse(); @@ -241,7 +241,7 @@ static inline Standard_Real LCoeff(const Standard_Real Eps){ Standard_Integer BRepGProp_Face::SIntOrder(const Standard_Real Eps) const { Standard_Integer Nv, Nu; - switch (mySurface.GetType()) { + switch (mySurface->GetType()) { case GeomAbs_Plane: Nu = 1; Nv = 1; break; case GeomAbs_Cylinder: @@ -253,12 +253,12 @@ Standard_Integer BRepGProp_Face::SIntOrder(const Standard_Real Eps) const case GeomAbs_Torus: Nu = 2; Nv = 2; break; case GeomAbs_BezierSurface: - Nv = (*((Handle(Geom_BezierSurface)*)&((mySurface.Surface()).Surface())))->VDegree(); - Nu = (*((Handle(Geom_BezierSurface)*)&((mySurface.Surface()).Surface())))->UDegree(); + Nv = (*((Handle(Geom_BezierSurface)*)&((mySurface->Surface())->Surface())))->VDegree(); + Nu = (*((Handle(Geom_BezierSurface)*)&((mySurface->Surface())->Surface())))->UDegree(); break; case GeomAbs_BSplineSurface: - Nv = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->VDegree(); - Nu = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->UDegree(); + Nv = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->VDegree(); + Nu = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->UDegree(); break; default: Nu = 2; Nv = 2; break; @@ -274,7 +274,7 @@ Standard_Integer BRepGProp_Face::SIntOrder(const Standard_Real Eps) const Standard_Integer BRepGProp_Face::SUIntSubs() const { Standard_Integer N; - switch (mySurface.GetType()) { + switch (mySurface->GetType()) { case GeomAbs_Plane: N = 2; break; case GeomAbs_Cylinder: @@ -288,7 +288,7 @@ Standard_Integer BRepGProp_Face::SUIntSubs() const case GeomAbs_BezierSurface: N = 2; break; case GeomAbs_BSplineSurface: - N = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->NbUKnots(); break; + N = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->NbUKnots(); break; default: N = 2; break; } @@ -303,7 +303,7 @@ Standard_Integer BRepGProp_Face::SUIntSubs() const Standard_Integer BRepGProp_Face::SVIntSubs() const { Standard_Integer N; - switch (mySurface.GetType()) { + switch (mySurface->GetType()) { case GeomAbs_Plane: N = 2; break; case GeomAbs_Cylinder: @@ -317,7 +317,7 @@ Standard_Integer BRepGProp_Face::SVIntSubs() const case GeomAbs_BezierSurface: N = 2; break; case GeomAbs_BSplineSurface: - N = (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->NbVKnots(); + N = (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->NbVKnots(); break; default: N = 2; break; @@ -332,9 +332,9 @@ Standard_Integer BRepGProp_Face::SVIntSubs() const void BRepGProp_Face::UKnots(TColStd_Array1OfReal& Knots) const { - switch (mySurface.GetType()) { + switch (mySurface->GetType()) { case GeomAbs_Plane: - Knots(1) = mySurface.FirstUParameter(); Knots(2) = mySurface.LastUParameter(); + Knots(1) = mySurface->FirstUParameter(); Knots(2) = mySurface->LastUParameter(); break; case GeomAbs_Cylinder: case GeomAbs_Cone: @@ -343,10 +343,10 @@ void BRepGProp_Face::UKnots(TColStd_Array1OfReal& Knots) const Knots(1) = 0.0; Knots(2) = M_PI*2.0/3.0; Knots(3) = M_PI*4.0/3.0; Knots(4) = M_PI*6.0/3.0; break; case GeomAbs_BSplineSurface: - (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->UKnots(Knots); + (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->UKnots(Knots); break; default: - Knots(1) = mySurface.FirstUParameter(); Knots(2) = mySurface.LastUParameter(); + Knots(1) = mySurface->FirstUParameter(); Knots(2) = mySurface->LastUParameter(); break; } } @@ -358,11 +358,11 @@ void BRepGProp_Face::UKnots(TColStd_Array1OfReal& Knots) const void BRepGProp_Face::VKnots(TColStd_Array1OfReal& Knots) const { - switch (mySurface.GetType()) { + switch (mySurface->GetType()) { case GeomAbs_Plane: case GeomAbs_Cylinder: case GeomAbs_Cone: - Knots(1) = mySurface.FirstUParameter(); Knots(2) = mySurface.LastUParameter(); + Knots(1) = mySurface->FirstUParameter(); Knots(2) = mySurface->LastUParameter(); break; case GeomAbs_Sphere: Knots(1) = -M_PI/2.0; Knots(2) = 0.0; Knots(3) = +M_PI/2.0; @@ -371,10 +371,10 @@ void BRepGProp_Face::VKnots(TColStd_Array1OfReal& Knots) const Knots(1) = 0.0; Knots(2) = M_PI*2.0/3.0; Knots(3) = M_PI*4.0/3.0; Knots(4) = M_PI*6.0/3.0; break; case GeomAbs_BSplineSurface: - (*((Handle(Geom_BSplineSurface)*)&((mySurface.Surface()).Surface())))->VKnots(Knots); + (*((Handle(Geom_BSplineSurface)*)&((mySurface->Surface())->Surface())))->VKnots(Knots); break; default: - Knots(1) = mySurface.FirstUParameter(); Knots(2) = mySurface.LastUParameter(); + Knots(1) = mySurface->FirstUParameter(); Knots(2) = mySurface->LastUParameter(); break; } } @@ -391,8 +391,8 @@ Standard_Integer BRepGProp_Face::LIntOrder(const Standard_Real Eps) const BndLib_Add2dCurve::Add(myCurve, 1.e-7, aBox); Standard_Real aXmin, aXmax, aYmin, aYmax; aBox.Get(aXmin, aYmin, aXmax, aYmax); - Standard_Real aVmin = mySurface.FirstVParameter(); - Standard_Real aVmax = mySurface.LastVParameter(); + Standard_Real aVmin = mySurface->FirstVParameter(); + Standard_Real aVmax = mySurface->LastVParameter(); Standard_Real dv = (aVmax-aVmin); Standard_Real anR = (dv > Epsilon1 ? Min ((aYmax - aYmin) / dv, 1.) : 1.); @@ -404,7 +404,7 @@ Standard_Integer BRepGProp_Face::LIntOrder(const Standard_Real Eps) const // Standard_Real NL, NS = Max(SIntOrder(1.0)*anRInt/LIntSubs(), 1); Standard_Real NL, NS = Max(SIntOrder(1.)*anRInt/aLSubs, 1); - switch (myCurve.GetType()) { + switch (myCurve->GetType()) { case GeomAbs_Line: NL = 1; break; case GeomAbs_Circle: @@ -416,10 +416,10 @@ Standard_Integer BRepGProp_Face::LIntOrder(const Standard_Real Eps) const case GeomAbs_Hyperbola: NL = 3 * 3; break; case GeomAbs_BezierCurve: - NL = (*((Handle(Geom2d_BezierCurve)*)&(myCurve.Curve())))->Degree(); + NL = (*((Handle(Geom2d_BezierCurve)*)&(myCurve->Curve())))->Degree(); break; case GeomAbs_BSplineCurve: - NL = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve.Curve())))->Degree(); + NL = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve->Curve())))->Degree(); break; default: NL = 3 * 3; break; @@ -442,7 +442,7 @@ Standard_Integer BRepGProp_Face::LIntOrder(const Standard_Real Eps) const Standard_Integer BRepGProp_Face::LIntSubs() const { Standard_Integer N; - switch (myCurve.GetType()) { + switch (myCurve->GetType()) { case GeomAbs_Line: N = 2; break; case GeomAbs_Circle: @@ -452,7 +452,7 @@ Standard_Integer BRepGProp_Face::LIntSubs() const case GeomAbs_Hyperbola: N = 2; break; case GeomAbs_BSplineCurve: - N = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve.Curve())))->NbKnots(); + N = (*((Handle(Geom2d_BSplineCurve)*)&(myCurve->Curve())))->NbKnots(); break; default: N = 2; break; @@ -467,9 +467,9 @@ Standard_Integer BRepGProp_Face::LIntSubs() const void BRepGProp_Face::LKnots(TColStd_Array1OfReal& Knots) const { - switch (myCurve.GetType()) { + switch (myCurve->GetType()) { case GeomAbs_Line: - Knots(1) = myCurve.FirstParameter(); Knots(2) = myCurve.LastParameter(); + Knots(1) = myCurve->FirstParameter(); Knots(2) = myCurve->LastParameter(); break; case GeomAbs_Circle: case GeomAbs_Ellipse: @@ -477,13 +477,13 @@ void BRepGProp_Face::LKnots(TColStd_Array1OfReal& Knots) const break; case GeomAbs_Parabola: case GeomAbs_Hyperbola: - Knots(1) = myCurve.FirstParameter(); Knots(2) = myCurve.LastParameter(); + Knots(1) = myCurve->FirstParameter(); Knots(2) = myCurve->LastParameter(); break; case GeomAbs_BSplineCurve: - (*((Handle(Geom2d_BSplineCurve)*)&(myCurve.Curve())))->Knots(Knots); + (*((Handle(Geom2d_BSplineCurve)*)&(myCurve->Curve())))->Knots(Knots); break; default: - Knots(1) = myCurve.FirstParameter(); Knots(2) = myCurve.LastParameter(); + Knots(1) = myCurve->FirstParameter(); Knots(2) = myCurve->LastParameter(); break; } } @@ -531,7 +531,7 @@ void BRepGProp_Face::Load(const Standard_Boolean IsFirstParam, Handle(Geom2d_Curve) aLin = new Geom2d_Line(aLoc, aDir); - myCurve.Load(aLin, 0., aLen); + myCurve->Load(aLin, 0., aLen); } //======================================================================= @@ -583,17 +583,17 @@ static void GetRealKnots(const Standard_Real theMin, static void GetCurveKnots(const Standard_Real theMin, const Standard_Real theMax, - const Geom2dAdaptor_Curve &theCurve, + const Handle(Geom2dAdaptor_Curve) &theCurve, Handle(TColStd_HArray1OfReal) &theKnots) { - Standard_Boolean isSBSpline = theCurve.GetType() == GeomAbs_BSplineCurve; + Standard_Boolean isSBSpline = theCurve->GetType() == GeomAbs_BSplineCurve; if (isSBSpline) { Handle(Geom2d_BSplineCurve) aCrv; Standard_Integer aNbKnots; Handle(TColStd_HArray1OfReal) aCrvKnots; - aCrv = Handle(Geom2d_BSplineCurve)::DownCast(theCurve.Curve()); + aCrv = Handle(Geom2d_BSplineCurve)::DownCast(theCurve->Curve()); aNbKnots = aCrv->NbKnots(); aCrvKnots = new TColStd_HArray1OfReal(1, aNbKnots); aCrv->Knots(aCrvKnots->ChangeArray1()); @@ -615,14 +615,14 @@ void BRepGProp_Face::GetUKnots const Standard_Real theUMax, Handle(TColStd_HArray1OfReal) &theUKnots) const { - Standard_Boolean isSBSpline = mySurface.GetType() == GeomAbs_BSplineSurface; + Standard_Boolean isSBSpline = mySurface->GetType() == GeomAbs_BSplineSurface; Standard_Boolean isCBSpline = Standard_False; if (!isSBSpline) { // Check the basis curve of the surface of linear extrusion. - if (mySurface.GetType() == GeomAbs_SurfaceOfExtrusion) { + if (mySurface->GetType() == GeomAbs_SurfaceOfExtrusion) { GeomAdaptor_Curve aCurve; - Handle(Geom_Surface) aSurf = mySurface.Surface().Surface(); + Handle(Geom_Surface) aSurf = mySurface->Surface()->Surface(); aCurve.Load(Handle(Geom_SurfaceOfLinearExtrusion)::DownCast (aSurf)->BasisCurve()); isCBSpline = aCurve.GetType() == GeomAbs_BSplineCurve; @@ -636,7 +636,7 @@ void BRepGProp_Face::GetUKnots if (isSBSpline) { // Get U knots of BSpline surface. - Handle(Geom_Surface) aSurf = mySurface.Surface().Surface(); + Handle(Geom_Surface) aSurf = mySurface->Surface()->Surface(); Handle(Geom_BSplineSurface) aBSplSurf; aBSplSurf = Handle(Geom_BSplineSurface)::DownCast(aSurf); @@ -647,7 +647,7 @@ void BRepGProp_Face::GetUKnots // Get U knots of BSpline curve - basis curve of // the surface of linear extrusion. GeomAdaptor_Curve aCurve; - Handle(Geom_Surface) aSurf = mySurface.Surface().Surface(); + Handle(Geom_Surface) aSurf = mySurface->Surface()->Surface(); Handle(Geom_BSplineCurve) aBSplCurve; aCurve.Load(Handle(Geom_SurfaceOfLinearExtrusion)::DownCast (aSurf)->BasisCurve()); @@ -677,7 +677,7 @@ void BRepGProp_Face::GetTKnots const Standard_Real theTMax, Handle(TColStd_HArray1OfReal) &theTKnots) const { - Standard_Boolean isBSpline = mySurface.GetType() == GeomAbs_BSplineSurface; + Standard_Boolean isBSpline = mySurface->GetType() == GeomAbs_BSplineSurface; if (myIsUseSpan && isBSpline) { // Using span decomposition for BSpline. @@ -685,7 +685,7 @@ void BRepGProp_Face::GetTKnots Standard_Integer aNbKnots; // Get V knots of BSpline surface. - Handle(Geom_Surface) aSurf = mySurface.Surface().Surface(); + Handle(Geom_Surface) aSurf = mySurface->Surface()->Surface(); Handle(Geom_BSplineSurface) aBSplSurf; aBSplSurf = Handle(Geom_BSplineSurface)::DownCast(aSurf); diff --git a/src/BRepGProp/BRepGProp_Face.hxx b/src/BRepGProp/BRepGProp_Face.hxx index 7dd3a32b6f..732491dcf7 100644 --- a/src/BRepGProp/BRepGProp_Face.hxx +++ b/src/BRepGProp/BRepGProp_Face.hxx @@ -161,8 +161,8 @@ private: - BRepAdaptor_Surface mySurface; - Geom2dAdaptor_Curve myCurve; + Handle(BRepAdaptor_Surface) mySurface; + Handle(Geom2dAdaptor_Curve) myCurve; Standard_Boolean mySReverse; Standard_Boolean myIsUseSpan; diff --git a/src/BRepGProp/BRepGProp_Face.lxx b/src/BRepGProp/BRepGProp_Face.lxx index 4c5661c3ae..b18c928646 100644 --- a/src/BRepGProp/BRepGProp_Face.lxx +++ b/src/BRepGProp/BRepGProp_Face.lxx @@ -24,6 +24,8 @@ inline BRepGProp_Face::BRepGProp_Face(const Standard_Boolean IsUseSpan) : mySReverse (Standard_False), myIsUseSpan(IsUseSpan) { + mySurface = new BRepAdaptor_Surface(); + myCurve = new Geom2dAdaptor_Curve(); } //======================================================================= @@ -36,6 +38,8 @@ inline BRepGProp_Face::BRepGProp_Face(const TopoDS_Face &F, const Standard_Boolean IsUseSpan) : myIsUseSpan(IsUseSpan) { + mySurface = new BRepAdaptor_Surface(); + myCurve = new Geom2dAdaptor_Curve(); Load(F); } @@ -46,7 +50,7 @@ inline BRepGProp_Face::BRepGProp_Face(const TopoDS_Face &F, inline Standard_Boolean BRepGProp_Face::NaturalRestriction() const { - return BRep_Tool::NaturalRestriction(mySurface.Face()); + return BRep_Tool::NaturalRestriction(mySurface->Face()); } // //======================================================================= @@ -56,7 +60,7 @@ inline Standard_Boolean BRepGProp_Face::NaturalRestriction() const inline const TopoDS_Face& BRepGProp_Face::GetFace() const { - return mySurface.Face(); + return mySurface->Face(); } //======================================================================= @@ -66,7 +70,7 @@ inline const TopoDS_Face& BRepGProp_Face::GetFace() const inline gp_Pnt2d BRepGProp_Face::Value2d(const Standard_Real U) const { - return myCurve.Value(U); + return myCurve->Value(U); } //======================================================================= @@ -79,7 +83,7 @@ inline void BRepGProp_Face::D12d(const Standard_Real U, gp_Pnt2d &P, gp_Vec2d &V1) const { - myCurve.D1(U,P,V1); + myCurve->D1(U,P,V1); } //======================================================================= @@ -90,7 +94,7 @@ inline void BRepGProp_Face::D12d(const Standard_Real U, inline Standard_Real BRepGProp_Face::FirstParameter() const { - return myCurve.FirstParameter(); + return myCurve->FirstParameter(); } //======================================================================= @@ -101,5 +105,5 @@ inline Standard_Real BRepGProp_Face::FirstParameter() const inline Standard_Real BRepGProp_Face::LastParameter() const { - return myCurve.LastParameter(); + return myCurve->LastParameter(); } diff --git a/src/BRepIntCurveSurface/BRepIntCurveSurface_Inter.cxx b/src/BRepIntCurveSurface/BRepIntCurveSurface_Inter.cxx index 8d4fef7bbd..023a07b78b 100644 --- a/src/BRepIntCurveSurface/BRepIntCurveSurface_Inter.cxx +++ b/src/BRepIntCurveSurface/BRepIntCurveSurface_Inter.cxx @@ -117,7 +117,7 @@ void BRepIntCurveSurface_Inter::Init(const GeomAdaptor_Curve& theCurve ) myCurve = new GeomAdaptor_Curve(theCurve ); if( !Precision::IsInfinite(aFirst) && !Precision::IsInfinite(aLast) ) { - BndLib_Add3dCurve::Add (*myCurve, 0., myCurveBox); + BndLib_Add3dCurve::Add (myCurve, 0., myCurveBox); } Find(); } diff --git a/src/BRepLProp/BRepLProp.cxx b/src/BRepLProp/BRepLProp.cxx index 14f88cdf9e..e9d922e63b 100644 --- a/src/BRepLProp/BRepLProp.cxx +++ b/src/BRepLProp/BRepLProp.cxx @@ -27,8 +27,8 @@ //function : Continuity //purpose : //======================================================================= -GeomAbs_Shape BRepLProp::Continuity(const BRepAdaptor_Curve& C1, - const BRepAdaptor_Curve& C2, +GeomAbs_Shape BRepLProp::Continuity(const Handle(BRepAdaptor_Curve)& C1, + const Handle(BRepAdaptor_Curve)& C2, const Standard_Real u1, const Standard_Real u2, const Standard_Real tl, @@ -38,7 +38,7 @@ GeomAbs_Shape BRepLProp::Continuity(const BRepAdaptor_Curve& C1, Standard_Boolean fini = Standard_False; gp_Vec d1,d2; gp_Dir dir1,dir2; - GeomAbs_Shape cont1 = C1.Continuity(), cont2 = C2.Continuity(); + GeomAbs_Shape cont1 = C1->Continuity(), cont2 = C2->Continuity(); Standard_Integer n1 = 0, n2 = 0; if (cont1 >= 5) n1 = 3; else if(cont1 == 4) n1 = 2; @@ -55,16 +55,16 @@ GeomAbs_Shape BRepLProp::Continuity(const BRepAdaptor_Curve& C1, if ( min >= 1 ) { d1 = clp1.D1(); d2 = clp2.D1(); - if(C1.Edge().Orientation() == TopAbs_REVERSED) d1.Reverse(); - if(C2.Edge().Orientation() == TopAbs_REVERSED) d2.Reverse(); + if(C1->Edge().Orientation() == TopAbs_REVERSED) d1.Reverse(); + if(C2->Edge().Orientation() == TopAbs_REVERSED) d2.Reverse(); if(d1.IsEqual(d2,tl,ta)) { cont = GeomAbs_C1; } else if(clp1.IsTangentDefined() && clp2.IsTangentDefined()){ clp1.Tangent(dir1); clp2.Tangent(dir2); - if(C1.Edge().Orientation() == TopAbs_REVERSED) dir1.Reverse(); - if(C2.Edge().Orientation() == TopAbs_REVERSED) dir2.Reverse(); + if(C1->Edge().Orientation() == TopAbs_REVERSED) dir1.Reverse(); + if(C2->Edge().Orientation() == TopAbs_REVERSED) dir2.Reverse(); if(dir1.IsEqual(dir2,ta)){ cont = GeomAbs_G1; } @@ -79,9 +79,9 @@ GeomAbs_Shape BRepLProp::Continuity(const BRepAdaptor_Curve& C1, cont = GeomAbs_C2; } } - const TopoDS_Edge& E1 = C1.Edge(); - const TopoDS_Edge& E2 = C2.Edge(); - if (E1.IsSame(E2) && C1.IsPeriodic() && cont >= GeomAbs_G1) + const TopoDS_Edge& E1 = C1->Edge(); + const TopoDS_Edge& E2 = C2->Edge(); + if (E1.IsSame(E2) && C1->IsPeriodic() && cont >= GeomAbs_G1) cont = GeomAbs_CN; return cont; } @@ -92,8 +92,8 @@ GeomAbs_Shape BRepLProp::Continuity(const BRepAdaptor_Curve& C1, //purpose : //======================================================================= -GeomAbs_Shape BRepLProp::Continuity(const BRepAdaptor_Curve& C1, - const BRepAdaptor_Curve& C2, +GeomAbs_Shape BRepLProp::Continuity(const Handle(BRepAdaptor_Curve)& C1, + const Handle(BRepAdaptor_Curve)& C2, const Standard_Real u1, const Standard_Real u2) { diff --git a/src/BRepLProp/BRepLProp.hxx b/src/BRepLProp/BRepLProp.hxx index 63e04a5ef5..d04a655150 100644 --- a/src/BRepLProp/BRepLProp.hxx +++ b/src/BRepLProp/BRepLProp.hxx @@ -40,10 +40,10 @@ public: //! C2. The point u1 on C1 and the point u2 on C2 must be //! confused. tl and ta are the linear and angular //! tolerance used two compare the derivative. - Standard_EXPORT static GeomAbs_Shape Continuity (const BRepAdaptor_Curve& C1, const BRepAdaptor_Curve& C2, const Standard_Real u1, const Standard_Real u2, const Standard_Real tl, const Standard_Real ta); + Standard_EXPORT static GeomAbs_Shape Continuity (const Handle(BRepAdaptor_Curve)& C1, const Handle(BRepAdaptor_Curve)& C2, const Standard_Real u1, const Standard_Real u2, const Standard_Real tl, const Standard_Real ta); //! The same as preceding but using the standard tolerances from package Precision. - Standard_EXPORT static GeomAbs_Shape Continuity (const BRepAdaptor_Curve& C1, const BRepAdaptor_Curve& C2, const Standard_Real u1, const Standard_Real u2); + Standard_EXPORT static GeomAbs_Shape Continuity (const Handle(BRepAdaptor_Curve)& C1, const Handle(BRepAdaptor_Curve)& C2, const Standard_Real u1, const Standard_Real u2); }; diff --git a/src/BRepLProp/BRepLProp_CLProps.hxx b/src/BRepLProp/BRepLProp_CLProps.hxx index 3f1597c431..9ec44d1d5b 100644 --- a/src/BRepLProp/BRepLProp_CLProps.hxx +++ b/src/BRepLProp/BRepLProp_CLProps.hxx @@ -53,12 +53,12 @@ public: //! only the tangent, N should be equal to 1. //! is the linear tolerance (it is used to test //! if a vector is null). - Standard_EXPORT BRepLProp_CLProps(const BRepAdaptor_Curve& C, const Standard_Integer N, const Standard_Real Resolution); + Standard_EXPORT BRepLProp_CLProps(const Handle(BRepAdaptor_Curve)& C, const Standard_Integer N, const Standard_Real Resolution); //! Same as previous constructor but here the parameter is //! set to the value . //! All the computations done will be related to and . - Standard_EXPORT BRepLProp_CLProps(const BRepAdaptor_Curve& C, const Standard_Real U, const Standard_Integer N, const Standard_Real Resolution); + Standard_EXPORT BRepLProp_CLProps(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, const Standard_Integer N, const Standard_Real Resolution); //! Same as previous constructor but here the parameter is //! set to the value and the curve is set @@ -74,7 +74,7 @@ public: //! Initializes the local properties of the curve //! for the new curve. - Standard_EXPORT void SetCurve (const BRepAdaptor_Curve& C); + Standard_EXPORT void SetCurve (const Handle(BRepAdaptor_Curve)& C); //! Returns the Point. Standard_EXPORT const gp_Pnt& Value() const; @@ -121,7 +121,7 @@ private: - BRepAdaptor_Curve myCurve; + Handle(BRepAdaptor_Curve) myCurve; Standard_Real myU; Standard_Integer myDerOrder; Standard_Real myCN; diff --git a/src/BRepLProp/BRepLProp_CLProps_0.cxx b/src/BRepLProp/BRepLProp_CLProps_0.cxx index b1e738b9bc..b481c39fde 100644 --- a/src/BRepLProp/BRepLProp_CLProps_0.cxx +++ b/src/BRepLProp/BRepLProp_CLProps_0.cxx @@ -27,7 +27,7 @@ #include -#define Curve BRepAdaptor_Curve +#define Curve Handle(BRepAdaptor_Curve) #define Curve_hxx #define Vec gp_Vec #define Vec_hxx diff --git a/src/BRepLProp/BRepLProp_CurveTool.cxx b/src/BRepLProp/BRepLProp_CurveTool.cxx index 2493c92e2a..cc2825efa4 100644 --- a/src/BRepLProp/BRepLProp_CurveTool.cxx +++ b/src/BRepLProp/BRepLProp_CurveTool.cxx @@ -24,11 +24,11 @@ //function : Value //purpose : //======================================================================= -void BRepLProp_CurveTool::Value(const BRepAdaptor_Curve& C, +void BRepLProp_CurveTool::Value(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P) { - P = C.Value(U); + P = C->Value(U); } @@ -37,12 +37,12 @@ void BRepLProp_CurveTool::Value(const BRepAdaptor_Curve& C, //purpose : //======================================================================= -void BRepLProp_CurveTool::D1(const BRepAdaptor_Curve& C, +void BRepLProp_CurveTool::D1(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1) { - C.D1(U,P,V1); + C->D1(U,P,V1); } @@ -51,13 +51,13 @@ void BRepLProp_CurveTool::D1(const BRepAdaptor_Curve& C, //purpose : //======================================================================= -void BRepLProp_CurveTool::D2(const BRepAdaptor_Curve& C, +void BRepLProp_CurveTool::D2(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2) { - C.D2(U,P,V1,V2); + C->D2(U,P,V1,V2); } @@ -66,14 +66,14 @@ void BRepLProp_CurveTool::D2(const BRepAdaptor_Curve& C, //purpose : //======================================================================= -void BRepLProp_CurveTool::D3(const BRepAdaptor_Curve& C, +void BRepLProp_CurveTool::D3(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3) { - C.D3(U,P,V1,V2,V3); + C->D3(U,P,V1,V2,V3); } @@ -82,9 +82,9 @@ void BRepLProp_CurveTool::D3(const BRepAdaptor_Curve& C, //purpose : //======================================================================= -Standard_Integer BRepLProp_CurveTool::Continuity(const BRepAdaptor_Curve& C) +Standard_Integer BRepLProp_CurveTool::Continuity(const Handle(BRepAdaptor_Curve)& C) { - GeomAbs_Shape s = C.Continuity(); + GeomAbs_Shape s = C->Continuity(); switch (s) { case GeomAbs_C0: return 0; @@ -110,9 +110,9 @@ Standard_Integer BRepLProp_CurveTool::Continuity(const BRepAdaptor_Curve& C) //purpose : //======================================================================= -Standard_Real BRepLProp_CurveTool::FirstParameter(const BRepAdaptor_Curve& C) +Standard_Real BRepLProp_CurveTool::FirstParameter(const Handle(BRepAdaptor_Curve)& C) { - return C.FirstParameter(); + return C->FirstParameter(); } @@ -121,9 +121,9 @@ Standard_Real BRepLProp_CurveTool::FirstParameter(const BRepAdaptor_Curve& C) //purpose : //======================================================================= -Standard_Real BRepLProp_CurveTool::LastParameter(const BRepAdaptor_Curve& C) +Standard_Real BRepLProp_CurveTool::LastParameter(const Handle(BRepAdaptor_Curve)& C) { - return C.LastParameter(); + return C->LastParameter(); } diff --git a/src/BRepLProp/BRepLProp_CurveTool.hxx b/src/BRepLProp/BRepLProp_CurveTool.hxx index fb693eaef5..22314800c5 100644 --- a/src/BRepLProp/BRepLProp_CurveTool.hxx +++ b/src/BRepLProp/BRepLProp_CurveTool.hxx @@ -35,33 +35,33 @@ public: //! Computes the point

of parameter on the curve . - Standard_EXPORT static void Value (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P); + Standard_EXPORT static void Value (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P); //! Computes the point

and first derivative of //! parameter on the curve . - Standard_EXPORT static void D1 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1); + Standard_EXPORT static void D1 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1); //! Computes the point

, the first derivative and second //! derivative of parameter on the curve . - Standard_EXPORT static void D2 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2); + Standard_EXPORT static void D2 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2); //! Computes the point

, the first derivative , the //! second derivative and third derivative of //! parameter on the curve . - Standard_EXPORT static void D3 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3); + Standard_EXPORT static void D3 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3); //! returns the order of continuity of the curve . //! returns 1 : first derivative only is computable //! returns 2 : first and second derivative only are computable. //! returns 3 : first, second and third are computable. - Standard_EXPORT static Standard_Integer Continuity (const BRepAdaptor_Curve& C); + Standard_EXPORT static Standard_Integer Continuity (const Handle(BRepAdaptor_Curve)& C); //! returns the first parameter bound of the curve. - Standard_EXPORT static Standard_Real FirstParameter (const BRepAdaptor_Curve& C); + Standard_EXPORT static Standard_Real FirstParameter (const Handle(BRepAdaptor_Curve)& C); //! returns the last parameter bound of the curve. //! FirstParameter must be less than LastParamenter. - Standard_EXPORT static Standard_Real LastParameter (const BRepAdaptor_Curve& C); + Standard_EXPORT static Standard_Real LastParameter (const Handle(BRepAdaptor_Curve)& C); diff --git a/src/BRepLProp/BRepLProp_SLProps.hxx b/src/BRepLProp/BRepLProp_SLProps.hxx index 0ea0a22388..29a9e3b879 100644 --- a/src/BRepLProp/BRepLProp_SLProps.hxx +++ b/src/BRepLProp/BRepLProp_SLProps.hxx @@ -55,11 +55,11 @@ public: //! only the tangent, N should be equal to 1. //! is the linear tolerance (it is used to test //! if a vector is null). - Standard_EXPORT BRepLProp_SLProps(const BRepAdaptor_Surface& S, const Standard_Real U, const Standard_Real V, const Standard_Integer N, const Standard_Real Resolution); + Standard_EXPORT BRepLProp_SLProps(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, const Standard_Integer N, const Standard_Real Resolution); //! idem as previous constructor but without setting the value //! of parameters and . - Standard_EXPORT BRepLProp_SLProps(const BRepAdaptor_Surface& S, const Standard_Integer N, const Standard_Real Resolution); + Standard_EXPORT BRepLProp_SLProps(const Handle(BRepAdaptor_Surface)& S, const Standard_Integer N, const Standard_Real Resolution); //! idem as previous constructor but without setting the value //! of parameters and and the surface. @@ -68,7 +68,7 @@ public: //! Initializes the local properties of the surface S //! for the new surface. - Standard_EXPORT void SetSurface (const BRepAdaptor_Surface& S); + Standard_EXPORT void SetSurface (const Handle(BRepAdaptor_Surface)& S); //! Initializes the local properties of the surface S //! for the new parameter values (, ). @@ -155,7 +155,7 @@ private: - BRepAdaptor_Surface mySurf; + Handle(BRepAdaptor_Surface) mySurf; Standard_Real myU; Standard_Real myV; Standard_Integer myDerOrder; diff --git a/src/BRepLProp/BRepLProp_SLProps_0.cxx b/src/BRepLProp/BRepLProp_SLProps_0.cxx index d3c87b35a2..bae22a7aaf 100644 --- a/src/BRepLProp/BRepLProp_SLProps_0.cxx +++ b/src/BRepLProp/BRepLProp_SLProps_0.cxx @@ -27,7 +27,7 @@ #include -#define Surface BRepAdaptor_Surface +#define Surface Handle(BRepAdaptor_Surface) #define Surface_hxx #define Tool BRepLProp_SurfaceTool #define Tool_hxx diff --git a/src/BRepLProp/BRepLProp_SurfaceTool.cxx b/src/BRepLProp/BRepLProp_SurfaceTool.cxx index 2592f8a81c..ed7d4983d7 100644 --- a/src/BRepLProp/BRepLProp_SurfaceTool.cxx +++ b/src/BRepLProp/BRepLProp_SurfaceTool.cxx @@ -24,12 +24,13 @@ //function : Value //purpose : //======================================================================= -void BRepLProp_SurfaceTool::Value(const BRepAdaptor_Surface& S, +void BRepLProp_SurfaceTool::Value(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P) { - P = S.Value(U, V); + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); + P = S->Value(U, V); } @@ -38,14 +39,15 @@ void BRepLProp_SurfaceTool::Value(const BRepAdaptor_Surface& S, //purpose : //======================================================================= -void BRepLProp_SurfaceTool::D1(const BRepAdaptor_Surface& S, +void BRepLProp_SurfaceTool::D1(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V) { - S.D1(U, V, P, D1U, D1V); + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); + S->D1(U, V, P, D1U, D1V); } @@ -54,7 +56,7 @@ void BRepLProp_SurfaceTool::D1(const BRepAdaptor_Surface& S, //purpose : //======================================================================= -void BRepLProp_SurfaceTool::D2(const BRepAdaptor_Surface& S, +void BRepLProp_SurfaceTool::D2(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, @@ -64,20 +66,22 @@ void BRepLProp_SurfaceTool::D2(const BRepAdaptor_Surface& S, gp_Vec& D2V, gp_Vec& DUV) { - S.D2(U, V, P, D1U, D1V, D2U, D2V, DUV); + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); + S->D2(U, V, P, D1U, D1V, D2U, D2V, DUV); } //======================================================================= //function : DN //purpose : //======================================================================= -gp_Vec BRepLProp_SurfaceTool::DN(const BRepAdaptor_Surface& S, +gp_Vec BRepLProp_SurfaceTool::DN(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, const Standard_Integer IU, const Standard_Integer IV) { - return S.DN(U, V, IU, IV); + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); + return S->DN(U, V, IU, IV); } @@ -87,9 +91,10 @@ gp_Vec BRepLProp_SurfaceTool::DN(const BRepAdaptor_Surface& S, //======================================================================= Standard_Integer BRepLProp_SurfaceTool::Continuity - (const BRepAdaptor_Surface& S) + (const Handle(BRepAdaptor_Surface)& S) { - GeomAbs_Shape s = (GeomAbs_Shape) Min(S.UContinuity(),S.VContinuity()); + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); + GeomAbs_Shape s = (GeomAbs_Shape) Min(S->UContinuity(),S->VContinuity()); switch (s) { case GeomAbs_C0: return 0; @@ -115,16 +120,17 @@ Standard_Integer BRepLProp_SurfaceTool::Continuity //purpose : //======================================================================= -void BRepLProp_SurfaceTool::Bounds(const BRepAdaptor_Surface& S, +void BRepLProp_SurfaceTool::Bounds(const Handle(BRepAdaptor_Surface)& S, Standard_Real& U1, Standard_Real& V1, Standard_Real& U2, Standard_Real& V2) { - U1 = S.FirstUParameter(); - V1 = S.FirstVParameter(); - U2 = S.LastUParameter(); - V2 = S.LastVParameter(); + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); + U1 = S->FirstUParameter(); + V1 = S->FirstVParameter(); + U2 = S->LastUParameter(); + V2 = S->LastVParameter(); } diff --git a/src/BRepLProp/BRepLProp_SurfaceTool.hxx b/src/BRepLProp/BRepLProp_SurfaceTool.hxx index 5f3d64cad4..d3b1b691fb 100644 --- a/src/BRepLProp/BRepLProp_SurfaceTool.hxx +++ b/src/BRepLProp/BRepLProp_SurfaceTool.hxx @@ -36,25 +36,25 @@ public: //! Computes the point

of parameter and on the //! Surface . - Standard_EXPORT static void Value (const BRepAdaptor_Surface& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P); + Standard_EXPORT static void Value (const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P); //! Computes the point

and first derivative of //! parameter and on the Surface . - Standard_EXPORT static void D1 (const BRepAdaptor_Surface& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V); + Standard_EXPORT static void D1 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V); //! Computes the point

, the first derivative and second //! derivative of parameter and on the Surface . - Standard_EXPORT static void D2 (const BRepAdaptor_Surface& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& DUV); + Standard_EXPORT static void D2 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& DUV); - Standard_EXPORT static gp_Vec DN (const BRepAdaptor_Surface& S, const Standard_Real U, const Standard_Real V, const Standard_Integer IU, const Standard_Integer IV); + Standard_EXPORT static gp_Vec DN (const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, const Standard_Integer IU, const Standard_Integer IV); //! returns the order of continuity of the Surface . //! returns 1 : first derivative only is computable //! returns 2 : first and second derivative only are computable. - Standard_EXPORT static Standard_Integer Continuity (const BRepAdaptor_Surface& S); + Standard_EXPORT static Standard_Integer Continuity (const Handle(BRepAdaptor_Surface)& S); //! returns the bounds of the Surface. - Standard_EXPORT static void Bounds (const BRepAdaptor_Surface& S, Standard_Real& U1, Standard_Real& V1, Standard_Real& U2, Standard_Real& V2); + Standard_EXPORT static void Bounds (const Handle(BRepAdaptor_Surface)& S, Standard_Real& U1, Standard_Real& V1, Standard_Real& U2, Standard_Real& V2); diff --git a/src/BRepLib/BRepLib.cxx b/src/BRepLib/BRepLib.cxx index a381c6c48c..12268ad402 100644 --- a/src/BRepLib/BRepLib.cxx +++ b/src/BRepLib/BRepLib.cxx @@ -284,12 +284,12 @@ void BRepLib::SameRange(const TopoDS_Edge& AnEdge, //======================================================================= static Standard_Integer evaluateMaxSegment(const Standard_Integer aMaxSegment, - const Adaptor3d_CurveOnSurface& aCurveOnSurface) + const Handle(Adaptor3d_CurveOnSurface)& aCurveOnSurface) { if (aMaxSegment != 0) return aMaxSegment; - Handle(Adaptor3d_Surface) aSurf = aCurveOnSurface.GetSurface(); - Handle(Adaptor2d_Curve2d) aCurv2d = aCurveOnSurface.GetCurve(); + Handle(Adaptor3d_Surface) aSurf = aCurveOnSurface->GetSurface(); + Handle(Adaptor2d_Curve2d) aCurv2d = aCurveOnSurface->GetCurve(); Standard_Real aNbSKnots = 0, aNbC2dKnots = 0; @@ -419,8 +419,8 @@ Standard_Boolean BRepLib::BuildCurve3d(const TopoDS_Edge& AnEdge, new Geom2dAdaptor_Curve(AnAdaptor3dCurve2d) ; Handle(GeomAdaptor_Surface) AnAdaptor3dSurfacePtr = new GeomAdaptor_Surface (AnAdaptor3dSurface) ; - Adaptor3d_CurveOnSurface CurveOnSurface( AnAdaptor3dCurve2dPtr, - AnAdaptor3dSurfacePtr) ; + Handle(Adaptor3d_CurveOnSurface) CurveOnSurface = + new Adaptor3d_CurveOnSurface (AnAdaptor3dCurve2dPtr, AnAdaptor3dSurfacePtr); Handle(Geom_Curve) NewCurvePtr ; @@ -545,8 +545,8 @@ Standard_Boolean BRepLib::UpdateEdgeTol(const TopoDS_Edge& AnEdge, Handle(Geom_Surface) surface_ptr ; TopLoc_Location local_location ; GCPnts_QuasiUniformDeflection a_sampler ; - GeomAdaptor_Curve geom_reference_curve ; - Adaptor3d_CurveOnSurface curve_on_surface_reference ; + Handle(GeomAdaptor_Curve) geom_reference_curve = new GeomAdaptor_Curve(); + Handle(Adaptor3d_CurveOnSurface) curve_on_surface_reference = new Adaptor3d_CurveOnSurface(); Handle(Geom_Curve) C = BRep_Tool::Curve(AnEdge, local_location, current_first, @@ -557,7 +557,7 @@ Standard_Boolean BRepLib::UpdateEdgeTol(const TopoDS_Edge& AnEdge, C = Handle(Geom_Curve):: DownCast(C-> Transformed(local_location.Transformation()) ) ; } - geom_reference_curve.Load(C) ; + geom_reference_curve->Load(C) ; geom_reference_curve_flag = 1 ; a_sampler.Initialize(geom_reference_curve, MinToleranceRequested * factor, @@ -599,7 +599,7 @@ Standard_Boolean BRepLib::UpdateEdgeTol(const TopoDS_Edge& AnEdge, new Geom2dAdaptor_Curve(AnAdaptor3dCurve2d) ; Handle(GeomAdaptor_Surface) AnAdaptor3dSurfacePtr = new GeomAdaptor_Surface (AnAdaptor3dSurface) ; - curve_on_surface_reference.Load (AnAdaptor3dCurve2dPtr, AnAdaptor3dSurfacePtr); + curve_on_surface_reference->Load (AnAdaptor3dCurve2dPtr, AnAdaptor3dSurfacePtr); a_sampler.Initialize(curve_on_surface_reference, MinToleranceRequested * factor, current_first, @@ -668,8 +668,8 @@ Standard_Boolean BRepLib::UpdateEdgeTol(const TopoDS_Edge& AnEdge, new Geom2dAdaptor_Curve(an_adaptor_curve2d) ; Handle(GeomAdaptor_Surface) an_adaptor_surface_ptr = new GeomAdaptor_Surface (an_adaptor_surface) ; - Adaptor3d_CurveOnSurface a_curve_on_surface(an_adaptor_curve2d_ptr, - an_adaptor_surface_ptr) ; + Handle(Adaptor3d_CurveOnSurface) a_curve_on_surface = + new Adaptor3d_CurveOnSurface (an_adaptor_curve2d_ptr, an_adaptor_surface_ptr); if (BRep_Tool::SameParameter(AnEdge)) { @@ -780,7 +780,7 @@ static void GetEdgeTol(const TopoDS_Edge& theEdge, GeomAdaptor_Surface& GAS = *HS; GAS.Load(GP); - ProjLib_ProjectedCurve Proj(HS,HC); + Handle(ProjLib_ProjectedCurve) Proj = new ProjLib_ProjectedCurve(HS,HC); Handle(Geom2d_Curve) pc = Geom2dAdaptor::MakeCurve(Proj); gp_Pln pln = GAS.Plane(); @@ -1009,13 +1009,13 @@ void BRepLib::SameParameter(const TopoDS_Shape& S, BRepTools_ReShape& theReshape //======================================================================= static Standard_Boolean EvalTol(const Handle(Geom2d_Curve)& pc, const Handle(Geom_Surface)& s, - const GeomAdaptor_Curve& gac, + const Handle(GeomAdaptor_Curve)& gac, const Standard_Real tol, Standard_Real& tolbail) { Standard_Integer ok = 0; - Standard_Real f = gac.FirstParameter(); - Standard_Real l = gac.LastParameter(); + Standard_Real f = gac->FirstParameter(); + Standard_Real l = gac->LastParameter(); Extrema_LocateExtPC Projector; Projector.Initialize(gac,f,l,tol); Standard_Real u,v; @@ -1257,7 +1257,6 @@ TopoDS_Edge BRepLib::SameParameter(const TopoDS_Edge& theEdge, Handle(GeomAdaptor_Curve) HC = new GeomAdaptor_Curve(); Handle(Geom2dAdaptor_Curve) HC2d = new Geom2dAdaptor_Curve(); Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(); - GeomAdaptor_Curve& GAC = *HC; Geom2dAdaptor_Curve& GAC2d = *HC2d; GeomAdaptor_Surface& GAS = *HS; @@ -1288,9 +1287,9 @@ TopoDS_Edge BRepLib::SameParameter(const TopoDS_Edge& theEdge, if(!L3d.IsIdentity()){ C3d = Handle(Geom_Curve)::DownCast(C3d->Transformed(L3d.Transformation())); } - GAC.Load(C3d,f3d,l3d); + HC->Load(C3d,f3d,l3d); - Standard_Real Prec_C3d = BRepCheck::PrecCurve(GAC); + Standard_Real Prec_C3d = BRepCheck::PrecCurve(HC); Standard_Boolean IsSameP = 1; Standard_Real maxdist = 0.; @@ -1325,7 +1324,7 @@ TopoDS_Edge BRepLib::SameParameter(const TopoDS_Edge& theEdge, } // Eval tol2d to compute SameRange - Standard_Real TolSameRange = Max(GAC.Resolution(theTolerance), Precision::PConfusion()); + Standard_Real TolSameRange = Max(HC->Resolution(theTolerance), Precision::PConfusion()); for(Standard_Integer i = 0; i < 2; i++){ Handle(Geom2d_Curve) curPC = PC[i]; Standard_Boolean updatepc = 0; @@ -1386,7 +1385,7 @@ TopoDS_Edge BRepLib::SameParameter(const TopoDS_Edge& theEdge, if(bs2d->Continuity() == GeomAbs_C0) { Standard_Real tolbail; - if(EvalTol(curPC,S,GAC,theTolerance,tolbail)){ + if(EvalTol(curPC,S,HC,theTolerance,tolbail)){ bs2d = bs2dsov; Standard_Real UResbail = GAS.UResolution(tolbail); Standard_Real VResbail = GAS.VResolution(tolbail); @@ -2139,7 +2138,7 @@ GeomAbs_Shape BRepLib::ContinuityOfFaces(const TopoDS_Edge& theEdge, { // adaptor for pcurve on the second surface aHC2 = new BRepAdaptor_Curve (anEdgeInFace2, theFace2); - ext.Initialize(*aHC2, f, l, Precision::PConfusion()); + ext.Initialize(aHC2, f, l, Precision::PConfusion()); } ext.Perform(aSP1.Value(), u); if (ext.IsDone() && ext.IsMin()) @@ -2893,7 +2892,7 @@ void BRepLib::ExtendFace(const TopoDS_Face& theF, { // Get basis transformed basis surface Handle(Geom_Surface) aSurf = Handle(Geom_Surface):: - DownCast(aBAS.Surface().Surface()->Transformed(aBAS.Trsf())); + DownCast(aBAS.Surface()->Surface()->Transformed(aBAS.Trsf())); // Get bounds of the basis surface Standard_Real aSUMin, aSUMax, aSVMin, aSVMax; diff --git a/src/BRepLib/BRepLib.hxx b/src/BRepLib/BRepLib.hxx index 1acb765bfc..19657ca084 100644 --- a/src/BRepLib/BRepLib.hxx +++ b/src/BRepLib/BRepLib.hxx @@ -261,7 +261,7 @@ public: //! Returns false if there is no such range. Otherwise, sets theFirst and //! theLast as its bounds. Standard_EXPORT static Standard_Boolean FindValidRange - (const Adaptor3d_Curve& theCurve, const Standard_Real theTolE, + (const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real theTolE, const Standard_Real theParV1, const gp_Pnt& thePntV1, const Standard_Real theTolV1, const Standard_Real theParV2, const gp_Pnt& thePntV2, const Standard_Real theTolV2, Standard_Real& theFirst, Standard_Real& theLast); diff --git a/src/BRepLib/BRepLib_1.cxx b/src/BRepLib/BRepLib_1.cxx index 5fe6d8c177..c3a17240a5 100644 --- a/src/BRepLib/BRepLib_1.cxx +++ b/src/BRepLib/BRepLib_1.cxx @@ -29,7 +29,7 @@ // center theVertPnt and radius theTol. //======================================================================= static Standard_Boolean findNearestValidPoint( - const Adaptor3d_Curve& theCurve, + const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real theFirst, const Standard_Real theLast, const Standard_Boolean isFirst, const gp_Pnt& theVertPnt, @@ -43,7 +43,7 @@ static Standard_Boolean findNearestValidPoint( Standard_Real anEndU = theLast; if (!isFirst) std::swap(aStartU, anEndU); - gp_Pnt aP = theCurve.Value(aStartU); + gp_Pnt aP = theCurve->Value(aStartU); const Standard_Real aSqTol = theTol * theTol; if (aP.SquareDistance(theVertPnt) > aSqTol) // the vertex does not cover the corresponding to this vertex end of the curve @@ -54,7 +54,7 @@ static Standard_Boolean findNearestValidPoint( // stepping along the curve by theTol till go out // // the general step is computed using general curve resolution - Standard_Real aStep = theCurve.Resolution(theTol) * 1.01; + Standard_Real aStep = theCurve->Resolution(theTol) * 1.01; if (aStep < theEps) aStep = theEps; // aD1Mag is a threshold to consider local derivative magnitude too small @@ -62,16 +62,16 @@ static Standard_Boolean findNearestValidPoint( // (inverse of resolution is the maximal derivative); // this is actual for bezier and b-spline types only Standard_Real aD1Mag = 0.; - GeomAbs_CurveType aType = theCurve.GetType(); + GeomAbs_CurveType aType = theCurve->GetType(); if (aType == GeomAbs_OffsetCurve) { - Handle(Geom_OffsetCurve) anOffsetCurve = theCurve.OffsetCurve(); + Handle(Geom_OffsetCurve) anOffsetCurve = theCurve->OffsetCurve(); Handle(Geom_Curve) aBaseCurve = anOffsetCurve->BasisCurve(); aType = GeomAdaptor_Curve(aBaseCurve).GetType(); } if (aType == GeomAbs_BezierCurve || aType == GeomAbs_BSplineCurve) { - aD1Mag = 1. / theCurve.Resolution(1.) * 0.01; + aD1Mag = 1. / theCurve->Resolution(1.) * 0.01; aD1Mag *= aD1Mag; } if (!isFirst) @@ -87,7 +87,7 @@ static Standard_Boolean findNearestValidPoint( { // step is too big and we go out of bounds, // check if the opposite bound is outside - aP = theCurve.Value(anEndU); + aP = theCurve->Value(anEndU); isOut = (aP.SquareDistance(theVertPnt) > aSqTol); if (!isOut) // all range is inside sphere @@ -102,7 +102,7 @@ static Standard_Boolean findNearestValidPoint( { // cycle to go out of local singularity gp_Vec aD1; - theCurve.D1(anUOut, aP, aD1); + theCurve->D1(anUOut, aP, aD1); isOut = (aP.SquareDistance(theVertPnt) > aSqTol); if (!isOut && aD1.SquareMagnitude() < aD1Mag) { @@ -113,7 +113,7 @@ static Standard_Boolean findNearestValidPoint( continue; // went out of range, so check if the end point has out state anUOut = anEndU; - aP = theCurve.Value(anUOut); + aP = theCurve->Value(anUOut); isOut = (aP.SquareDistance(theVertPnt) > aSqTol); if (!isOut) // all range is inside sphere @@ -124,7 +124,7 @@ static Standard_Boolean findNearestValidPoint( } else { - aP = theCurve.Value(anUOut); + aP = theCurve->Value(anUOut); } if (!isOut) isOut = (aP.SquareDistance(theVertPnt) > aSqTol); @@ -136,7 +136,7 @@ static Standard_Boolean findNearestValidPoint( while (aDelta > theEps) { Standard_Real aMidU = (anUIn + anUOut) * 0.5; - aP = theCurve.Value(aMidU); + aP = theCurve->Value(aMidU); isOut = (aP.SquareDistance(theVertPnt) > aSqTol); if (isOut) anUOut = aMidU; @@ -153,7 +153,7 @@ static Standard_Boolean findNearestValidPoint( // purpose : //======================================================================= Standard_Boolean BRepLib::FindValidRange - (const Adaptor3d_Curve& theCurve, const Standard_Real theTolE, + (const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real theTolE, const Standard_Real theParV1, const gp_Pnt& thePntV1, const Standard_Real theTolV1, const Standard_Real theParV2, const gp_Pnt& thePntV2, const Standard_Real theTolV2, Standard_Real& theFirst, Standard_Real& theLast) @@ -170,7 +170,7 @@ Standard_Boolean BRepLib::FindValidRange if (!isInfParV2) aMaxPar = Max (aMaxPar, Abs (theParV2)); - Standard_Real anEps = Max (Max (theCurve.Resolution (theTolE) * 0.1, Epsilon (aMaxPar)), + Standard_Real anEps = Max (Max (theCurve->Resolution (theTolE) * 0.1, Epsilon (aMaxPar)), Precision::PConfusion()); if (isInfParV1) @@ -216,8 +216,8 @@ Standard_Boolean BRepLib::FindValidRange Standard_Real f, l; if (BRep_Tool::Curve(theEdge, aLoc, f, l).IsNull()) return Standard_False; - BRepAdaptor_Curve anAC(theEdge); - Standard_Real aParV[2] = { anAC.FirstParameter(), anAC.LastParameter() }; + Handle(BRepAdaptor_Curve) anAC = new BRepAdaptor_Curve(theEdge); + Standard_Real aParV[2] = { anAC->FirstParameter(), anAC->LastParameter() }; if (aParV[1] - aParV[0] < Precision::PConfusion()) return Standard_False; @@ -240,7 +240,7 @@ Standard_Boolean BRepLib::FindValidRange else if (!Precision::IsInfinite(aParV[i])) { aTolV[i] += aTolE; - aPntV[i] = anAC.Value(aParV[i]); + aPntV[i] = anAC->Value(aParV[i]); } } return FindValidRange(anAC, aTolE, diff --git a/src/BRepLib/BRepLib_FindSurface.cxx b/src/BRepLib/BRepLib_FindSurface.cxx index 15ae27de86..6e99d83565 100644 --- a/src/BRepLib/BRepLib_FindSurface.cxx +++ b/src/BRepLib/BRepLib_FindSurface.cxx @@ -205,7 +205,7 @@ static void fillParams (const TColStd_Array1OfReal& theKnots, theParams.Append (theParMax); } -static void fillPoints (const BRepAdaptor_Curve& theCurve, +static void fillPoints (BRepAdaptor_Curve& theCurve, const NCollection_Vector& theParams, TColgp_SequenceOfPnt& thePoints, TColStd_SequenceOfReal& theWeights) diff --git a/src/BRepLib/BRepLib_FuseEdges.cxx b/src/BRepLib/BRepLib_FuseEdges.cxx index a1b802143c..779a8dca5c 100644 --- a/src/BRepLib/BRepLib_FuseEdges.cxx +++ b/src/BRepLib/BRepLib_FuseEdges.cxx @@ -167,7 +167,7 @@ static void MakeClosedCurve(Handle(Geom_Curve)& C, const gp_Pnt& PF, } if(porig > l) { //try to project - GeomAdaptor_Curve aGAC(aBC); + Handle(GeomAdaptor_Curve) aGAC = new GeomAdaptor_Curve(aBC); Extrema_LocateExtPC aPrj(PF, aGAC, pmin, Precision::PConfusion()); if(aPrj.IsDone()) { porig = aPrj.Point().Parameter(); diff --git a/src/BRepLib/BRepLib_MakeEdge.cxx b/src/BRepLib/BRepLib_MakeEdge.cxx index f1ddbdcefb..4693c53406 100644 --- a/src/BRepLib/BRepLib_MakeEdge.cxx +++ b/src/BRepLib/BRepLib_MakeEdge.cxx @@ -62,21 +62,21 @@ static Standard_Boolean Project(const Handle(Geom_Curve)& C, Eps2 *= Eps2; gp_Pnt P = BRep_Tool::Pnt(V); - GeomAdaptor_Curve GAC(C); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C); // Afin de faire les extremas, on verifie les distances en bout Standard_Real D1,D2; gp_Pnt P1,P2; - P1 = GAC.Value(GAC.FirstParameter()); - P2 = GAC.Value(GAC.LastParameter()); + P1 = GAC->Value(GAC->FirstParameter()); + P2 = GAC->Value(GAC->LastParameter()); D1 = P1.SquareDistance(P); D2 = P2.SquareDistance(P); if ( (D1 < D2) && (D1 <= Eps2) ) { - p = GAC.FirstParameter(); + p = GAC->FirstParameter(); return Standard_True; } else if ( (D2 < D1) && (D2 <= Eps2) ) { - p = GAC.LastParameter(); + p = GAC->LastParameter(); return Standard_True; } @@ -122,20 +122,20 @@ static Standard_Boolean Project(const Handle(Geom2d_Curve)& C, Handle(Geom2dAdaptor_Curve) HG2AHC = new Geom2dAdaptor_Curve (C); Handle(GeomAdaptor_Surface) HGAHS = new GeomAdaptor_Surface (S); - Adaptor3d_CurveOnSurface ACOS(HG2AHC,HGAHS); + Handle(Adaptor3d_CurveOnSurface) ACOS = new Adaptor3d_CurveOnSurface(HG2AHC,HGAHS); Standard_Real D1,D2; gp_Pnt P1,P2; - P1 = ACOS.Value(ACOS.FirstParameter()); - P2 = ACOS.Value(ACOS.LastParameter()); + P1 = ACOS->Value(ACOS->FirstParameter()); + P2 = ACOS->Value(ACOS->LastParameter()); D1 = P1.SquareDistance(P); D2 = P2.SquareDistance(P); if ( (D1 < D2) && (D1 <= Eps2) ) { - p = ACOS.FirstParameter(); + p = ACOS->FirstParameter(); return Standard_True; } else if ( (D2 < D1) && (D2 <= Eps2) ) { - p = ACOS.LastParameter(); + p = ACOS->LastParameter(); return Standard_True; } diff --git a/src/BRepLib/BRepLib_MakeEdge2d.cxx b/src/BRepLib/BRepLib_MakeEdge2d.cxx index f04af3e5a8..5bf9aed14e 100644 --- a/src/BRepLib/BRepLib_MakeEdge2d.cxx +++ b/src/BRepLib/BRepLib_MakeEdge2d.cxx @@ -76,12 +76,12 @@ static Standard_Boolean Project(const Handle(Geom2d_Curve)& C, Standard_Real& p) { gp_Pnt2d P = Project(V); - Geom2dAdaptor_Curve AC(C); - if (AC.GetType() == GeomAbs_Line) { - p = ElCLib::LineParameter(AC.Line().Position(),P); + Handle(Geom2dAdaptor_Curve) AC = new Geom2dAdaptor_Curve(C); + if (AC->GetType() == GeomAbs_Line) { + p = ElCLib::LineParameter(AC->Line().Position(),P); } - else if (AC.GetType() == GeomAbs_Circle) { - p = ElCLib::CircleParameter(AC.Circle().Position(),P); + else if (AC->GetType() == GeomAbs_Circle) { + p = ElCLib::CircleParameter(AC->Circle().Position(),P); } else { Extrema_ExtPC2d extrema(P,AC); diff --git a/src/BRepLib/BRepLib_ValidateEdge.cxx b/src/BRepLib/BRepLib_ValidateEdge.cxx index 2b55aa7c21..5ddfc80efc 100644 --- a/src/BRepLib/BRepLib_ValidateEdge.cxx +++ b/src/BRepLib/BRepLib_ValidateEdge.cxx @@ -76,7 +76,7 @@ void BRepLib_ValidateEdge::UpdateTolerance(Standard_Real& theToleranceToUpdate) Standard_Real BRepLib_ValidateEdge::correctTolerance(Standard_Real theTolerance) { const Handle(Adaptor3d_Surface)& aSurface = myOtherCurve->GetSurface(); - Standard_Real aCurvePrecision = BRepCheck::PrecCurve(*myReferenceCurve); + Standard_Real aCurvePrecision = BRepCheck::PrecCurve(myReferenceCurve); Standard_Real aSurfacePrecision = BRepCheck::PrecSurface(aSurface); Standard_Real aToleranceDelta = (aCurvePrecision > aSurfacePrecision) ? aCurvePrecision : aSurfacePrecision; Standard_Real aCorrectedTolerance = theTolerance + aToleranceDelta; @@ -178,8 +178,8 @@ void BRepLib_ValidateEdge::processApprox() } Extrema_LocateExtPC aReferenceExtrema, anOtherExtrema; - aReferenceExtrema.Initialize(*myReferenceCurve, aReferenceFirstParam, aReferenceLastParam, myReferenceCurve->Resolution(Precision::Confusion())); - anOtherExtrema.Initialize(*myOtherCurve, anOtherFirstParam, anOtherLastParam, myOtherCurve->Resolution(Precision::Confusion())); + aReferenceExtrema.Initialize(myReferenceCurve, aReferenceFirstParam, aReferenceLastParam, myReferenceCurve->Resolution(Precision::Confusion())); + anOtherExtrema.Initialize(myOtherCurve, anOtherFirstParam, anOtherLastParam, myOtherCurve->Resolution(Precision::Confusion())); for (Standard_Integer i = 1; i < aControlPointsNumber; i++) { Standard_Real aReferenceParam = ((aControlPointsNumber - i) * aReferenceFirstParam + i * aReferenceLastParam) / aControlPointsNumber; diff --git a/src/BRepMesh/BRepMesh_CurveTessellator.cxx b/src/BRepMesh/BRepMesh_CurveTessellator.cxx index fbb1b47305..0eab1a84b0 100644 --- a/src/BRepMesh/BRepMesh_CurveTessellator.cxx +++ b/src/BRepMesh/BRepMesh_CurveTessellator.cxx @@ -39,7 +39,7 @@ BRepMesh_CurveTessellator::BRepMesh_CurveTessellator( : myDEdge(theEdge), myParameters(theParameters), myEdge(theEdge->GetEdge()), - myCurve(myEdge) + myCurve(new BRepAdaptor_Curve(myEdge)) { init(); } @@ -56,7 +56,7 @@ BRepMesh_CurveTessellator::BRepMesh_CurveTessellator ( : myDEdge(theEdge), myParameters(theParameters), myEdge(TopoDS::Edge(theEdge->GetEdge().Oriented(theOrientation))), - myCurve(myEdge, theFace->GetFace()) + myCurve(new BRepAdaptor_Curve(myEdge, theFace->GetFace())) { init(); } @@ -88,7 +88,7 @@ void BRepMesh_CurveTessellator::init() if (myParameters.AdjustMinSize) { aMinSize = Min (aMinSize, myParameters.RelMinSize() * GCPnts_AbscissaPoint::Length ( - myCurve, myCurve.FirstParameter(), myCurve.LastParameter(), aPreciseLinDef)); + myCurve, myCurve->FirstParameter(), myCurve->LastParameter(), aPreciseLinDef)); } mySquareEdgeDef = aPreciseLinDef * aPreciseLinDef; @@ -97,17 +97,17 @@ void BRepMesh_CurveTessellator::init() myEdgeSqTol = BRep_Tool::Tolerance (myEdge); myEdgeSqTol *= myEdgeSqTol; - const Standard_Integer aMinPntNb = (myCurve.GetType() == GeomAbs_Circle) ? 4 : 2; //OCC287 + const Standard_Integer aMinPntNb = (myCurve->GetType() == GeomAbs_Circle) ? 4 : 2; //OCC287 myDiscretTool.Initialize (myCurve, - myCurve.FirstParameter(), myCurve.LastParameter(), + myCurve->FirstParameter(), myCurve->LastParameter(), aPreciseAngDef, aPreciseLinDef, aMinPntNb, Precision::PConfusion(), aMinSize); - if (myCurve.IsCurveOnSurface()) + if (myCurve->IsCurveOnSurface()) { - const Adaptor3d_CurveOnSurface& aCurve = myCurve.CurveOnSurface(); - const Handle(Adaptor3d_Surface)& aSurface = aCurve.GetSurface(); + const Handle(Adaptor3d_CurveOnSurface)& aCurve = myCurve->CurveOnSurface(); + const Handle(Adaptor3d_Surface)& aSurface = aCurve->GetSurface(); const Standard_Real aTol = Precision::Confusion(); const Standard_Real aDu = aSurface->UResolution(aTol); @@ -229,15 +229,15 @@ Standard_Boolean BRepMesh_CurveTessellator::Value ( /*if (!isInToleranceOfVertex(thePoint, myFirstVertex) && !isInToleranceOfVertex(thePoint, myLastVertex)) {*/ - if (!myCurve.IsCurveOnSurface()) + if (!myCurve->IsCurveOnSurface()) { return Standard_True; } // If point coordinates are out of surface range, // it is necessary to re-project point. - const Adaptor3d_CurveOnSurface& aCurve = myCurve.CurveOnSurface(); - const Handle(Adaptor3d_Surface)& aSurface = aCurve.GetSurface(); + const Handle(Adaptor3d_CurveOnSurface)& aCurve = myCurve->CurveOnSurface(); + const Handle(Adaptor3d_Surface)& aSurface = aCurve->GetSurface(); if (aSurface->GetType() != GeomAbs_BSplineSurface && aSurface->GetType() != GeomAbs_BezierSurface && aSurface->GetType() != GeomAbs_OtherSurface) @@ -252,7 +252,7 @@ Standard_Boolean BRepMesh_CurveTessellator::Value ( } gp_Pnt2d aUV; - aCurve.GetCurve()->D0(theParameter, aUV); + aCurve->GetCurve()->D0(theParameter, aUV); // Point lies within the surface range - nothing to do. if (aUV.X() > myFaceRangeU[0] && aUV.X() < myFaceRangeU[1] && aUV.Y() > myFaceRangeV[0] && aUV.Y() < myFaceRangeV[1]) @@ -335,7 +335,7 @@ void BRepMesh_CurveTessellator::splitSegment ( } midpar = (theFirst + theLast) * 0.5; - myCurve.D0 (midpar, midP3d); + myCurve->D0 (midpar, midP3d); myDiscretTool.AddPoint (midP3d, midpar, Standard_False); splitSegment (theSurf, theCurve2d, theFirst, midpar, theNbIter + 1); diff --git a/src/BRepMesh/BRepMesh_CurveTessellator.hxx b/src/BRepMesh/BRepMesh_CurveTessellator.hxx index ddf3bcfa52..63c02bc604 100644 --- a/src/BRepMesh/BRepMesh_CurveTessellator.hxx +++ b/src/BRepMesh/BRepMesh_CurveTessellator.hxx @@ -95,7 +95,7 @@ private: const IMeshData::IEdgeHandle& myDEdge; const IMeshTools_Parameters& myParameters; TopoDS_Edge myEdge; - BRepAdaptor_Curve myCurve; + Handle(BRepAdaptor_Curve) myCurve; GCPnts_TangentialDeflection myDiscretTool; TopoDS_Vertex myFirstVertex; TopoDS_Vertex myLastVertex; diff --git a/src/BRepMesh/BRepMesh_DefaultRangeSplitter.cxx b/src/BRepMesh/BRepMesh_DefaultRangeSplitter.cxx index dee351928b..ff72d698e7 100644 --- a/src/BRepMesh/BRepMesh_DefaultRangeSplitter.cxx +++ b/src/BRepMesh/BRepMesh_DefaultRangeSplitter.cxx @@ -127,9 +127,9 @@ void BRepMesh_DefaultRangeSplitter::computeTolerance( // Slightly increase exact resolution so to cover links with approximate // length equal to resolution itself on sub-resolution differences. const Standard_Real aTolerance = BRep_Tool::Tolerance (myDFace->GetFace()); - const Adaptor3d_Surface& aSurface = GetSurface()->Surface(); - const Standard_Real aResU = aSurface.UResolution (aTolerance) * 1.1; - const Standard_Real aResV = aSurface.VResolution (aTolerance) * 1.1; + const Handle(Adaptor3d_Surface)& aSurface = GetSurface()->Surface(); + const Standard_Real aResU = aSurface->UResolution (aTolerance) * 1.1; + const Standard_Real aResV = aSurface->VResolution (aTolerance) * 1.1; const Standard_Real aDeflectionUV = 1.e-05; myTolerance.first = Max(Min(aDeflectionUV, aResU), 1e-7 * aDiffU); diff --git a/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx b/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx index f39997051f..1fbb1b216a 100644 --- a/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx +++ b/src/BRepMesh/BRepMesh_DelaunayDeflectionControlMeshAlgo.hxx @@ -375,7 +375,7 @@ private: const gp_XY& /*theMidPoint*/) { gp_Dir aNorm1, aNorm2; - const Handle(Geom_Surface)& aSurf = this->getDFace()->GetSurface()->Surface().Surface(); + const Handle(Geom_Surface)& aSurf = this->getDFace()->GetSurface()->Surface()->Surface(); if ((GeomLib::NormEstim(aSurf, theNodeInfo1.Point2d, Precision::Confusion(), aNorm1) == 0) && (GeomLib::NormEstim(aSurf, theNodeInfo2.Point2d, Precision::Confusion(), aNorm2) == 0)) diff --git a/src/BRepMesh/BRepMesh_EdgeParameterProvider.hxx b/src/BRepMesh/BRepMesh_EdgeParameterProvider.hxx index 7070c0997e..63efcd9526 100644 --- a/src/BRepMesh/BRepMesh_EdgeParameterProvider.hxx +++ b/src/BRepMesh/BRepMesh_EdgeParameterProvider.hxx @@ -49,6 +49,7 @@ public: myCurParam(0.0), myFoundParam(0.0) { + myCurveAdaptor = new BRepAdaptor_Curve(); } //! Constructor. @@ -61,6 +62,7 @@ public: const IMeshData::IFaceHandle& theFace, const ParametersCollection& theParameters) { + myCurveAdaptor = new BRepAdaptor_Curve(); Init(theEdge, theOrientation, theFace, theParameters); } @@ -78,14 +80,14 @@ public: // Extract actual parametric values const TopoDS_Edge aEdge = TopoDS::Edge(theEdge->GetEdge().Oriented(theOrientation)); - myCurveAdaptor.Initialize(aEdge, theFace->GetFace()); + myCurveAdaptor->Initialize(aEdge, theFace->GetFace()); if (myIsSameParam) { return; } - myFirstParam = myCurveAdaptor.FirstParameter(); - const Standard_Real aLastParam = myCurveAdaptor.LastParameter(); + myFirstParam = myCurveAdaptor->FirstParameter(); + const Standard_Real aLastParam = myCurveAdaptor->LastParameter(); myFoundParam = myCurParam = myFirstParam; @@ -100,8 +102,8 @@ public: myScale = (aLastParam - myFirstParam) / (aOldLastParam - myOldFirstParam); } - myProjector.Initialize(myCurveAdaptor, myCurveAdaptor.FirstParameter(), - myCurveAdaptor.LastParameter(),Precision::PConfusion()); + myProjector.Initialize(myCurveAdaptor, myCurveAdaptor->FirstParameter(), + myCurveAdaptor->LastParameter(),Precision::PConfusion()); } //! Returns parameter according to SameParameter flag of the edge. @@ -145,7 +147,7 @@ public: //! Returns pcurve used to compute parameters. const Handle(Adaptor2d_Curve2d)& GetPCurve() const { - return myCurveAdaptor.CurveOnSurface().GetCurve(); + return myCurveAdaptor->CurveOnSurface()->GetCurve(); } private: @@ -161,7 +163,7 @@ private: mutable Standard_Real myCurParam; mutable Standard_Real myFoundParam; - BRepAdaptor_Curve myCurveAdaptor; + Handle(BRepAdaptor_Curve) myCurveAdaptor; mutable Extrema_LocateExtPC myProjector; }; diff --git a/src/BRepMesh/BRepMesh_GeomTool.cxx b/src/BRepMesh/BRepMesh_GeomTool.cxx index ffa7649433..a5cd56c0d3 100644 --- a/src/BRepMesh/BRepMesh_GeomTool.cxx +++ b/src/BRepMesh/BRepMesh_GeomTool.cxx @@ -148,14 +148,14 @@ namespace //purpose : //======================================================================= BRepMesh_GeomTool::BRepMesh_GeomTool( - const BRepAdaptor_Curve& theCurve, + const Handle(BRepAdaptor_Curve)& theCurve, const Standard_Real theFirstParam, const Standard_Real theLastParam, const Standard_Real theLinDeflection, const Standard_Real theAngDeflection, const Standard_Integer theMinPointsNb, const Standard_Real theMinSize) - : myEdge(&theCurve.Edge()), + : myEdge(&theCurve->Edge()), myIsoType(GeomAbs_NoneIso) { myDiscretTool.Initialize(theCurve, theFirstParam, theLastParam, @@ -180,7 +180,7 @@ BRepMesh_GeomTool::BRepMesh_GeomTool( : myEdge(NULL), myIsoType(theIsoType) { - Adaptor3d_IsoCurve aIso(theSurface, theIsoType, theParamIso, + Handle(Adaptor3d_IsoCurve) aIso = new Adaptor3d_IsoCurve(theSurface, theIsoType, theParamIso, theFirstParam, theLastParam); myDiscretTool.Initialize(aIso, theFirstParam, theLastParam, diff --git a/src/BRepMesh/BRepMesh_GeomTool.hxx b/src/BRepMesh/BRepMesh_GeomTool.hxx index 9b185e9803..9fa189ba83 100644 --- a/src/BRepMesh/BRepMesh_GeomTool.hxx +++ b/src/BRepMesh/BRepMesh_GeomTool.hxx @@ -57,7 +57,7 @@ public: //! @param theAngDeflection angular deflection. //! @param theMinPointsNb minimum number of points to be produced. Standard_EXPORT BRepMesh_GeomTool( - const BRepAdaptor_Curve& theCurve, + const Handle(BRepAdaptor_Curve)& theCurve, const Standard_Real theFirstParam, const Standard_Real theLastParam, const Standard_Real theLinDeflection, diff --git a/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx b/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx index 7b0bdb67ad..a080004b49 100644 --- a/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx +++ b/src/BRepMesh/BRepMesh_NURBSRangeSplitter.cxx @@ -37,7 +37,7 @@ namespace const Handle(IMeshData::MapOfReal)& theParamsForbiddenToRemove, const Handle(IMeshData::MapOfReal)& theControlParamsForbiddenToRemove) : myDFace(theDFace), - mySurface(myDFace->GetSurface()->Surface().Surface()), + mySurface(myDFace->GetSurface()->Surface()->Surface()), myIsoU(theIsoType == GeomAbs_IsoU), myParams(theParams), myControlParams(theControlParams), @@ -334,7 +334,7 @@ Handle(IMeshData::ListOfPnt2d) BRepMesh_NURBSRangeSplitter::GenerateSurfaceNodes const Standard_Real aDefFace = GetDFace()->GetDeflection(); const Handle(BRepAdaptor_Surface)& gFace = GetSurface(); - Handle(Geom_Surface) aSurface = gFace->Surface().Surface(); + Handle(Geom_Surface) aSurface = gFace->Surface()->Surface(); const Handle(NCollection_IncAllocator) aTmpAlloc = new NCollection_IncAllocator(IMeshData::MEMORY_BLOCK_SIZE_HUGE); @@ -414,7 +414,7 @@ Standard_Boolean BRepMesh_NURBSRangeSplitter::initParameters() const aSurface->UIntervals(aIntervals[0], aContinuity); aSurface->VIntervals(aIntervals[1], aContinuity); - const Standard_Boolean isSplitIntervals = toSplitIntervals (aSurface->Surface().Surface(), aIntervals); + const Standard_Boolean isSplitIntervals = toSplitIntervals (aSurface->Surface()->Surface(), aIntervals); if (!initParamsFromIntervals(aIntervals[0], GetRangeU(), isSplitIntervals, const_cast(GetParametersU()))) diff --git a/src/BRepOffset/BRepOffset_Inter2d.cxx b/src/BRepOffset/BRepOffset_Inter2d.cxx index 1249748124..07a886c3d3 100644 --- a/src/BRepOffset/BRepOffset_Inter2d.cxx +++ b/src/BRepOffset/BRepOffset_Inter2d.cxx @@ -383,7 +383,7 @@ static void Store (const TopoDS_Edge& theE1, //======================================================================= static void EdgeInter(const TopoDS_Face& F, - const BRepAdaptor_Surface& BAsurf, + const Handle(BRepAdaptor_Surface)& BAsurf, const TopoDS_Edge& E1, const TopoDS_Edge& E2, const Handle(BRepAlgo_AsDes)& AsDes, @@ -451,8 +451,8 @@ static void EdgeInter(const TopoDS_Face& F, // Handle(Geom2d_Curve) pcurve1 = BRep_Tool::CurveOnSurface(E1, F, f[1], l[1]); Handle(Geom2d_Curve) pcurve2 = BRep_Tool::CurveOnSurface(E2, F, f[2], l[2]); - Geom2dAdaptor_Curve GAC1(pcurve1, f[1], l[1]); - Geom2dAdaptor_Curve GAC2(pcurve2, f[2], l[2]); + Handle(Geom2dAdaptor_Curve) GAC1 = new Geom2dAdaptor_Curve(pcurve1, f[1], l[1]); + Handle(Geom2dAdaptor_Curve) GAC2 = new Geom2dAdaptor_Curve(pcurve2, f[2], l[2]); Geom2dInt_GInter Inter2d( GAC1, GAC2, TolDub, TolDub ); for (i = 1; i <= Inter2d.NbPoints(); i++) { @@ -462,7 +462,7 @@ static void EdgeInter(const TopoDS_Face& F, else { gp_Pnt2d P2d = Inter2d.Point(i).Value(); - P3d = BAsurf.Value( P2d.X(), P2d.Y() ); + P3d = BAsurf->Value( P2d.X(), P2d.Y() ); } ResPoints.Append( P3d ); ResParamsOnE1.Append( Inter2d.Point(i).ParamOnFirst() ); @@ -643,7 +643,7 @@ static void EdgeInter(const TopoDS_Face& F, //======================================================================= static void RefEdgeInter(const TopoDS_Face& F, - const BRepAdaptor_Surface& BAsurf, + const Handle(BRepAdaptor_Surface)& BAsurf, const TopoDS_Edge& E1, const TopoDS_Edge& E2, const TopAbs_Orientation theOr1, @@ -712,13 +712,13 @@ static void RefEdgeInter(const TopoDS_Face& F, // Handle(Geom2d_Curve) pcurve1 = BRep_Tool::CurveOnSurface(E1, F, f[1], l[1]); Handle(Geom2d_Curve) pcurve2 = BRep_Tool::CurveOnSurface(E2, F, f[2], l[2]); - Geom2dAdaptor_Curve GAC1(pcurve1, f[1], l[1]); - Geom2dAdaptor_Curve GAC2(pcurve2, f[2], l[2]); - if ((GAC1.GetType() == GeomAbs_Line) && - (GAC2.GetType() == GeomAbs_Line)) + Handle(Geom2dAdaptor_Curve) GAC1 = new Geom2dAdaptor_Curve(pcurve1, f[1], l[1]); + Handle(Geom2dAdaptor_Curve) GAC2 = new Geom2dAdaptor_Curve(pcurve2, f[2], l[2]); + if ((GAC1->GetType() == GeomAbs_Line) && + (GAC2->GetType() == GeomAbs_Line)) { // Just quickly check if lines coincide - Standard_Real anAngle = Abs(GAC1.Line().Direction().Angle(GAC2.Line().Direction())); + Standard_Real anAngle = Abs(GAC1->Line().Direction().Angle(GAC2->Line().Direction())); if (anAngle <= 1.e-8 || M_PI - anAngle <= 1.e-8) { theCoincide = Standard_True; @@ -737,8 +737,8 @@ static void RefEdgeInter(const TopoDS_Face& F, // if (!Inter2d.IsDone() || !Inter2d.NbPoints()) { theCoincide = (Inter2d.NbSegments() && - (GAC1.GetType() == GeomAbs_Line) && - (GAC2.GetType() == GeomAbs_Line)); + (GAC1->GetType() == GeomAbs_Line) && + (GAC2->GetType() == GeomAbs_Line)); return; } // @@ -750,7 +750,7 @@ static void RefEdgeInter(const TopoDS_Face& F, else { gp_Pnt2d P2d = Inter2d.Point(i).Value(); - P3d = BAsurf.Value( P2d.X(), P2d.Y() ); + P3d = BAsurf->Value( P2d.X(), P2d.Y() ); } ResPoints.Append( P3d ); ResParamsOnE1.Append( Inter2d.Point(i).ParamOnFirst() ); @@ -964,10 +964,10 @@ static void RefEdgeInter(const TopoDS_Face& F, //purpose : return MaxSegment to pass in approximation //====================================================================== -static Standard_Integer evaluateMaxSegment(const Adaptor3d_CurveOnSurface& aCurveOnSurface) +static Standard_Integer evaluateMaxSegment(const Handle(Adaptor3d_CurveOnSurface)& aCurveOnSurface) { - Handle(Adaptor3d_Surface) aSurf = aCurveOnSurface.GetSurface(); - Handle(Adaptor2d_Curve2d) aCurv2d = aCurveOnSurface.GetCurve(); + Handle(Adaptor3d_Surface) aSurf = aCurveOnSurface->GetSurface(); + Handle(Adaptor2d_Curve2d) aCurv2d = aCurveOnSurface->GetCurve(); Standard_Real aNbSKnots = 0, aNbC2dKnots = 0; @@ -1176,10 +1176,10 @@ Standard_Boolean BRepOffset_Inter2d::ExtentEdge(const TopoDS_Edge& E,TopoDS_Edge TColStd_SequenceOfReal params; Geom2dInt_GInter IntCC; - Geom2dAdaptor_Curve GAcurve(theCurve); + Handle(Geom2dAdaptor_Curve) GAcurve = new Geom2dAdaptor_Curve(theCurve); for (i = 1; i <= BoundLines.Length(); i++) { - Geom2dAdaptor_Curve GAline( BoundLines(i) ); + Handle(Geom2dAdaptor_Curve) GAline = new Geom2dAdaptor_Curve( BoundLines(i) ); IntCC.Perform( GAcurve, GAline, Precision::PConfusion(), Precision::PConfusion()); if (IntCC.IsDone()) { @@ -1360,7 +1360,7 @@ Standard_Boolean BRepOffset_Inter2d::ExtentEdge(const TopoDS_Edge& E,TopoDS_Edge GeomAdaptor_Surface GAsurf( MinSurf ); Handle(Geom2dAdaptor_Curve) HC2d = new Geom2dAdaptor_Curve( AC2d ); Handle(GeomAdaptor_Surface) HSurf = new GeomAdaptor_Surface( GAsurf ); - Adaptor3d_CurveOnSurface ConS( HC2d, HSurf ); + Handle(Adaptor3d_CurveOnSurface) ConS = new Adaptor3d_CurveOnSurface( HC2d, HSurf ); Standard_Real /*max_deviation,*/ average_deviation; GeomAbs_Shape Continuity = GeomAbs_C1; Standard_Integer MaxDegree = 14; @@ -1590,7 +1590,7 @@ void BRepOffset_Inter2d::Compute (const Handle(BRepAlgo_AsDes)& AsDes, const TopTools_ListOfShape& LE = AsDes->Descendant(F); TopoDS_Vertex V1,V2; Standard_Integer j, i = 1; - BRepAdaptor_Surface BAsurf(F); + Handle(BRepAdaptor_Surface) BAsurf = new BRepAdaptor_Surface(F); // Message_ProgressScope aPS(theRange, "Intersecting edges on faces", LE.Size()); for ( it1LE.Initialize(LE) ; it1LE.More(); it1LE.Next(), aPS.Next()) { @@ -1713,7 +1713,7 @@ Standard_Boolean BRepOffset_Inter2d::ConnexIntByInt TopoDS_Face FIO = TopoDS::Face(OFI.Face()); if (MES.IsBound(FIO)) FIO = TopoDS::Face(MES(FIO)); // - BRepAdaptor_Surface BAsurf(FIO); + Handle(BRepAdaptor_Surface) BAsurf = new BRepAdaptor_Surface(FIO); TopExp_Explorer exp(FI.Oriented(TopAbs_FORWARD),TopAbs_WIRE); for (; exp.More(); exp.Next(), aPS.Next()) { @@ -1891,7 +1891,7 @@ void BRepOffset_Inter2d::ConnexIntByIntInVert aME.Add(aE); } // - BRepAdaptor_Surface BAsurf(FIO); + Handle(BRepAdaptor_Surface) BAsurf = new BRepAdaptor_Surface(FIO); // Message_ProgressScope aPS(theRange, "Intersecting edges created from vertices", 1, Standard_True); TopExp_Explorer exp(FI.Oriented(TopAbs_FORWARD),TopAbs_WIRE); diff --git a/src/BRepOffset/BRepOffset_MakeOffset.cxx b/src/BRepOffset/BRepOffset_MakeOffset.cxx index 7da4639d31..4ce20a8265 100644 --- a/src/BRepOffset/BRepOffset_MakeOffset.cxx +++ b/src/BRepOffset/BRepOffset_MakeOffset.cxx @@ -3241,7 +3241,7 @@ void BRepOffset_MakeOffset::MakeMissingWalls (const Message_ProgressRange& theRa GeomAdaptor_Surface GAsurf( theSurf ); Handle(Geom2dAdaptor_Curve) HC2d = new Geom2dAdaptor_Curve( AC2d ); Handle(GeomAdaptor_Surface) HSurf = new GeomAdaptor_Surface( GAsurf ); - Adaptor3d_CurveOnSurface ConS( HC2d, HSurf ); + Handle(Adaptor3d_CurveOnSurface) ConS = new Adaptor3d_CurveOnSurface( HC2d, HSurf ); Standard_Real max_deviation = 0., average_deviation; GeomLib::BuildCurve3d(Precision::Confusion(), ConS, FirstPar, LastPar, @@ -3262,7 +3262,7 @@ void BRepOffset_MakeOffset::MakeMissingWalls (const Message_ProgressRange& theRa GeomAdaptor_Surface GAsurf( theSurf ); Handle(Geom2dAdaptor_Curve) HC2d = new Geom2dAdaptor_Curve( AC2d ); Handle(GeomAdaptor_Surface) HSurf = new GeomAdaptor_Surface( GAsurf ); - Adaptor3d_CurveOnSurface ConS( HC2d, HSurf ); + Handle(Adaptor3d_CurveOnSurface) ConS = new Adaptor3d_CurveOnSurface( HC2d, HSurf ); Standard_Real max_deviation = 0., average_deviation; GeomLib::BuildCurve3d(Precision::Confusion(), ConS, FirstPar, LastPar, diff --git a/src/BRepOffset/BRepOffset_Tool.cxx b/src/BRepOffset/BRepOffset_Tool.cxx index a7a1930e24..77f7a118de 100644 --- a/src/BRepOffset/BRepOffset_Tool.cxx +++ b/src/BRepOffset/BRepOffset_Tool.cxx @@ -303,7 +303,7 @@ static void PutInBounds (const TopoDS_Face& F, Standard_Real BRepOffset_Tool::Gabarit(const Handle(Geom_Curve)& aCurve) { - GeomAdaptor_Curve GC( aCurve ); + Handle(GeomAdaptor_Curve) GC = new GeomAdaptor_Curve( aCurve ); Bnd_Box aBox; BndLib_Add3dCurve::Add( GC, Precision::Confusion(), aBox ); Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax, dist; @@ -348,7 +348,7 @@ static void BuildPCurves (const TopoDS_Edge& E, for (; Explo.More(); Explo.Next()) { TopoDS_Edge anEdge = TopoDS::Edge( Explo.Current() ); - BRepAdaptor_Curve aCurve( anEdge ); + Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve( anEdge ); Extrema_ExtPC fextr( fpoint, aCurve ); if (!fextr.IsDone() || fextr.NbExt() < 1) continue; @@ -480,7 +480,7 @@ void BRepOffset_Tool::OrientSection (const TopoDS_Edge& E, Handle (Geom2d_Curve) C2 = BRep_Tool::CurveOnSurface(E,F2,f,l); Handle (Geom_Curve) C = BRep_Tool::Curve(E,L,f,l); - BRepAdaptor_Curve BAcurve( E ); + Handle(BRepAdaptor_Curve) BAcurve = new BRepAdaptor_Curve( E ); GCPnts_AbscissaPoint AP(BAcurve,GCPnts_AbscissaPoint::Length(BAcurve)/2.0,f); Standard_Real ParOnC; @@ -1571,8 +1571,8 @@ void BRepOffset_Tool::Inter3D(const TopoDS_Face& F1, { const TopoDS_Edge& anEdge = TopoDS::Edge (itl.Value()); - BRepAdaptor_Curve aBAcurve (anEdge); - gp_Pnt aMidPntOnEdge = aBAcurve.Value ((aBAcurve.FirstParameter() + aBAcurve.LastParameter())/2); + Handle(BRepAdaptor_Curve) aBAcurve = new BRepAdaptor_Curve(anEdge); + gp_Pnt aMidPntOnEdge = aBAcurve->Value ((aBAcurve->FirstParameter() + aBAcurve->LastParameter())/2); gp_Vec RefToMid (aRefPnt, aMidPntOnEdge); Extrema_ExtPC aProjector (aRefPnt, aBAcurve); @@ -2094,12 +2094,12 @@ static Standard_Boolean ProjectVertexOnEdge(TopoDS_Vertex& V, Standard_Boolean found = Standard_False; gp_Pnt P = BRep_Tool::Pnt (V); - BRepAdaptor_Curve C = BRepAdaptor_Curve(E); - f = C.FirstParameter(); l = C.LastParameter(); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(E); + f = C->FirstParameter(); l = C->LastParameter(); if (V.Orientation() == TopAbs_FORWARD) { if (Abs(f) < Precision::Infinite()) { - gp_Pnt PF = C.Value (f); + gp_Pnt PF = C->Value (f); if (PF.IsEqual(P,TolConf)) { U = f; found = Standard_True; @@ -2108,7 +2108,7 @@ static Standard_Boolean ProjectVertexOnEdge(TopoDS_Vertex& V, } if (V.Orientation() == TopAbs_REVERSED) { if (!found && Abs(l) < Precision::Infinite()) { - gp_Pnt PL = C.Value (l); + gp_Pnt PL = C->Value (l); if (PL.IsEqual(P,TolConf)) { U = l; found = Standard_True; @@ -2251,8 +2251,8 @@ void BRepOffset_Tool::Inter2d (const TopoDS_Face& F, fl1[0] = C1->FirstParameter(); fl1[1] = C1->LastParameter(); fl2[0] = C2->FirstParameter(); fl2[1] = C2->LastParameter(); } - Geom2dAdaptor_Curve AC1(C1,fl1[0],fl1[1]); - Geom2dAdaptor_Curve AC2(C2,fl2[0],fl2[1]); + Handle(Geom2dAdaptor_Curve) AC1 = new Geom2dAdaptor_Curve(C1,fl1[0],fl1[1]); + Handle(Geom2dAdaptor_Curve) AC2 = new Geom2dAdaptor_Curve(C2,fl2[0],fl2[1]); if (itry == 0) { gp_Pnt2d P1[2],P2[2]; @@ -2786,7 +2786,7 @@ static Standard_Boolean EnlargeGeometry(Handle(Geom_Surface)& S, else { viso = S->VIso( vf1 ); - GeomAdaptor_Curve gac( viso ); + Handle(GeomAdaptor_Curve) gac = new GeomAdaptor_Curve( viso ); Standard_Real du_default = GCPnts_AbscissaPoint::Length( gac ) * coeff; du_first = (theLenBeforeUfirst == -1)? du_default : theLenBeforeUfirst; du_last = (theLenAfterUlast == -1)? du_default : theLenAfterUlast; @@ -2809,7 +2809,7 @@ static Standard_Boolean EnlargeGeometry(Handle(Geom_Surface)& S, else { uiso = S->UIso( uf1 ); - GeomAdaptor_Curve gac( uiso ); + Handle(GeomAdaptor_Curve) gac = new GeomAdaptor_Curve( uiso ); Standard_Real dv_default = GCPnts_AbscissaPoint::Length( gac ) * coeff; dv_first = (theLenBeforeVfirst == -1)? dv_default : theLenBeforeVfirst; dv_last = (theLenAfterVlast == -1)? dv_default : theLenAfterVlast; @@ -2880,10 +2880,10 @@ static Standard_Boolean EnlargeGeometry(Handle(Geom_Surface)& S, gabarit_uiso2 <= TolApex) enlargeV = Standard_False; - GeomAdaptor_Curve gac; + Handle(GeomAdaptor_Curve) gac = new GeomAdaptor_Curve(); if (enlargeU) { - gac.Load( viso1 ); + gac->Load( viso1 ); Standard_Real du_default = GCPnts_AbscissaPoint::Length( gac ) * coeff; du_first = (theLenBeforeUfirst == -1)? du_default : theLenBeforeUfirst; du_last = (theLenAfterUlast == -1)? du_default : theLenAfterUlast; @@ -2894,7 +2894,7 @@ static Standard_Boolean EnlargeGeometry(Handle(Geom_Surface)& S, } if (enlargeV) { - gac.Load( uiso1 ); + gac->Load( uiso1 ); Standard_Real dv_default = GCPnts_AbscissaPoint::Length( gac ) * coeff; dv_first = (theLenBeforeVfirst == -1)? dv_default : theLenBeforeVfirst; dv_last = (theLenAfterVlast == -1)? dv_default : theLenAfterVlast; @@ -3963,14 +3963,14 @@ TopoDS_Shape BRepOffset_Tool::Deboucle3D(const TopoDS_Shape& S, //======================================================================= static Standard_Boolean IsInOut (BRepTopAdaptor_FClass2d& FC, - Geom2dAdaptor_Curve AC, + const Handle(Geom2dAdaptor_Curve)& AC, const TopAbs_State& S ) { Standard_Real Def = 100*Precision::Confusion(); GCPnts_QuasiUniformDeflection QU(AC,Def); for (Standard_Integer i = 1; i <= QU.NbPoints(); i++) { - gp_Pnt2d P = AC.Value(QU.Parameter(i)); + gp_Pnt2d P = AC->Value(QU.Parameter(i)); if (FC.Perform(P) != S) { return Standard_False; } @@ -4020,7 +4020,7 @@ void BRepOffset_Tool::CorrectOrientation(const TopoDS_Shape& SI, if (NewEdges.Contains(OE)) { Handle(Geom2d_Curve) CO2d = BRep_Tool::CurveOnSurface(TopoDS::Edge(OE),OF,f,l); - Geom2dAdaptor_Curve AC(CO2d,f,l); + Handle(Geom2dAdaptor_Curve) AC = new Geom2dAdaptor_Curve(CO2d,f,l); if (Offset > 0) { if (IsInOut(FC,AC,TopAbs_OUT)) OE.Reverse(); diff --git a/src/BRepOffsetAPI/BRepOffsetAPI_DraftAngle.cxx b/src/BRepOffsetAPI/BRepOffsetAPI_DraftAngle.cxx index 051cf89694..217c1c5d26 100644 --- a/src/BRepOffsetAPI/BRepOffsetAPI_DraftAngle.cxx +++ b/src/BRepOffsetAPI/BRepOffsetAPI_DraftAngle.cxx @@ -373,8 +373,8 @@ void BRepOffsetAPI_DraftAngle::CorrectWires() // // Prepare 2D adaptors for intersection. // The seam edge has two 2D curve, thus we have to create 2 adaptors - BRepAdaptor_Curve2d aBAC2D1(TopoDS::Edge(CurEdge), aFace); - BRepAdaptor_Curve2d aBAC2D1R(TopoDS::Edge(CurEdge.Reversed()), aFace); + Handle(BRepAdaptor_Curve2d) aBAC2D1 = new BRepAdaptor_Curve2d(TopoDS::Edge(CurEdge), aFace); + Handle(BRepAdaptor_Curve2d) aBAC2D1R = new BRepAdaptor_Curve2d(TopoDS::Edge(CurEdge.Reversed()), aFace); // Get surface of the face to get 3D intersection point TopLoc_Location aLoc; const Handle(Geom_Surface)& aSurf = BRep_Tool::Surface(aFace, aLoc); @@ -395,7 +395,7 @@ void BRepOffsetAPI_DraftAngle::CorrectWires() const TopoDS_Edge& anEdge = TopoDS::Edge(eit.Value()); // // Prepare 2D adaptor for intersection - BRepAdaptor_Curve2d aBAC2D2(anEdge, aFace); + Handle(BRepAdaptor_Curve2d) aBAC2D2 = new BRepAdaptor_Curve2d(anEdge, aFace); // Perform intersection Geom2dInt_GInter aGInter; aGInter.Perform(aBAC2D1, aBAC2D2, TolInter, TolInter); diff --git a/src/BRepOffsetAPI/BRepOffsetAPI_MakeOffset.cxx b/src/BRepOffsetAPI/BRepOffsetAPI_MakeOffset.cxx index 02b8959bfb..0a4f235551 100644 --- a/src/BRepOffsetAPI/BRepOffsetAPI_MakeOffset.cxx +++ b/src/BRepOffsetAPI/BRepOffsetAPI_MakeOffset.cxx @@ -230,7 +230,7 @@ static void BuildDomains(TopoDS_Face& myFace, TopTools_ListIteratorOfListOfShape itF; for (itF.Initialize(Faces) ; itF.More(); itF.Next()) { TopoDS_Face& F = TopoDS::Face(itF.Value()); - BRepAdaptor_Surface S(F,0); + Handle(BRepAdaptor_Surface) S = new BRepAdaptor_Surface(F,0); Standard_Real Tol = BRep_Tool::Tolerance(F); BRepTopAdaptor_FClass2d CL(F,Precision::Confusion()); diff --git a/src/BRepPrimAPI/BRepPrimAPI_MakeHalfSpace.cxx b/src/BRepPrimAPI/BRepPrimAPI_MakeHalfSpace.cxx index 880be6166d..dce7e0a90b 100644 --- a/src/BRepPrimAPI/BRepPrimAPI_MakeHalfSpace.cxx +++ b/src/BRepPrimAPI/BRepPrimAPI_MakeHalfSpace.cxx @@ -42,7 +42,7 @@ static gp_Dir getNormalOnFace(const TopoDS_Face& theFace, const Standard_Real theV) { Standard_Real aPrec = gp::Resolution(); - BRepLProp_SLProps aProps(BRepAdaptor_Surface(theFace), theU, theV, 2, aPrec); + BRepLProp_SLProps aProps(new BRepAdaptor_Surface(theFace), theU, theV, 2, aPrec); gp_Dir aNormal = aProps.Normal(); if (theFace.Orientation() == TopAbs_REVERSED) aNormal.Reverse(); diff --git a/src/BRepPrimAPI/BRepPrimAPI_MakeRevol.cxx b/src/BRepPrimAPI/BRepPrimAPI_MakeRevol.cxx index 8385f5aa13..288edb1577 100644 --- a/src/BRepPrimAPI/BRepPrimAPI_MakeRevol.cxx +++ b/src/BRepPrimAPI/BRepPrimAPI_MakeRevol.cxx @@ -268,12 +268,12 @@ static Standard_Boolean IsIntersect(const Handle(Adaptor3d_Curve)& theC, } } const Handle(Geom_Line) aL = new Geom_Line(anAxis); - const GeomAdaptor_Curve aLin(aL); + const Handle(GeomAdaptor_Curve) aLin = new GeomAdaptor_Curve(aL); const Standard_Real aParTol = theC->Resolution(Precision::Confusion()); const Standard_Real aParF = theC->FirstParameter() + aParTol, aParL = theC->LastParameter() - aParTol; - Extrema_ExtCC anExtr (*theC, aLin); + Extrema_ExtCC anExtr (theC, aLin); anExtr.Perform(); if (anExtr.IsDone() && anExtr.NbExt() > 0) { diff --git a/src/BRepSweep/BRepSweep_Trsf.cxx b/src/BRepSweep/BRepSweep_Trsf.cxx index b1649a7dd9..766aa18801 100644 --- a/src/BRepSweep/BRepSweep_Trsf.cxx +++ b/src/BRepSweep/BRepSweep_Trsf.cxx @@ -97,14 +97,14 @@ void BRepSweep_Trsf::SetContinuity(const TopoDS_Shape& aGenS, if(aGenS.ShapeType() == TopAbs_EDGE){ if (HasShape(aGenS,aDirS)){ TopoDS_Edge E = TopoDS::Edge(aGenS); - BRepAdaptor_Curve e; + Handle(BRepAdaptor_Curve) e = new BRepAdaptor_Curve(); Standard_Real ud,uf; TopoDS_Vertex d,f; TopExp::Vertices(E,d,f); if(d.IsSame(f)){ // tol3d = Max(tl,BRep_Tool::Tolerance(d)); tol3d = Max(tl,2.*BRep_Tool::Tolerance(d));//IFV 24.05.00 buc60684 - e.Initialize(E); + e->Initialize(E); ud = BRep_Tool::Parameter(d,TopoDS::Edge(aGenS)); uf = BRep_Tool::Parameter(f,TopoDS::Edge(aGenS)); cont = BRepLProp::Continuity(e,e,ud,uf,tol3d,ta); @@ -137,7 +137,8 @@ void BRepSweep_Trsf::SetContinuity(const TopoDS_Shape& aGenS, } else if(aGenS.ShapeType() == TopAbs_WIRE){ TopoDS_Edge E1,E2; - BRepAdaptor_Curve e1,e2; + Handle(BRepAdaptor_Curve) e1 = new BRepAdaptor_Curve(); + Handle(BRepAdaptor_Curve) e2 = new BRepAdaptor_Curve(); Standard_Real u1,u2; TopTools_IndexedDataMapOfShapeListOfShape M; TopExp::MapShapesAndAncestors(aGenS,TopAbs_VERTEX,TopAbs_EDGE,M); @@ -156,8 +157,8 @@ void BRepSweep_Trsf::SetContinuity(const TopoDS_Shape& aGenS, u2 = BRep_Tool::Parameter(V,E2); // tol3d = Max(tl,BRep_Tool::Tolerance(V)); tol3d = Max(tl,2.*BRep_Tool::Tolerance(V)); //IFV 24.05.00 buc60684 - e1.Initialize(E1); - e2.Initialize(E2); + e1->Initialize(E1); + e2->Initialize(E2); cont = BRepLProp::Continuity(e1,e2,u1,u2,tol3d,ta); if(cont >= 1){ TopoDS_Shape s_wnt = Shape(V,aDirS); diff --git a/src/BRepTest/BRepTest_BasicCommands.cxx b/src/BRepTest/BRepTest_BasicCommands.cxx index 76019fd643..7ff7c16d52 100644 --- a/src/BRepTest/BRepTest_BasicCommands.cxx +++ b/src/BRepTest/BRepTest_BasicCommands.cxx @@ -883,7 +883,7 @@ static Standard_Integer gbounding(Draw_Interpretor& di,Standard_Integer n,const if (!S.IsNull()) { //add surf - GeomAdaptor_Surface aGAS(S); + Handle(GeomAdaptor_Surface) aGAS = new GeomAdaptor_Surface(S); if (IsOptimal) BndLib_AddSurface::AddOptimal(aGAS, Precision::Confusion(), B); else @@ -895,7 +895,7 @@ static Standard_Integer gbounding(Draw_Interpretor& di,Standard_Integer n,const if (!C.IsNull()) { // add cur - GeomAdaptor_Curve aGAC(C); + Handle(GeomAdaptor_Curve) aGAC = new GeomAdaptor_Curve(C); if (IsOptimal) BndLib_Add3dCurve::AddOptimal(aGAC, Precision::Confusion(), B); else diff --git a/src/BRepTools/BRepTools_NurbsConvertModification.cxx b/src/BRepTools/BRepTools_NurbsConvertModification.cxx index 85a30c63c6..e703bda81f 100644 --- a/src/BRepTools/BRepTools_NurbsConvertModification.cxx +++ b/src/BRepTools/BRepTools_NurbsConvertModification.cxx @@ -129,7 +129,7 @@ namespace const Standard_Real theTol, Standard_Real& theParam) { - GeomAdaptor_Curve anAdaptor(theCurve); + Handle(GeomAdaptor_Curve) anAdaptor = new GeomAdaptor_Curve(theCurve); Extrema_LocateExtPC proj(thePoint, anAdaptor, theParam, theFirst, theLast, Precision::PConfusion()); if (proj.IsDone()) { @@ -150,7 +150,7 @@ namespace const Standard_Real theTol, Standard_Real& theParam) { - Geom2dAdaptor_Curve anAdaptor(theCurve2d); + Handle(Geom2dAdaptor_Curve) anAdaptor = new Geom2dAdaptor_Curve(theCurve2d); Extrema_LocateExtPC2d aProj(theUV, anAdaptor, theParam, Precision::PConfusion()); if (aProj.IsDone()) { @@ -192,7 +192,7 @@ namespace const Standard_Real theTol, gp_Pnt2d& theUV) { - GeomAdaptor_Surface anAdaptor(theSurf); + Handle(GeomAdaptor_Surface) anAdaptor = new GeomAdaptor_Surface(theSurf); Extrema_GenLocateExtPS aProj(anAdaptor); aProj.Perform(thePoint, theUV.X(), theUV.Y()); if (aProj.IsDone()) diff --git a/src/BRepTopAdaptor/BRepTopAdaptor_FClass2d.cxx b/src/BRepTopAdaptor/BRepTopAdaptor_FClass2d.cxx index 76804d5107..4028f4e616 100644 --- a/src/BRepTopAdaptor/BRepTopAdaptor_FClass2d.cxx +++ b/src/BRepTopAdaptor/BRepTopAdaptor_FClass2d.cxx @@ -141,7 +141,7 @@ BRepTopAdaptor_FClass2d::BRepTopAdaptor_FClass2d(const TopoDS_Face& aFace,const { Standard_Real pfbid,plbid; if(BRep_Tool::CurveOnSurface(edge,Face,pfbid,plbid).IsNull()) return; - BRepAdaptor_Curve2d C(edge,Face); + Handle(BRepAdaptor_Curve2d) C = new BRepAdaptor_Curve2d(edge,Face); //-- ---------------------------------------- Standard_Boolean degenerated=Standard_False; @@ -215,7 +215,7 @@ BRepTopAdaptor_FClass2d::BRepTopAdaptor_FClass2d(const TopoDS_Face& aFace,const Standard_Integer Avant = nbpnts; for(Standard_Integer e = firstpoint; e<=nbs; e++) { - gp_Pnt2d P2d = C.Value(u); + gp_Pnt2d P2d = C->Value(u); if(P2d.X()Umax) Umax = P2d.X(); if(P2d.Y()Value(aDiscr.Parameter(i)); SeqPnt2d.Append(aP2d); } if (nbp > 2) diff --git a/src/Bisector/Bisector_BisecCC.cxx b/src/Bisector/Bisector_BisecCC.cxx index 07f29490ce..43561c6e31 100644 --- a/src/Bisector/Bisector_BisecCC.cxx +++ b/src/Bisector/Bisector_BisecCC.cxx @@ -713,8 +713,8 @@ gp_Pnt2d Bisector_BisecCC::ValueAndDist (const Standard_Real U, = new Bisector_BisecPC(curve2, P1, sign2, VMin, VMax); Handle(Geom2d_Line) NorLi = new Geom2d_Line (P1,N1); - Geom2dAdaptor_Curve ABisPC(BisPC); - Geom2dAdaptor_Curve ANorLi(NorLi); + Handle(Geom2dAdaptor_Curve) ABisPC = new Geom2dAdaptor_Curve(BisPC); + Handle(Geom2dAdaptor_Curve) ANorLi = new Geom2dAdaptor_Curve(NorLi); //------------------------------------------------------------------------- Geom2dInt_GInter Intersect(ABisPC,ANorLi, Precision::Confusion(),Precision::Confusion()); @@ -1292,8 +1292,8 @@ static Standard_Boolean PointByInt(const Handle(Geom2d_Curve)& CA, Handle(Geom2d_Line) NorLi = new Geom2d_Line (P1,N1); - Geom2dAdaptor_Curve ABisPC(BisPC); - Geom2dAdaptor_Curve ANorLi(NorLi); + Handle(Geom2dAdaptor_Curve) ABisPC = new Geom2dAdaptor_Curve(BisPC); + Handle(Geom2dAdaptor_Curve) ANorLi = new Geom2dAdaptor_Curve(NorLi); //------------------------------------------------------------------------- Geom2dInt_GInter Intersect(ABisPC,ANorLi, Precision::Confusion(),Precision::Confusion()); diff --git a/src/Bisector/Bisector_Inter.cxx b/src/Bisector/Bisector_Inter.cxx index 876a4a501b..ceecd18ae4 100644 --- a/src/Bisector/Bisector_Inter.cxx +++ b/src/Bisector/Bisector_Inter.cxx @@ -248,16 +248,16 @@ void Bisector_Inter::SinglePerform(const Handle(Geom2d_Curve)& CBis1, D2,C2Bis1,D1,TolConf,Standard_True); } Geom2dInt_GInter Intersect; - Geom2dAdaptor_Curve AC2Bis1(C2Bis1); - Geom2dAdaptor_Curve AC2Bis2(C2Bis2); + Handle(Geom2dAdaptor_Curve) AC2Bis1 = new Geom2dAdaptor_Curve(C2Bis1); + Handle(Geom2dAdaptor_Curve) AC2Bis2 = new Geom2dAdaptor_Curve(C2Bis2); Intersect.Perform(AC2Bis1,D1,AC2Bis2,D2,TolConf,Tol); Append (Intersect,D1.FirstParameter(),D1.LastParameter(), D2.FirstParameter(),D2.LastParameter()); } else if (Type1 == STANDARD_TYPE(Bisector_BisecPC) || Type2 == STANDARD_TYPE(Bisector_BisecPC)) { Geom2dInt_GInter Intersect; - Geom2dAdaptor_Curve ABis1(Bis1); - Geom2dAdaptor_Curve ABis2(Bis2); + Handle(Geom2dAdaptor_Curve) ABis1 = new Geom2dAdaptor_Curve(Bis1); + Handle(Geom2dAdaptor_Curve) ABis2 = new Geom2dAdaptor_Curve(Bis2); Intersect.Perform(ABis1,D1,ABis2,D2,TolConf,Tol); Append (Intersect,D1.FirstParameter(),D1.LastParameter(), D2.FirstParameter(),D2.LastParameter()); @@ -281,8 +281,8 @@ void Bisector_Inter::SinglePerform(const Handle(Geom2d_Curve)& CBis1, D2,Bis1,D1,TolConf,Standard_True); } Geom2dInt_GInter Intersect; - Geom2dAdaptor_Curve ABis1(Bis1); - Geom2dAdaptor_Curve ABis2(Bis2); + Handle(Geom2dAdaptor_Curve) ABis1 = new Geom2dAdaptor_Curve(Bis1); + Handle(Geom2dAdaptor_Curve) ABis2 = new Geom2dAdaptor_Curve(Bis2); Intersect.Perform(ABis1,D1,ABis2,D2,TolConf,Tol); Append (Intersect,D1.FirstParameter(),D1.LastParameter(), D2.FirstParameter(),D2.LastParameter()); diff --git a/src/Blend/Blend_Walking_4.gxx b/src/Blend/Blend_Walking_4.gxx index acd895f0ce..ea090280fb 100644 --- a/src/Blend/Blend_Walking_4.gxx +++ b/src/Blend/Blend_Walking_4.gxx @@ -767,8 +767,7 @@ Standard_Boolean Blend_Walking::CorrectExtremityOnOneRst(const Standard_Integer { const Standard_Real TolAng = 0.001; //bug OCC25701 - ChFiDS_ElSpine& theElSpine = *hguide; - if (theElSpine.NbVertices() == 0) + if (hguide->NbVertices() == 0) return Standard_False; Handle(TheTopolTool) DomainOfRst = (IndexOfRst == 1)? recdomain1 : recdomain2; @@ -787,7 +786,7 @@ Standard_Boolean Blend_Walking::CorrectExtremityOnOneRst(const Standard_Integer { gp_Pnt2d P2dOnEnd = TheArcTool::Value(DomainOfRst->Value(), Ends[k]); gp_Pnt PntOnEnd = TheSurfaceTool::Value(SurfOfRst, P2dOnEnd.X(), P2dOnEnd.Y()); - Extrema_ExtPC projoncurv(PntOnEnd, theElSpine); + Extrema_ExtPC projoncurv(PntOnEnd, hguide); if (!projoncurv.IsDone()) continue; Standard_Real MinSqDist = Precision::Infinite(); @@ -820,9 +819,9 @@ Standard_Boolean Blend_Walking::CorrectExtremityOnOneRst(const Standard_Integer //Second we find right point and tangent on guide GlobalMinSqDist = Precision::Infinite(); gp_Ax1 theAx1; - for (Standard_Integer ind = 1; ind <= theElSpine.NbVertices(); ind++) + for (Standard_Integer ind = 1; ind <= hguide->NbVertices(); ind++) { - const gp_Ax1& anAx1 = theElSpine.VertexWithTangent(ind); + const gp_Ax1& anAx1 = hguide->VertexWithTangent(ind); gp_Pnt aPnt = anAx1.Location(); Standard_Real aSqDist = PointOnGuide.SquareDistance(aPnt); if (aSqDist < GlobalMinSqDist) @@ -866,7 +865,7 @@ Standard_Boolean Blend_Walking::CorrectExtremityOnOneRst(const Standard_Integer //////////////////////////////////////////////////////////////////////// //Project the point on the surface 2 - Extrema_ExtPS projonsurf(PntOnPlane, *AnotherSurf, + Extrema_ExtPS projonsurf(PntOnPlane, AnotherSurf, Precision::PConfusion(), Precision::PConfusion(), Extrema_ExtFlag_MIN); if (projonsurf.IsDone()) diff --git a/src/BndLib/BndLib_Add2dCurve.cxx b/src/BndLib/BndLib_Add2dCurve.cxx index ad454b8a94..e8a0cb2722 100644 --- a/src/BndLib/BndLib_Add2dCurve.cxx +++ b/src/BndLib/BndLib_Add2dCurve.cxx @@ -1169,13 +1169,13 @@ Standard_Real BndLib_Box2dCurve::AdjustToPeriod(const Standard_Real aT, //function : Add //purpose : //======================================================================= -void BndLib_Add2dCurve::Add(const Adaptor2d_Curve2d& aC, +void BndLib_Add2dCurve::Add(const Handle(Adaptor2d_Curve2d)& aC, const Standard_Real aTol, Bnd_Box2d& aBox2D) { BndLib_Add2dCurve::Add(aC, - aC.FirstParameter(), - aC.LastParameter (), + aC->FirstParameter(), + aC->LastParameter (), aTol, aBox2D); } @@ -1183,15 +1183,14 @@ void BndLib_Add2dCurve::Add(const Adaptor2d_Curve2d& aC, //function : Add //purpose : //======================================================================= -void BndLib_Add2dCurve::Add(const Adaptor2d_Curve2d& aC, +void BndLib_Add2dCurve::Add(const Handle(Adaptor2d_Curve2d)& aC, const Standard_Real aU1, const Standard_Real aU2, const Standard_Real aTol, Bnd_Box2d& aBox2D) { - Adaptor2d_Curve2d *pC=(Adaptor2d_Curve2d *)&aC; - Geom2dAdaptor_Curve *pA=dynamic_cast(pC); - if (!pA) { + Handle(Geom2dAdaptor_Curve) pA = Handle(Geom2dAdaptor_Curve)::DownCast(aC); + if (pA.IsNull()) { Standard_Real U, DU; Standard_Integer N, j; gp_Pnt2d P; @@ -1199,11 +1198,11 @@ void BndLib_Add2dCurve::Add(const Adaptor2d_Curve2d& aC, U = aU1; DU = (aU2-aU1)/(N-1); for (j=1; jD0(U,P); U+=DU; aBox2D.Add(P); } - aC.D0(aU2,P); + aC->D0(aU2,P); aBox2D.Add(P); aBox2D.Enlarge(aTol); return; diff --git a/src/BndLib/BndLib_Add2dCurve.hxx b/src/BndLib/BndLib_Add2dCurve.hxx index 5d8b6a3231..504b88ca0a 100644 --- a/src/BndLib/BndLib_Add2dCurve.hxx +++ b/src/BndLib/BndLib_Add2dCurve.hxx @@ -63,7 +63,7 @@ public: //! - a Geom_Hyperbola, //! and P1 and P2 are either two negative infinite real //! numbers, or two positive infinite real numbers. - Standard_EXPORT static void Add (const Adaptor2d_Curve2d& C, const Standard_Real Tol, Bnd_Box2d& B); + Standard_EXPORT static void Add (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Tol, Bnd_Box2d& B); //! Adds to the bounding box Bthe arc of the curve C limited by the two parameter //! values P1 and P2. @@ -93,7 +93,7 @@ public: //! - a Geom_Hyperbola, //! and P1 and P2 are either two negative infinite real //! numbers, or two positive infinite real numbers. - Standard_EXPORT static void Add (const Adaptor2d_Curve2d& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol, Bnd_Box2d& B); + Standard_EXPORT static void Add (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol, Bnd_Box2d& B); //! Adds to the bounding box B the curve C //! B is then enlarged by the tolerance value Tol. diff --git a/src/BndLib/BndLib_Add3dCurve.cxx b/src/BndLib/BndLib_Add3dCurve.cxx index 5a763ddc41..76754f21d1 100644 --- a/src/BndLib/BndLib_Add3dCurve.cxx +++ b/src/BndLib/BndLib_Add3dCurve.cxx @@ -28,11 +28,11 @@ #include #include // -static Standard_Integer NbSamples(const Adaptor3d_Curve& C, +static Standard_Integer NbSamples(const Handle(Adaptor3d_Curve)& C, const Standard_Real Umin, const Standard_Real Umax); -static Standard_Real AdjustExtr(const Adaptor3d_Curve& C, +static Standard_Real AdjustExtr(const Handle(Adaptor3d_Curve)& C, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real Extr0, @@ -46,7 +46,7 @@ static Standard_Real AdjustExtr(const Adaptor3d_Curve& C, //purpose : This method intended to reduce box in case of // bezier and bspline curve. //======================================================================= -static void reduceSplineBox(const Adaptor3d_Curve& theCurve, +static void reduceSplineBox(const Handle(Adaptor3d_Curve)& theCurve, const Bnd_Box& theOrigBox, Bnd_Box & theReducedBox) { @@ -55,9 +55,9 @@ static void reduceSplineBox(const Adaptor3d_Curve& theCurve, Standard_Real aPolesXMin, aPolesYMin, aPolesZMin, aPolesXMax, aPolesYMax, aPolesZMax; - if (theCurve.GetType() == GeomAbs_BSplineCurve) + if (theCurve->GetType() == GeomAbs_BSplineCurve) { - Handle(Geom_BSplineCurve) aC = theCurve.BSpline(); + Handle(Geom_BSplineCurve) aC = theCurve->BSpline(); const TColgp_Array1OfPnt& aPoles = aC->Poles(); for(Standard_Integer anIdx = aPoles.Lower(); @@ -67,9 +67,9 @@ static void reduceSplineBox(const Adaptor3d_Curve& theCurve, aPolesBox.Add(aPoles.Value(anIdx)); } } - if (theCurve.GetType() == GeomAbs_BezierCurve) + if (theCurve->GetType() == GeomAbs_BezierCurve) { - Handle(Geom_BezierCurve) aC = theCurve.Bezier(); + Handle(Geom_BezierCurve) aC = theCurve->Bezier(); const TColgp_Array1OfPnt& aPoles = aC->Poles(); for(Standard_Integer anIdx = aPoles.Lower(); @@ -109,37 +109,37 @@ static void reduceSplineBox(const Adaptor3d_Curve& theCurve, //function : Add //purpose : //======================================================================= -void BndLib_Add3dCurve::Add( const Adaptor3d_Curve& C, +void BndLib_Add3dCurve::Add( const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol, Bnd_Box& B ) { BndLib_Add3dCurve::Add(C, - C.FirstParameter(), - C.LastParameter (), + C->FirstParameter(), + C->LastParameter (), Tol,B); } //OCC566(apo)-> -static Standard_Real FillBox(Bnd_Box& B, const Adaptor3d_Curve& C, +static Standard_Real FillBox(Bnd_Box& B, const Handle(Adaptor3d_Curve)& C, const Standard_Real first, const Standard_Real last, const Standard_Integer N) { gp_Pnt P1, P2, P3; - C.D0(first,P1); B.Add(P1); + C->D0(first,P1); B.Add(P1); Standard_Real p = first, dp = last-first, tol= 0.; if(Abs(dp) > Precision::PConfusion()){ Standard_Integer i; dp /= 2*N; for(i = 1; i <= N; i++){ - p += dp; C.D0(p,P2); B.Add(P2); - p += dp; C.D0(p,P3); B.Add(P3); + p += dp; C->D0(p,P2); B.Add(P2); + p += dp; C->D0(p,P3); B.Add(P3); gp_Pnt Pc((P1.XYZ()+P3.XYZ())/2.0); tol = Max(tol,Pc.Distance(P2)); P1 = P3; } }else{ - C.D0(first,P1); B.Add(P1); - C.D0(last,P3); B.Add(P3); + C->D0(first,P1); B.Add(P1); + C->D0(last,P3); B.Add(P3); tol = 0.; } return tol; @@ -150,7 +150,7 @@ static Standard_Real FillBox(Bnd_Box& B, const Adaptor3d_Curve& C, //purpose : //======================================================================= -void BndLib_Add3dCurve::Add( const Adaptor3d_Curve& C, +void BndLib_Add3dCurve::Add( const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol, @@ -158,38 +158,38 @@ void BndLib_Add3dCurve::Add( const Adaptor3d_Curve& C, { static Standard_Real weakness = 1.5; //OCC566(apo) Standard_Real tol = 0.0; - switch (C.GetType()) { + switch (C->GetType()) { case GeomAbs_Line: { - BndLib::Add(C.Line(),U1,U2,Tol,B); + BndLib::Add(C->Line(),U1,U2,Tol,B); break; } case GeomAbs_Circle: { - BndLib::Add(C.Circle(),U1,U2,Tol,B); + BndLib::Add(C->Circle(),U1,U2,Tol,B); break; } case GeomAbs_Ellipse: { - BndLib::Add(C.Ellipse(),U1,U2,Tol,B); + BndLib::Add(C->Ellipse(),U1,U2,Tol,B); break; } case GeomAbs_Hyperbola: { - BndLib::Add(C.Hyperbola(),U1,U2,Tol,B); + BndLib::Add(C->Hyperbola(),U1,U2,Tol,B); break; } case GeomAbs_Parabola: { - BndLib::Add(C.Parabola(),U1,U2,Tol,B); + BndLib::Add(C->Parabola(),U1,U2,Tol,B); break; } case GeomAbs_BezierCurve: { - Handle(Geom_BezierCurve) Bz = C.Bezier(); + Handle(Geom_BezierCurve) Bz = C->Bezier(); Standard_Integer N = Bz->Degree(); - GeomAdaptor_Curve GACurve(Bz); + Handle(GeomAdaptor_Curve) GACurve = new GeomAdaptor_Curve(Bz); Bnd_Box B1; tol = FillBox(B1,GACurve,U1,U2,N); B1.Enlarge(weakness*tol); @@ -199,7 +199,7 @@ void BndLib_Add3dCurve::Add( const Adaptor3d_Curve& C, } case GeomAbs_BSplineCurve: { - Handle(Geom_BSplineCurve) Bs = C.BSpline(); + Handle(Geom_BSplineCurve) Bs = C->BSpline(); if(Abs(Bs->FirstParameter() - U1) > Precision::Parametric(Tol)|| Abs(Bs->LastParameter() - U2) > Precision::Parametric(Tol)) { @@ -229,7 +229,7 @@ void BndLib_Add3dCurve::Add( const Adaptor3d_Curve& C, N = Bs->Degree(), NbKnots = Bs->NbKnots(); TColStd_Array1OfReal Knots(1,NbKnots); Bs->Knots(Knots); - GeomAdaptor_Curve GACurve(Bs); + Handle(GeomAdaptor_Curve) GACurve = new GeomAdaptor_Curve(Bs); Standard_Real first = Knots(k1), last; for(k = k1 + 1; k <= k2; k++){ last = Knots(k); @@ -264,13 +264,13 @@ void BndLib_Add3dCurve::Add( const Adaptor3d_Curve& C, //purpose : //======================================================================= -void BndLib_Add3dCurve::AddOptimal( const Adaptor3d_Curve& C, +void BndLib_Add3dCurve::AddOptimal( const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol, Bnd_Box& B ) { BndLib_Add3dCurve::AddOptimal(C, - C.FirstParameter(), - C.LastParameter (), + C->FirstParameter(), + C->LastParameter (), Tol,B); } @@ -279,37 +279,37 @@ void BndLib_Add3dCurve::AddOptimal( const Adaptor3d_Curve& C, //purpose : //======================================================================= -void BndLib_Add3dCurve::AddOptimal( const Adaptor3d_Curve& C, +void BndLib_Add3dCurve::AddOptimal( const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol, Bnd_Box& B) { - switch (C.GetType()) { + switch (C->GetType()) { case GeomAbs_Line: { - BndLib::Add(C.Line(),U1,U2,Tol,B); + BndLib::Add(C->Line(),U1,U2,Tol,B); break; } case GeomAbs_Circle: { - BndLib::Add(C.Circle(),U1,U2,Tol,B); + BndLib::Add(C->Circle(),U1,U2,Tol,B); break; } case GeomAbs_Ellipse: { - BndLib::Add(C.Ellipse(),U1,U2,Tol,B); + BndLib::Add(C->Ellipse(),U1,U2,Tol,B); break; } case GeomAbs_Hyperbola: { - BndLib::Add(C.Hyperbola(),U1,U2,Tol,B); + BndLib::Add(C->Hyperbola(),U1,U2,Tol,B); break; } case GeomAbs_Parabola: { - BndLib::Add(C.Parabola(),U1,U2,Tol,B); + BndLib::Add(C->Parabola(),U1,U2,Tol,B); break; } default: @@ -323,7 +323,7 @@ void BndLib_Add3dCurve::AddOptimal( const Adaptor3d_Curve& C, //function : AddGenCurv //purpose : //======================================================================= -void BndLib_Add3dCurve::AddGenCurv(const Adaptor3d_Curve& C, +void BndLib_Add3dCurve::AddGenCurv(const Handle(Adaptor3d_Curve)& C, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real Tol, @@ -342,7 +342,7 @@ void BndLib_Add3dCurve::AddGenCurv(const Adaptor3d_Curve& C, Standard_Real u; for (i = 1, u = UMin; i <= Nu; i++, u += du) { - C.D0(u,P); + C->D0(u,P); aPnts(i) = P.XYZ(); // for(k = 0; k < 3; ++k) @@ -360,7 +360,7 @@ void BndLib_Add3dCurve::AddGenCurv(const Adaptor3d_Curve& C, if(i > 1) { gp_XYZ aPm = 0.5 * (aPnts(i-1) + aPnts(i)); - C.D0(u - du2, P); + C->D0(u - du2, P); gp_XYZ aD = (P.XYZ() - aPm); for(k = 0; k < 3; ++k) { @@ -431,7 +431,7 @@ void BndLib_Add3dCurve::AddGenCurv(const Adaptor3d_Curve& C, class CurvMaxMinCoordMVar : public math_MultipleVarFunction { public: - CurvMaxMinCoordMVar(const Adaptor3d_Curve& theCurve, + CurvMaxMinCoordMVar(const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real UMin, const Standard_Real UMax, const Standard_Integer CoordIndx, @@ -451,7 +451,7 @@ public: { return Standard_False; } - gp_Pnt aP = myCurve.Value(X(1)); + gp_Pnt aP = myCurve->Value(X(1)); F = mySign * aP.Coord(myCoordIndx); @@ -476,7 +476,7 @@ private: return Standard_True; } - const Adaptor3d_Curve& myCurve; + const Handle(Adaptor3d_Curve)& myCurve; Standard_Real myUMin; Standard_Real myUMax; Standard_Integer myCoordIndx; @@ -486,7 +486,7 @@ private: class CurvMaxMinCoord : public math_Function { public: - CurvMaxMinCoord(const Adaptor3d_Curve& theCurve, + CurvMaxMinCoord(const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real UMin, const Standard_Real UMax, const Standard_Integer CoordIndx, @@ -506,7 +506,7 @@ public: { return Standard_False; } - gp_Pnt aP = myCurve.Value(X); + gp_Pnt aP = myCurve->Value(X); F = mySign * aP.Coord(myCoordIndx); @@ -524,7 +524,7 @@ private: return Standard_True; } - const Adaptor3d_Curve& myCurve; + const Handle(Adaptor3d_Curve)& myCurve; Standard_Real myUMin; Standard_Real myUMax; Standard_Integer myCoordIndx; @@ -536,7 +536,7 @@ private: //purpose : //======================================================================= -Standard_Real AdjustExtr(const Adaptor3d_Curve& C, +Standard_Real AdjustExtr(const Handle(Adaptor3d_Curve)& C, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real Extr0, @@ -547,8 +547,8 @@ Standard_Real AdjustExtr(const Adaptor3d_Curve& C, Standard_Real aSign = IsMin ? 1.:-1.; Standard_Real extr = aSign * Extr0; // - Standard_Real uTol = Max(C.Resolution(Tol), Precision::PConfusion()); - Standard_Real Du = (C.LastParameter() - C.FirstParameter()); + Standard_Real uTol = Max(C->Resolution(Tol), Precision::PConfusion()); + Standard_Real Du = (C->LastParameter() - C->FirstParameter()); // Standard_Real reltol = uTol / Max(Abs(UMin), Abs(UMax)); if(UMax - UMin < 0.01 * Du) @@ -596,16 +596,16 @@ Standard_Real AdjustExtr(const Adaptor3d_Curve& C, //purpose : //======================================================================= -Standard_Integer NbSamples(const Adaptor3d_Curve& C, +Standard_Integer NbSamples(const Handle(Adaptor3d_Curve)& C, const Standard_Real Umin, const Standard_Real Umax) { Standard_Integer N; - GeomAbs_CurveType Type = C.GetType(); + GeomAbs_CurveType Type = C->GetType(); switch (Type) { case GeomAbs_BezierCurve: { - N = 2 * C.NbPoles(); + N = 2 * C->NbPoles(); //By default parametric range of Bezier curv is [0, 1] Standard_Real du = Umax - Umin; if(du < .9) @@ -617,7 +617,7 @@ Standard_Integer NbSamples(const Adaptor3d_Curve& C, } case GeomAbs_BSplineCurve: { - const Handle(Geom_BSplineCurve)& BC = C.BSpline(); + const Handle(Geom_BSplineCurve)& BC = C->BSpline(); N = 2 * (BC->Degree() + 1)*(BC->NbKnots() -1); Standard_Real umin = BC->FirstParameter(), umax = BC->LastParameter(); diff --git a/src/BndLib/BndLib_Add3dCurve.hxx b/src/BndLib/BndLib_Add3dCurve.hxx index 286682bf19..3e470b002e 100644 --- a/src/BndLib/BndLib_Add3dCurve.hxx +++ b/src/BndLib/BndLib_Add3dCurve.hxx @@ -19,6 +19,7 @@ #include #include +#include // class Adaptor3d_Curve; @@ -61,7 +62,7 @@ public: //! - a Geom_Hyperbola, //! and P1 and P2 are either two negative infinite real //! numbers, or two positive infinite real numbers. - Standard_EXPORT static void Add (const Adaptor3d_Curve& C, const Standard_Real Tol, Bnd_Box& B); + Standard_EXPORT static void Add (const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol, Bnd_Box& B); //! Adds to the bounding box B the curve C //! the arc of the curve C limited by the two parameter values P1 and P2. @@ -89,20 +90,20 @@ public: //! - a Geom_Hyperbola, //! and P1 and P2 are either two negative infinite real //! numbers, or two positive infinite real numbers. - Standard_EXPORT static void Add (const Adaptor3d_Curve& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol, Bnd_Box& B); + Standard_EXPORT static void Add (const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol, Bnd_Box& B); //! Adds to the bounding box B the curve C //! These methods use more precise algorithms for building bnd box //! then methods Add(...) - Standard_EXPORT static void AddOptimal (const Adaptor3d_Curve& C, const Standard_Real Tol, Bnd_Box& B); - Standard_EXPORT static void AddOptimal (const Adaptor3d_Curve& C, + Standard_EXPORT static void AddOptimal (const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol, Bnd_Box& B); + Standard_EXPORT static void AddOptimal (const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol, Bnd_Box& B); //! Adds to the bounding box B the curve C //! using numerical minimization algorithms //! This method is used in AddOptimal for not analytical curves. //! if Tol < Precision::Confusion(), Precision:;Confusion is used as computation tolerance - Standard_EXPORT static void AddGenCurv(const Adaptor3d_Curve& C, + Standard_EXPORT static void AddGenCurv(const Handle(Adaptor3d_Curve)& C, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real Tol, diff --git a/src/BndLib/BndLib_AddSurface.cxx b/src/BndLib/BndLib_AddSurface.cxx index b1ba162eac..ab13ea94c1 100644 --- a/src/BndLib/BndLib_AddSurface.cxx +++ b/src/BndLib/BndLib_AddSurface.cxx @@ -36,15 +36,15 @@ #include #include // -static Standard_Integer NbUSamples(const Adaptor3d_Surface& S, +static Standard_Integer NbUSamples(const Handle(Adaptor3d_Surface)& S, const Standard_Real Umin, const Standard_Real Umax); // -static Standard_Integer NbVSamples(const Adaptor3d_Surface& S, +static Standard_Integer NbVSamples(const Handle(Adaptor3d_Surface)& S, const Standard_Real Vmin, const Standard_Real Vmax); // -static Standard_Real AdjustExtr(const Adaptor3d_Surface& S, +static Standard_Real AdjustExtr(const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, @@ -69,35 +69,35 @@ static void ComputePolesIndexes(const TColStd_Array1OfReal &theKnots, //function : Add //purpose : //======================================================================= -void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, +void BndLib_AddSurface::Add(const Handle(Adaptor3d_Surface)& S, const Standard_Real Tol, Bnd_Box& B ) { BndLib_AddSurface::Add(S, - S.FirstUParameter(), - S.LastUParameter (), - S.FirstVParameter(), - S.LastVParameter (),Tol,B); + S->FirstUParameter(), + S->LastUParameter (), + S->FirstVParameter(), + S->LastVParameter (),Tol,B); } //======================================================================= //function : NbUSamples //purpose : //======================================================================= -static Standard_Integer NbUSamples(const Adaptor3d_Surface& S) +static Standard_Integer NbUSamples(const Handle(Adaptor3d_Surface)& S) { Standard_Integer N; - GeomAbs_SurfaceType Type = S.GetType(); + GeomAbs_SurfaceType Type = S->GetType(); switch (Type) { case GeomAbs_BezierSurface: { - N = 2*S.NbUPoles(); + N = 2*S->NbUPoles(); break; } case GeomAbs_BSplineSurface: { - const Handle(Geom_BSplineSurface)& BS = S.BSpline(); + const Handle(Geom_BSplineSurface)& BS = S->BSpline(); N = 2*(BS->UDegree() + 1)*(BS->NbUKnots() -1); break; } @@ -112,19 +112,19 @@ static Standard_Integer NbUSamples(const Adaptor3d_Surface& S) //purpose : //======================================================================= -static Standard_Integer NbVSamples(const Adaptor3d_Surface& S) +static Standard_Integer NbVSamples(const Handle(Adaptor3d_Surface)& S) { Standard_Integer N; - GeomAbs_SurfaceType Type = S.GetType(); + GeomAbs_SurfaceType Type = S->GetType(); switch (Type) { case GeomAbs_BezierSurface: { - N = 2*S.NbVPoles(); + N = 2*S->NbVPoles(); break; } case GeomAbs_BSplineSurface: { - const Handle(Geom_BSplineSurface)& BS = S.BSpline(); + const Handle(Geom_BSplineSurface)& BS = S->BSpline(); N = 2*(BS->VDegree() + 1)*(BS->NbVKnots() - 1) ; break; } @@ -249,7 +249,7 @@ void ComputePolesIndexes(const TColStd_Array1OfReal &theKnots, //function : Add //purpose : //======================================================================= -void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, +void BndLib_AddSurface::Add(const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, @@ -257,7 +257,7 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, const Standard_Real Tol, Bnd_Box& B ) { - GeomAbs_SurfaceType Type = S.GetType(); // skv OCC6503 + GeomAbs_SurfaceType Type = S->GetType(); // skv OCC6503 if (Precision::IsInfinite(VMin) || Precision::IsInfinite(VMax) || @@ -269,7 +269,7 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, switch (Type) { case GeomAbs_Plane: { - TreatInfinitePlane(S.Plane(), UMin, UMax, VMin, VMax, Tol, B); + TreatInfinitePlane(S->Plane(), UMin, UMax, VMin, VMax, Tol, B); return; } default: @@ -281,13 +281,13 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, // Modified by skv - Fri Aug 27 12:29:04 2004 OCC6503 End } -// GeomAbs_SurfaceType Type = S.GetType(); // skv OCC6503 +// GeomAbs_SurfaceType Type = S->GetType(); // skv OCC6503 switch (Type) { case GeomAbs_Plane: { - gp_Pln Plan = S.Plane(); + gp_Pln Plan = S->Plane(); B.Add(ElSLib::Value(UMin,VMin,Plan)); B.Add(ElSLib::Value(UMin,VMax,Plan)); B.Add(ElSLib::Value(UMax,VMin,Plan)); @@ -297,17 +297,17 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, } case GeomAbs_Cylinder: { - BndLib::Add(S.Cylinder(),UMin,UMax,VMin,VMax,Tol,B); + BndLib::Add(S->Cylinder(),UMin,UMax,VMin,VMax,Tol,B); break; } case GeomAbs_Cone: { - BndLib::Add(S.Cone(),UMin,UMax,VMin,VMax,Tol,B); + BndLib::Add(S->Cone(),UMin,UMax,VMin,VMax,Tol,B); break; } case GeomAbs_Torus: { - BndLib::Add(S.Torus(),UMin,UMax,VMin,VMax,Tol,B); + BndLib::Add(S->Torus(),UMin,UMax,VMin,VMax,Tol,B); break; } case GeomAbs_Sphere: @@ -316,16 +316,16 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, Abs(UMax - 2.*M_PI) < Precision::Angular() && Abs(VMin + M_PI/2.) < Precision::Angular() && Abs(VMax - M_PI/2.) < Precision::Angular()) // a whole sphere - BndLib::Add(S.Sphere(),Tol,B); + BndLib::Add(S->Sphere(),Tol,B); else - BndLib::Add(S.Sphere(),UMin,UMax,VMin,VMax,Tol,B); + BndLib::Add(S->Sphere(),UMin,UMax,VMin,VMax,Tol,B); break; } case GeomAbs_OffsetSurface: { - Handle(Adaptor3d_Surface) HS = S.BasisSurface(); - Add (*HS,UMin,UMax,VMin,VMax,Tol,B); - B.Enlarge(S.OffsetValue()); + Handle(Adaptor3d_Surface) HS = S->BasisSurface(); + Add (HS,UMin,UMax,VMin,VMax,Tol,B); + B.Enlarge(S->OffsetValue()); B.Enlarge(Tol); break; } @@ -344,10 +344,10 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, // All of poles used for any parameter, // that's why in case of trimmed parameters handled by grid algorithm. - if (Abs(UMin-S.FirstUParameter()) > PTol || - Abs(VMin-S.FirstVParameter()) > PTol || - Abs(UMax-S.LastUParameter ()) > PTol || - Abs(VMax-S.LastVParameter ()) > PTol ) + if (Abs(UMin-S->FirstUParameter()) > PTol || + Abs(VMin-S->FirstVParameter()) > PTol || + Abs(UMax-S->LastUParameter ()) > PTol || + Abs(VMax-S->LastVParameter ()) > PTol ) { // Borders not equal to topology borders. isUseConvexHullAlgorithm = Standard_False; @@ -360,7 +360,7 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, // use convex hull algorithm, // if Umin, VMin, Umax, Vmax lies outside then: // use grid algorithm on analytic continuation (default case). - aBS = S.BSpline(); + aBS = S->BSpline(); aBS->Bounds(anUMinParam, anUMaxParam, aVMinParam, aVMaxParam); if ( (UMin - anUMinParam) < -PTol || (VMin - aVMinParam) < -PTol || @@ -374,14 +374,14 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, if (isUseConvexHullAlgorithm) { - Standard_Integer aNbUPoles = S.NbUPoles(), aNbVPoles = S.NbVPoles(); + Standard_Integer aNbUPoles = S->NbUPoles(), aNbVPoles = S->NbVPoles(); TColgp_Array2OfPnt Tp(1, aNbUPoles, 1, aNbVPoles); Standard_Integer UMinIdx = 0, UMaxIdx = 0; Standard_Integer VMinIdx = 0, VMaxIdx = 0; - Standard_Boolean isUPeriodic = S.IsUPeriodic(), isVPeriodic = S.IsVPeriodic(); + Standard_Boolean isUPeriodic = S->IsUPeriodic(), isVPeriodic = S->IsVPeriodic(); if (Type == GeomAbs_BezierSurface) { - S.Bezier()->Poles(Tp); + S->Bezier()->Poles(Tp); UMinIdx = 1; UMaxIdx = aNbUPoles; VMinIdx = 1; VMaxIdx = aNbVPoles; } @@ -465,7 +465,7 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, Standard_Real U = UMin + ((UMax-UMin)*(i-1)/(Nu-1)); for (Standard_Integer j=1 ;j<=Nv;j++){ Standard_Real V = VMin + ((VMax-VMin)*(j-1)/(Nv-1)); - S.D0(U,V,P); + S->D0(U,V,P); B.Add(P); } } @@ -479,23 +479,23 @@ void BndLib_AddSurface::Add(const Adaptor3d_Surface& S, //function : AddOptimal //purpose : //======================================================================= -void BndLib_AddSurface::AddOptimal(const Adaptor3d_Surface& S, +void BndLib_AddSurface::AddOptimal(const Handle(Adaptor3d_Surface)& S, const Standard_Real Tol, Bnd_Box& B ) { BndLib_AddSurface::AddOptimal(S, - S.FirstUParameter(), - S.LastUParameter (), - S.FirstVParameter(), - S.LastVParameter (),Tol,B); + S->FirstUParameter(), + S->LastUParameter (), + S->FirstVParameter(), + S->LastVParameter (),Tol,B); } //======================================================================= //function : AddOptimal //purpose : //======================================================================= -void BndLib_AddSurface::AddOptimal(const Adaptor3d_Surface& S, +void BndLib_AddSurface::AddOptimal(const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, @@ -503,7 +503,7 @@ void BndLib_AddSurface::AddOptimal(const Adaptor3d_Surface& S, const Standard_Real Tol, Bnd_Box& B ) { - GeomAbs_SurfaceType Type = S.GetType(); + GeomAbs_SurfaceType Type = S->GetType(); if (Precision::IsInfinite(VMin) || Precision::IsInfinite(VMax) || @@ -512,7 +512,7 @@ void BndLib_AddSurface::AddOptimal(const Adaptor3d_Surface& S, switch (Type) { case GeomAbs_Plane: { - TreatInfinitePlane(S.Plane(), UMin, UMax, VMin, VMax, Tol, B); + TreatInfinitePlane(S->Plane(), UMin, UMax, VMin, VMax, Tol, B); return; } default: @@ -527,7 +527,7 @@ void BndLib_AddSurface::AddOptimal(const Adaptor3d_Surface& S, case GeomAbs_Plane: { - gp_Pln Plan = S.Plane(); + gp_Pln Plan = S->Plane(); B.Add(ElSLib::Value(UMin,VMin,Plan)); B.Add(ElSLib::Value(UMin,VMax,Plan)); B.Add(ElSLib::Value(UMax,VMin,Plan)); @@ -537,17 +537,17 @@ void BndLib_AddSurface::AddOptimal(const Adaptor3d_Surface& S, } case GeomAbs_Cylinder: { - BndLib::Add(S.Cylinder(), UMin, UMax, VMin, VMax, Tol, B); + BndLib::Add(S->Cylinder(), UMin, UMax, VMin, VMax, Tol, B); break; } case GeomAbs_Cone: { - BndLib::Add(S.Cone(), UMin, UMax, VMin, VMax, Tol, B); + BndLib::Add(S->Cone(), UMin, UMax, VMin, VMax, Tol, B); break; } case GeomAbs_Sphere: { - BndLib::Add(S.Sphere(), UMin, UMax, VMin, VMax, Tol, B); + BndLib::Add(S->Sphere(), UMin, UMax, VMin, VMax, Tol, B); break; } default: @@ -560,7 +560,7 @@ void BndLib_AddSurface::AddOptimal(const Adaptor3d_Surface& S, //function : AddGenSurf //purpose : //======================================================================= -void BndLib_AddSurface::AddGenSurf(const Adaptor3d_Surface& S, +void BndLib_AddSurface::AddGenSurf(const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, @@ -584,7 +584,7 @@ void BndLib_AddSurface::AddGenSurf(const Adaptor3d_Surface& S, gp_Pnt P; for (i = 1, u = UMin; i <= Nu; i++, u += du){ for (j = 1, v = VMin;j <= Nv; j++, v += dv){ - S.D0(u,v,P); + S->D0(u,v,P); aPnts(i, j) = P.XYZ(); // for(k = 0; k < 3; ++k) @@ -602,7 +602,7 @@ void BndLib_AddSurface::AddGenSurf(const Adaptor3d_Surface& S, if(i > 1) { gp_XYZ aPm = 0.5 * (aPnts(i-1,j) + aPnts(i, j)); - S.D0(u - du2, v, P); + S->D0(u - du2, v, P); gp_XYZ aD = (P.XYZ() - aPm); for(k = 0; k < 3; ++k) { @@ -624,7 +624,7 @@ void BndLib_AddSurface::AddGenSurf(const Adaptor3d_Surface& S, if(j > 1) { gp_XYZ aPm = 0.5 * (aPnts(i,j-1) + aPnts(i, j)); - S.D0(u , v - dv2, P); + S->D0(u , v - dv2, P); gp_XYZ aD = (P.XYZ() - aPm); for(k = 0; k < 3; ++k) { @@ -707,7 +707,7 @@ void BndLib_AddSurface::AddGenSurf(const Adaptor3d_Surface& S, class SurfMaxMinCoord : public math_MultipleVarFunction { public: - SurfMaxMinCoord(const Adaptor3d_Surface& theSurf, + SurfMaxMinCoord(const Handle(Adaptor3d_Surface)& theSurf, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, @@ -745,7 +745,7 @@ public: { if (CheckInputData(X)) { - gp_Pnt aP = mySurf.Value(X(1), X(2)); + gp_Pnt aP = mySurf->Value(X(1), X(2)); F = mySign * aP.Coord(myCoordIndx); } else @@ -781,7 +781,7 @@ public: v0 = X(2); } // - gp_Pnt aP = mySurf.Value(u0, v0); + gp_Pnt aP = mySurf->Value(u0, v0); F = mySign * aP.Coord(myCoordIndx) + UPen + VPen; } @@ -808,7 +808,7 @@ private: return Standard_True; } - const Adaptor3d_Surface& mySurf; + const Handle(Adaptor3d_Surface)& mySurf; Standard_Real myUMin; Standard_Real myUMax; Standard_Real myVMin; @@ -823,7 +823,7 @@ private: //purpose : //======================================================================= -Standard_Real AdjustExtr(const Adaptor3d_Surface& S, +Standard_Real AdjustExtr(const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, @@ -840,8 +840,8 @@ Standard_Real AdjustExtr(const Adaptor3d_Surface& S, { relTol /= Abs(extr); } - Standard_Real Du = (S.LastUParameter() - S.FirstUParameter()); - Standard_Real Dv = (S.LastVParameter() - S.FirstVParameter()); + Standard_Real Du = (S->LastUParameter() - S->FirstUParameter()); + Standard_Real Dv = (S->LastVParameter() - S->FirstVParameter()); // math_Vector aT(1,2); math_Vector aLowBorder(1,2); @@ -889,16 +889,16 @@ Standard_Real AdjustExtr(const Adaptor3d_Surface& S, //purpose : //======================================================================= -Standard_Integer NbUSamples(const Adaptor3d_Surface& S, +Standard_Integer NbUSamples(const Handle(Adaptor3d_Surface)& S, const Standard_Real Umin, const Standard_Real Umax) { Standard_Integer N; - GeomAbs_SurfaceType Type = S.GetType(); + GeomAbs_SurfaceType Type = S->GetType(); switch (Type) { case GeomAbs_BezierSurface: { - N = 2*S.NbUPoles(); + N = 2*S->NbUPoles(); //By default parametric range of Bezier surf is [0, 1] [0, 1] Standard_Real du = Umax - Umin; if(du < .9) @@ -910,7 +910,7 @@ Standard_Integer NbUSamples(const Adaptor3d_Surface& S, } case GeomAbs_BSplineSurface: { - const Handle(Geom_BSplineSurface)& BS = S.BSpline(); + const Handle(Geom_BSplineSurface)& BS = S->BSpline(); N = 2*(BS->UDegree() + 1)*(BS->NbUKnots() -1); Standard_Real umin, umax, vmin, vmax; BS->Bounds(umin, umax, vmin, vmax); @@ -933,16 +933,16 @@ Standard_Integer NbUSamples(const Adaptor3d_Surface& S, //purpose : //======================================================================= -Standard_Integer NbVSamples(const Adaptor3d_Surface& S, +Standard_Integer NbVSamples(const Handle(Adaptor3d_Surface)& S, const Standard_Real Vmin, const Standard_Real Vmax) { Standard_Integer N; - GeomAbs_SurfaceType Type = S.GetType(); + GeomAbs_SurfaceType Type = S->GetType(); switch (Type) { case GeomAbs_BezierSurface: { - N = 2*S.NbVPoles(); + N = 2*S->NbVPoles(); //By default parametric range of Bezier surf is [0, 1] [0, 1] Standard_Real dv = Vmax - Vmin; if(dv < .9) @@ -954,7 +954,7 @@ Standard_Integer NbVSamples(const Adaptor3d_Surface& S, } case GeomAbs_BSplineSurface: { - const Handle(Geom_BSplineSurface)& BS = S.BSpline(); + const Handle(Geom_BSplineSurface)& BS = S->BSpline(); N = 2*(BS->VDegree() + 1)*(BS->NbVKnots() - 1) ; Standard_Real umin, umax, vmin, vmax; BS->Bounds(umin, umax, vmin, vmax); diff --git a/src/BndLib/BndLib_AddSurface.hxx b/src/BndLib/BndLib_AddSurface.hxx index 0dc98c33b9..2cfd5dc67b 100644 --- a/src/BndLib/BndLib_AddSurface.hxx +++ b/src/BndLib/BndLib_AddSurface.hxx @@ -61,7 +61,7 @@ public: //! // ... //! Standard_Real Tol = ... ; //! AddSurface::Add ( S, Tol, B ); - Standard_EXPORT static void Add (const Adaptor3d_Surface& S, const Standard_Real Tol, Bnd_Box& B); + Standard_EXPORT static void Add (const Handle(Adaptor3d_Surface)& S, const Standard_Real Tol, Bnd_Box& B); //! Adds to the bounding box B the surface S //! the patch of the surface S limited in the u parametric @@ -94,14 +94,14 @@ public: //! // ... //! Standard_Real Tol = ... ; //! AddSurface::Add ( S, Tol, B ); - Standard_EXPORT static void Add (const Adaptor3d_Surface& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, const Standard_Real VMax, const Standard_Real Tol, Bnd_Box& B); + Standard_EXPORT static void Add (const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, const Standard_Real VMax, const Standard_Real Tol, Bnd_Box& B); //! Adds the surface S to the bounding box B. //! This algorithm builds precise bounding box - Standard_EXPORT static void AddOptimal (const Adaptor3d_Surface& S, const Standard_Real Tol, Bnd_Box& B); + Standard_EXPORT static void AddOptimal (const Handle(Adaptor3d_Surface)& S, const Standard_Real Tol, Bnd_Box& B); - Standard_EXPORT static void AddOptimal (const Adaptor3d_Surface& S, + Standard_EXPORT static void AddOptimal (const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, const Standard_Real VMax, const Standard_Real Tol, Bnd_Box& B); @@ -111,7 +111,7 @@ public: //! using numerical minimization algorithms //! This method is used in AddOptimal for not analytical surfaces and torus. //! if Tol < Precision::Confusion(), Precision::Confusion is used as computation tolerance - Standard_EXPORT static void AddGenSurf(const Adaptor3d_Surface& S, + Standard_EXPORT static void AddGenSurf(const Handle(Adaptor3d_Surface)& S, const Standard_Real UMin, const Standard_Real UMax, const Standard_Real VMin, diff --git a/src/CPnts/CPnts_AbscissaPoint.cxx b/src/CPnts/CPnts_AbscissaPoint.cxx index 456f8b03ed..8c521e2d60 100644 --- a/src/CPnts/CPnts_AbscissaPoint.cxx +++ b/src/CPnts/CPnts_AbscissaPoint.cxx @@ -54,9 +54,9 @@ static Standard_Real f2d(const Standard_Real X, const Standard_Address C) return V.Magnitude(); } -static Standard_Integer order(const Adaptor3d_Curve& C) +static Standard_Integer order(const Handle(Adaptor3d_Curve)& C) { - switch (C.GetType()) { + switch (C->GetType()) { case GeomAbs_Line : return 2; @@ -65,19 +65,19 @@ static Standard_Integer order(const Adaptor3d_Curve& C) return 5; case GeomAbs_BezierCurve : - return Min(24, 2*C.Degree()); + return Min(24, 2*C->Degree()); case GeomAbs_BSplineCurve : - return Min(24, 2*C.NbPoles()-1); + return Min(24, 2*C->NbPoles()-1); default : return 10; } } -static Standard_Integer order(const Adaptor2d_Curve2d& C) +static Standard_Integer order(const Handle(Adaptor2d_Curve2d)& C) { - switch (C.GetType()) { + switch (C->GetType()) { case GeomAbs_Line : return 2; @@ -86,10 +86,10 @@ static Standard_Integer order(const Adaptor2d_Curve2d& C) return 5; case GeomAbs_BezierCurve : - return Min(24, 2*C.Bezier()->Degree()); + return Min(24, 2*C->Bezier()->Degree()); case GeomAbs_BSplineCurve : - return Min(24, 2*C.BSpline()->NbPoles()-1); + return Min(24, 2*C->BSpline()->NbPoles()-1); default : return 10; @@ -102,10 +102,10 @@ static Standard_Integer order(const Adaptor2d_Curve2d& C) //purpose : 3d //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C) +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor3d_Curve)& C) { - return CPnts_AbscissaPoint::Length(C, C.FirstParameter(), - C.LastParameter()); + return CPnts_AbscissaPoint::Length(C, C->FirstParameter(), + C->LastParameter()); } //======================================================================= @@ -113,10 +113,10 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C) //purpose : 2d //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C) +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor2d_Curve2d)& C) { - return CPnts_AbscissaPoint::Length(C, C.FirstParameter(), - C.LastParameter()); + return CPnts_AbscissaPoint::Length(C, C->FirstParameter(), + C->LastParameter()); } //======================================================================= @@ -124,10 +124,10 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C) //purpose : 3d with tolerance //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C, const Standard_Real Tol) +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol) { - return CPnts_AbscissaPoint::Length(C, C.FirstParameter(), - C.LastParameter(), Tol); + return CPnts_AbscissaPoint::Length(C, C->FirstParameter(), + C->LastParameter(), Tol); } //======================================================================= @@ -135,10 +135,10 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C, const Standa //purpose : 2d with tolerance //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C, const Standard_Real Tol) +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Tol) { - return CPnts_AbscissaPoint::Length(C, C.FirstParameter(), - C.LastParameter(), Tol); + return CPnts_AbscissaPoint::Length(C, C->FirstParameter(), + C->LastParameter(), Tol); } @@ -147,14 +147,14 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C, const Stan //purpose : 3d with parameters //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C, +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2) { CPnts_MyGaussFunction FG; //POP pout WNT CPnts_RealFunction rf = f3d; - FG.Init(rf,(Standard_Address)&C); + FG.Init(rf, C.operator->()); // FG.Init(f3d,(Standard_Address)&C); math_GaussSingleIntegration TheLength(FG, U1, U2, order(C)); if (!TheLength.IsDone()) { @@ -168,14 +168,14 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C, //purpose : 2d with parameters //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C, +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2) { CPnts_MyGaussFunction FG; //POP pout WNT CPnts_RealFunction rf = f2d; - FG.Init(rf,(Standard_Address)&C); + FG.Init(rf, C.operator->()); // FG.Init(f2d,(Standard_Address)&C); math_GaussSingleIntegration TheLength(FG, U1, U2, order(C)); if (!TheLength.IsDone()) { @@ -189,7 +189,7 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C, //purpose : 3d with parameters and tolerance //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C, +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol) @@ -197,7 +197,7 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C, CPnts_MyGaussFunction FG; //POP pout WNT CPnts_RealFunction rf = f3d; - FG.Init(rf,(Standard_Address)&C); + FG.Init(rf, C.operator->()); // FG.Init(f3d,(Standard_Address)&C); math_GaussSingleIntegration TheLength(FG, U1, U2, order(C), Tol); if (!TheLength.IsDone()) { @@ -211,7 +211,7 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor3d_Curve& C, //purpose : 2d with parameters and tolerance //======================================================================= -Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C, +Standard_Real CPnts_AbscissaPoint::Length(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol) @@ -219,7 +219,7 @@ Standard_Real CPnts_AbscissaPoint::Length(const Adaptor2d_Curve2d& C, CPnts_MyGaussFunction FG; //POP pout WNT CPnts_RealFunction rf = f2d; - FG.Init(rf,(Standard_Address)&C); + FG.Init(rf, C.operator->()); // FG.Init(f2d,(Standard_Address)&C); math_GaussSingleIntegration TheLength(FG, U1, U2, order(C), Tol); if (!TheLength.IsDone()) { @@ -247,7 +247,7 @@ CPnts_AbscissaPoint::CPnts_AbscissaPoint() //purpose : //======================================================================= -CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor3d_Curve& C, +CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Handle(Adaptor3d_Curve)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Resolution) @@ -263,7 +263,7 @@ CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor3d_Curve& C, //purpose : //======================================================================= -CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor2d_Curve2d& C, +CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Resolution) @@ -278,7 +278,7 @@ CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= -CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor3d_Curve& C, +CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Handle(Adaptor3d_Curve)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Ui, @@ -293,7 +293,7 @@ CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor3d_Curve& C, //purpose : //======================================================================= -CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor2d_Curve2d& C, +CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Ui, @@ -309,9 +309,9 @@ CPnts_AbscissaPoint::CPnts_AbscissaPoint(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C) +void CPnts_AbscissaPoint::Init(const Handle(Adaptor3d_Curve)& C) { - Init(C,C.FirstParameter(),C.LastParameter()); + Init(C, C->FirstParameter(), C->LastParameter()); } //======================================================================= @@ -319,9 +319,9 @@ void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C) //purpose : //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor2d_Curve2d& C) +void CPnts_AbscissaPoint::Init(const Handle(Adaptor2d_Curve2d)& C) { - Init(C,C.FirstParameter(),C.LastParameter()); + Init(C, C->FirstParameter(), C->LastParameter()); } //======================================================================= @@ -329,9 +329,9 @@ void CPnts_AbscissaPoint::Init(const Adaptor2d_Curve2d& C) //purpose : introduced by rbv for curvilinear parametrization //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C, const Standard_Real Tol) +void CPnts_AbscissaPoint::Init(const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol) { - Init(C,C.FirstParameter(),C.LastParameter(), Tol); + Init(C, C->FirstParameter(), C->LastParameter(), Tol); } //======================================================================= @@ -339,9 +339,9 @@ void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C, const Standard_Real Tol //purpose : //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor2d_Curve2d& C, const Standard_Real Tol) +void CPnts_AbscissaPoint::Init(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Tol) { - Init(C,C.FirstParameter(),C.LastParameter(), Tol); + Init(C, C->FirstParameter(), C->LastParameter(), Tol); } //======================================================================= @@ -349,13 +349,13 @@ void CPnts_AbscissaPoint::Init(const Adaptor2d_Curve2d& C, const Standard_Real T //purpose : //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C, +void CPnts_AbscissaPoint::Init(const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2) { //POP pout WNT CPnts_RealFunction rf = f3d; - myF.Init(rf,(Standard_Address)&C,order(C)); + myF.Init(rf, C.operator->(), order(C)); // myF.Init(f3d,(Standard_Address)&C,order(C)); myL = CPnts_AbscissaPoint::Length(C, U1, U2); myUMin = Min(U1, U2); @@ -370,13 +370,13 @@ void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C, //purpose : //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor2d_Curve2d& C, +void CPnts_AbscissaPoint::Init(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2) { //POP pout WNT CPnts_RealFunction rf = f2d; - myF.Init(rf,(Standard_Address)&C,order(C)); + myF.Init(rf, C.operator->(), order(C)); // myF.Init(f2d,(Standard_Address)&C,order(C)); myL = CPnts_AbscissaPoint::Length(C, U1, U2); myUMin = Min(U1, U2); @@ -392,14 +392,14 @@ void CPnts_AbscissaPoint::Init(const Adaptor2d_Curve2d& C, //purpose : introduced by rbv for curvilinear parametrization //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C, +void CPnts_AbscissaPoint::Init(const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol) { //POP pout WNT CPnts_RealFunction rf = f3d; - myF.Init(rf,(Standard_Address)&C,order(C)); + myF.Init(rf, C.operator->(), order(C)); // myF.Init(f3d,(Standard_Address)&C,order(C)); myL = CPnts_AbscissaPoint::Length(C, U1, U2, Tol); myUMin = Min(U1, U2); @@ -414,14 +414,14 @@ void CPnts_AbscissaPoint::Init(const Adaptor3d_Curve& C, //purpose : //======================================================================= -void CPnts_AbscissaPoint::Init(const Adaptor2d_Curve2d& C, +void CPnts_AbscissaPoint::Init(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol) { //POP pout WNT CPnts_RealFunction rf = f2d; - myF.Init(rf,(Standard_Address)&C,order(C)); + myF.Init(rf, C.operator->(), order(C)); // myF.Init(f2d,(Standard_Address)&C,order(C)); myL = CPnts_AbscissaPoint::Length(C, U1, U2, Tol); myUMin = Min(U1, U2); diff --git a/src/CPnts/CPnts_AbscissaPoint.hxx b/src/CPnts/CPnts_AbscissaPoint.hxx index bd6c7a6cdc..dd274f5739 100644 --- a/src/CPnts/CPnts_AbscissaPoint.hxx +++ b/src/CPnts/CPnts_AbscissaPoint.hxx @@ -41,29 +41,29 @@ public: //! Computes the length of the Curve . - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& C); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& C); //! Computes the length of the Curve . - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& C); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& C); //! Computes the length of the Curve with the given tolerance. - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& C, const Standard_Real Tol); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol); //! Computes the length of the Curve with the given tolerance. - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& C, const Standard_Real Tol); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Tol); //! Computes the length of the Curve between and . - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& C, const Standard_Real U1, const Standard_Real U2); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2); //! Computes the length of the Curve between and . - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& C, const Standard_Real U1, const Standard_Real U2); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2); //! Computes the length of the Curve between and with the given tolerance. - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); //! Computes the length of the Curve between and with the given tolerance. //! creation of a indefinite AbscissaPoint. - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); Standard_EXPORT CPnts_AbscissaPoint(); @@ -71,13 +71,13 @@ public: //! distance from the point of parameter . //! is the error allowed in the computation. //! The computed point can be outside of the curve 's bounds. - Standard_EXPORT CPnts_AbscissaPoint(const Adaptor3d_Curve& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Resolution); + Standard_EXPORT CPnts_AbscissaPoint(const Handle(Adaptor3d_Curve)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Resolution); //! the algorithm computes a point on a curve at the //! distance from the point of parameter . //! is the error allowed in the computation. //! The computed point can be outside of the curve 's bounds. - Standard_EXPORT CPnts_AbscissaPoint(const Adaptor2d_Curve2d& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Resolution); + Standard_EXPORT CPnts_AbscissaPoint(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Resolution); //! the algorithm computes a point on a curve at the //! distance from the point of parameter . @@ -86,7 +86,7 @@ public: //! solution //! is the error allowed in the computation. //! The computed point can be outside of the curve 's bounds. - Standard_EXPORT CPnts_AbscissaPoint(const Adaptor3d_Curve& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Ui, const Standard_Real Resolution); + Standard_EXPORT CPnts_AbscissaPoint(const Handle(Adaptor3d_Curve)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Ui, const Standard_Real Resolution); //! the algorithm computes a point on a curve at the //! distance from the point of parameter . @@ -95,35 +95,35 @@ public: //! solution //! is the error allowed in the computation. //! The computed point can be outside of the curve 's bounds. - Standard_EXPORT CPnts_AbscissaPoint(const Adaptor2d_Curve2d& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Ui, const Standard_Real Resolution); + Standard_EXPORT CPnts_AbscissaPoint(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Abscissa, const Standard_Real U0, const Standard_Real Ui, const Standard_Real Resolution); //! Initializes the resolution function with . - Standard_EXPORT void Init (const Adaptor3d_Curve& C); + Standard_EXPORT void Init (const Handle(Adaptor3d_Curve)& C); //! Initializes the resolution function with . - Standard_EXPORT void Init (const Adaptor2d_Curve2d& C); + Standard_EXPORT void Init (const Handle(Adaptor2d_Curve2d)& C); //! Initializes the resolution function with . - Standard_EXPORT void Init (const Adaptor3d_Curve& C, const Standard_Real Tol); + Standard_EXPORT void Init (const Handle(Adaptor3d_Curve)& C, const Standard_Real Tol); //! Initializes the resolution function with . - Standard_EXPORT void Init (const Adaptor2d_Curve2d& C, const Standard_Real Tol); + Standard_EXPORT void Init (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Tol); //! Initializes the resolution function with //! between U1 and U2. - Standard_EXPORT void Init (const Adaptor3d_Curve& C, const Standard_Real U1, const Standard_Real U2); + Standard_EXPORT void Init (const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2); //! Initializes the resolution function with //! between U1 and U2. - Standard_EXPORT void Init (const Adaptor2d_Curve2d& C, const Standard_Real U1, const Standard_Real U2); + Standard_EXPORT void Init (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2); //! Initializes the resolution function with //! between U1 and U2. - Standard_EXPORT void Init (const Adaptor3d_Curve& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); + Standard_EXPORT void Init (const Handle(Adaptor3d_Curve)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); //! Initializes the resolution function with //! between U1 and U2. - Standard_EXPORT void Init (const Adaptor2d_Curve2d& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); + Standard_EXPORT void Init (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U1, const Standard_Real U2, const Standard_Real Tol); //! Computes the point at the distance of //! the curve. diff --git a/src/CPnts/CPnts_UniformDeflection.cxx b/src/CPnts/CPnts_UniformDeflection.cxx index f7e1422935..7dff6fa715 100644 --- a/src/CPnts/CPnts_UniformDeflection.cxx +++ b/src/CPnts/CPnts_UniformDeflection.cxx @@ -285,7 +285,7 @@ CPnts_UniformDeflection::CPnts_UniformDeflection () //======================================================================= CPnts_UniformDeflection::CPnts_UniformDeflection - (const Adaptor3d_Curve& C, + (const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl) @@ -299,7 +299,7 @@ CPnts_UniformDeflection::CPnts_UniformDeflection //======================================================================= CPnts_UniformDeflection::CPnts_UniformDeflection - (const Adaptor2d_Curve2d& C, + (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl) @@ -312,12 +312,12 @@ CPnts_UniformDeflection::CPnts_UniformDeflection //purpose : //======================================================================= -void CPnts_UniformDeflection::Initialize(const Adaptor3d_Curve& C, +void CPnts_UniformDeflection::Initialize(const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl) { - Initialize(C,Deflection,C.FirstParameter(),C.LastParameter(), + Initialize(C,Deflection,C->FirstParameter(),C->LastParameter(), Resolution,WithControl); } @@ -326,12 +326,12 @@ void CPnts_UniformDeflection::Initialize(const Adaptor3d_Curve& C, //purpose : //======================================================================= -void CPnts_UniformDeflection::Initialize(const Adaptor2d_Curve2d& C, +void CPnts_UniformDeflection::Initialize(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl) { - Initialize(C,Deflection,C.FirstParameter(),C.LastParameter(), + Initialize(C,Deflection,C->FirstParameter(),C->LastParameter(), Resolution,WithControl); } @@ -341,7 +341,7 @@ void CPnts_UniformDeflection::Initialize(const Adaptor2d_Curve2d& C, //======================================================================= CPnts_UniformDeflection ::CPnts_UniformDeflection - (const Adaptor3d_Curve& C, + (const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, @@ -357,7 +357,7 @@ CPnts_UniformDeflection ::CPnts_UniformDeflection //======================================================================= CPnts_UniformDeflection ::CPnts_UniformDeflection - (const Adaptor2d_Curve2d& C, + (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, @@ -372,7 +372,7 @@ CPnts_UniformDeflection ::CPnts_UniformDeflection //purpose : //======================================================================= -void CPnts_UniformDeflection::Initialize (const Adaptor3d_Curve& C, +void CPnts_UniformDeflection::Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, @@ -391,7 +391,7 @@ void CPnts_UniformDeflection::Initialize (const Adaptor3d_Curve& C, myDwmax = myLastParam-myFirstParam; myDu = myDwmax/2. ; myDone = Standard_True; - myCurve = (Standard_Address) &C; + myCurve = (Standard_Address) (C.get()); myFinish = Standard_False; myTolCur = Resolution; myDeflection = Deflection; @@ -404,7 +404,7 @@ void CPnts_UniformDeflection::Initialize (const Adaptor3d_Curve& C, //purpose : //======================================================================= -void CPnts_UniformDeflection::Initialize (const Adaptor2d_Curve2d& C, +void CPnts_UniformDeflection::Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, @@ -423,7 +423,7 @@ void CPnts_UniformDeflection::Initialize (const Adaptor2d_Curve2d& C, myDwmax = myLastParam-myFirstParam; myDu = myDwmax/2. ; myDone = Standard_True; - myCurve = (Standard_Address) &C; + myCurve = (Standard_Address) (C.get()); myFinish = Standard_False; myTolCur = Resolution; myDeflection = Deflection; diff --git a/src/CPnts/CPnts_UniformDeflection.hxx b/src/CPnts/CPnts_UniformDeflection.hxx index 03b290745a..9829ede1f5 100644 --- a/src/CPnts/CPnts_UniformDeflection.hxx +++ b/src/CPnts/CPnts_UniformDeflection.hxx @@ -74,36 +74,36 @@ public: //! P(u + Max(CurrentStep,Abs(LastParameter-FirstParameter))) //! if the singularity is at the first point ,the next point //! calculated is the P(LastParameter) - Standard_EXPORT CPnts_UniformDeflection(const Adaptor3d_Curve& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT CPnts_UniformDeflection(const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); //! As above with 2d curve - Standard_EXPORT CPnts_UniformDeflection(const Adaptor2d_Curve2d& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT CPnts_UniformDeflection(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); //! Computes an uniform deflection distribution of points on a part of //! the curve . Deflection defines the step between the points. //! and define the distribution span. //! and must be in the parametric range of the curve. - Standard_EXPORT CPnts_UniformDeflection(const Adaptor3d_Curve& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT CPnts_UniformDeflection(const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); //! As above with 2d curve - Standard_EXPORT CPnts_UniformDeflection(const Adaptor2d_Curve2d& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT CPnts_UniformDeflection(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); //! Initialize the algorithms with , , , //! and - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); //! Initialize the algorithms with , , , //! and - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real Resolution, const Standard_Boolean WithControl); //! Initialize the algorithms with , , , //! , and - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); //! Initialize the algorithms with , , , //! , and - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Deflection, const Standard_Real U1, const Standard_Real U2, const Standard_Real Resolution, const Standard_Boolean WithControl); //! To know if all the calculus were done successfully //! (ie all the points have been computed). The calculus can fail if diff --git a/src/ChFi2d/ChFi2d_AnaFilletAlgo.cxx b/src/ChFi2d/ChFi2d_AnaFilletAlgo.cxx index 3462905295..200eabd12f 100644 --- a/src/ChFi2d/ChFi2d_AnaFilletAlgo.cxx +++ b/src/ChFi2d/ChFi2d_AnaFilletAlgo.cxx @@ -37,15 +37,15 @@ #include // Compute the flag: CW || CCW -static Standard_Boolean isCW(const BRepAdaptor_Curve& AC) +static Standard_Boolean isCW(const Handle(BRepAdaptor_Curve)& AC) { - const Standard_Real f = AC.FirstParameter(); - const Standard_Real l = AC.LastParameter(); - Handle(Geom_Circle) circle = Handle(Geom_Circle)::DownCast(AC.Curve().Curve()); - gp_Pnt start = AC.Value(f); - gp_Pnt end = AC.Value(l); - gp_Pnt center = AC.Circle().Location(); - gp_Ax3 plane = AC.Circle().Position(); + const Standard_Real f = AC->FirstParameter(); + const Standard_Real l = AC->LastParameter(); + Handle(Geom_Circle) circle = Handle(Geom_Circle)::DownCast(AC->Curve()->Curve()); + gp_Pnt start = AC->Value(f); + gp_Pnt end = AC->Value(l); + gp_Pnt center = AC->Circle().Location(); + gp_Ax3 plane = AC->Circle().Position(); // Get point on circle at half angle gp_Pnt m; @@ -174,8 +174,8 @@ void ChFi2d_AnaFilletAlgo::Init(const TopoDS_Wire& theWire, const gp_Pln& thePla throw Standard_TypeMismatch("The algorithm expects a wire consisting of two linear or circular edges."); // Left neighbour. - BRepAdaptor_Curve AC1(e1); - if (AC1.GetType() != GeomAbs_Line && AC1.GetType() != GeomAbs_Circle) + Handle(BRepAdaptor_Curve) AC1 = new BRepAdaptor_Curve(e1); + if (AC1->GetType() != GeomAbs_Line && AC1->GetType() != GeomAbs_Circle) throw Standard_TypeMismatch("A segment or an arc of circle is expected."); TopoDS_Vertex v1, v2; @@ -191,10 +191,10 @@ void ChFi2d_AnaFilletAlgo::Init(const TopoDS_Wire& theWire, const gp_Pln& thePla p2.Coord(x12, y12); segment1 = true; - if (AC1.GetType() == GeomAbs_Circle) + if (AC1->GetType() == GeomAbs_Circle) { segment1 = false; - gp_Circ c = AC1.Circle(); + gp_Circ c = AC1->Circle(); gp_Pnt2d loc = ProjLib::Project(thePlane, c.Location()); loc.Coord(xc1, yc1); @@ -204,8 +204,8 @@ void ChFi2d_AnaFilletAlgo::Init(const TopoDS_Wire& theWire, const gp_Pln& thePla } // Right neighbour. - BRepAdaptor_Curve AC2(e2); - if (AC2.GetType() != GeomAbs_Line && AC2.GetType() != GeomAbs_Circle) + Handle(BRepAdaptor_Curve) AC2 = new BRepAdaptor_Curve(e2); + if (AC2->GetType() != GeomAbs_Line && AC2->GetType() != GeomAbs_Circle) throw Standard_TypeMismatch("A segment or an arc of circle is expected."); TopExp::Vertices(e2, v1, v2, Standard_True); @@ -220,10 +220,10 @@ void ChFi2d_AnaFilletAlgo::Init(const TopoDS_Wire& theWire, const gp_Pln& thePla p2.Coord(x22, y22); segment2 = true; - if (AC2.GetType() == GeomAbs_Circle) + if (AC2->GetType() == GeomAbs_Circle) { segment2 = false; - gp_Circ c = AC2.Circle(); + gp_Circ c = AC2->Circle(); gp_Pnt2d loc = ProjLib::Project(thePlane, c.Location()); loc.Coord(xc2, yc2); @@ -465,14 +465,14 @@ Standard_Boolean ChFi2d_AnaFilletAlgo::Perform(const Standard_Real radius) if (segment1) { BRepBuilderAPI_MakeEdge mkSegment1; - mkSegment1.Init(AC1.Curve().Curve(), p1, p2); + mkSegment1.Init(AC1.Curve()->Curve(), p1, p2); if (mkSegment1.IsDone()) shrinke1 = mkSegment1.Edge(); } else { BRepBuilderAPI_MakeEdge mkCirc1; - mkCirc1.Init(AC1.Curve().Curve(), p1, p2); + mkCirc1.Init(AC1.Curve()->Curve(), p1, p2); if (mkCirc1.IsDone()) shrinke1 = mkCirc1.Edge(); } @@ -492,14 +492,14 @@ Standard_Boolean ChFi2d_AnaFilletAlgo::Perform(const Standard_Real radius) if (segment2) { BRepBuilderAPI_MakeEdge mkSegment2; - mkSegment2.Init(AC2.Curve().Curve(), p1, p2); + mkSegment2.Init(AC2.Curve()->Curve(), p1, p2); if (mkSegment2.IsDone()) shrinke2 = mkSegment2.Edge(); } else { BRepBuilderAPI_MakeEdge mkCirc2; - mkCirc2.Init(AC2.Curve().Curve(), p1, p2); + mkCirc2.Init(AC2.Curve()->Curve(), p1, p2); if (mkCirc2.IsDone()) shrinke2 = mkCirc2.Edge(); } diff --git a/src/ChFi2d/ChFi2d_Builder.cxx b/src/ChFi2d/ChFi2d_Builder.cxx index 441488344a..2ccc358332 100644 --- a/src/ChFi2d/ChFi2d_Builder.cxx +++ b/src/ChFi2d/ChFi2d_Builder.cxx @@ -897,8 +897,8 @@ TopoDS_Edge ChFi2d_Builder::BuildFilletEdge(const TopoDS_Vertex& V, } // else ... Standard_Real Tol = Precision::Confusion(); - Geom2dGcc_Circ2d2TanRad Fillet(Geom2dGcc_QualifiedCurve(basisC1,Qual1), - Geom2dGcc_QualifiedCurve(basisC2,Qual2), + Geom2dGcc_Circ2d2TanRad Fillet(Geom2dGcc_QualifiedCurve(new Geom2dAdaptor_Curve(basisC1),Qual1), + Geom2dGcc_QualifiedCurve(new Geom2dAdaptor_Curve(basisC2),Qual2), Radius, Tol); if (!Fillet.IsDone() || Fillet.NbSolutions()==0) { status = ChFi2d_ComputationError; diff --git a/src/ChFi2d/ChFi2d_Builder_0.cxx b/src/ChFi2d/ChFi2d_Builder_0.cxx index 5d12686ec6..56c87e4d78 100644 --- a/src/ChFi2d/ChFi2d_Builder_0.cxx +++ b/src/ChFi2d/ChFi2d_Builder_0.cxx @@ -681,7 +681,7 @@ gp_Pnt ComputePoint(const TopoDS_Vertex& V,const TopoDS_Edge& E, p = BRep_Tool::Pnt(v2); } - GeomAdaptor_Curve cc = c.Curve(); + Handle(GeomAdaptor_Curve) cc = c.Curve(); if (p.Distance(c.Value(first)) <= Precision::Confusion()) { GCPnts_AbscissaPoint computePoint(cc, D, first); Param = computePoint.Parameter(); @@ -690,7 +690,7 @@ gp_Pnt ComputePoint(const TopoDS_Vertex& V,const TopoDS_Edge& E, GCPnts_AbscissaPoint computePoint(cc, D, last); Param = computePoint.Parameter(); } - thePoint = cc.Value(Param); + thePoint = cc->Value(Param); return thePoint; } // else ... } // ComputePoint @@ -713,8 +713,8 @@ gp_Pnt ComputePoint(const TopoDS_Face& F, Handle(Geom2d_Curve) c2d; Standard_Real first, last; c2d = BRep_Tool::CurveOnSurface(E, F, first, last); - Geom2dAdaptor_Curve adaptorL(lin2d); - Geom2dAdaptor_Curve adaptorC(c2d); + Handle(Geom2dAdaptor_Curve) adaptorL = new Geom2dAdaptor_Curve(lin2d); + Handle(Geom2dAdaptor_Curve) adaptorC = new Geom2dAdaptor_Curve(c2d); Geom2dInt_GInter Intersection(adaptorL, adaptorC, Precision::PIntersection(), Precision::PIntersection()); diff --git a/src/ChFi3d/ChFi3d.cxx b/src/ChFi3d/ChFi3d.cxx index 82d87ebd62..992048ac4d 100644 --- a/src/ChFi3d/ChFi3d.cxx +++ b/src/ChFi3d/ChFi3d.cxx @@ -259,8 +259,8 @@ Standard_Boolean ChFi3d::IsTangentFaces(const TopoDS_Edge& theEdge, //purpose : calculate the concave face at the neighborhood of the border of // 2 faces. //======================================================================= -Standard_Integer ChFi3d::ConcaveSide(const BRepAdaptor_Surface& S1, - const BRepAdaptor_Surface& S2, +Standard_Integer ChFi3d::ConcaveSide(const Handle(BRepAdaptor_Surface)& S1, + const Handle(BRepAdaptor_Surface)& S2, const TopoDS_Edge& E, TopAbs_Orientation& Or1, TopAbs_Orientation& Or2) @@ -274,8 +274,8 @@ Standard_Integer ChFi3d::ConcaveSide(const BRepAdaptor_Surface& S1, Standard_Real par = 0.691254*first + 0.308746*last; gp_Pnt pt, pt1, pt2; gp_Vec tgE, tgE1, tgE2, ns1, ns2, dint1, dint2; - TopoDS_Face F1 = S1.Face(); - TopoDS_Face F2 = S2.Face(); + TopoDS_Face F1 = S1->Face(); + TopoDS_Face F2 = S2->Face(); //F1.Orientation(TopAbs_FORWARD); //F2.Orientation(TopAbs_FORWARD); @@ -321,12 +321,12 @@ Standard_Integer ChFi3d::ConcaveSide(const BRepAdaptor_Surface& S1, gp_Vec DU1,DV1,DU2,DV2; p2d1 = pc1.Value(par); p2d2 = pc2.Value(par); - S1.D1(p2d1.X(),p2d1.Y(),pt1,DU1,DV1); + S1->D1(p2d1.X(),p2d1.Y(),pt1,DU1,DV1); ns1 = DU1.Crossed(DV1); ns1.Normalize(); if (F1.Orientation() == TopAbs_REVERSED) ns1.Reverse(); - S2.D1(p2d2.X(),p2d2.Y(),pt2,DU2,DV2); + S2->D1(p2d2.X(),p2d2.Y(),pt2,DU2,DV2); ns2 = DU2.Crossed(DV2); ns2.Normalize(); if (F2.Orientation() == TopAbs_REVERSED) @@ -352,14 +352,14 @@ Standard_Integer ChFi3d::ConcaveSide(const BRepAdaptor_Surface& S1, if(dint1.Dot(dint2) < 0.){ //This is a forgotten regularity gp_Vec DDU, DDV, DDUV; - S1.D2(p2d1.X(),p2d1.Y(),pt1,DU1,DV1,DDU,DDV,DDUV); + S1->D2(p2d1.X(),p2d1.Y(),pt1,DU1,DV1,DDU,DDV,DDUV); DU1 += ( DU1 * dint1 < 0) ? -DDU : DDU; DV1 += ( DV1 * dint1 < 0) ? -DDV : DDV; ns1 = DU1.Crossed(DV1); ns1.Normalize(); if (F1.Orientation() == TopAbs_REVERSED) ns1.Reverse(); - S2.D2(p2d2.X(),p2d2.Y(),pt2,DU2,DV2,DDU,DDV,DDUV); + S2->D2(p2d2.X(),p2d2.Y(),pt2,DU2,DV2,DDU,DDV,DDUV); DU2 += ( DU2 * dint2 < 0) ? -DDU : DDU; DV2 += ( DV2 * dint2 < 0) ? -DDV : DDV; ns2 = DU2.Crossed(DV2); @@ -401,11 +401,11 @@ Standard_Integer ChFi3d::ConcaveSide(const BRepAdaptor_Surface& S1, p2d1.SetX(p2d1.X() + u); p2d1.SetY(p2d1.Y() + v); ChFi3d_Coefficient(dint1,DU2,DV2,u,v); p2d2.SetX(p2d2.X() + u); p2d2.SetY(p2d2.Y() + v); - S1.D1(p2d1.X(),p2d1.Y(),pt1,DU1,DV1); + S1->D1(p2d1.X(),p2d1.Y(),pt1,DU1,DV1); ns1 = DU1.Crossed(DV1); if (F1.Orientation() == TopAbs_REVERSED) ns1.Reverse(); - S2.D1(p2d2.X(),p2d2.Y(),pt2,DU2,DV2); + S2->D1(p2d2.X(),p2d2.Y(),pt2,DU2,DV2); ns2 = DU2.Crossed(DV2); if (F2.Orientation() == TopAbs_REVERSED) ns2.Reverse(); diff --git a/src/ChFi3d/ChFi3d.hxx b/src/ChFi3d/ChFi3d.hxx index 6292eb31af..b01faf0be7 100644 --- a/src/ChFi3d/ChFi3d.hxx +++ b/src/ChFi3d/ChFi3d.hxx @@ -59,7 +59,7 @@ public: //! if not, it returns the number of choice of the fillet //! or chamfer corresponding to the orientations calculated //! and to the tangent to the guide line read in E. - Standard_EXPORT static Standard_Integer ConcaveSide (const BRepAdaptor_Surface& S1, const BRepAdaptor_Surface& S2, const TopoDS_Edge& E, TopAbs_Orientation& Or1, TopAbs_Orientation& Or2); + Standard_EXPORT static Standard_Integer ConcaveSide (const Handle(BRepAdaptor_Surface)& S1, const Handle(BRepAdaptor_Surface)& S2, const TopoDS_Edge& E, TopAbs_Orientation& Or1, TopAbs_Orientation& Or2); //! Same as ConcaveSide, but the orientations are //! logically deduced from the result of the call of diff --git a/src/ChFi3d/ChFi3d_Builder_0.cxx b/src/ChFi3d/ChFi3d_Builder_0.cxx index ef17f40eb1..c309ea17c7 100644 --- a/src/ChFi3d/ChFi3d_Builder_0.cxx +++ b/src/ChFi3d/ChFi3d_Builder_0.cxx @@ -366,9 +366,9 @@ ChFiDS_State ChFi3d_EdgeState(TopoDS_Edge* E, i=ChFi3d::ConcaveSide(F[0],F[2],E[1],o11,o12); j=ChFi3d::ConcaveSide(F[1],F[2],E[2],o21,o22); */ - i=ChFi3d::ConcaveSide(F1, F2, E[0], o01, o02); - i=ChFi3d::ConcaveSide(F3, F4, E[1], o11, o12); - j=ChFi3d::ConcaveSide(F5, F6, E[2], o21, o22); + i=ChFi3d::ConcaveSide(new BRepAdaptor_Surface(F1), new BRepAdaptor_Surface(F2), E[0], o01, o02); + i=ChFi3d::ConcaveSide(new BRepAdaptor_Surface(F3), new BRepAdaptor_Surface(F4), E[1], o11, o12); + j=ChFi3d::ConcaveSide(new BRepAdaptor_Surface(F5), new BRepAdaptor_Surface(F6), E[2], o21, o22); if(o01==o11 && o02==o21 && o12==o22) sst = ChFiDS_AllSame; else if(o12==o22 || i ==10 || j ==10) sst = ChFiDS_OnDiff; @@ -403,8 +403,8 @@ GeomAbs_Shape ChFi3d_evalconti(const TopoDS_Edge& /*E*/, //======================================================================= Standard_Boolean ChFi3d_KParticular (const Handle(ChFiDS_Spine)& Spine, const Standard_Integer IE, - const BRepAdaptor_Surface& S1, - const BRepAdaptor_Surface& S2) + const Handle(BRepAdaptor_Surface)& S1, + const Handle(BRepAdaptor_Surface)& S2) { Standard_Boolean bRet; // @@ -420,25 +420,25 @@ Standard_Boolean ChFi3d_KParticular (const Handle(ChFiDS_Spine)& Spine, GeomAbs_CurveType aCT; GeomAbs_SurfaceType aST1, aST2; // - aST1=S1.GetType(); - aST2=S2.GetType(); + aST1=S1->GetType(); + aST2=S2->GetType(); bIsPlane1=(aST1==GeomAbs_Plane); bIsPlane2=(aST2==GeomAbs_Plane); if (!(bIsPlane1 || bIsPlane2)) { return !bRet; } // - const BRepAdaptor_Surface& aS1=(bIsPlane1)? S1 : S2; - const BRepAdaptor_Surface& aS2=(bIsPlane1)? S2 : S1; - aST1=aS1.GetType(); - aST2=aS2.GetType(); + const Handle(BRepAdaptor_Surface)& aS1=(bIsPlane1)? S1 : S2; + const Handle(BRepAdaptor_Surface)& aS2=(bIsPlane1)? S2 : S1; + aST1=aS1->GetType(); + aST2=aS2->GetType(); // if (!(aST2==GeomAbs_Plane || aST2==GeomAbs_Cylinder || aST2==GeomAbs_Cone)) { return !bRet; } // - const BRepAdaptor_Curve& bc = Spine->CurrentElementarySpine(IE); - aCT = bc.GetType(); + const Handle(BRepAdaptor_Curve)& bc = Spine->CurrentElementarySpine(IE); + aCT = bc->GetType(); if (!(aCT==GeomAbs_Line || aCT==GeomAbs_Circle)) { return !bRet; } @@ -451,8 +451,8 @@ Standard_Boolean ChFi3d_KParticular (const Handle(ChFiDS_Spine)& Spine, } } else if (aST2==GeomAbs_Cylinder) { - const gp_Dir aD1=aS1.Plane().Axis().Direction(); - const gp_Dir aD2=aS2.Cylinder().Axis().Direction(); + const gp_Dir aD1=aS1->Plane().Axis().Direction(); + const gp_Dir aD2=aS2->Cylinder().Axis().Direction(); // if (aCT==GeomAbs_Line && aD1.IsNormal(aD2, aPA)) { return bRet; @@ -462,8 +462,8 @@ Standard_Boolean ChFi3d_KParticular (const Handle(ChFiDS_Spine)& Spine, } } else if(aST2==GeomAbs_Cone) { - const gp_Dir aD1=aS1.Plane().Axis().Direction(); - const gp_Dir aD2=aS2.Cone().Axis().Direction(); + const gp_Dir aD1=aS1->Plane().Axis().Direction(); + const gp_Dir aD2=aS2->Cone().Axis().Direction(); if (aCT == GeomAbs_Circle && aD1.IsParallel(aD2, aPA)) { return bRet; } @@ -476,21 +476,21 @@ Standard_Boolean ChFi3d_KParticular (const Handle(ChFiDS_Spine)& Spine, //purpose : Resize the limits of surface adjacent to the given box // Useful for intersections with known extremities. //======================================================================= -void ChFi3d_BoundFac(BRepAdaptor_Surface& S, +void ChFi3d_BoundFac(const Handle(BRepAdaptor_Surface)& S, const Standard_Real uumin, const Standard_Real uumax, const Standard_Real vvmin, const Standard_Real vvmax, const Standard_Boolean checknaturalbounds) { - ChFi3d_BoundSrf(S.ChangeSurface(), uumin,uumax,vvmin,vvmax,checknaturalbounds); + ChFi3d_BoundSrf(S->Surface(), uumin,uumax,vvmin,vvmax,checknaturalbounds); } //======================================================================= //function : ChFi3d_BoundSrf //purpose : Resize the limits of surface adjacent to the given box // Useful for intersections with known extremities. //======================================================================= -void ChFi3d_BoundSrf(GeomAdaptor_Surface& S, +void ChFi3d_BoundSrf(const Handle(GeomAdaptor_Surface)& S, const Standard_Real uumin, const Standard_Real uumax, const Standard_Real vvmin, @@ -498,7 +498,7 @@ void ChFi3d_BoundSrf(GeomAdaptor_Surface& S, const Standard_Boolean checknaturalbounds) { Standard_Real umin = uumin, umax = uumax, vmin = vvmin, vmax = vvmax; - Handle(Geom_Surface) surface = S.Surface(); + Handle(Geom_Surface) surface = S->Surface(); Handle(Geom_RectangularTrimmedSurface) trs = Handle(Geom_RectangularTrimmedSurface)::DownCast(surface); if(!trs.IsNull()) surface = trs->BasisSurface(); @@ -516,8 +516,8 @@ void ChFi3d_BoundSrf(GeomAdaptor_Surface& S, //It is supposed that box uv is not null in at least //one direction. - Standard_Real scalu = S.UResolution(1.); - Standard_Real scalv = S.VResolution(1.); + Standard_Real scalu = S->UResolution(1.); + Standard_Real scalv = S->VResolution(1.); Standard_Real step3du = Stepu/scalu; Standard_Real step3dv = Stepv/scalv; @@ -533,10 +533,10 @@ void ChFi3d_BoundSrf(GeomAdaptor_Surface& S, Standard_Real vv1 = vmin - Stepv; Standard_Real vv2 = vmax + Stepv; if(checknaturalbounds) { - if(!S.IsUPeriodic()) {uu1 = Max(uu1,u1); uu2 = Min(uu2,u2);} - if(!S.IsVPeriodic()) {vv1 = Max(vv1,v1); vv2 = Min(vv2,v2);} + if(!S->IsUPeriodic()) {uu1 = Max(uu1,u1); uu2 = Min(uu2,u2);} + if(!S->IsVPeriodic()) {vv1 = Max(vv1,v1); vv2 = Min(vv2,v2);} } - S.Load(surface,uu1,uu2,vv1,vv2); + S->Load(surface,uu1,uu2,vv1,vv2); } //======================================================================= //function : ChFi3d_InterPlaneEdge @@ -894,8 +894,8 @@ Standard_Boolean ChFi3d_IntTraces(const Handle(ChFiDS_SurfData)& fd1, const Standard_Boolean Check2dDistance, const Standard_Boolean enlarge) { - Geom2dAdaptor_Curve C1; - Geom2dAdaptor_Curve C2; + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(); // pcurves are enlarged to be sure that there is intersection // additionally all periodic curves are taken and points on // them are filtered using a specific criterion. @@ -912,9 +912,9 @@ Standard_Boolean ChFi3d_IntTraces(const Handle(ChFiDS_SurfData)& fd1, if(isper1) { Handle(Geom2d_TrimmedCurve) tr1 = Handle(Geom2d_TrimmedCurve)::DownCast(pcf1); if(!tr1.IsNull()) pcf1 = tr1->BasisCurve(); - C1.Load(pcf1); + C1->Load(pcf1); } - else C1.Load(pcf1,first-delta,last+delta); + else C1->Load(pcf1,first-delta,last+delta); Standard_Real first1 = pcf1->FirstParameter(), last1 = pcf1->LastParameter(); first = fd2->Interference(jf2).FirstParameter(); @@ -928,9 +928,9 @@ Standard_Boolean ChFi3d_IntTraces(const Handle(ChFiDS_SurfData)& fd1, if(isper2) { Handle(Geom2d_TrimmedCurve) tr2 = Handle(Geom2d_TrimmedCurve)::DownCast(pcf2); if(!tr2.IsNull()) pcf2 = tr2->BasisCurve(); - C2.Load(pcf2); + C2->Load(pcf2); } - else C2.Load(fd2->Interference(jf2).PCurveOnFace(),first-delta,last+delta); + else C2->Load(fd2->Interference(jf2).PCurveOnFace(),first-delta,last+delta); Standard_Real first2 = pcf2->FirstParameter(), last2 = pcf2->LastParameter(); IntRes2d_IntersectionPoint int2d; @@ -1400,10 +1400,9 @@ Handle(GeomFill_Boundary) ChFi3d_mkbound(const Handle(Adaptor3d_Surface)& HS, const Standard_Boolean isfreeboundary) { Handle(Geom2dAdaptor_Curve) HC = new Geom2dAdaptor_Curve(curv); - Adaptor3d_CurveOnSurface COnS(HC,HS); + Handle(Adaptor3d_CurveOnSurface) COnS = new Adaptor3d_CurveOnSurface(HC,HS); if (isfreeboundary) { - Handle(Adaptor3d_CurveOnSurface) HCOnS = new Adaptor3d_CurveOnSurface(COnS); - return new GeomFill_SimpleBound(HCOnS,t3d,ta); + return new GeomFill_SimpleBound(COnS,t3d,ta); } return new GeomFill_BoundWithSurf(COnS,t3d,ta); } @@ -1656,9 +1655,9 @@ void ChFi3d_ComputeArete(const ChFiDS_CommonPoint& P1, GeomAdaptor_Surface AS(Surf); Handle(GeomAdaptor_Surface) AHS = new GeomAdaptor_Surface(AS); - Adaptor3d_CurveOnSurface Cs(AHC,AHS); - Pardeb = Cs.FirstParameter(); - Parfin = Cs.LastParameter(); + Handle(Adaptor3d_CurveOnSurface) Cs = new Adaptor3d_CurveOnSurface(AHC,AHS); + Pardeb = Cs->FirstParameter(); + Parfin = Cs->LastParameter(); Standard_Real avtol; GeomLib::BuildCurve3d(tol3d,Cs,Pardeb,Parfin,C3d,tolreached,avtol); } @@ -2750,10 +2749,10 @@ void ChFi3d_StripeEdgeInter (const Handle(ChFiDS_Stripe)& theStripe1, // Do not waste time on degenerates continue; // Examine for intersections - Geom2dAdaptor_Curve aPCurve1 (aFI1.PCurveOnFace(), + Handle(Geom2dAdaptor_Curve) aPCurve1 = new Geom2dAdaptor_Curve(aFI1.PCurveOnFace(), aFI1.FirstParameter(), aFI1.LastParameter()); - Geom2dAdaptor_Curve aPCurve2 (aFI2.PCurveOnFace(), + Handle(Geom2dAdaptor_Curve) aPCurve2 = new Geom2dAdaptor_Curve(aFI2.PCurveOnFace(), aFI2.FirstParameter(), aFI2.LastParameter()); anIntersector.Perform (aPCurve1, @@ -2885,7 +2884,7 @@ Handle(Geom_Surface) trsfsurf(const Handle(Adaptor3d_Surface)& HS, Handle(BRepAdaptor_Surface) hbs = Handle(BRepAdaptor_Surface)::DownCast(HS); Handle(GeomAdaptor_Surface) hgs = Handle(GeomAdaptor_Surface)::DownCast(HS); if(!hbs.IsNull()) { - res = hbs->Surface().Surface(); + res = hbs->Surface()->Surface(); gp_Trsf trsf = hbs->Trsf(); res = Handle(Geom_Surface)::DownCast(res->Transformed(trsf)); } @@ -3537,12 +3536,12 @@ void ChFi3d_ComputesIntPC (const ChFiDS_FaceInterference& Fi1, Min(0.1,0.05*(Fi1.LastParameter() - Fi1.FirstParameter())); Handle(Geom2dAdaptor_Curve) hc2d1 = new Geom2dAdaptor_Curve(Fi1.PCurveOnSurf(),UInt1-delt1,UInt1+delt1); - Adaptor3d_CurveOnSurface cons1(hc2d1,HS1); + Handle(Adaptor3d_CurveOnSurface) cons1 = new Adaptor3d_CurveOnSurface(hc2d1,HS1); Standard_Real delt2 = Min(0.1,0.05*(Fi2.LastParameter() - Fi2.FirstParameter())); Handle(Geom2dAdaptor_Curve) hc2d2 = new Geom2dAdaptor_Curve(Fi2.PCurveOnSurf(),UInt2-delt2,UInt2+delt2); - Adaptor3d_CurveOnSurface cons2(hc2d2,HS2); + Handle(Adaptor3d_CurveOnSurface) cons2 = new Adaptor3d_CurveOnSurface(hc2d2,HS2); Extrema_LocateExtCC ext(cons1,cons2,UInt1,UInt2); if(ext.IsDone()) { Standard_Real dist2 = ext.SquareDistance(); @@ -3900,8 +3899,8 @@ void ChFi3d_PerformElSpine(Handle(ChFiDS_ElSpine)& HES, cepadur = 0; E = (IsOffset)? Spine->OffsetEdges(IF) : Spine->Edges(IF); Bof = BRepLib::BuildCurve3d(E); - const BRepAdaptor_Curve& edc = Spine->CurrentElementarySpine(IF); - tolpared = edc.Resolution(tol); + const Handle(BRepAdaptor_Curve)& edc = Spine->CurrentElementarySpine(IF); + tolpared = edc->Resolution(tol); Cv = BRep_Tool::Curve(E, First, Last); //Add vertex with tangent if (ES.IsPeriodic()) @@ -4112,7 +4111,7 @@ void ChFi3d_PerformElSpine(Handle(ChFiDS_ElSpine)& HES, // Traitement des Extremites Standard_Integer caredeb, carefin; Standard_Real LocalWL, LocalWF, Angle; - GeomAdaptor_Curve gacurve; + Handle(GeomAdaptor_Curve) gacurve = new GeomAdaptor_Curve(); Handle(Geom_BSplineCurve) newc; // caredeb = 0; @@ -4135,7 +4134,7 @@ void ChFi3d_PerformElSpine(Handle(ChFiDS_ElSpine)& HES, Handle(Geom_BoundedCurve) anExtCurve = BSpline; GeomLib::ExtendCurveToPoint (anExtCurve, Bout, icont, Standard_False); newc = Handle(Geom_BSplineCurve)::DownCast (anExtCurve); - gacurve.Load(newc); + gacurve->Load(newc); GCPnts_AbscissaPoint GCP(gacurve,-rabdist,Wrefdeb,WF); if(GCP.IsDone()) { WF = GCP.Parameter(); @@ -4161,7 +4160,7 @@ void ChFi3d_PerformElSpine(Handle(ChFiDS_ElSpine)& HES, Handle(Geom_BoundedCurve) anExtCurve = BSpline; GeomLib::ExtendCurveToPoint (anExtCurve, Bout, icont, Standard_True); newc = Handle(Geom_BSplineCurve)::DownCast (anExtCurve); - gacurve.Load(newc); + gacurve->Load(newc); GCPnts_AbscissaPoint GCP(gacurve,rabdist,Wreffin,WL); if(GCP.IsDone()) { WL = GCP.Parameter(); diff --git a/src/ChFi3d/ChFi3d_Builder_0.hxx b/src/ChFi3d/ChFi3d_Builder_0.hxx index 7cce099556..90c1589936 100644 --- a/src/ChFi3d/ChFi3d_Builder_0.hxx +++ b/src/ChFi3d/ChFi3d_Builder_0.hxx @@ -114,17 +114,17 @@ ChFiDS_State ChFi3d_EdgeState(TopoDS_Edge* E, Standard_Boolean ChFi3d_KParticular (const Handle(ChFiDS_Spine)& Spine, const Standard_Integer IE, - const BRepAdaptor_Surface& S1, - const BRepAdaptor_Surface& S2); + const Handle(BRepAdaptor_Surface)& S1, + const Handle(BRepAdaptor_Surface)& S2); -void ChFi3d_BoundFac(BRepAdaptor_Surface& S, +void ChFi3d_BoundFac(const Handle(BRepAdaptor_Surface)& S, const Standard_Real umin, const Standard_Real umax, const Standard_Real vmin, const Standard_Real vmax, const Standard_Boolean checknaturalbounds = Standard_True); -void ChFi3d_BoundSrf(GeomAdaptor_Surface& S, +void ChFi3d_BoundSrf(const Handle(GeomAdaptor_Surface)& S, const Standard_Real umin, const Standard_Real umax, const Standard_Real vmin, diff --git a/src/ChFi3d/ChFi3d_Builder_1.cxx b/src/ChFi3d/ChFi3d_Builder_1.cxx index d8f9df9ce1..21b6b6dbd9 100644 --- a/src/ChFi3d/ChFi3d_Builder_1.cxx +++ b/src/ChFi3d/ChFi3d_Builder_1.cxx @@ -146,18 +146,18 @@ static void ConcatCurves(TColGeom_SequenceOfCurve& theCurves, static TopoDS_Edge MakeOffsetEdge(const TopoDS_Edge& theEdge, const Standard_Real Distance, - const BRepAdaptor_Surface& S1, - const BRepAdaptor_Surface& S2) + const Handle(BRepAdaptor_Surface)& S1, + const Handle(BRepAdaptor_Surface)& S2) { TopoDS_Edge OffsetEdge; - TopoDS_Face F1 = S1.Face(); - TopoDS_Face F2 = S2.Face(); + TopoDS_Face F1 = S1->Face(); + TopoDS_Face F2 = S2->Face(); Handle(Geom_Surface) GS1 = BRep_Tool::Surface(F1); Handle(Geom_Surface) TrGS1 = new Geom_RectangularTrimmedSurface(GS1, - S1.FirstUParameter(), S1.LastUParameter(), - S1.FirstVParameter(), S1.LastVParameter()); + S1->FirstUParameter(), S1->LastUParameter(), + S1->FirstVParameter(), S1->LastVParameter()); Standard_Real Offset = -Distance; if (F1.Orientation() == TopAbs_REVERSED) Offset = Distance; @@ -168,8 +168,8 @@ static TopoDS_Edge MakeOffsetEdge(const TopoDS_Edge& theEdge, Handle(Geom_Surface) GS2 = BRep_Tool::Surface(F2); Handle(Geom_Surface) TrGS2 = new Geom_RectangularTrimmedSurface(GS2, - S2.FirstUParameter(), S2.LastUParameter(), - S2.FirstVParameter(), S2.LastVParameter()); + S2->FirstUParameter(), S2->LastUParameter(), + S2->FirstVParameter(), S2->LastVParameter()); GeomInt_IntSS Intersector(OffsetTrGS1, TrGS2, Precision::Confusion()); if (!Intersector.IsDone() || Intersector.NbLines() == 0) { @@ -194,7 +194,7 @@ static TopoDS_Edge MakeOffsetEdge(const TopoDS_Edge& theEdge, Standard_Integer imin = 1; for (Standard_Integer i = 1; i <= NewCurves.Length(); i++) { - GeomAdaptor_Curve GAcurve(NewCurves(i)); + Handle(GeomAdaptor_Curve) GAcurve = new GeomAdaptor_Curve(NewCurves(i)); Extrema_ExtPC Projector(Ends[0], GAcurve); if (!Projector.IsDone() || Projector.NbExt() == 0) continue; @@ -215,7 +215,7 @@ static TopoDS_Edge MakeOffsetEdge(const TopoDS_Edge& theEdge, return OffsetEdge; } //Projection of extremities onto - GeomAdaptor_Curve GAcurve(IntCurve); + Handle(GeomAdaptor_Curve) GAcurve = new GeomAdaptor_Curve(IntCurve); Standard_Real Params [2]; for (Standard_Integer ind_end = 0; ind_end < 2; ind_end++) { @@ -224,8 +224,8 @@ static TopoDS_Edge MakeOffsetEdge(const TopoDS_Edge& theEdge, Extrema_ExtPC Projector(Ends[ind_end], GAcurve); Standard_Real param[4], dist[4]; gp_Pnt Pnt[4]; - param[1] = GAcurve.FirstParameter(); - param[2] = GAcurve.LastParameter(); + param[1] = GAcurve->FirstParameter(); + param[2] = GAcurve->LastParameter(); Projector.TrimmedSquareDistances(dist[1], dist[2], Pnt[1], Pnt[2]); dist[3] = RealLast(); if (Projector.IsDone() && Projector.NbExt() > 0) @@ -247,7 +247,7 @@ static TopoDS_Edge MakeOffsetEdge(const TopoDS_Edge& theEdge, Params[ind_end] = param[imin]; //Projector.Point(imin).Parameter(); } if (aBAcurve.IsClosed()/*HGuide->IsPeriodic()*//*HGuide->IsClosed()*/) - Params[1] = GAcurve.LastParameter(); //temporary + Params[1] = GAcurve->LastParameter(); //temporary if (Params[0] > Params[1]) { Standard_Boolean IsClosed = Standard_False; @@ -630,7 +630,7 @@ static Standard_Boolean TangentExtremity(const TopoDS_Vertex& V, gp_Vec n1, n2;// gp_Pnt pt1,pt2; Handle(Geom2d_Curve) pc1 = BRep_Tool::CurveOnSurface(e1,f1,f,l); pc1->Value(p1).Coord(u,v); - BRepLProp_SLProps theProp1 (*hs1, u, v, 1, Eps); + BRepLProp_SLProps theProp1 (hs1, u, v, 1, Eps); if (theProp1.IsNormalDefined()) { n1.SetXYZ(theProp1.Normal().XYZ()); if (O1 == TopAbs_REVERSED) n1.Reverse(); @@ -640,7 +640,7 @@ static Standard_Boolean TangentExtremity(const TopoDS_Vertex& V, Handle(Geom2d_Curve) pc2 = BRep_Tool::CurveOnSurface(e2,f2,f,l); pc2->Value(p2).Coord(u,v); - BRepLProp_SLProps theProp2 (*hs2, u, v, 1, Eps); + BRepLProp_SLProps theProp2 (hs2, u, v, 1, Eps); if (theProp2.IsNormalDefined()) { n2.SetXYZ(theProp2.Normal().XYZ()); if(O2 == TopAbs_REVERSED) n2.Reverse(); @@ -851,8 +851,8 @@ Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spin Spine->SetTypeOfConcavity(TypeOfConcavity); Standard_Boolean ToRestrict = (Offset > 0)? Standard_True : Standard_False; - BRepAdaptor_Surface Sb1(ff1, ToRestrict); - BRepAdaptor_Surface Sb2(ff2, ToRestrict); + Handle(BRepAdaptor_Surface) Sb1 = new BRepAdaptor_Surface(ff1, ToRestrict); + Handle(BRepAdaptor_Surface) Sb2 = new BRepAdaptor_Surface(ff2, ToRestrict); if (Offset > 0) { TopoDS_Edge OffsetEdge = MakeOffsetEdge(Ec, Offset, Sb1, Sb2); @@ -947,7 +947,8 @@ Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spin myEdgeFirstFace.Bind(Ec, CurF1); if (Offset > 0) { - BRepAdaptor_Surface CurSb1(CurF1), CurSb2(CurF2); + Handle(BRepAdaptor_Surface) CurSb1 = new BRepAdaptor_Surface(CurF1); + Handle(BRepAdaptor_Surface) CurSb2 = new BRepAdaptor_Surface(CurF2); TopoDS_Edge anOffsetEdge = MakeOffsetEdge(Ec, Offset, CurSb1, CurSb2); anOffsetEdge.Orientation(Or1); Spine->SetOffsetEdges(anOffsetEdge); @@ -1033,7 +1034,8 @@ Standard_Boolean ChFi3d_Builder::PerformElement(const Handle(ChFiDS_Spine)& Spin myEdgeFirstFace.Bind(Ec, CurF1); if (Offset > 0) { - BRepAdaptor_Surface CurSb1(CurF1), CurSb2(CurF2); + Handle(BRepAdaptor_Surface) CurSb1 = new BRepAdaptor_Surface(CurF1); + Handle(BRepAdaptor_Surface) CurSb2 = new BRepAdaptor_Surface(CurF2); TopoDS_Edge anOffsetEdge = MakeOffsetEdge(Ec, Offset, CurSb1, CurSb2); anOffsetEdge.Orientation(Or1); Spine->PutInFirstOffset(anOffsetEdge); diff --git a/src/ChFi3d/ChFi3d_Builder_2.cxx b/src/ChFi3d/ChFi3d_Builder_2.cxx index 04f981f39e..b8f9388a93 100644 --- a/src/ChFi3d/ChFi3d_Builder_2.cxx +++ b/src/ChFi3d/ChFi3d_Builder_2.cxx @@ -132,7 +132,7 @@ static void ChFi3d_CoupeParPlan (const ChFiDS_CommonPoint & compoint1, Handle(GeomAdaptor_Surface) HPlan=new GeomAdaptor_Surface(Plan); Handle(Geom2d_Curve) C2dint2; TColStd_Array1OfReal Pdeb(1,4),Pfin(1,4); - GeomAdaptor_Surface AS(Plan); + Handle(GeomAdaptor_Surface) AS = new GeomAdaptor_Surface(Plan); Extrema_ExtPS ext(P1,AS,1.e-3,1.e-3); Extrema_ExtPS ext1 (P2,AS,1.e-3,1.e-3); Standard_Real u1,v1; @@ -275,12 +275,12 @@ static Standard_Boolean BonVoisin(const gp_Pnt& Point, static Standard_Boolean Projection(Extrema_ExtPC& PExt, const gp_Pnt& P, - const Adaptor3d_Curve& C, + const Handle(Adaptor3d_Curve)& C, Standard_Real& W, Standard_Real Tol) { Standard_Real Dist2, daux2; - Dist2 = C.Value(W).SquareDistance(P); + Dist2 = C->Value(W).SquareDistance(P); // It is checked if it is not already a solution if (Dist2 < Tol * Tol) @@ -291,7 +291,7 @@ static Standard_Boolean Projection(Extrema_ExtPC& PExt, // On essai une resolution initialise Extrema_LocateExtPC ext(P,C,W,Tol/10); if(ext.IsDone()) { - daux2 = C.Value(ext.Point().Parameter()).SquareDistance(P); + daux2 = C->Value(ext.Point().Parameter()).SquareDistance(P); if (daux2 InterferenceOnS1().Parameter(isfirst); - const BRepAdaptor_Curve& bc = Spine->CurrentElementarySpine(iedge); + const Handle(BRepAdaptor_Curve)& bc = Spine->CurrentElementarySpine(iedge); if(Spine->Edges(iedge).Orientation() == TopAbs_FORWARD) - bc.D1(wtg+bc.FirstParameter(),ped,ded); + bc->D1(wtg+bc->FirstParameter(),ped,ded); else{ - bc.D1(-wtg+bc.LastParameter(),ped,ded); + bc->D1(-wtg+bc->LastParameter(),ped,ded); ded.Reverse(); } ded.Normalize(); @@ -690,7 +690,8 @@ Standard_Boolean ChFi3d_Builder::StripeOrientations Standard_Integer& ChoixConge) const { //TopTools_ListIteratorOfListOfShape It; - BRepAdaptor_Surface Sb1,Sb2; + Handle(BRepAdaptor_Surface) Sb1 = new BRepAdaptor_Surface(); + Handle(BRepAdaptor_Surface) Sb2 = new BRepAdaptor_Surface(); TopAbs_Orientation Of1,Of2; TopoDS_Face ff1,ff2; TopoDS_Edge anEdge = Spine->Edges(1); @@ -700,10 +701,10 @@ Standard_Boolean ChFi3d_Builder::StripeOrientations { TopoDS_Face TmpFace = ff1; ff1 = ff2; ff2 = TmpFace; } Of1 = ff1.Orientation(); ff1.Orientation(TopAbs_FORWARD); - Sb1.Initialize(ff1); + Sb1->Initialize(ff1); Of2 = ff2.Orientation(); ff2.Orientation(TopAbs_FORWARD); - Sb2.Initialize(ff2); + Sb2->Initialize(ff2); ChoixConge = ChFi3d::ConcaveSide(Sb1,Sb2,Spine->Edges(1), Or1,Or2); @@ -760,7 +761,6 @@ void ChFi3d_Builder::StartSol(const Handle(ChFiDS_Stripe)& Stripe, Standard_Real& First) const { Handle(ChFiDS_Spine)& Spine = Stripe->ChangeSpine(); - ChFiDS_ElSpine& els = *HGuide; Standard_Integer nbed = Spine->NbEdges(); Standard_Integer nbessaimax = 3*nbed; if (nbessaimax < 10) nbessaimax = 10; @@ -785,7 +785,7 @@ void ChFi3d_Builder::StartSol(const Handle(ChFiDS_Stripe)& Stripe, math_Vector SolDep(1,4); Handle(Geom2d_Curve) PC; Extrema_ExtPC PExt; - PExt.Initialize(els, + PExt.Initialize(HGuide, Spine->FirstParameter(1), Spine->LastParameter(nbed), Precision::Confusion()); @@ -845,10 +845,10 @@ void ChFi3d_Builder::StartSol(const Handle(ChFiDS_Stripe)& Stripe, SolDep(1) = P1.X(); SolDep(2) = P1.Y(); SolDep(3) = P2.X(); SolDep(4) = P2.Y(); - const BRepAdaptor_Curve& Ced = Spine->CurrentElementarySpine(iedge); - gp_Pnt pnt = Ced.Value(woned); + const Handle(BRepAdaptor_Curve)& Ced = Spine->CurrentElementarySpine(iedge); + gp_Pnt pnt = Ced->Value(woned); - if (Projection(PExt, pnt, els, w, tolesp) && + if (Projection(PExt, pnt, HGuide, w, tolesp) && PerformFirstSection(Spine,HGuide,Choix,HS1,HS2, I1,I2,w,SolDep,Pos1,Pos2)) { P1.SetCoord(SolDep(1),SolDep(2)); @@ -889,12 +889,12 @@ void ChFi3d_Builder::StartSol(const Handle(ChFiDS_Stripe)& Stripe, I2->Initialize(HSon2); SolDep(1) = P1.X(); SolDep(2) = P1.Y(); SolDep(3) = P2.X(); SolDep(4) = P2.Y(); - const BRepAdaptor_Curve& Ced = Spine->CurrentElementarySpine(iedge); - gp_Pnt pnt = Ced.Value(woned); + const Handle(BRepAdaptor_Curve)& Ced = Spine->CurrentElementarySpine(iedge); + gp_Pnt pnt = Ced->Value(woned); // Extrema_LocateExtPC ext(pnt,els,w,1.e-8); // if(ext.IsDone()){ // w = ext.Point().Parameter(); - if (Projection(PExt, pnt, els, w, tolesp)) { + if (Projection(PExt, pnt, HGuide, w, tolesp)) { PerformFirstSection(Spine,HGuide,Choix,HS1,HS2, I1,I2,w,SolDep,Pos1,Pos2); gp_Pnt P; @@ -966,7 +966,7 @@ static void ChFi3d_BuildPlane (TopOpeBRepDS_DataStructure& DStr, Hc = BRep_Tool::CurveOnSurface (SD->Vertex(isfirst,ons).Arc(),F,u,v); Hc->Value(SD->Vertex(isfirst,ons).ParameterOnArc()).Coord(u,v); - BRepLProp_SLProps theProp (*HS, u, v, 1, 1.e-12); + BRepLProp_SLProps theProp (HS, u, v, 1, 1.e-12); if (theProp.IsNormalDefined()) { P = theProp.Value(); Handle(Geom_Plane) Pln = new Geom_Plane(P, theProp.Normal()); @@ -2374,7 +2374,7 @@ void ChFi3d_Builder::PerformSetOfKPart(Handle(ChFiDS_Stripe)& Stripe, ConexFaces(Spine,iedge,HS1,HS2); - if (ChFi3d_KParticular (Spine, iedge, *HS1, *HS2)) { + if (ChFi3d_KParticular (Spine, iedge, HS1, HS2)) { intf = ((iedge == 1) && !Spine->IsPeriodic()); intl = ((iedge == Spine->NbEdges()) && !Spine->IsPeriodic()); Or1 = HS1->Face().Orientation(); @@ -2972,7 +2972,7 @@ void ChFi3d_Builder::PerformSetOfKGen(Handle(ChFiDS_Stripe)& Stripe, Standard_Real distinit = pv.Distance(pelsapp); std::cout<<"distance psp/papp : "<Value(prefarc); Standard_Real distini = point.Distance(Ctg->Value(preftg)); if (distini <= Precision::PConfusion()) { parc = prefarc; @@ -267,7 +267,7 @@ static void CompParam(Geom2dAdaptor_Curve Carc, IntRes2d_IntersectionPoint int2d; Geom2dInt_GInter Intersection; Standard_Integer nbpt,nbseg; - Intersection.Perform(Geom2dAdaptor_Curve(Ctg),Carc, + Intersection.Perform(new Geom2dAdaptor_Curve(Ctg), Carc, Precision::PIntersection(), Precision::PIntersection()); @@ -728,8 +728,8 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, #endif Standard_Real UFirst,ULast,VFirst,VLast,pppdeb,pppfin; Surf->Bounds(UFirst,ULast,VFirst,VLast); - BRepAdaptor_Curve2d brc; - BRepAdaptor_Curve CArc; + Handle(BRepAdaptor_Curve2d) brc = new BRepAdaptor_Curve2d(); + Handle(BRepAdaptor_Curve) CArc = new BRepAdaptor_Curve(); Handle(BRepAdaptor_Surface) BS1 = Handle(BRepAdaptor_Surface)::DownCast(S1); Handle(BRepAdaptor_Surface) @@ -768,11 +768,11 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, if(Gd1){ TopoDS_Face forwfac = BS1->Face(); forwfac.Orientation(TopAbs_FORWARD); - brc.Initialize(Data->VertexFirstOnS1().Arc(),forwfac); + brc->Initialize(Data->VertexFirstOnS1().Arc(),forwfac); ChFiDS_CommonPoint& V = Data->ChangeVertexFirstOnS1(); - CArc.Initialize(V.Arc()); + CArc->Initialize(V.Arc()); CompParam(brc,PCurveOnFace,uarc,utg, V.ParameterOnArc(), V.Parameter()); - tolcheck = CArc.Value(uarc).Distance(V.Point()); + tolcheck = CArc->Value(uarc).Distance(V.Point()); V.SetArc(tolC1+tolcheck,V.Arc(),uarc,V.TransitionOnArc()); pppdeb = utg; } @@ -781,10 +781,10 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, TopoDS_Face forwfac = BS1->Face(); forwfac.Orientation(TopAbs_FORWARD); ChFiDS_CommonPoint& V = Data->ChangeVertexLastOnS1(); - brc.Initialize(V.Arc(),forwfac); - CArc.Initialize(V.Arc()); + brc->Initialize(V.Arc(),forwfac); + CArc->Initialize(V.Arc()); CompParam(brc,PCurveOnFace,uarc,utg, V.ParameterOnArc(), V.Parameter()); - tolcheck = CArc.Value(uarc).Distance(V.Point()); + tolcheck = CArc->Value(uarc).Distance(V.Point()); V.SetArc(tolC1+tolcheck,V.Arc(),uarc,V.TransitionOnArc()); pppfin = utg; } @@ -820,11 +820,11 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, if(Gd2){ TopoDS_Face forwfac = BS2->Face(); forwfac.Orientation(TopAbs_FORWARD); - brc.Initialize(Data->VertexFirstOnS2().Arc(),forwfac); + brc->Initialize(Data->VertexFirstOnS2().Arc(),forwfac); ChFiDS_CommonPoint& V = Data->ChangeVertexFirstOnS2(); - CArc.Initialize(V.Arc()); + CArc->Initialize(V.Arc()); CompParam(brc,PCurveOnFace,uarc,utg, V.ParameterOnArc(), V.Parameter()); - tolcheck = CArc.Value(uarc).Distance(V.Point()); + tolcheck = CArc->Value(uarc).Distance(V.Point()); V.SetArc(tolC2+tolcheck,V.Arc(),uarc,V.TransitionOnArc()); pppdeb = utg; } @@ -832,11 +832,11 @@ Standard_Boolean ChFi3d_Builder::StoreData(Handle(ChFiDS_SurfData)& Data, if(Gf2){ TopoDS_Face forwfac = BS2->Face(); forwfac.Orientation(TopAbs_FORWARD); - brc.Initialize(Data->VertexLastOnS2().Arc(),forwfac); + brc->Initialize(Data->VertexLastOnS2().Arc(),forwfac); ChFiDS_CommonPoint& V = Data->ChangeVertexLastOnS2(); - CArc.Initialize(V.Arc()); + CArc->Initialize(V.Arc()); CompParam(brc,PCurveOnFace,uarc,utg, V.ParameterOnArc(), V.Parameter()); - tolcheck = CArc.Value(uarc).Distance(V.Point()); + tolcheck = CArc->Value(uarc).Distance(V.Point()); V.SetArc(tolC2+tolcheck,V.Arc(),uarc,V.TransitionOnArc()); pppfin = utg; } diff --git a/src/ChFi3d/ChFi3d_Builder_C1.cxx b/src/ChFi3d/ChFi3d_Builder_C1.cxx index da727d1a35..1065461cb2 100644 --- a/src/ChFi3d/ChFi3d_Builder_C1.cxx +++ b/src/ChFi3d/ChFi3d_Builder_C1.cxx @@ -151,10 +151,10 @@ static Standard_Boolean Update(const Handle(Adaptor3d_Surface)& fb, Standard_Real& wop, const Standard_Real tol) { - Adaptor3d_CurveOnSurface c1(pcfb,fb); + Handle(Adaptor3d_CurveOnSurface) c1 = new Adaptor3d_CurveOnSurface(pcfb,fb); Handle(Geom2d_Curve) pc = fi.PCurveOnSurf(); Handle(Geom2dAdaptor_Curve) hpc = new Geom2dAdaptor_Curve(pc); - Adaptor3d_CurveOnSurface c2(hpc,surf); + Handle(Adaptor3d_CurveOnSurface) c2 = new Adaptor3d_CurveOnSurface(hpc,surf); Extrema_LocateExtCC ext(c1,c2,pared,wop); if (ext.IsDone()) { Standard_Real dist2 = ext.SquareDistance(); @@ -319,7 +319,7 @@ static Standard_Boolean Update(const Handle(Adaptor3d_Surface)& face, const Standard_Boolean isfirst) { if (!cp.IsOnArc()) return 0; - Adaptor3d_CurveOnSurface c1(edonface,face); + Handle(Adaptor3d_CurveOnSurface) c1 = new Adaptor3d_CurveOnSurface(edonface,face); Standard_Real pared = cp.ParameterOnArc(); Standard_Real parltg = fi.Parameter(isfirst); Handle(Geom2d_Curve) pc = fi.PCurveOnSurf(); @@ -329,7 +329,7 @@ static Standard_Boolean Update(const Handle(Adaptor3d_Surface)& face, f = Max(f-delta,pc->FirstParameter()); l = Min(l+delta,pc->LastParameter()); Handle(Geom2dAdaptor_Curve) hpc = new Geom2dAdaptor_Curve(pc,f,l); - Adaptor3d_CurveOnSurface c2(hpc,surf); + Handle(Adaptor3d_CurveOnSurface) c2 = new Adaptor3d_CurveOnSurface(hpc,surf); Extrema_LocateExtCC ext(c1,c2,pared,parltg); if (ext.IsDone()) { @@ -437,12 +437,12 @@ static void ComputeCurve2d (const Handle(Geom_Curve )& Ct, //purpose : //======================================================================= -static void ChFi3d_Recale(BRepAdaptor_Surface& Bs, +static void ChFi3d_Recale(const Handle(BRepAdaptor_Surface)& HBs, gp_Pnt2d& p1, gp_Pnt2d& p2, const Standard_Boolean refon1) { - Handle(Geom_Surface) surf = Bs.ChangeSurface().Surface(); + Handle(Geom_Surface) surf = HBs->Surface()->Surface(); Handle(Geom_RectangularTrimmedSurface) ts = Handle(Geom_RectangularTrimmedSurface)::DownCast(surf); if (!ts.IsNull()) surf = ts->BasisSurface(); @@ -577,9 +577,6 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, Handle(BRepAdaptor_Surface) HBs = new BRepAdaptor_Surface(); Handle(BRepAdaptor_Surface) HBad = new BRepAdaptor_Surface(); Handle(BRepAdaptor_Surface) HBop = new BRepAdaptor_Surface(); - BRepAdaptor_Surface& Bs = *HBs; - BRepAdaptor_Surface& Bad = *HBad; - BRepAdaptor_Surface& Bop = *HBop; Handle(Geom_Curve) Cc; Handle(Geom2d_Curve) Pc,Ps; Standard_Real Ubid,Vbid;//,mu,Mu,mv,Mv; @@ -697,12 +694,12 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, tol=BRep_Tool::Tolerance(Fv); BRE.MakeFace(FFv,Sface,tol); if (prol) { - Bs.Initialize(FFv,Standard_False); + HBs->Initialize(FFv,Standard_False); DStr.SetNewSurface(Fv,Sface); } - else Bs.Initialize(Fv,Standard_False); - Bad.Initialize(Fad); - Bop.Initialize(Fop); + else HBs->Initialize(Fv,Standard_False); + HBad->Initialize(Fad); + HBop->Initialize(Fop); } //in case of OnSame it is necessary to modify the CommonPoint //in the empty and its parameter in the FaceInterference. @@ -747,7 +744,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, PerformIntersectionAtEnd(Index); return; } - Bs.Initialize(Fv); + HBs->Initialize(Fv); Handle(BRepAdaptor_Curve2d) pced = new BRepAdaptor_Curve2d(); pced->Initialize(CV1.Arc(),Fv); Update(HBs,pced,HGs,Fd->ChangeInterferenceOnS1(),CV1,isfirst); @@ -804,7 +801,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, else { pfil2 = Fi2.PCurveOnSurf()->Value(Fi2.Parameter(!isfirst)); } - if (onsame) ChFi3d_Recale(Bs,pfac1,pfac2,(IFadArc == 1)); + if (onsame) ChFi3d_Recale(HBs,pfac1,pfac2,(IFadArc == 1)); Pardeb(1)= pfil1.X(); Pardeb(2) = pfil1.Y(); Pardeb(3)= pfac1.X(); Pardeb(4) = pfac1.Y(); @@ -813,7 +810,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, Standard_Real uu1,uu2,vv1,vv2; ChFi3d_Boite(pfac1,pfac2,uu1,uu2,vv1,vv2); - ChFi3d_BoundFac(Bs,uu1,uu2,vv1,vv2); + ChFi3d_BoundFac(HBs,uu1,uu2,vv1,vv2); if (!ChFi3d_ComputeCurves(HGs,HBs,Pardeb,Parfin,Cc, Ps, @@ -832,8 +829,8 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, //Standard_Real Ubid,Vbid; Handle (Geom_Curve) C=BRep_Tool::Curve(edgecouture,Ubid,Vbid); Handle(Geom_TrimmedCurve) Ctrim=new Geom_TrimmedCurve (C,Ubid,Vbid); - GeomAdaptor_Curve cur1(Ctrim->BasisCurve()); - GeomAdaptor_Curve cur2(Cc); + Handle(GeomAdaptor_Curve) cur1 = new GeomAdaptor_Curve(Ctrim->BasisCurve()); + Handle(GeomAdaptor_Curve) cur2 = new GeomAdaptor_Curve(Cc); Extrema_ExtCC extCC (cur1,cur2); if (extCC.IsDone()&&extCC.NbExt()!=0) { @@ -923,7 +920,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, // 31/01/02 akm vvv : (OCC119) Prevent the builder from creating // intersecting fillets - they are bad. Geom2dInt_GInter anIntersector; - Geom2dAdaptor_Curve aCorkPCurve (Pc, Udeb, Ufin); + Handle(Geom2dAdaptor_Curve) aCorkPCurve = new Geom2dAdaptor_Curve(Pc, Udeb, Ufin); // Take all the interferences with faces from all the stripes // and look if their pcurves intersect our cork pcurve. @@ -938,14 +935,14 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, for (iPart=1; iPart<=aSeqData->Length(); iPart++) { Handle(ChFiDS_SurfData) aData = aSeqData->Value(iPart); - Geom2dAdaptor_Curve anOtherPCurve; + Handle(Geom2dAdaptor_Curve) anOtherPCurve = new Geom2dAdaptor_Curve(); if (IShape == aData->IndexOfS1()) { const Handle(Geom2d_Curve)& aPCurve = aData->InterferenceOnS1().PCurveOnFace(); if(aPCurve.IsNull()) continue; - anOtherPCurve.Load (aPCurve, + anOtherPCurve->Load (aPCurve, aData->InterferenceOnS1().FirstParameter(), aData->InterferenceOnS1().LastParameter()); } @@ -955,7 +952,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, if(aPCurve.IsNull()) continue; - anOtherPCurve.Load (aPCurve, + anOtherPCurve->Load (aPCurve, aData->InterferenceOnS2().FirstParameter(), aData->InterferenceOnS2().LastParameter()); } @@ -964,7 +961,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, // Normal case - no common surface continue; } - if (IsEqual(anOtherPCurve.LastParameter(),anOtherPCurve.FirstParameter())) + if (IsEqual(anOtherPCurve->LastParameter(),anOtherPCurve->FirstParameter())) // Degenerates continue; anIntersector.Perform (aCorkPCurve, anOtherPCurve, @@ -989,7 +986,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, Handle(Geom_TrimmedCurve)::DownCast(DStr.Curve (anOtherIntrf->Geometry()).Curve()); if (anOtherCur.IsNull()) continue; - Geom2dAdaptor_Curve anOtherPCurve (anOtherIntrf->PCurve(), + Handle(Geom2dAdaptor_Curve) anOtherPCurve = new Geom2dAdaptor_Curve(anOtherIntrf->PCurve(), anOtherCur->FirstParameter(), anOtherCur->LastParameter()); anIntersector.Perform (aCorkPCurve, anOtherPCurve, @@ -1222,7 +1219,7 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, throw Standard_ConstructionError ("Failed to get p-curve of edge"); pv1 = Hc->Value(parVtx); pv2 = p2dbout; - ChFi3d_Recale(Bs,pv1,pv2,1); + ChFi3d_Recale(HBs,pv1,pv2,1); TColStd_Array1OfReal Pardeb(1,4),Parfin(1,4); Pardeb(1) = pop1.X(); Pardeb(2) = pop1.Y(); Pardeb(3) = pv1.X(); Pardeb(4) = pv1.Y(); @@ -1230,9 +1227,9 @@ void ChFi3d_Builder::PerformOneCorner(const Standard_Integer Index, Parfin(3) = pv2.X(); Parfin(4) = pv2.Y(); Standard_Real uu1,uu2,vv1,vv2; ChFi3d_Boite(pv1,pv2,uu1,uu2,vv1,vv2); - ChFi3d_BoundFac(Bs,uu1,uu2,vv1,vv2); + ChFi3d_BoundFac(HBs,uu1,uu2,vv1,vv2); ChFi3d_Boite(pop1,pop2,uu1,uu2,vv1,vv2); - ChFi3d_BoundFac(Bop,uu1,uu2,vv1,vv2); + ChFi3d_BoundFac(HBop,uu1,uu2,vv1,vv2); Handle(Geom_Curve) zob3d; Handle(Geom2d_Curve) zob2dop, zob2dv; @@ -1502,17 +1499,17 @@ static Standard_Boolean containE(const TopoDS_Face & F1, // from , check points between and //======================================================================= -static Standard_Boolean IsShrink(const Geom2dAdaptor_Curve& PC, +static Standard_Boolean IsShrink(const Handle(Geom2dAdaptor_Curve)& PC, const Standard_Real Pf, const Standard_Real Pl, const Standard_Real Param, const Standard_Boolean isU, const Standard_Real tol) { - switch (PC.GetType()) { + switch (PC->GetType()) { case GeomAbs_Line: { - gp_Pnt2d P1 = PC.Value(Pf); - gp_Pnt2d P2 = PC.Value(Pl); + gp_Pnt2d P1 = PC->Value(Pf); + gp_Pnt2d P2 = PC->Value(Pl); if (Abs(P1.Coord(isU ? 1 : 2) - Param) <= tol && Abs(P2.Coord(isU ? 1 : 2) - Param) <= tol ) return Standard_True; @@ -1524,7 +1521,7 @@ static Standard_Boolean IsShrink(const Geom2dAdaptor_Curve& PC, math_FunctionSample aSample (Pf,Pl,10); Standard_Integer i; for (i=1; i<=aSample.NbPoints(); i++) { - gp_Pnt2d P = PC.Value(aSample.GetParameter(i)); + gp_Pnt2d P = PC->Value(aSample.GetParameter(i)); if (Abs(P.Coord(isU ? 1 : 2) - Param) > tol ) return Standard_False; } @@ -1683,7 +1680,6 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) ChFiDS_FaceInterference Fi2 = Fd->InterferenceOnS2(); GeomAdaptor_Surface& Gs = *HGs; Handle(BRepAdaptor_Surface) HBs = new BRepAdaptor_Surface(); - BRepAdaptor_Surface& Bs = *HBs; Handle(Geom_Curve) Cc; Handle(Geom2d_Curve) Pc,Ps; Standard_Real Ubid,Vbid; @@ -2138,8 +2134,8 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) Hc1 = BRep_Tool::CurveOnSurface(Edge[0],Face[0],Ubid,Ubid); if (isOnSame1) { // update interference param on Fi1 and point of CV1 - if (prolface[0]) Bs.Initialize(faceprol[0], Standard_False); - else Bs.Initialize(Face[0], Standard_False); + if (prolface[0]) HBs->Initialize(faceprol[0], Standard_False); + else HBs->Initialize(Face[0], Standard_False); const Handle(Geom_Curve)& c3df = DStr.Curve(Fi1.LineIndex()).Curve(); Standard_Real Ufi= Fi2.Parameter(isfirst); ChFiDS_FaceInterference& Fi = Fd->ChangeInterferenceOnS1(); @@ -2175,8 +2171,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) Standard_Real tol=BRep_Tool::Tolerance(F); BRE.MakeFace(faceprol[0],Sfacemoins1,F.Location(),tol); if (!isOnSame1) { - GeomAdaptor_Surface Asurf; - Asurf.Load(Sfacemoins1); + Handle(GeomAdaptor_Surface) Asurf = new GeomAdaptor_Surface(Sfacemoins1); Extrema_ExtPS ext (CV1.Point(),Asurf, tol,tol); Standard_Real uc1,vc1; if (ext.IsDone()) { @@ -2360,8 +2355,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) extend=Standard_True; Standard_Real tol=BRep_Tool::Tolerance(F); BRE.MakeFace(faceprol[nb-1],Sfacemoins1,F.Location(),tol); - GeomAdaptor_Surface Asurf; - Asurf.Load(Sfacemoins1); + Handle(GeomAdaptor_Surface) Asurf = new GeomAdaptor_Surface(Sfacemoins1); Extrema_ExtPS ext (CV2.Point(),Asurf,tol,tol); Standard_Real uc2,vc2; if (ext.IsDone()) { @@ -2384,8 +2378,8 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) if (nb==nbface && isOnSame2) { // update interference param on Fi2 and point of CV2 - if (prolface[nb-1]) Bs.Initialize(faceprol[nb-1]); - else Bs.Initialize(Face[nb-1]); + if (prolface[nb-1]) HBs->Initialize(faceprol[nb-1]); + else HBs->Initialize(Face[nb-1]); const Handle(Geom_Curve)& c3df = DStr.Curve(Fi2.LineIndex()).Curve(); Standard_Real Ufi= Fi1.Parameter(isfirst); ChFiDS_FaceInterference& Fi = Fd->ChangeInterferenceOnS2(); @@ -2414,8 +2408,8 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) } - if (prolface[nb-1]) Bs.Initialize(faceprol[nb-1]); - else Bs.Initialize(Face[nb-1]); + if (prolface[nb-1]) HBs->Initialize(faceprol[nb-1]); + else HBs->Initialize(Face[nb-1]); // offset of parameters if they are not in the same period @@ -2475,7 +2469,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) Standard_Real uu1,uu2,vv1,vv2; ChFi3d_Boite(pfac1,pfac2,uu1,uu2,vv1,vv2); - ChFi3d_BoundFac(Bs,uu1,uu2,vv1,vv2); + ChFi3d_BoundFac(HBs,uu1,uu2,vv1,vv2); ////////////////////////////////////////////////////////////////////// @@ -2622,10 +2616,10 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) gp_Pnt pext; Standard_Real ubid,vbid; pext=BRep_Tool::Pnt(Vtx); - GeomAdaptor_Curve cad; + Handle(GeomAdaptor_Curve) cad = new GeomAdaptor_Curve(); Handle(Geom_Curve) csau; if ( ! (oneintersection1 || oneintersection2)) { - cad.Load(cint); + cad->Load(cint); csau=cint; } else { @@ -2652,7 +2646,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) csau=C1; } } - cad.Load(csau); + cad->Load(csau); } Extrema_ExtPC ext(pext,cad,tolpt); Standard_Real par1, par2, par, ParVtx; @@ -2716,7 +2710,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) DStr.SetNewSurface(Face[nb-1],Sfacemoins1); } //// for periodic 3d curves //// - if (cad.IsPeriodic()) + if (cad->IsPeriodic()) { gp_Pnt2d P2d = BRep_Tool::Parameters( Vtx, Face[0] ); Geom2dAPI_ProjectPointOnCurve Projector( P2d, C2dint1 ); @@ -2783,7 +2777,7 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) } if (checkShrink && - IsShrink(Ps,p1,p2,checkShrParam,isUShrink,Precision::Parametric(tolreached))) + IsShrink(new Geom2dAdaptor_Curve(Ps),p1,p2,checkShrParam,isUShrink,Precision::Parametric(tolreached))) { shrink [nb-1] = 1; // store section face-chamf curve for previous SurfData @@ -2928,7 +2922,8 @@ void ChFi3d_Builder::PerformIntersectionAtEnd(const Standard_Integer Index) const gp_Pnt& Pvert = Pds.Point(); Standard_Real tol = Pds.Tolerance(); - Geom2dAdaptor_Curve PC1(Ps), PC2(PCend); + Handle(Geom2dAdaptor_Curve) PC1 = new Geom2dAdaptor_Curve(Ps); + Handle(Geom2dAdaptor_Curve) PC2 = new Geom2dAdaptor_Curve(PCend); Geom2dInt_GInter Intersector(PC1,PC2,Precision::PConfusion(),Precision::PConfusion()); if (!Intersector.IsDone()) return; for (nb=1; nb <= Intersector.NbPoints(); nb++) { @@ -3192,7 +3187,7 @@ void ChFi3d_Builder::PerformMoreSurfdata(const Standard_Integer Index) Standard_Real aPar=0.; if (isPextFound) { - GeomAdaptor_Curve aCad(aCracc); + Handle(GeomAdaptor_Curve) aCad = new GeomAdaptor_Curve(aCracc); Extrema_ExtPC anExt(aPext, aCad, aTol3d); if (!anExt.IsDone()) @@ -3806,9 +3801,6 @@ void ChFi3d_Builder::IntersectMoreCorner(const Standard_Integer Index) Handle(BRepAdaptor_Surface) HBs = new BRepAdaptor_Surface(); Handle(BRepAdaptor_Surface) HBad = new BRepAdaptor_Surface(); Handle(BRepAdaptor_Surface) HBop = new BRepAdaptor_Surface(); - BRepAdaptor_Surface& Bs = *HBs; - BRepAdaptor_Surface& Bad = *HBad; - BRepAdaptor_Surface& Bop = *HBop; Handle(Geom_Curve) Cc; Handle(Geom2d_Curve) Pc,Ps; Standard_Real Ubid,Vbid;//,mu,Mu,mv,Mv; @@ -3923,12 +3915,12 @@ void ChFi3d_Builder::IntersectMoreCorner(const Standard_Integer Index) tol=BRep_Tool::Tolerance(Fv); BRE.MakeFace(FFv,Sface,tol); if (prol) { - Bs.Initialize(FFv,Standard_False); + HBs->Initialize(FFv,Standard_False); DStr.SetNewSurface(Fv,Sface); } - else Bs.Initialize(Fv,Standard_False); - Bad.Initialize(Fad); - Bop.Initialize(Fop); + else HBs->Initialize(Fv,Standard_False); + HBad->Initialize(Fad); + HBop->Initialize(Fop); } // it is necessary to modify the CommonPoint // in the space and its parameter in FaceInterference. @@ -4028,14 +4020,14 @@ void ChFi3d_Builder::IntersectMoreCorner(const Standard_Integer Index) else{ pfil2 = Fi2.PCurveOnSurf()->Value(Fi2.Parameter(!isfirst)); } - ChFi3d_Recale(Bs,pfac1,pfac2,(IFadArc == 1)); + ChFi3d_Recale(HBs,pfac1,pfac2,(IFadArc == 1)); Pardeb(1)= pfil1.X();Pardeb(2) = pfil1.Y(); Pardeb(3)= pfac1.X();Pardeb(4) = pfac1.Y(); Parfin(1)= pfil2.X();Parfin(2) = pfil2.Y(); Parfin(3)= pfac2.X();Parfin(4) = pfac2.Y(); Standard_Real uu1,uu2,vv1,vv2; ChFi3d_Boite(pfac1,pfac2,uu1,uu2,vv1,vv2); - ChFi3d_BoundFac(Bs,uu1,uu2,vv1,vv2); + ChFi3d_BoundFac(HBs,uu1,uu2,vv1,vv2); if (!ChFi3d_ComputeCurves(HGs,HBs,Pardeb,Parfin,Cc, Ps, @@ -4054,8 +4046,8 @@ void ChFi3d_Builder::IntersectMoreCorner(const Standard_Integer Index) //Standard_Real Ubid,Vbid; Handle (Geom_Curve) C=BRep_Tool::Curve(edgecouture,Ubid,Vbid); Handle(Geom_TrimmedCurve) Ctrim=new Geom_TrimmedCurve (C,Ubid,Vbid); - GeomAdaptor_Curve cur1(Ctrim->BasisCurve()); - GeomAdaptor_Curve cur2(Cc); + Handle(GeomAdaptor_Curve) cur1 = new GeomAdaptor_Curve(Ctrim->BasisCurve()); + Handle(GeomAdaptor_Curve) cur2 = new GeomAdaptor_Curve(Cc); Extrema_ExtCC extCC (cur1,cur2); if (extCC.IsDone()&&extCC.NbExt()!=0) { @@ -4295,7 +4287,7 @@ void ChFi3d_Builder::IntersectMoreCorner(const Standard_Integer Index) //fin modif pv1 = Hc->Value(parVtx); pv2 = p2dbout; - ChFi3d_Recale(Bs,pv1,pv2,1); + ChFi3d_Recale(HBs,pv1,pv2,1); TColStd_Array1OfReal Pardeb(1,4),Parfin(1,4); Pardeb(1) = pop1.X(); Pardeb(2) = pop1.Y(); Pardeb(3) = pv1.X(); Pardeb(4) = pv1.Y(); @@ -4303,9 +4295,9 @@ void ChFi3d_Builder::IntersectMoreCorner(const Standard_Integer Index) Parfin(3) = pv2.X(); Parfin(4) = pv2.Y(); Standard_Real uu1,uu2,vv1,vv2; ChFi3d_Boite(pv1,pv2,uu1,uu2,vv1,vv2); - ChFi3d_BoundFac(Bs,uu1,uu2,vv1,vv2); + ChFi3d_BoundFac(HBs,uu1,uu2,vv1,vv2); ChFi3d_Boite(pop1,pop2,uu1,uu2,vv1,vv2); - ChFi3d_BoundFac(Bop,uu1,uu2,vv1,vv2); + ChFi3d_BoundFac(HBop,uu1,uu2,vv1,vv2); Handle(Geom_Curve) zob3d; Handle(Geom2d_Curve) zob2dop, zob2dv; diff --git a/src/ChFi3d/ChFi3d_Builder_C2.cxx b/src/ChFi3d/ChFi3d_Builder_C2.cxx index 37a13afa21..fd71b927cb 100644 --- a/src/ChFi3d/ChFi3d_Builder_C2.cxx +++ b/src/ChFi3d/ChFi3d_Builder_C2.cxx @@ -222,8 +222,7 @@ Standard_Boolean ChFi3d_Builder::PerformTwoCornerbyInter(const Standard_Integer Handle(Geom_BoundedCurve) C1= Handle(Geom_BoundedCurve)::DownCast(csau); if (! C1.IsNull()) { GeomLib::ExtendCurveToPoint(C1,CP2.Point(),1,Standard_False); - GeomAdaptor_Curve cad; - cad.Load(C1); + Handle(GeomAdaptor_Curve) cad = new GeomAdaptor_Curve(C1); Extrema_ExtPC ext(CP2.Point(),cad,1.e-4); parCP2 = ext.Point(1).Parameter(); } @@ -570,7 +569,7 @@ Standard_Boolean ChFi3d_Builder::PerformTwoCornerbyInter(const Standard_Integer // for the case when two chamfers are on two edges OnSame, // it is necessary to extend the surface carrying F, or at least // not to limit it. - ChFi3d_BoundFac (*HF, uu1, uu2, vv1, vv2, Standard_True); + ChFi3d_BoundFac (HF, uu1, uu2, vv1, vv2, Standard_True); if (!ChFi3d_ComputeCurves(HF,BigHS,Pardeb,Parfin,Gc, PGc1,PGc2,tolesp,tol2d,tolreached)) { diff --git a/src/ChFi3d/ChFi3d_Builder_CnCrn.cxx b/src/ChFi3d/ChFi3d_Builder_CnCrn.cxx index c58f6ec7a7..82e4ac139e 100644 --- a/src/ChFi3d/ChFi3d_Builder_CnCrn.cxx +++ b/src/ChFi3d/ChFi3d_Builder_CnCrn.cxx @@ -423,9 +423,9 @@ static void CurveHermite (const TopOpeBRepDS_DataStructure& DStr, } } for (nb=1;nb<=nbface-1;nb++) { - BRepAdaptor_Curve C(TopoDS::Edge(Ecom.Value(nb))); - C.D0(param.Value(nb),p02); - GeomAdaptor_Curve L (Bezier); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(TopoDS::Edge(Ecom.Value(nb))); + C->D0(param.Value(nb),p02); + Handle(GeomAdaptor_Curve) L = new GeomAdaptor_Curve(Bezier); Extrema_ExtCC ext (C,L); if (ext.IsDone()){ if (!ext.IsParallel() && ext.NbExt()!=0){ @@ -548,7 +548,7 @@ static void CalculBatten (const Handle (GeomAdaptor_Surface) ASurf, Standard_Real umin,vmin,umax,vmax; BRepTools::UVBounds(Face,umin,umax,vmin,vmax); Bnd_Box2d bf,bc; - Geom2dAdaptor_Curve acur(pcurve); + Handle(Geom2dAdaptor_Curve) acur = new Geom2dAdaptor_Curve(pcurve); BndLib_Add2dCurve::Add(acur,0,bc); bf.Update(umin,vmin,umax,vmax); Standard_Real uminc,vminc,umaxc,vmaxc; @@ -2075,24 +2075,22 @@ void ChFi3d_Builder::PerformMoreThreeCorner(const Standard_Integer Jndex, Handle(Geom2d_Line) l= new Geom2d_Line (p2d1 ,dir); Handle (Geom2d_Curve) pcurve = new Geom2d_TrimmedCurve(l,0,l0); Handle (Geom2dAdaptor_Curve) Acurv = new Geom2dAdaptor_Curve(pcurve); - Adaptor3d_CurveOnSurface CurvOnS (Acurv,Asurf); - Handle(Adaptor3d_CurveOnSurface) HCons = - new Adaptor3d_CurveOnSurface(CurvOnS); + Handle(Adaptor3d_CurveOnSurface) CurvOnS = new Adaptor3d_CurveOnSurface(Acurv,Asurf); //Order.SetValue(ic,1); Order.SetValue(ic, constr); Handle(GeomPlate_CurveConstraint) Cont = - new GeomPlate_CurveConstraint(HCons,Order.Value(ic), nbcurvpnt,tolesp,angular,0.1); + new GeomPlate_CurveConstraint(CurvOnS, Order.Value(ic), nbcurvpnt,tolesp,angular,0.1); PSurf.Add(Cont); // calculate indexes of points and of the curve for the DS isfirst=(sens.Value(ic)==1); - GeomLib::BuildCurve3d(tolapp,CurvOnS,CurvOnS.FirstParameter(), - CurvOnS.LastParameter(),Curv3d,maxapp,avedev); + GeomLib::BuildCurve3d(tolapp,CurvOnS,CurvOnS->FirstParameter(), + CurvOnS->LastParameter(),Curv3d,maxapp,avedev); TopOpeBRepDS_Curve tcurv3d( Curv3d,maxapp); indcurve3d.SetValue(n3d,DStr.AddCurve(tcurv3d)); gp_Pnt point1,point2; - point1= CurvOnS.Value(CurvOnS.FirstParameter()); - point2 =CurvOnS.Value(CurvOnS.LastParameter()); + point1= CurvOnS->Value(CurvOnS->FirstParameter()); + point2 =CurvOnS->Value(CurvOnS->LastParameter()); TopOpeBRepDS_Point tpoint1 (point1,maxapp); TopOpeBRepDS_Point tpoint2 (point2,maxapp); @@ -2359,9 +2357,7 @@ void ChFi3d_Builder::PerformMoreThreeCorner(const Standard_Integer Jndex, // construction of borders for Plate Handle (Geom2dAdaptor_Curve) Acurv=new Geom2dAdaptor_Curve(pcurve); - Adaptor3d_CurveOnSurface CurvOnS (Acurv,Asurf); - Handle(Adaptor3d_CurveOnSurface) HCons = - new Adaptor3d_CurveOnSurface(CurvOnS); + Handle(Adaptor3d_CurveOnSurface) CurvOnS = new Adaptor3d_CurveOnSurface(Acurv,Asurf); // constraints G1 are set if edges ic and icplus are not both alive @@ -2378,15 +2374,15 @@ void ChFi3d_Builder::PerformMoreThreeCorner(const Standard_Integer Jndex, if (isG1.Value(ic)) Order.SetValue(n3d,1); Handle(GeomPlate_CurveConstraint) Cont = - new GeomPlate_CurveConstraint(HCons,Order.Value(n3d),10,tolesp,angular,0.1); + new GeomPlate_CurveConstraint(CurvOnS, Order.Value(n3d),10,tolesp,angular,0.1); PSurf.Add(Cont); //calculation of curve 3d if it is not a projection if (curveint.IsNull()) { - GeomLib::BuildCurve3d(tolapp,CurvOnS,CurvOnS.FirstParameter(), - CurvOnS.LastParameter(),Curv3d,maxapp1,avedev); - pardeb=CurvOnS.FirstParameter(); - parfin= CurvOnS.LastParameter(); + GeomLib::BuildCurve3d(tolapp,CurvOnS,CurvOnS->FirstParameter(), + CurvOnS->LastParameter(),Curv3d,maxapp1,avedev); + pardeb=CurvOnS->FirstParameter(); + parfin= CurvOnS->LastParameter(); curveint= new Geom_TrimmedCurve(Curv3d,pardeb,parfin); } diff --git a/src/ChFi3d/ChFi3d_Builder_SpKP.cxx b/src/ChFi3d/ChFi3d_Builder_SpKP.cxx index c893b55c79..9f175da8e0 100644 --- a/src/ChFi3d/ChFi3d_Builder_SpKP.cxx +++ b/src/ChFi3d/ChFi3d_Builder_SpKP.cxx @@ -179,14 +179,14 @@ static Standard_Boolean AdjustParam(const HatchGen_Domain& Dom, //purpose : //======================================================================= -static Standard_Real ComputeAbscissa(const BRepAdaptor_Curve& C, +static Standard_Real ComputeAbscissa(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U) { - switch (C.GetType()) { + switch (C->GetType()) { case GeomAbs_Line: return U; case GeomAbs_Circle: - return C.Circle().Radius()*U; + return C->Circle().Radius()*U; default: return 0; } @@ -334,9 +334,9 @@ void ChFi3d_Builder::Trunc(const Handle(ChFiDS_SurfData)& SD, TopoDS_Vertex bout1,bout2,boutemp; - const BRepAdaptor_Curve& bc = Spine->CurrentElementarySpine(iedge); + const Handle(BRepAdaptor_Curve)& bc = Spine->CurrentElementarySpine(iedge); //Modif against Vertex isolated on spine - TopoDS_Edge support = bc.Edge(); + TopoDS_Edge support = bc->Edge(); TopExp::Vertices(support,bout1,bout2); if (support.Orientation() == TopAbs_REVERSED) { boutemp = bout2; @@ -347,13 +347,13 @@ void ChFi3d_Builder::Trunc(const Handle(ChFiDS_SurfData)& SD, bout1 = bout2; } //finmodif - Standard_Real edf = bc.FirstParameter(), edl = bc.LastParameter(); + Standard_Real edf = bc->FirstParameter(), edl = bc->LastParameter(); Standard_Real edglen = edl - edf; if(Spine->Edges(iedge).Orientation() == TopAbs_FORWARD) { - bc.D1(wtg+edf,ped,ded); + bc->D1(wtg+edf,ped,ded); } else{ - bc.D1(-wtg+edl,ped,ded); + bc->D1(-wtg+edl,ped,ded); ded.Reverse(); } Spine->D1(wsp,psp,dsp); @@ -382,7 +382,7 @@ void ChFi3d_Builder::Trunc(const Handle(ChFiDS_SurfData)& SD, const ChFiDS_CommonPoint& cp2 = SD->Vertex(isfirst,2); if(!((cp1.IsOnArc() && SearchFace(Spine,cp1,F1,FBID)) || (cp2.IsOnArc() && SearchFace(Spine,cp2,F2,FBID)))) { - tron = ChFi3d_KParticular (Spine, ivois, *BS1, *BS2); + tron = ChFi3d_KParticular (Spine, ivois, BS1, BS2); } } } @@ -434,8 +434,8 @@ static Standard_Real ResetProl(const TopOpeBRepDS_DataStructure& DStr, const Standard_Integer iedge, const Standard_Boolean isfirst) { - const BRepAdaptor_Curve& bc = Spine->CurrentElementarySpine(iedge); - Standard_Real edglen = bc.LastParameter() - bc.FirstParameter(); + const Handle(BRepAdaptor_Curve)& bc = Spine->CurrentElementarySpine(iedge); + Standard_Real edglen = bc->LastParameter() - bc->FirstParameter(); const Handle(Geom_Surface)& surf = DStr.Surface(CD->Surf()).Surface(); Standard_Real par = 0., x, y; if(!isfirst) par = edglen; @@ -513,7 +513,7 @@ static Standard_Boolean Tri(const Geom2dHatch_Hatcher& H, HatchGen_Domain* Dom = ((HatchGen_Domain*) (void*) &H.Domain(iH,Ind(iSansFirst))); HatchGen_PointOnHatching* PH = ((HatchGen_PointOnHatching*) (void*) &H.Domain(iH,Ind(iSansLast)).FirstPoint()); - Standard_Real NewPar = H.HatchingCurve(iH).FirstParameter() - period + + Standard_Real NewPar = H.HatchingCurve(iH)->FirstParameter() - period + H.Domain(iH,Ind(iSansLast)).FirstPoint().Parameter(); PH->SetParameter(NewPar); Dom->SetFirstPoint(*PH); @@ -657,16 +657,16 @@ Standard_Boolean ChFi3d_Builder::SplitKPart Geom2dHatch_Hatcher H1(Inter,tol2d,tolesp), H2(Inter,tol2d,tolesp); Standard_Integer ie; Handle(Geom2d_Curve) C1 = Data->InterferenceOnS1().PCurveOnFace(); - Geom2dAdaptor_Curve ll1; + Handle(Geom2dAdaptor_Curve) ll1 = new Geom2dAdaptor_Curve(); if (!C1.IsNull()) { - ll1.Load(C1); + ll1->Load(C1); for(I1->Init(); I1->More(); I1->Next()) { Handle(BRepAdaptor_Curve2d) Bc = Handle(BRepAdaptor_Curve2d)::DownCast(I1->Value()); Handle(Geom2dAdaptor_Curve) Gc = Handle(Geom2dAdaptor_Curve)::DownCast(I1->Value()); - if(Bc.IsNull()) ie = H1.AddElement (*Gc, TopAbs_FORWARD); - else ie = H1.AddElement (*Bc, Bc->Edge().Orientation()); + if(Bc.IsNull()) ie = H1.AddElement (Gc, TopAbs_FORWARD); + else ie = H1.AddElement (Bc, Bc->Edge().Orientation()); M1.Bind(ie,I1->Value()); } iH1 = H1.Trim(ll1); @@ -682,16 +682,16 @@ Standard_Boolean ChFi3d_Builder::SplitKPart } Handle(Geom2d_Curve) C2 = Data->InterferenceOnS2().PCurveOnFace(); - Geom2dAdaptor_Curve ll2; + Handle(Geom2dAdaptor_Curve) ll2 = new Geom2dAdaptor_Curve(); if (!C2.IsNull()) { - ll2.Load(C2); + ll2->Load(C2); for(I2->Init(); I2->More(); I2->Next()) { Handle(BRepAdaptor_Curve2d) Bc = Handle(BRepAdaptor_Curve2d)::DownCast(I2->Value()); Handle(Geom2dAdaptor_Curve) Gc = Handle(Geom2dAdaptor_Curve)::DownCast(I2->Value()); - if(Bc.IsNull()) ie = H2.AddElement (*Gc, TopAbs_FORWARD); - else ie = H2.AddElement (*Bc, Bc->Edge().Orientation()); + if(Bc.IsNull()) ie = H2.AddElement (Gc, TopAbs_FORWARD); + else ie = H2.AddElement (Bc, Bc->Edge().Orientation()); M2.Bind(ie,I2->Value()); } iH2 = H2.Trim(ll2); @@ -708,8 +708,8 @@ Standard_Boolean ChFi3d_Builder::SplitKPart //Return start and end vertexes of the Spine TopoDS_Vertex bout1,bout2,boutemp; - const BRepAdaptor_Curve& bc = Spine->CurrentElementarySpine(Iedge); - TopoDS_Edge support = bc.Edge(); + const Handle(BRepAdaptor_Curve)& bc = Spine->CurrentElementarySpine(Iedge); + TopoDS_Edge support = bc->Edge(); TopExp::Vertices(support,bout1,bout2); if(support.Orientation() == TopAbs_REVERSED) { boutemp = bout2; @@ -821,14 +821,14 @@ Standard_Boolean ChFi3d_Builder::SplitKPart // Parsing of domains by increasing parameters, // if there is a 2d circle on a plane, one goes on 2D line of opposite face. Standard_Real period1 = 0., period2 = 0.; - if(ll1.IsPeriodic()) { + if(ll1->IsPeriodic()) { if(!Tri(H2,iH2,Ind2,wref,0.,pitol,Nb2)) return 0; - period1 = ll1.Period(); + period1 = ll1->Period(); if(!Tri(H1,iH1,Ind1,wref,period1,pitol,Nb1)) return 0; } else{ if(!Tri(H1,iH1,Ind1,wref,0.,pitol,Nb1)) return 0; - if(ll2.IsPeriodic()) { period2 = ll2.Period(); } + if(ll2->IsPeriodic()) { period2 = ll2->Period(); } if(!Tri(H2,iH2,Ind2,wref,period2,pitol,Nb2)) return 0; } @@ -883,7 +883,7 @@ Standard_Boolean ChFi3d_Builder::SplitKPart //------------------------- Standard_Integer ifirst = 0; Standard_Real dist = RealLast(), ptg, dsp; - const BRepAdaptor_Curve& ed = Spine->CurrentElementarySpine(Iedge); + const Handle(BRepAdaptor_Curve)& ed = Spine->CurrentElementarySpine(Iedge); for (Standard_Integer i1 = 1; i1 <= SetData.Length(); i1++) { Handle(ChFiDS_SurfData)& CD1 = SetData.ChangeValue(i1); ChFiDS_CommonPoint& CP1 = CD1->ChangeVertexFirstOnS1(); @@ -977,7 +977,7 @@ Standard_Boolean ChFi3d_Builder::SplitKPart Standard_Real dist = RealLast(), ptg, dsp; Standard_Real f = Spine->FirstParameter(Iedge); Standard_Real l = Spine->LastParameter(Iedge); - const BRepAdaptor_Curve& ed = Spine->CurrentElementarySpine(Iedge); + const Handle(BRepAdaptor_Curve)& ed = Spine->CurrentElementarySpine(Iedge); for (Standard_Integer i2 = 1; i2<= SetData.Length(); i2++) { Handle(ChFiDS_SurfData)& CD3 = SetData.ChangeValue(i2); ChFiDS_CommonPoint& CP1 = CD3->ChangeVertexLastOnS1(); diff --git a/src/ChFi3d/ChFi3d_ChBuilder.cxx b/src/ChFi3d/ChFi3d_ChBuilder.cxx index 078a647231..9c2b16993b 100644 --- a/src/ChFi3d/ChFi3d_ChBuilder.cxx +++ b/src/ChFi3d/ChFi3d_ChBuilder.cxx @@ -370,7 +370,8 @@ void ChFi3d_ChBuilder::SetDists(const Standard_Real Dis1, TopoDS_Face F1,F2,FirstF1,FirstF2; TopAbs_Orientation Or1,Or2; Standard_Integer Choix, ChoixConge; - BRepAdaptor_Surface Sb1,Sb2; + Handle(BRepAdaptor_Surface) Sb1 = new BRepAdaptor_Surface(); + Handle(BRepAdaptor_Surface) Sb2 = new BRepAdaptor_Surface(); Standard_Integer i = 1; Standard_Boolean Found = Standard_False; while ( (i <= csp->NbEdges()) && (!Found) ) { @@ -388,13 +389,13 @@ void ChFi3d_ChBuilder::SetDists(const Standard_Real Dis1, F2 = F1; F1 = F; } - Sb1.Initialize(F1); - Sb2.Initialize(F2); + Sb1->Initialize(F1); + Sb2->Initialize(F2); Choix = ChFi3d::ConcaveSide(Sb1,Sb2, csp->Edges(i-1), Or1,Or2); - Sb1.Initialize(FirstF1); - Sb2.Initialize(FirstF2); + Sb1->Initialize(FirstF1); + Sb2->Initialize(FirstF2); ChoixConge = ChFi3d::ConcaveSide(Sb1,Sb2, csp->Edges(1), Or1,Or2); @@ -1231,9 +1232,9 @@ Standard_Boolean ChFi3d_ChBuilder::PerformFirstSection Standard_Real tol = tolesp*1.e2; // Standard_Real u,v; - Extrema_GenLocateExtPS proj1(*S1, tol, tol); + Extrema_GenLocateExtPS proj1(S1, tol, tol); proj1.Perform(pt1, SolDep(1), SolDep(2)); - Extrema_GenLocateExtPS proj2(*S2, tol, tol); + Extrema_GenLocateExtPS proj2(S2, tol, tol); proj2.Perform(pt2, SolDep(3), SolDep(4)); if( proj1.IsDone() ){ @@ -1334,9 +1335,9 @@ Standard_Boolean ChFi3d_ChBuilder::PerformFirstSection Standard_Real tol = tolesp*1.e2; // Standard_Real u,v; - Extrema_GenLocateExtPS proj1(*S1, tol, tol); + Extrema_GenLocateExtPS proj1(S1, tol, tol); proj1.Perform(pt1, SolDep(1), SolDep(2)); - Extrema_GenLocateExtPS proj2(*S2, tol, tol); + Extrema_GenLocateExtPS proj2(S2, tol, tol); proj2.Perform(pt2, SolDep(3), SolDep(4)); if( proj1.IsDone() ){ @@ -1403,9 +1404,9 @@ Standard_Boolean ChFi3d_ChBuilder::PerformFirstSection Standard_Real tol = tolesp*1.e2; // Standard_Real u,v; - Extrema_GenLocateExtPS proj1(*S1, tol, tol); + Extrema_GenLocateExtPS proj1(S1, tol, tol); proj1.Perform(pt1, SolDep(1), SolDep(2)); - Extrema_GenLocateExtPS proj2(*S2, tol, tol); + Extrema_GenLocateExtPS proj2(S2, tol, tol); proj2.Perform(pt2, SolDep(3), SolDep(4)); if( proj1.IsDone() ){ (proj1.Point()).Parameter(SolDep(1),SolDep(2)); @@ -2049,7 +2050,8 @@ void ChFi3d_ChBuilder::ConexFaces (const Handle(ChFiDS_Spine)& Spine, TopoDS_Face& F1, TopoDS_Face& F2) const { - BRepAdaptor_Surface Sb1,Sb2; + Handle(BRepAdaptor_Surface) Sb1 = new BRepAdaptor_Surface(); + Handle(BRepAdaptor_Surface) Sb2 = new BRepAdaptor_Surface(); TopAbs_Orientation tmp1,tmp2; Standard_Integer RC,Choix; TopoDS_Face f1,f2,ff1,ff2; @@ -2058,15 +2060,15 @@ void ChFi3d_ChBuilder::ConexFaces (const Handle(ChFiDS_Spine)& Spine, // ChFi3d_Builder::StripeOrientations is private SearchCommonFaces(myEFMap,Spine->Edges(1),ff1,ff2); ff1.Orientation(TopAbs_FORWARD); - Sb1.Initialize(ff1); + Sb1->Initialize(ff1); ff2.Orientation(TopAbs_FORWARD); - Sb2.Initialize(ff2); + Sb2->Initialize(ff2); RC = ChFi3d::ConcaveSide(Sb1,Sb2,Spine->Edges(1),tmp1,tmp2); //calculate the connected faces SearchCommonFaces(myEFMap,Spine->Edges(IEdge),f1,f2); - Sb1.Initialize(f1); - Sb2.Initialize(f2); + Sb1->Initialize(f1); + Sb2->Initialize(f2); Choix = ChFi3d::ConcaveSide(Sb1,Sb2,Spine->Edges(IEdge),tmp1,tmp2); if (RC%2 != Choix%2) { diff --git a/src/ChFi3d/ChFi3d_ChBuilder_C3.cxx b/src/ChFi3d/ChFi3d_ChBuilder_C3.cxx index 9bd677069d..88a3239dee 100644 --- a/src/ChFi3d/ChFi3d_ChBuilder_C3.cxx +++ b/src/ChFi3d/ChFi3d_ChBuilder_C3.cxx @@ -330,9 +330,6 @@ void ChFi3d_ChBuilder::PerformThreeCorner(const Standard_Integer Jndex) // ---------------------------------------------------------- Handle(BRepAdaptor_Surface) Fac = new BRepAdaptor_Surface(face[pivot]); - Handle(GeomAdaptor_Surface) - bidsurf = new GeomAdaptor_Surface(Fac->Surface()); - Handle(Adaptor3d_TopolTool) IFac = new Adaptor3d_TopolTool(bidsurf); Handle(GeomAdaptor_Surface) Surf = ChFi3d_BoundSurf (DStr,fdpiv,jf[pivot][deb],jf[pivot][fin]); Handle(Adaptor3d_TopolTool) ISurf = new Adaptor3d_TopolTool(Surf); @@ -523,7 +520,7 @@ void ChFi3d_ChBuilder::PerformThreeCorner(const Standard_Integer Jndex) GeomInt_IntSS inter; BRepAdaptor_Surface facebid(face[pivot]); Handle(Geom_Surface) - surfbid = Handle(Geom_Surface)::DownCast(facebid.Surface().Surface()->Transformed(facebid.Trsf())); + surfbid = Handle(Geom_Surface)::DownCast(facebid.Surface()->Surface()->Transformed(facebid.Trsf())); inter.Perform(gpl,surfbid,Precision::Intersection()); if (inter.IsDone()) { Standard_Integer nbl = inter.NbLines(); diff --git a/src/ChFi3d/ChFi3d_FilBuilder_C2.cxx b/src/ChFi3d/ChFi3d_FilBuilder_C2.cxx index b54b8f997b..c99c4ae3ec 100644 --- a/src/ChFi3d/ChFi3d_FilBuilder_C2.cxx +++ b/src/ChFi3d/ChFi3d_FilBuilder_C2.cxx @@ -88,9 +88,9 @@ extern void ChFi3d_ResultChron(OSD_Chronometer & ch,Standard_Real& time); // two others are required. //======================================================================= -static Standard_Boolean ToricRotule(const BRepAdaptor_Surface& fac, - const BRepAdaptor_Surface& s1, - const BRepAdaptor_Surface& s2, +static Standard_Boolean ToricRotule(const Handle(BRepAdaptor_Surface)& fac, + const Handle(BRepAdaptor_Surface)& s1, + const Handle(BRepAdaptor_Surface)& s2, const Handle(ChFiDS_Stripe)& c1, const Handle(ChFiDS_Stripe)& c2) @@ -102,12 +102,12 @@ static Standard_Boolean ToricRotule(const BRepAdaptor_Surface& fac, if(sp1.IsNull() || sp2.IsNull()) return Standard_False; if (!sp1->IsConstant() || !sp2->IsConstant()) return Standard_False; - if ((fac.GetType() != GeomAbs_Plane) || - (s1.GetType() != GeomAbs_Plane) || - (s2.GetType() != GeomAbs_Plane)) return Standard_False; - gp_Dir df = fac.Plane().Position().Direction(); - gp_Dir ds1 = s1.Plane().Position().Direction(); - gp_Dir ds2 = s2.Plane().Position().Direction(); + if ((fac->GetType() != GeomAbs_Plane) || + (s1->GetType() != GeomAbs_Plane) || + (s2->GetType() != GeomAbs_Plane)) return Standard_False; + gp_Dir df = fac->Plane().Position().Direction(); + gp_Dir ds1 = s1->Plane().Position().Direction(); + gp_Dir ds2 = s2->Plane().Position().Direction(); if ( Abs(df.Dot(ds1)) >= tolesp || Abs(df.Dot(ds2)) >= tolesp ) return Standard_False; Standard_Real r1 = sp1->Radius(); @@ -190,8 +190,8 @@ void ChFi3d_FilBuilder::PerformTwoCorner(const Standard_Integer Index) if (Sens2==1) E2= st2->Spine()->Edges(1); else E2= st2->Spine()->Edges( st2->Spine()->NbEdges()); - BRepAdaptor_Curve BCurv1(E1); - BRepAdaptor_Curve BCurv2(E2); + Handle(BRepAdaptor_Curve) BCurv1 = new BRepAdaptor_Curve(E1); + Handle(BRepAdaptor_Curve) BCurv2 = new BRepAdaptor_Curve(E2); parE1=BRep_Tool::Parameter(Vtx,E1); parE2=BRep_Tool::Parameter(Vtx,E2); BRepLProp_CLProps CL1(BCurv1,parE1 , 1, 1.e-4); @@ -328,10 +328,7 @@ void ChFi3d_FilBuilder::PerformTwoCorner(const Standard_Integer Index) Handle(BRepAdaptor_Surface) HBRS1 = new BRepAdaptor_Surface(); Handle(BRepAdaptor_Surface) HBRS2 = new BRepAdaptor_Surface(); - BRepAdaptor_Surface& BRS1 = *HBRS1; - BRepAdaptor_Surface& BRS2 = *HBRS2; - BRepAdaptor_Surface& BRFaCo = *HFaCo; - BRFaCo.Initialize(FaCo); + HFaCo->Initialize(FaCo); TopoDS_Face FF1,FF2,F,FaPiv; TopAbs_Orientation pctrans = TopAbs_FORWARD ; @@ -343,8 +340,8 @@ void ChFi3d_FilBuilder::PerformTwoCorner(const Standard_Integer Index) done=1; return; } - BRS1.Initialize(FF1); - BRS2.Initialize(FF2); + HBRS1->Initialize(FF1); + HBRS2->Initialize(FF2); if(yapiv ) { TopTools_ListIteratorOfListOfShape Kt; @@ -433,7 +430,7 @@ void ChFi3d_FilBuilder::PerformTwoCorner(const Standard_Integer Index) cornerset->Append(coin); if (SameSide) { - if(ToricRotule(BRFaCo,BRS1,BRS2,st1,st2)){ + if(ToricRotule(HFaCo,HBRS1,HBRS2,st1,st2)){ // Direct construction. // --------------------- @@ -445,7 +442,7 @@ void ChFi3d_FilBuilder::PerformTwoCorner(const Standard_Integer Index) bid = 1; bid = ChFi3d::NextSide(ori,OFF1,oriS,oriSFF1,bid); TopAbs_Orientation op1 = TopAbs_FORWARD,op2 = TopAbs_FORWARD; - if(yapiv) bid = ChFi3d::ConcaveSide(BRS1,BRS2,pivot,op1,op2); + if(yapiv) bid = ChFi3d::ConcaveSide(HBRS1,HBRS2,pivot,op1,op2); op1 = TopAbs::Reverse(op1); op2 = TopAbs::Reverse(op2); #ifdef OCCT_DEBUG diff --git a/src/ChFi3d/ChFi3d_FilBuilder_C3.cxx b/src/ChFi3d/ChFi3d_FilBuilder_C3.cxx index 6403c2141e..db8ecdbaf2 100644 --- a/src/ChFi3d/ChFi3d_FilBuilder_C3.cxx +++ b/src/ChFi3d/ChFi3d_FilBuilder_C3.cxx @@ -406,7 +406,7 @@ void ChFi3d_FilBuilder::PerformThreeCorner(const Standard_Integer Jndex) // Try to not classify on the face for cases of reentering fillets which naturally depass // the border. Handle(GeomAdaptor_Surface) - bidsurf = new GeomAdaptor_Surface(Fac->ChangeSurface().Surface()); + bidsurf = new GeomAdaptor_Surface(Fac->Surface()->Surface()); Handle(Adaptor3d_TopolTool) IFac = new Adaptor3d_TopolTool(bidsurf); // end of the attempt. diff --git a/src/ChFiDS/ChFiDS_Spine.cxx b/src/ChFiDS/ChFiDS_Spine.cxx index b6c08471e5..5d9accb3ce 100644 --- a/src/ChFiDS/ChFiDS_Spine.cxx +++ b/src/ChFiDS/ChFiDS_Spine.cxx @@ -39,6 +39,8 @@ IMPLEMENT_STANDARD_RTTIEXT(ChFiDS_Spine,Standard_Transient) ChFiDS_Spine::ChFiDS_Spine() : splitdone (Standard_False), myMode (ChFiDS_ClassicChamfer), + myCurve(new BRepAdaptor_Curve()), + myOffsetCurve(new BRepAdaptor_Curve()), indexofcurve (0), myTypeOfConcavity (ChFiDS_Other), firstState (ChFiDS_OnSame), @@ -67,6 +69,8 @@ ChFiDS_Spine::ChFiDS_Spine() ChFiDS_Spine::ChFiDS_Spine(const Standard_Real Tol) : splitdone (Standard_False), myMode (ChFiDS_ClassicChamfer), + myCurve(new BRepAdaptor_Curve()), + myOffsetCurve(new BRepAdaptor_Curve()), indexofcurve (0), myTypeOfConcavity (ChFiDS_Other), firstState (ChFiDS_OnSame), @@ -552,12 +556,12 @@ void ChFiDS_Spine::Load() abscissa = new TColStd_HArray1OfReal(1,len); Standard_Real a1 = 0.; for (Standard_Integer i = 1; i <= len; i++){ - myCurve.Initialize(TopoDS::Edge(spine.Value(i))); + myCurve->Initialize(TopoDS::Edge(spine.Value(i))); a1 += GCPnts_AbscissaPoint::Length(myCurve); abscissa->SetValue(i,a1); } indexofcurve =1; - myCurve.Initialize(TopoDS::Edge(spine.Value(1))); + myCurve->Initialize(TopoDS::Edge(spine.Value(1))); } @@ -584,14 +588,14 @@ Standard_Real ChFiDS_Spine::Absc(const Standard_Real U, if(indexofcurve != I){ void* p = (void*)this; ((ChFiDS_Spine*)p)->indexofcurve = I; - ((ChFiDS_Spine*)p)->myCurve.Initialize(TopoDS::Edge(spine.Value(I))); + ((ChFiDS_Spine*)p)->myCurve->Initialize(TopoDS::Edge(spine.Value(I))); } Standard_Real L = FirstParameter(I); if (spine.Value(I).Orientation() == TopAbs_REVERSED) { - L += GCPnts_AbscissaPoint::Length(myCurve,U,myCurve.LastParameter()); + L += GCPnts_AbscissaPoint::Length(myCurve,U,myCurve->LastParameter()); } else{ - L += GCPnts_AbscissaPoint::Length(myCurve,myCurve.FirstParameter(),U); + L += GCPnts_AbscissaPoint::Length(myCurve,myCurve->FirstParameter(),U); } return L; } @@ -627,7 +631,7 @@ void ChFiDS_Spine::Parameter(const Standard_Integer Index, if (Index != indexofcurve) { void* p = (void*)this; ((ChFiDS_Spine*)p)->indexofcurve = Index; - ((ChFiDS_Spine*)p)->myCurve.Initialize(TopoDS::Edge(spine.Value(Index))); + ((ChFiDS_Spine*)p)->myCurve->Initialize(TopoDS::Edge(spine.Value(Index))); } Standard_Real L; TopAbs_Orientation Or = spine.Value(Index).Orientation(); @@ -641,13 +645,13 @@ void ChFiDS_Spine::Parameter(const Standard_Integer Index, L = AbsC - abscissa->Value(indexofcurve-1); } Standard_Real t = L/Length(Index); - Standard_Real uapp = (1. - t) * myCurve.FirstParameter() + t * myCurve.LastParameter(); + Standard_Real uapp = (1. - t) * myCurve->FirstParameter() + t * myCurve->LastParameter(); // GCPnts_AbscissaPoint GCP; -// GCP.Perform(myCurve,L,myCurve.FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve.Edge())); - GCPnts_AbscissaPoint GCP(myCurve,L,myCurve.FirstParameter(),uapp); +// GCP.Perform(myCurve,L,myCurve->FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve->Edge())); + GCPnts_AbscissaPoint GCP(myCurve,L,myCurve->FirstParameter(),uapp); U = GCP.Parameter(); if (Or == TopAbs_REVERSED && Oriented) { - U = (myCurve.LastParameter()+myCurve.FirstParameter()) - U; + U = (myCurve->LastParameter()+myCurve->FirstParameter()) - U; } } @@ -733,14 +737,14 @@ gp_Pnt ChFiDS_Spine::Value(const Standard_Real AbsC) if (Index != indexofcurve) { void* p = (void*)this; ((ChFiDS_Spine*)p)->indexofcurve = Index; - ((ChFiDS_Spine*)p)->myCurve.Initialize(TopoDS::Edge(spine.Value(Index))); + ((ChFiDS_Spine*)p)->myCurve->Initialize(TopoDS::Edge(spine.Value(Index))); } Standard_Real t = L/Length(Index); - Standard_Real uapp = (1. - t) * myCurve.FirstParameter() + t * myCurve.LastParameter(); + Standard_Real uapp = (1. - t) * myCurve->FirstParameter() + t * myCurve->LastParameter(); // GCPnts_AbscissaPoint GCP; -// GCP.Perform(myCurve,L,myCurve.FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve.Edge())); - GCPnts_AbscissaPoint GCP(myCurve,L,myCurve.FirstParameter(),uapp); - return myCurve.Value(GCP.Parameter()); +// GCP.Perform(myCurve,L,myCurve->FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve->Edge())); + GCPnts_AbscissaPoint GCP(myCurve,L,myCurve->FirstParameter(),uapp); + return myCurve->Value(GCP.Parameter()); } //======================================================================= @@ -785,14 +789,14 @@ void ChFiDS_Spine::D1(const Standard_Real AbsC, if (Index != indexofcurve) { void* p = (void*)this; ((ChFiDS_Spine*)p)->indexofcurve = Index; - ((ChFiDS_Spine*)p)->myCurve.Initialize(TopoDS::Edge(spine.Value(Index))); + ((ChFiDS_Spine*)p)->myCurve->Initialize(TopoDS::Edge(spine.Value(Index))); } Standard_Real t = L/Length(Index); - Standard_Real uapp = (1. - t) * myCurve.FirstParameter() + t * myCurve.LastParameter(); + Standard_Real uapp = (1. - t) * myCurve->FirstParameter() + t * myCurve->LastParameter(); // GCPnts_AbscissaPoint GCP; -// GCP.Perform(myCurve,L,myCurve.FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve.Edge())); - GCPnts_AbscissaPoint GCP(myCurve,L,myCurve.FirstParameter(),uapp); - myCurve.D1(GCP.Parameter(),P,V1); +// GCP.Perform(myCurve,L,myCurve->FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve->Edge())); + GCPnts_AbscissaPoint GCP(myCurve,L,myCurve->FirstParameter(),uapp); + myCurve->D1(GCP.Parameter(),P,V1); Standard_Real D1 = 1./V1.Magnitude(); if (spine.Value(Index).Orientation() == TopAbs_REVERSED) D1 = -D1; V1.Multiply(D1); @@ -836,14 +840,14 @@ void ChFiDS_Spine::D2(const Standard_Real AbsC, if (Index != indexofcurve) { void* p = (void*)this; ((ChFiDS_Spine*)p)->indexofcurve = Index; - ((ChFiDS_Spine*)p)->myCurve.Initialize(TopoDS::Edge(spine.Value(Index))); + ((ChFiDS_Spine*)p)->myCurve->Initialize(TopoDS::Edge(spine.Value(Index))); } Standard_Real t = L/Length(Index); - Standard_Real uapp = (1. - t) * myCurve.FirstParameter() + t * myCurve.LastParameter(); + Standard_Real uapp = (1. - t) * myCurve->FirstParameter() + t * myCurve->LastParameter(); // GCPnts_AbscissaPoint GCP; -// GCP.Perform(myCurve,L,myCurve.FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve.Edge())); - GCPnts_AbscissaPoint GCP(myCurve,L,myCurve.FirstParameter(),uapp); - myCurve.D2(GCP.Parameter(),P,V1,V2); +// GCP.Perform(myCurve,L,myCurve->FirstParameter(),uapp,BRep_Tool::Tolerance(myCurve->Edge())); + GCPnts_AbscissaPoint GCP(myCurve,L,myCurve->FirstParameter(),uapp); + myCurve->D2(GCP.Parameter(),P,V1,V2); Standard_Real N1 = V1.SquareMagnitude(); Standard_Real D2 = -(V1.Dot(V2))*(1./N1)*(1./N1); V2.Multiply(1./N1); @@ -865,7 +869,7 @@ void ChFiDS_Spine::SetCurrent(const Standard_Integer Index) { if (Index != indexofcurve) { indexofcurve = Index; - myCurve.Initialize(TopoDS::Edge(spine.Value(indexofcurve))); + myCurve->Initialize(TopoDS::Edge(spine.Value(indexofcurve))); } } @@ -874,12 +878,12 @@ void ChFiDS_Spine::SetCurrent(const Standard_Integer Index) //purpose : //======================================================================= -const BRepAdaptor_Curve& ChFiDS_Spine::CurrentElementarySpine +const Handle(BRepAdaptor_Curve)& ChFiDS_Spine::CurrentElementarySpine (const Standard_Integer Index) { if (Index != indexofcurve) { indexofcurve = Index; - myCurve.Initialize(TopoDS::Edge(spine.Value(indexofcurve))); + myCurve->Initialize(TopoDS::Edge(spine.Value(indexofcurve))); } return myCurve; } @@ -891,7 +895,7 @@ const BRepAdaptor_Curve& ChFiDS_Spine::CurrentElementarySpine GeomAbs_CurveType ChFiDS_Spine::GetType() const { - return myCurve.GetType(); + return myCurve->GetType(); } //======================================================================= @@ -901,13 +905,13 @@ GeomAbs_CurveType ChFiDS_Spine::GetType() const gp_Lin ChFiDS_Spine::Line() const { - gp_Lin LL(myCurve.Line()); + gp_Lin LL(myCurve->Line()); if (spine.Value(indexofcurve).Orientation() == TopAbs_REVERSED) { LL.Reverse(); - LL.SetLocation(myCurve.Value(myCurve.LastParameter())); + LL.SetLocation(myCurve->Value(myCurve->LastParameter())); } else { - LL.SetLocation(myCurve.Value(myCurve.FirstParameter())); + LL.SetLocation(myCurve->Value(myCurve->FirstParameter())); } return LL; } @@ -920,16 +924,16 @@ gp_Lin ChFiDS_Spine::Line() const gp_Circ ChFiDS_Spine::Circle() const { - gp_Ax2 Ac = myCurve.Circle().Position(); - gp_Dir Dc(gp_Vec(Ac.Location(),myCurve.Value(myCurve.FirstParameter()))); + gp_Ax2 Ac = myCurve->Circle().Position(); + gp_Dir Dc(gp_Vec(Ac.Location(),myCurve->Value(myCurve->FirstParameter()))); gp_Dir ZZ(Ac.Direction()); if (spine.Value(indexofcurve).Orientation() == TopAbs_REVERSED) { - Dc = gp_Dir(gp_Vec(Ac.Location(),myCurve.Value(myCurve.LastParameter()))); + Dc = gp_Dir(gp_Vec(Ac.Location(),myCurve->Value(myCurve->LastParameter()))); ZZ.Reverse(); } gp_Ax2 A(Ac.Location(),ZZ,Dc); - return gp_Circ(A,myCurve.Circle().Radius()); + return gp_Circ(A,myCurve->Circle().Radius()); } //======================================================================= //function : SetErrorStatus diff --git a/src/ChFiDS/ChFiDS_Spine.hxx b/src/ChFiDS/ChFiDS_Spine.hxx index ffc6be8785..2932aba564 100644 --- a/src/ChFiDS/ChFiDS_Spine.hxx +++ b/src/ChFiDS/ChFiDS_Spine.hxx @@ -176,7 +176,7 @@ public: Standard_EXPORT void SetCurrent (const Standard_Integer Index); //! sets the current curve and returns it - Standard_EXPORT const BRepAdaptor_Curve& CurrentElementarySpine (const Standard_Integer Index); + Standard_EXPORT const Handle(BRepAdaptor_Curve)& CurrentElementarySpine (const Standard_Integer Index); Standard_Integer CurrentIndexOfElementarySpine() const; @@ -262,8 +262,8 @@ private: Standard_EXPORT void Prepare (Standard_Real& L, Standard_Integer& Index) const; - BRepAdaptor_Curve myCurve; - BRepAdaptor_Curve myOffsetCurve; + Handle(BRepAdaptor_Curve) myCurve; + Handle(BRepAdaptor_Curve) myOffsetCurve; Standard_Integer indexofcurve; ChFiDS_TypeOfConcavity myTypeOfConcavity; ChFiDS_State firstState; diff --git a/src/ChFiKPart/ChFiKPart_ComputeData.cxx b/src/ChFiKPart/ChFiKPart_ComputeData.cxx index 8305e9e80c..3ed970dc4e 100644 --- a/src/ChFiKPart/ChFiKPart_ComputeData.cxx +++ b/src/ChFiKPart/ChFiKPart_ComputeData.cxx @@ -71,9 +71,9 @@ GeomAbs_CurveType ctyp; if (!Spine.IsNull()) - ctyp = Spine->CurrentElementarySpine(Iedge).GetType(); + ctyp = Spine->CurrentElementarySpine(Iedge)->GetType(); else - ctyp = CSpine->CurrentElementarySpine(Iedge).GetType(); + ctyp = CSpine->CurrentElementarySpine(Iedge)->GetType(); // Return orientations. TopAbs_Orientation OrFace1 = TopAbs_FORWARD, OrFace2 = TopAbs_FORWARD; diff --git a/src/Contap/Contap_Contour.cxx b/src/Contap/Contap_Contour.cxx index 90a00e7779..f9e9db0db8 100644 --- a/src/Contap/Contap_Contour.cxx +++ b/src/Contap/Contap_Contour.cxx @@ -1416,7 +1416,7 @@ void Contap_Contour::Perform Box1OK = Standard_False; } else { - BndLib_AddSurface::Add (*Surf, 1e-8, B1); + BndLib_AddSurface::Add (Surf, 1e-8, B1); } Standard_Real x0,y0,z0,x1,y1,z1,dx,dy,dz; if(Box1OK) { diff --git a/src/Contap/Contap_HContTool.cxx b/src/Contap/Contap_HContTool.cxx index b7c9cb38da..8a02d25559 100644 --- a/src/Contap/Contap_HContTool.cxx +++ b/src/Contap/Contap_HContTool.cxx @@ -268,7 +268,7 @@ Standard_Boolean Contap_HContTool::Project (const Handle(Adaptor2d_Curve2d)& C, Standard_Real Tol = 1.e-5; Standard_Real Dist2; - Extrema_EPCOfExtPC2d extrema (P, *C, Nbu, epsX, Tol); + Extrema_EPCOfExtPC2d extrema (P, C, Nbu, epsX, Tol); if (!extrema.IsDone()) { return Standard_False; } diff --git a/src/DBRep/DBRep_DrawableShape.cxx b/src/DBRep/DBRep_DrawableShape.cxx index 95308e8ee9..7093abf2dd 100644 --- a/src/DBRep/DBRep_DrawableShape.cxx +++ b/src/DBRep/DBRep_DrawableShape.cxx @@ -292,7 +292,7 @@ static void PlotIso (Draw_Display& dis, static void PlotEdge (Draw_Display& dis, Handle(DBRep_Edge)& E, - const Adaptor3d_Curve& C, + const Handle(Adaptor3d_Curve)& C, Standard_Real& f, Standard_Real step, Standard_Boolean& halt) @@ -302,9 +302,9 @@ static void PlotEdge (Draw_Display& dis, gp_Pnt Pl, Pr, Pm; - C.D0(f, Pl); - C.D0(f + step/2., Pm); - C.D0(f + step, Pr); + C->D0(f, Pl); + C->D0(f + step/2., Pm); + C->D0(f + step, Pr); if (PlotCount > MaxPlotCount) { dis.DrawTo(Pr); @@ -698,7 +698,7 @@ void DBRep_DrawableShape::DrawOn(Draw_Display& dis) const for (j = 1; j <= myDiscret/2; j++) { Handle(DBRep_Edge) aLocaLEdge(E); PlotCount = 0; - PlotEdge (dis, aLocaLEdge, *HC, t, step*2., halt); + PlotEdge (dis, aLocaLEdge, HC, t, step*2., halt); t += step*2.; } break; diff --git a/src/DBRep/DBRep_IsoBuilder.cxx b/src/DBRep/DBRep_IsoBuilder.cxx index 03e442b574..7767f64d2f 100644 --- a/src/DBRep/DBRep_IsoBuilder.cxx +++ b/src/DBRep/DBRep_IsoBuilder.cxx @@ -206,7 +206,7 @@ Geom2dHatch_Hatcher (Geom2dHatch_Intersector (IntersectorConfusion, Standard_Integer aNbE = anEdgePCurveMap.Extent(); for (Standard_Integer iE = 1; iE <= aNbE; ++iE) { - AddElement(Geom2dAdaptor_Curve(anEdgePCurveMap(iE)), + AddElement(new Geom2dAdaptor_Curve(anEdgePCurveMap(iE)), anEdgePCurveMap.FindKey(iE).Orientation()); } //----------------------------------------------------------------------- @@ -226,7 +226,7 @@ Geom2dHatch_Hatcher (Geom2dHatch_Intersector (IntersectorConfusion, for (IIso = 1 ; IIso <= NbIsos ; IIso++) { myUPrm(IIso) = UPrm ; gp_Pnt2d Ori (UPrm, 0.) ; - Geom2dAdaptor_Curve HCur (new Geom2d_Line (Ori, Dir)) ; + Handle(Geom2dAdaptor_Curve) HCur = new Geom2dAdaptor_Curve(new Geom2d_Line (Ori, Dir)) ; myUInd(IIso) = AddHatching (HCur) ; UPrm += StepU ; } @@ -239,7 +239,7 @@ Geom2dHatch_Hatcher (Geom2dHatch_Intersector (IntersectorConfusion, for (IIso = 1 ; IIso <= NbIsos ; IIso++) { myVPrm(IIso) = VPrm ; gp_Pnt2d Ori (0., VPrm) ; - Geom2dAdaptor_Curve HCur (new Geom2d_Line (Ori, Dir)) ; + Handle(Geom2dAdaptor_Curve) HCur = new Geom2dAdaptor_Curve(new Geom2d_Line (Ori, Dir)) ; myVInd(IIso) = AddHatching (HCur) ; VPrm += StepV ; } @@ -501,7 +501,8 @@ void DBRep_IsoBuilder::FillGaps(const TopoDS_Face& theFace, // And, if they do interfere, avoid creation of the segment. if (bAddSegment && !aPrevEdge.IsEqual(aCurrEdge)) { - Geom2dAdaptor_Curve aPrevGC(aPrevC2d, fp, lp), aCurrGC(aCurrC2d, fc, lc); + Handle(Geom2dAdaptor_Curve) aPrevGC = new Geom2dAdaptor_Curve(aPrevC2d, fp, lp); + Handle(Geom2dAdaptor_Curve) aCurrGC = new Geom2dAdaptor_Curve(aCurrC2d, fc, lc); Geom2dInt_GInter anInter(aPrevGC, aCurrGC, Precision::PConfusion(), Precision::PConfusion()); if (anInter.IsDone() && !anInter.IsEmpty()) { @@ -630,7 +631,7 @@ void DBRep_IsoBuilder::FillGaps(const TopoDS_Face& theFace, // Add segment to the hatcher to trim the iso-lines Handle(Geom2d_Line) aLine = new Geom2d_Line(aPrevP2d, aV2d); Handle(Geom2d_TrimmedCurve) aLineSegm = new Geom2d_TrimmedCurve(aLine, 0.0, aSegmLen); - AddElement(Geom2dAdaptor_Curve(aLineSegm), TopAbs_FORWARD); + AddElement(new Geom2dAdaptor_Curve(aLineSegm), TopAbs_FORWARD); } } } diff --git a/src/Draft/Draft_Modification_1.cxx b/src/Draft/Draft_Modification_1.cxx index f965a8648e..5f998e5457 100644 --- a/src/Draft/Draft_Modification_1.cxx +++ b/src/Draft/Draft_Modification_1.cxx @@ -87,8 +87,8 @@ static Standard_Boolean Choose(const Draft_IndexedDataMapOfFaceFaceInfo&, Draft_IndexedDataMapOfEdgeEdgeInfo&, const TopoDS_Vertex&, Draft_VertexInfo&, - GeomAdaptor_Curve&, - GeomAdaptor_Surface&); + const Handle(GeomAdaptor_Curve)&, + const Handle(GeomAdaptor_Surface)&); static Standard_Real Parameter(const Handle(Geom_Curve)&, const gp_Pnt&, @@ -908,7 +908,7 @@ void Draft_Modification::Perform () } Standard_Real Glob2Min = RealLast(); - GeomAdaptor_Curve TheCurve; + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(); Standard_Integer i,j; //,jmin; @@ -917,7 +917,7 @@ void Draft_Modification::Perform () Standard_Real Dist2Min = RealLast(); imin = 0; for (i=1; i<= i2s.NbLines(); i++) { - TheCurve.Load(i2s.Line(i)); + TheCurve->Load(i2s.Line(i)); Extrema_ExtPC myExtPC(pfv,TheCurve); Standard_Real locpmin = 0.; @@ -1016,11 +1016,11 @@ void Draft_Modification::Perform () myExtPC.TrimmedSquareDistances(dist1_2,dist2_2,p1b,p2b); if (dist1_2 < dist2_2) { Dist2Min = dist1_2; - locpmin = TheCurve.FirstParameter(); + locpmin = TheCurve->FirstParameter(); } else { Dist2Min = dist2_2; - locpmin = TheCurve.LastParameter(); + locpmin = TheCurve->LastParameter(); } } @@ -1170,7 +1170,7 @@ void Draft_Modification::Perform () newC = Concat.BSplineCurve(); - TheCurve.Load( newC ); + TheCurve->Load( newC ); Extrema_ExtPC myExtPC( pfv, TheCurve ); Standard_Real Dist2Min = RealLast(); for (i = 1; i <= myExtPC.NbExt(); i++) @@ -1315,17 +1315,14 @@ void Draft_Modification::Perform () // Calculate new vertices. - Handle(GeomAdaptor_Curve) HAC = new GeomAdaptor_Curve; - Handle(GeomAdaptor_Surface) HAS = new GeomAdaptor_Surface; + Handle(GeomAdaptor_Curve) HAC = new GeomAdaptor_Curve(); + Handle(GeomAdaptor_Surface) HAS = new GeomAdaptor_Surface(); for (Standard_Integer ii = 1; ii <= myVMap.Extent(); ii++) { - GeomAdaptor_Curve& AC = *HAC; - GeomAdaptor_Surface& AS = *HAS; - const TopoDS_Vertex& TVV = myVMap.FindKey(ii); Draft_VertexInfo& Vinf = myVMap.ChangeFromIndex(ii); - if (!Choose(myFMap,myEMap,TVV,Vinf,AC,AS)) { + if (!Choose(myFMap,myEMap,TVV,Vinf,HAC,HAS)) { // no concerted edge => alignment of two consecutive edges. gp_Pnt pvt; @@ -1417,7 +1414,7 @@ void Draft_Modification::Perform () Standard_Integer nbsol = myintcs.NbPoints(); if (nbsol <= 0) { - Extrema_ExtCS extr( AC, AS, Precision::PConfusion(), Precision::PConfusion() ); + Extrema_ExtCS extr( HAC, HAS, Precision::PConfusion(), Precision::PConfusion() ); if(!extr.IsDone() || extr.NbExt() == 0) { errStat = Draft_VertexRecomputation; @@ -1870,8 +1867,8 @@ static Standard_Boolean Choose(const Draft_IndexedDataMapOfFaceFaceInfo& theFMap Draft_IndexedDataMapOfEdgeEdgeInfo& theEMap, const TopoDS_Vertex& Vtx, Draft_VertexInfo& Vinf, - GeomAdaptor_Curve& AC, - GeomAdaptor_Surface& AS) + const Handle(GeomAdaptor_Curve)& AC, + const Handle(GeomAdaptor_Surface)& AS) { gp_Vec tgref; Vinf.InitEdgeIterator(); @@ -1900,7 +1897,7 @@ static Standard_Boolean Choose(const Draft_IndexedDataMapOfFaceFaceInfo& theFMap //const Draft_EdgeInfo& Einf = theEMap(Eref); Draft_EdgeInfo& Einf = theEMap.ChangeFromKey(Eref); - AC.Load(Einf.Geometry()); + AC->Load(Einf.Geometry()); Standard_Real f,l,prm; TopLoc_Location Loc; @@ -1962,18 +1959,18 @@ static Standard_Boolean Choose(const Draft_IndexedDataMapOfFaceFaceInfo& theFMap if (Einf2.FirstFace().IsSame(Einf.FirstFace()) || Einf2.FirstFace().IsSame(Einf.SecondFace())) { - AS.Load(theFMap.FindFromKey(Einf2.SecondFace()).Geometry()); + AS->Load(theFMap.FindFromKey(Einf2.SecondFace()).Geometry()); } else { - AS.Load(theFMap.FindFromKey(Einf2.FirstFace()).Geometry()); + AS->Load(theFMap.FindFromKey(Einf2.FirstFace()).Geometry()); } } else { if (Einf2.FirstFace().IsSame(Einf.FirstFace())) { - AS.Load(theFMap.FindFromKey(Einf2.SecondFace()).Geometry()); + AS->Load(theFMap.FindFromKey(Einf2.SecondFace()).Geometry()); } else { - AS.Load(theFMap.FindFromKey(Einf2.FirstFace()).Geometry()); + AS->Load(theFMap.FindFromKey(Einf2.FirstFace()).Geometry()); } } return Standard_True; @@ -2019,7 +2016,7 @@ static Standard_Real Parameter(const Handle(Geom_Curve)& C, param = ElCLib::Parameter(Handle(Geom_Hyperbola)::DownCast(cbase)->Hypr(),P); } else { - GeomAdaptor_Curve TheCurve(C); + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(C); Extrema_ExtPC myExtPC(P,TheCurve); if (!myExtPC.IsDone()) { throw Standard_Failure("Draft_Modification_1::Parameter: ExtremaPC not done."); @@ -2042,11 +2039,11 @@ static Standard_Real Parameter(const Handle(Geom_Curve)& C, myExtPC.TrimmedSquareDistances(dist1_2,dist2_2,p1b,p2b); if (dist1_2 < dist2_2) { done = -1; - param = TheCurve.FirstParameter(); + param = TheCurve->FirstParameter(); } else { done = 1; - param = TheCurve.LastParameter(); + param = TheCurve->LastParameter(); } } diff --git a/src/DrawDim/DrawDim_Radius.cxx b/src/DrawDim/DrawDim_Radius.cxx index 9babba8298..17c61f00d8 100644 --- a/src/DrawDim/DrawDim_Radius.cxx +++ b/src/DrawDim/DrawDim_Radius.cxx @@ -95,7 +95,7 @@ void DrawDim_Radius::DrawOn(Draw_Display& dis) const Standard_Real vMoy = (vFirst + vLast)/2; gp_Pnt curpos ; surfAlgo.D0(uMoy, vMoy, curpos); - const Handle(Geom_Surface)& surf = surfAlgo.Surface().Surface(); + const Handle(Geom_Surface)& surf = surfAlgo.Surface()->Surface(); Handle(Geom_Curve) aCurve; if (surf->DynamicType() == STANDARD_TYPE(Geom_ToroidalSurface)) { aCurve = surf->UIso(uMoy); diff --git a/src/DrawTrSurf/DrawTrSurf_BSplineSurface.cxx b/src/DrawTrSurf/DrawTrSurf_BSplineSurface.cxx index 6bc6d6b01f..a71aa81cfa 100644 --- a/src/DrawTrSurf/DrawTrSurf_BSplineSurface.cxx +++ b/src/DrawTrSurf/DrawTrSurf_BSplineSurface.cxx @@ -125,7 +125,7 @@ void DrawTrSurf_BSplineSurface::DrawOn (Draw_Display& dis) const Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(); HS->Load(surf); - Adaptor3d_IsoCurve C(HS); + Handle(Adaptor3d_IsoCurve) C = new Adaptor3d_IsoCurve(HS); dis.SetColor(isosLook); first = S->FirstUKnotIndex() + 1; diff --git a/src/DrawTrSurf/DrawTrSurf_Curve.cxx b/src/DrawTrSurf/DrawTrSurf_Curve.cxx index 826e875ccc..f785c2735c 100644 --- a/src/DrawTrSurf/DrawTrSurf_Curve.cxx +++ b/src/DrawTrSurf/DrawTrSurf_Curve.cxx @@ -117,7 +117,7 @@ void DrawTrSurf_Curve::DrawOn (Draw_Display& dis) const } dis.SetColor (look); - GeomAdaptor_Curve C(curv,First,Last); + Handle(GeomAdaptor_Curve) C = new GeomAdaptor_Curve(curv,First,Last); DrawCurveOn(C,dis); // mark the orientation @@ -125,7 +125,7 @@ void DrawTrSurf_Curve::DrawOn (Draw_Display& dis) const Draw_Bounds = Standard_False; gp_Pnt P; gp_Vec V; - C.D1(Last,P,V); + C->D1(Last,P,V); gp_Pnt2d p1,p2; dis.Project(P,p1); P.Translate(V); @@ -144,11 +144,11 @@ void DrawTrSurf_Curve::DrawOn (Draw_Display& dis) const Draw_Bounds = Standard_True; } // Draw the curvature Radius - if (dispcurvradius && (C.GetType() != GeomAbs_Line)) { + if (dispcurvradius && (C->GetType() != GeomAbs_Line)) { Standard_Integer ii; - Standard_Integer intrv, nbintv = C.NbIntervals(GeomAbs_CN); + Standard_Integer intrv, nbintv = C->NbIntervals(GeomAbs_CN); TColStd_Array1OfReal TI(1,nbintv+1); - C.Intervals(TI,GeomAbs_CN); + C->Intervals(TI,GeomAbs_CN); Standard_Real Resolution = 1.0e-9, Curvature; GeomLProp_CLProps LProp(curv, 2, Resolution); gp_Pnt P1, P2; diff --git a/src/DrawTrSurf/DrawTrSurf_Curve2d.cxx b/src/DrawTrSurf/DrawTrSurf_Curve2d.cxx index 520426b73b..6dc09059c0 100644 --- a/src/DrawTrSurf/DrawTrSurf_Curve2d.cxx +++ b/src/DrawTrSurf/DrawTrSurf_Curve2d.cxx @@ -116,7 +116,7 @@ void DrawTrSurf_Curve2d::DrawOn (Draw_Display& dis) const dis.SetColor (look); - Geom2dAdaptor_Curve C2d(curv,First,Last); + Handle(Geom2dAdaptor_Curve) C2d = new Geom2dAdaptor_Curve(curv,First,Last); DrawCurve2dOn (C2d, dis); // mark the origin @@ -124,7 +124,7 @@ void DrawTrSurf_Curve2d::DrawOn (Draw_Display& dis) const Draw_Bounds = Standard_False; gp_Pnt2d p1,p2; gp_Vec2d v; - C2d.D1(Last,p1,v); + C2d->D1(Last,p1,v); if (v.Magnitude() > gp::Resolution()) { Standard_Real L = 20 / dis.Zoom(); Standard_Real H = 10 / dis.Zoom(); @@ -139,11 +139,11 @@ void DrawTrSurf_Curve2d::DrawOn (Draw_Display& dis) const } // Draw the curvature Radius - if (dispcurvradius && (C2d.GetType() != GeomAbs_Line)) { + if (dispcurvradius && (C2d->GetType() != GeomAbs_Line)) { Standard_Integer ii; - Standard_Integer intrv, nbintv = C2d.NbIntervals(GeomAbs_CN); + Standard_Integer intrv, nbintv = C2d->NbIntervals(GeomAbs_CN); TColStd_Array1OfReal TI(1,nbintv+1); - C2d.Intervals(TI,GeomAbs_CN); + C2d->Intervals(TI,GeomAbs_CN); Standard_Real Resolution = 1.0e-9, Curvature; Geom2dLProp_CLProps2d LProp(curv, 2, Resolution); gp_Pnt2d P1, P2; diff --git a/src/DrawTrSurf/DrawTrSurf_Drawable.cxx b/src/DrawTrSurf/DrawTrSurf_Drawable.cxx index 180d0d3ed6..23e705c79c 100644 --- a/src/DrawTrSurf/DrawTrSurf_Drawable.cxx +++ b/src/DrawTrSurf/DrawTrSurf_Drawable.cxx @@ -51,7 +51,7 @@ const Standard_Integer DrawMode ) : //purpose : draw a 2D curve //======================================================================= -void DrawTrSurf_Drawable::DrawCurve2dOn (Adaptor2d_Curve2d& C, +void DrawTrSurf_Drawable::DrawCurve2dOn (const Handle(Adaptor2d_Curve2d)& C, Draw_Display& aDisplay) const { gp_Pnt P; @@ -73,22 +73,22 @@ void DrawTrSurf_Drawable::DrawCurve2dOn (Adaptor2d_Curve2d& C, } } else { - Standard_Integer intrv, nbintv = C.NbIntervals(GeomAbs_CN); + Standard_Integer intrv, nbintv = C->NbIntervals(GeomAbs_CN); TColStd_Array1OfReal TI(1,nbintv+1); - C.Intervals(TI,GeomAbs_CN); - C.D0(C.FirstParameter(),aPoint2d); + C->Intervals(TI,GeomAbs_CN); + C->D0(C->FirstParameter(),aPoint2d); aDisplay.MoveTo(aPoint2d); for (intrv = 1; intrv <= nbintv; intrv++) { - if (C.GetType() != GeomAbs_Line) { + if (C->GetType() != GeomAbs_Line) { Standard_Real t = TI(intrv); Standard_Real step = (TI(intrv+1) - t) / myDiscret; for (Standard_Integer i = 1; i < myDiscret; i++) { t += step; - C.D0(t,aPoint2d); + C->D0(t,aPoint2d); aDisplay.DrawTo(aPoint2d); } } - C.D0(TI(intrv+1),aPoint2d); + C->D0(TI(intrv+1),aPoint2d); aDisplay.DrawTo(aPoint2d); } } @@ -99,7 +99,7 @@ void DrawTrSurf_Drawable::DrawCurve2dOn (Adaptor2d_Curve2d& C, //purpose : draw a 3D curve //======================================================================= static void PlotCurve (Draw_Display& aDisplay, - const Adaptor3d_Curve& C, + const Handle(Adaptor3d_Curve)& C, Standard_Real& theFirstParam, Standard_Real theHalfStep, const gp_Pnt& theFirstPnt, @@ -108,7 +108,7 @@ static void PlotCurve (Draw_Display& aDisplay, Standard_Real IsoRatio = 1.001; gp_Pnt Pm; - C.D0 (theFirstParam + theHalfStep, Pm); + C->D0 (theFirstParam + theHalfStep, Pm); Standard_Real dfLength = theFirstPnt.Distance(theLastPnt); if (dfLength < Precision::Confusion() || @@ -125,7 +125,7 @@ static void PlotCurve (Draw_Display& aDisplay, //purpose : draw a 3D curve //======================================================================= -void DrawTrSurf_Drawable::DrawCurveOn (Adaptor3d_Curve& C, +void DrawTrSurf_Drawable::DrawCurveOn (const Handle(Adaptor3d_Curve)& C, Draw_Display& aDisplay) const { gp_Pnt P; @@ -145,12 +145,12 @@ void DrawTrSurf_Drawable::DrawCurveOn (Adaptor3d_Curve& C, else { Standard_Integer j; - Standard_Integer intrv, nbintv = C.NbIntervals(GeomAbs_CN); + Standard_Integer intrv, nbintv = C->NbIntervals(GeomAbs_CN); TColStd_Array1OfReal TI(1,nbintv+1); - C.Intervals(TI,GeomAbs_CN); - C.D0(C.FirstParameter(),P); + C->Intervals(TI,GeomAbs_CN); + C->D0(C->FirstParameter(),P); aDisplay.MoveTo(P); - GeomAbs_CurveType CurvType = C.GetType(); + GeomAbs_CurveType CurvType = C->GetType(); gp_Pnt aPPnt=P, aNPnt; for (intrv = 1; intrv <= nbintv; intrv++) @@ -167,7 +167,7 @@ void DrawTrSurf_Drawable::DrawCurveOn (Adaptor3d_Curve& C, for (j = 1; j < myDiscret; j++) { t += step; - C.D0(t,P); + C->D0(t,P); aDisplay.DrawTo(P); } break; @@ -181,7 +181,7 @@ void DrawTrSurf_Drawable::DrawCurveOn (Adaptor3d_Curve& C, for (j = 1; j < nIter; j++) { const Standard_Real t1 = t+step*2.; - C.D0 (t1, aNPnt); + C->D0 (t1, aNPnt); PlotCurve (aDisplay, C, t, step, aPPnt, aNPnt); aPPnt = aNPnt; t = t1; @@ -190,7 +190,7 @@ void DrawTrSurf_Drawable::DrawCurveOn (Adaptor3d_Curve& C, break; } - C.D0(TI(intrv+1),P); + C->D0(TI(intrv+1),P); PlotCurve (aDisplay, C, t, step, aPPnt, P); aDisplay.DrawTo(P); } @@ -203,21 +203,21 @@ void DrawTrSurf_Drawable::DrawCurveOn (Adaptor3d_Curve& C, //purpose : //======================================================================= -void DrawTrSurf_Drawable::DrawIsoCurveOn(Adaptor3d_IsoCurve& C, +void DrawTrSurf_Drawable::DrawIsoCurveOn(const Handle(Adaptor3d_IsoCurve)& C, const GeomAbs_IsoType T, const Standard_Real P, const Standard_Real F, const Standard_Real L, Draw_Display& dis) const { - C.Load(T,P,F,L); - if ((C.GetType() == GeomAbs_BezierCurve) || - (C.GetType() == GeomAbs_BSplineCurve)) { - GeomAdaptor_Curve GC; - if (C.GetType() == GeomAbs_BezierCurve) - GC.Load(C.Bezier(),F,L); + C->Load(T,P,F,L); + if ((C->GetType() == GeomAbs_BezierCurve) || + (C->GetType() == GeomAbs_BSplineCurve)) { + Handle(GeomAdaptor_Curve) GC = new GeomAdaptor_Curve(); + if (C->GetType() == GeomAbs_BezierCurve) + GC->Load(C->Bezier(),F,L); else - GC.Load(C.BSpline(),F,L); + GC->Load(C->BSpline(),F,L); DrawCurveOn(GC,dis); } diff --git a/src/DrawTrSurf/DrawTrSurf_Drawable.hxx b/src/DrawTrSurf/DrawTrSurf_Drawable.hxx index c6ce6ac7f5..5aa299990f 100644 --- a/src/DrawTrSurf/DrawTrSurf_Drawable.hxx +++ b/src/DrawTrSurf/DrawTrSurf_Drawable.hxx @@ -37,14 +37,14 @@ class DrawTrSurf_Drawable : public Draw_Drawable3D public: //! Draw a polygon of the curve on the Display - Standard_EXPORT void DrawCurve2dOn (Adaptor2d_Curve2d& C, Draw_Display& D) const; + Standard_EXPORT void DrawCurve2dOn (const Handle(Adaptor2d_Curve2d)& C, Draw_Display& D) const; //! Draw a polygon of the curve on the Display - Standard_EXPORT void DrawCurveOn (Adaptor3d_Curve& C, Draw_Display& D) const; + Standard_EXPORT void DrawCurveOn (const Handle(Adaptor3d_Curve)& C, Draw_Display& D) const; //! Load C with the specified iso and Draw a polygon //! of the curve on the Display - Standard_EXPORT void DrawIsoCurveOn (Adaptor3d_IsoCurve& C, const GeomAbs_IsoType T, const Standard_Real P, const Standard_Real F, const Standard_Real L, Draw_Display& D) const; + Standard_EXPORT void DrawIsoCurveOn (const Handle(Adaptor3d_IsoCurve)& C, const GeomAbs_IsoType T, const Standard_Real P, const Standard_Real F, const Standard_Real L, Draw_Display& D) const; //! this is defined only to tell C++ not to complain //! about inheriting a pure virtual method. diff --git a/src/DrawTrSurf/DrawTrSurf_Surface.cxx b/src/DrawTrSurf/DrawTrSurf_Surface.cxx index b9901e649b..b58e3f73b3 100644 --- a/src/DrawTrSurf/DrawTrSurf_Surface.cxx +++ b/src/DrawTrSurf/DrawTrSurf_Surface.cxx @@ -162,7 +162,7 @@ void DrawTrSurf_Surface::DrawOn (Draw_Display& dis, const Standard_Boolean Iso) Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(); HS->Load(surf,UFirst,ULast,VFirst,VLast); - Adaptor3d_IsoCurve C(HS); + Handle(Adaptor3d_IsoCurve) C = new Adaptor3d_IsoCurve(HS); if (Iso) { dis.SetColor(isosLook); diff --git a/src/Extrema/Extrema_CCLocFOfLocECC.hxx b/src/Extrema/Extrema_CCLocFOfLocECC.hxx index 42ab12c751..b52a00b017 100644 --- a/src/Extrema/Extrema_CCLocFOfLocECC.hxx +++ b/src/Extrema/Extrema_CCLocFOfLocECC.hxx @@ -47,9 +47,9 @@ public: Standard_EXPORT Extrema_CCLocFOfLocECC(const Standard_Real thetol = 1.0e-10); - Standard_EXPORT Extrema_CCLocFOfLocECC(const Adaptor3d_Curve& C1, const Adaptor3d_Curve& C2, const Standard_Real thetol = 1.0e-10); + Standard_EXPORT Extrema_CCLocFOfLocECC(const Handle(Adaptor3d_Curve)& C1, const Handle(Adaptor3d_Curve)& C2, const Standard_Real thetol = 1.0e-10); - Standard_EXPORT void SetCurve (const Standard_Integer theRank, const Adaptor3d_Curve& C1); + Standard_EXPORT void SetCurve (const Standard_Integer theRank, const Handle(Adaptor3d_Curve)& C1); void SetTolerance (const Standard_Real theTol); @@ -129,11 +129,11 @@ private: }; -#define Curve1 Adaptor3d_Curve +#define Curve1 Handle(Adaptor3d_Curve) #define Curve1_hxx #define Tool1 Extrema_CurveTool #define Tool1_hxx -#define Curve2 Adaptor3d_Curve +#define Curve2 Handle(Adaptor3d_Curve) #define Curve2_hxx #define Tool2 Extrema_CurveTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_CCLocFOfLocECC2d.hxx b/src/Extrema/Extrema_CCLocFOfLocECC2d.hxx index 905325bc91..a545b76557 100644 --- a/src/Extrema/Extrema_CCLocFOfLocECC2d.hxx +++ b/src/Extrema/Extrema_CCLocFOfLocECC2d.hxx @@ -47,9 +47,9 @@ public: Standard_EXPORT Extrema_CCLocFOfLocECC2d(const Standard_Real thetol = 1.0e-10); - Standard_EXPORT Extrema_CCLocFOfLocECC2d(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real thetol = 1.0e-10); + Standard_EXPORT Extrema_CCLocFOfLocECC2d(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real thetol = 1.0e-10); - Standard_EXPORT void SetCurve (const Standard_Integer theRank, const Adaptor2d_Curve2d& C1); + Standard_EXPORT void SetCurve (const Standard_Integer theRank, const Handle(Adaptor2d_Curve2d)& C1); void SetTolerance (const Standard_Real theTol); @@ -129,11 +129,11 @@ private: }; -#define Curve1 Adaptor2d_Curve2d +#define Curve1 Handle(Adaptor2d_Curve2d) #define Curve1_hxx #define Tool1 Extrema_Curve2dTool #define Tool1_hxx -#define Curve2 Adaptor2d_Curve2d +#define Curve2 Handle(Adaptor2d_Curve2d) #define Curve2_hxx #define Tool2 Extrema_Curve2dTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_CCLocFOfLocECC2d_0.cxx b/src/Extrema/Extrema_CCLocFOfLocECC2d_0.cxx index 5386a62fbc..4c4ffa2a62 100644 --- a/src/Extrema/Extrema_CCLocFOfLocECC2d_0.cxx +++ b/src/Extrema/Extrema_CCLocFOfLocECC2d_0.cxx @@ -26,11 +26,11 @@ #include -#define Curve1 Adaptor2d_Curve2d +#define Curve1 Handle(Adaptor2d_Curve2d) #define Curve1_hxx #define Tool1 Extrema_Curve2dTool #define Tool1_hxx -#define Curve2 Adaptor2d_Curve2d +#define Curve2 Handle(Adaptor2d_Curve2d) #define Curve2_hxx #define Tool2 Extrema_Curve2dTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_CCLocFOfLocECC_0.cxx b/src/Extrema/Extrema_CCLocFOfLocECC_0.cxx index 682e8d9165..4ee43811de 100644 --- a/src/Extrema/Extrema_CCLocFOfLocECC_0.cxx +++ b/src/Extrema/Extrema_CCLocFOfLocECC_0.cxx @@ -26,11 +26,11 @@ #include -#define Curve1 Adaptor3d_Curve +#define Curve1 Handle(Adaptor3d_Curve) #define Curve1_hxx #define Tool1 Extrema_CurveTool #define Tool1_hxx -#define Curve2 Adaptor3d_Curve +#define Curve2 Handle(Adaptor3d_Curve) #define Curve2_hxx #define Tool2 Extrema_CurveTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_Curve2dTool.cxx b/src/Extrema/Extrema_Curve2dTool.cxx index aae64823bd..ba1493d589 100644 --- a/src/Extrema/Extrema_Curve2dTool.cxx +++ b/src/Extrema/Extrema_Curve2dTool.cxx @@ -25,7 +25,7 @@ //purpose : //======================================================================= Handle(TColStd_HArray1OfReal) - Extrema_Curve2dTool::DeflCurvIntervals(const Adaptor2d_Curve2d& C) + Extrema_Curve2dTool::DeflCurvIntervals(const Handle(Adaptor2d_Curve2d)& C) { const Standard_Real epsd = 1.e-3; const Standard_Real maxdefl = 1.e3; @@ -33,12 +33,12 @@ Handle(TColStd_HArray1OfReal) Handle(TColStd_HArray1OfReal) Intervals; Standard_Integer nbpnts = 23, i; Standard_Real L = 0.; - Standard_Real tf = C.FirstParameter(), tl = C.LastParameter(); - gp_Pnt2d aP = C.Value(tf); + Standard_Real tf = C->FirstParameter(), tl = C->LastParameter(); + gp_Pnt2d aP = C->Value(tf); for (i = 2; i <= nbpnts; ++i) { Standard_Real t = (tf * (nbpnts - i) + (i - 1) * tl) / (nbpnts - 1); - gp_Pnt2d aP1 = C.Value(t); + gp_Pnt2d aP1 = C->Value(t); L += aP.Distance(aP1); } // diff --git a/src/Extrema/Extrema_Curve2dTool.hxx b/src/Extrema/Extrema_Curve2dTool.hxx index 3b6908661d..7333a807d2 100644 --- a/src/Extrema/Extrema_Curve2dTool.hxx +++ b/src/Extrema/Extrema_Curve2dTool.hxx @@ -48,87 +48,87 @@ public: DEFINE_STANDARD_ALLOC - static Standard_Real FirstParameter (const Adaptor2d_Curve2d& C); + static Standard_Real FirstParameter (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Real LastParameter (const Adaptor2d_Curve2d& C); + static Standard_Real LastParameter (const Handle(Adaptor2d_Curve2d)& C); - static GeomAbs_Shape Continuity (const Adaptor2d_Curve2d& C); + static GeomAbs_Shape Continuity (const Handle(Adaptor2d_Curve2d)& C); //! If necessary, breaks the curve in intervals of //! continuity . And returns the number of //! intervals. - static Standard_Integer NbIntervals (const Adaptor2d_Curve2d& C, const GeomAbs_Shape S); + static Standard_Integer NbIntervals (const Handle(Adaptor2d_Curve2d)& C, const GeomAbs_Shape S); //! Stores in the parameters bounding the intervals //! of continuity . - static void Intervals (const Adaptor2d_Curve2d& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); + static void Intervals (const Handle(Adaptor2d_Curve2d)& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); //! Returns the parameters bounding the intervals of subdivision of curve //! according to Curvature deflection. Value of deflection is defined in method. //! - Standard_EXPORT static Handle(TColStd_HArray1OfReal) DeflCurvIntervals(const Adaptor2d_Curve2d& C); + Standard_EXPORT static Handle(TColStd_HArray1OfReal) DeflCurvIntervals(const Handle(Adaptor2d_Curve2d)& C); - static Standard_Boolean IsClosed (const Adaptor2d_Curve2d& C); + static Standard_Boolean IsClosed (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Boolean IsPeriodic (const Adaptor2d_Curve2d& C); + static Standard_Boolean IsPeriodic (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Real Period (const Adaptor2d_Curve2d& C); + static Standard_Real Period (const Handle(Adaptor2d_Curve2d)& C); //! Computes the point of parameter U on the curve. - static gp_Pnt2d Value (const Adaptor2d_Curve2d& C, const Standard_Real U); + static gp_Pnt2d Value (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U); //! Computes the point of parameter U on the curve. - static void D0 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P); + static void D0 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P); //! Computes the point of parameter U on the curve with its //! first derivative. - static void D1 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V); + static void D1 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V); //! Returns the point P of parameter U, the first and second //! derivatives V1 and V2. - static void D2 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V1, gp_Vec2d& V2); + static void D2 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V1, gp_Vec2d& V2); //! Returns the point P of parameter U, the first, the second //! and the third derivative. - static void D3 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V1, gp_Vec2d& V2, gp_Vec2d& V3); + static void D3 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V1, gp_Vec2d& V2, gp_Vec2d& V3); //! The returned vector gives the value of the derivative for the //! order of derivation N. - static gp_Vec2d DN (const Adaptor2d_Curve2d& C, const Standard_Real U, const Standard_Integer N); + static gp_Vec2d DN (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, const Standard_Integer N); //! Returns the parametric resolution corresponding //! to the real space resolution . - static Standard_Real Resolution (const Adaptor2d_Curve2d& C, const Standard_Real R3d); + static Standard_Real Resolution (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real R3d); //! Returns the type of the curve in the current //! interval : Line, Circle, Ellipse, Hyperbola, //! Parabola, BezierCurve, BSplineCurve, OtherCurve. - static GeomAbs_CurveType GetType (const Adaptor2d_Curve2d& C); + static GeomAbs_CurveType GetType (const Handle(Adaptor2d_Curve2d)& C); - static gp_Lin2d Line (const Adaptor2d_Curve2d& C); + static gp_Lin2d Line (const Handle(Adaptor2d_Curve2d)& C); - static gp_Circ2d Circle (const Adaptor2d_Curve2d& C); + static gp_Circ2d Circle (const Handle(Adaptor2d_Curve2d)& C); - static gp_Elips2d Ellipse (const Adaptor2d_Curve2d& C); + static gp_Elips2d Ellipse (const Handle(Adaptor2d_Curve2d)& C); - static gp_Hypr2d Hyperbola (const Adaptor2d_Curve2d& C); + static gp_Hypr2d Hyperbola (const Handle(Adaptor2d_Curve2d)& C); - static gp_Parab2d Parabola (const Adaptor2d_Curve2d& C); + static gp_Parab2d Parabola (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Integer Degree (const Adaptor2d_Curve2d& C); + static Standard_Integer Degree (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Boolean IsRational (const Adaptor2d_Curve2d& C); + static Standard_Boolean IsRational (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Integer NbPoles (const Adaptor2d_Curve2d& C); + static Standard_Integer NbPoles (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Integer NbKnots (const Adaptor2d_Curve2d& C); + static Standard_Integer NbKnots (const Handle(Adaptor2d_Curve2d)& C); - static Handle(Geom2d_BezierCurve) Bezier (const Adaptor2d_Curve2d& C); + static Handle(Geom2d_BezierCurve) Bezier (const Handle(Adaptor2d_Curve2d)& C); - static Handle(Geom2d_BSplineCurve) BSpline (const Adaptor2d_Curve2d& C); + static Handle(Geom2d_BSplineCurve) BSpline (const Handle(Adaptor2d_Curve2d)& C); diff --git a/src/Extrema/Extrema_Curve2dTool.lxx b/src/Extrema/Extrema_Curve2dTool.lxx index ade79f652a..f93c5420c7 100644 --- a/src/Extrema/Extrema_Curve2dTool.lxx +++ b/src/Extrema/Extrema_Curve2dTool.lxx @@ -28,9 +28,9 @@ //purpose : //======================================================================= -inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d& C) +inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Handle(Adaptor2d_Curve2d)& C) { - return C.FirstParameter(); + return C->FirstParameter(); } //======================================================================= @@ -38,9 +38,9 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline Standard_Real Extrema_Curve2dTool::LastParameter(const Adaptor2d_Curve2d& C) + inline Standard_Real Extrema_Curve2dTool::LastParameter(const Handle(Adaptor2d_Curve2d)& C) { - return C.LastParameter(); + return C->LastParameter(); } //======================================================================= @@ -48,9 +48,9 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline GeomAbs_Shape Extrema_Curve2dTool::Continuity(const Adaptor2d_Curve2d& C) + inline GeomAbs_Shape Extrema_Curve2dTool::Continuity(const Handle(Adaptor2d_Curve2d)& C) { - return C.Continuity(); + return C->Continuity(); } //======================================================================= @@ -58,10 +58,10 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline Standard_Integer Extrema_Curve2dTool::NbIntervals(const Adaptor2d_Curve2d& C, + inline Standard_Integer Extrema_Curve2dTool::NbIntervals(const Handle(Adaptor2d_Curve2d)& C, const GeomAbs_Shape S) { - return C.NbIntervals(S); + return C->NbIntervals(S); } //======================================================================= @@ -69,11 +69,11 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline void Extrema_Curve2dTool::Intervals(const Adaptor2d_Curve2d& C, + inline void Extrema_Curve2dTool::Intervals(const Handle(Adaptor2d_Curve2d)& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S) { - C.Intervals(T, S); + C->Intervals(T, S); } //======================================================================= @@ -81,9 +81,9 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline Standard_Boolean Extrema_Curve2dTool::IsClosed(const Adaptor2d_Curve2d& C) + inline Standard_Boolean Extrema_Curve2dTool::IsClosed(const Handle(Adaptor2d_Curve2d)& C) { - return C.IsClosed(); + return C->IsClosed(); } //======================================================================= @@ -91,9 +91,9 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline Standard_Boolean Extrema_Curve2dTool::IsPeriodic(const Adaptor2d_Curve2d& C) + inline Standard_Boolean Extrema_Curve2dTool::IsPeriodic(const Handle(Adaptor2d_Curve2d)& C) { - return C.IsPeriodic(); + return C->IsPeriodic(); } //======================================================================= @@ -101,9 +101,9 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline Standard_Real Extrema_Curve2dTool::Period(const Adaptor2d_Curve2d& C) + inline Standard_Real Extrema_Curve2dTool::Period(const Handle(Adaptor2d_Curve2d)& C) { - return C.Period(); + return C->Period(); } //======================================================================= @@ -111,10 +111,10 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= - inline gp_Pnt2d Extrema_Curve2dTool::Value(const Adaptor2d_Curve2d& C, + inline gp_Pnt2d Extrema_Curve2dTool::Value(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U) { - return C.Value(U); + return C->Value(U); } //======================================================================= @@ -122,11 +122,11 @@ inline Standard_Real Extrema_Curve2dTool::FirstParameter(const Adaptor2d_Curve2d //purpose : //======================================================================= -inline void Extrema_Curve2dTool::D0(const Adaptor2d_Curve2d& C, +inline void Extrema_Curve2dTool::D0(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P) { - C.D0(U, P); + C->D0(U, P); } //======================================================================= @@ -134,12 +134,12 @@ inline void Extrema_Curve2dTool::D0(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline void Extrema_Curve2dTool::D1(const Adaptor2d_Curve2d& C, + inline void Extrema_Curve2dTool::D1(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V) { - C.D1(U, P, V); + C->D1(U, P, V); } //======================================================================= @@ -147,13 +147,13 @@ inline void Extrema_Curve2dTool::D0(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= -inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, +inline void Extrema_Curve2dTool::D2(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V1, gp_Vec2d& V2) { - C.D2(U, P, V1, V2); + C->D2(U, P, V1, V2); } //======================================================================= @@ -161,14 +161,14 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline void Extrema_Curve2dTool::D3(const Adaptor2d_Curve2d& C, + inline void Extrema_Curve2dTool::D3(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& V1, gp_Vec2d& V2, gp_Vec2d& V3) { - C.D3(U, P, V1, V2, V3); + C->D3(U, P, V1, V2, V3); } //======================================================================= @@ -176,11 +176,11 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline gp_Vec2d Extrema_Curve2dTool::DN(const Adaptor2d_Curve2d& C, + inline gp_Vec2d Extrema_Curve2dTool::DN(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, const Standard_Integer N) { - return C.DN(U, N); + return C->DN(U, N); } //======================================================================= @@ -188,10 +188,10 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline Standard_Real Extrema_Curve2dTool::Resolution(const Adaptor2d_Curve2d& C, + inline Standard_Real Extrema_Curve2dTool::Resolution(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real R3d) { - return C.Resolution(R3d); + return C->Resolution(R3d); } //======================================================================= @@ -199,9 +199,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline GeomAbs_CurveType Extrema_Curve2dTool::GetType(const Adaptor2d_Curve2d& C) + inline GeomAbs_CurveType Extrema_Curve2dTool::GetType(const Handle(Adaptor2d_Curve2d)& C) { - return C.GetType(); + return C->GetType(); } //======================================================================= @@ -209,9 +209,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline gp_Lin2d Extrema_Curve2dTool::Line(const Adaptor2d_Curve2d& C) + inline gp_Lin2d Extrema_Curve2dTool::Line(const Handle(Adaptor2d_Curve2d)& C) { - return C.Line(); + return C->Line(); } //======================================================================= @@ -219,9 +219,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline gp_Circ2d Extrema_Curve2dTool::Circle(const Adaptor2d_Curve2d& C) + inline gp_Circ2d Extrema_Curve2dTool::Circle(const Handle(Adaptor2d_Curve2d)& C) { - return C.Circle(); + return C->Circle(); } //======================================================================= @@ -229,9 +229,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline gp_Elips2d Extrema_Curve2dTool::Ellipse(const Adaptor2d_Curve2d& C) + inline gp_Elips2d Extrema_Curve2dTool::Ellipse(const Handle(Adaptor2d_Curve2d)& C) { - return C.Ellipse(); + return C->Ellipse(); } //======================================================================= @@ -239,9 +239,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline gp_Hypr2d Extrema_Curve2dTool::Hyperbola(const Adaptor2d_Curve2d& C) + inline gp_Hypr2d Extrema_Curve2dTool::Hyperbola(const Handle(Adaptor2d_Curve2d)& C) { - return C.Hyperbola(); + return C->Hyperbola(); } //======================================================================= @@ -249,9 +249,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline gp_Parab2d Extrema_Curve2dTool::Parabola(const Adaptor2d_Curve2d& C) + inline gp_Parab2d Extrema_Curve2dTool::Parabola(const Handle(Adaptor2d_Curve2d)& C) { - return C.Parabola(); + return C->Parabola(); } //======================================================================= @@ -259,9 +259,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline Standard_Integer Extrema_Curve2dTool::NbPoles(const Adaptor2d_Curve2d& C) + inline Standard_Integer Extrema_Curve2dTool::NbPoles(const Handle(Adaptor2d_Curve2d)& C) { - return C.NbPoles(); + return C->NbPoles(); } //======================================================================= @@ -269,9 +269,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= - inline Standard_Integer Extrema_Curve2dTool::Degree(const Adaptor2d_Curve2d& C) + inline Standard_Integer Extrema_Curve2dTool::Degree(const Handle(Adaptor2d_Curve2d)& C) { - return C.Degree(); + return C->Degree(); } //======================================================================= @@ -279,9 +279,9 @@ inline void Extrema_Curve2dTool::D2(const Adaptor2d_Curve2d& C, //purpose : //======================================================================= -inline Standard_Boolean Extrema_Curve2dTool::IsRational(const Adaptor2d_Curve2d& C) +inline Standard_Boolean Extrema_Curve2dTool::IsRational(const Handle(Adaptor2d_Curve2d)& C) { - return C.Degree() != 0; + return C->Degree() != 0; } @@ -290,9 +290,9 @@ inline Standard_Boolean Extrema_Curve2dTool::IsRational(const Adaptor2d_Curve2d& //purpose : //======================================================================= - inline Standard_Integer Extrema_Curve2dTool::NbKnots(const Adaptor2d_Curve2d& C) + inline Standard_Integer Extrema_Curve2dTool::NbKnots(const Handle(Adaptor2d_Curve2d)& C) { - return C.NbKnots(); + return C->NbKnots(); } //======================================================================= @@ -300,9 +300,9 @@ inline Standard_Boolean Extrema_Curve2dTool::IsRational(const Adaptor2d_Curve2d& //purpose : //======================================================================= - inline Handle(Geom2d_BezierCurve) Extrema_Curve2dTool::Bezier(const Adaptor2d_Curve2d& C) + inline Handle(Geom2d_BezierCurve) Extrema_Curve2dTool::Bezier(const Handle(Adaptor2d_Curve2d)& C) { - return C.Bezier(); + return C->Bezier(); } //======================================================================= @@ -310,8 +310,8 @@ inline Standard_Boolean Extrema_Curve2dTool::IsRational(const Adaptor2d_Curve2d& //purpose : //======================================================================= - inline Handle(Geom2d_BSplineCurve) Extrema_Curve2dTool::BSpline(const Adaptor2d_Curve2d& C) + inline Handle(Geom2d_BSplineCurve) Extrema_Curve2dTool::BSpline(const Handle(Adaptor2d_Curve2d)& C) { - return C.BSpline(); + return C->BSpline(); } diff --git a/src/Extrema/Extrema_CurveTool.cxx b/src/Extrema/Extrema_CurveTool.cxx index 0f3dd23a02..9b6787b60e 100644 --- a/src/Extrema/Extrema_CurveTool.cxx +++ b/src/Extrema/Extrema_CurveTool.cxx @@ -26,14 +26,14 @@ //function : IsPeriodic //purpose : //======================================================================= -Standard_Boolean Extrema_CurveTool::IsPeriodic(const Adaptor3d_Curve& C) +Standard_Boolean Extrema_CurveTool::IsPeriodic(const Handle(Adaptor3d_Curve)& C) { GeomAbs_CurveType aType = GetType(C); if (aType == GeomAbs_Circle || aType == GeomAbs_Ellipse) return Standard_True; else - return C.IsPeriodic(); + return C->IsPeriodic(); } //======================================================================= @@ -41,7 +41,7 @@ Standard_Boolean Extrema_CurveTool::IsPeriodic(const Adaptor3d_Curve& C) //purpose : //======================================================================= Handle(TColStd_HArray1OfReal) -Extrema_CurveTool::DeflCurvIntervals(const Adaptor3d_Curve& C) +Extrema_CurveTool::DeflCurvIntervals(const Handle(Adaptor3d_Curve)& C) { const Standard_Real epsd = 1.e-3; const Standard_Real maxdefl = 1.e3; @@ -49,12 +49,12 @@ Extrema_CurveTool::DeflCurvIntervals(const Adaptor3d_Curve& C) Handle(TColStd_HArray1OfReal) Intervals; Standard_Integer nbpnts = 23, i; Standard_Real L = 0.; - Standard_Real tf = C.FirstParameter(), tl = C.LastParameter(); - gp_Pnt aP = C.Value(tf); + Standard_Real tf = C->FirstParameter(), tl = C->LastParameter(); + gp_Pnt aP = C->Value(tf); for (i = 2; i <= nbpnts; ++i) { Standard_Real t = (tf * (nbpnts - i) + (i - 1) * tl) / (nbpnts - 1); - gp_Pnt aP1 = C.Value(t); + gp_Pnt aP1 = C->Value(t); L += aP.Distance(aP1); } // diff --git a/src/Extrema/Extrema_CurveTool.hxx b/src/Extrema/Extrema_CurveTool.hxx index 55ce1434d2..fa3ad56812 100644 --- a/src/Extrema/Extrema_CurveTool.hxx +++ b/src/Extrema/Extrema_CurveTool.hxx @@ -48,69 +48,69 @@ public: DEFINE_STANDARD_ALLOC - static Standard_Real FirstParameter (const Adaptor3d_Curve& C); + static Standard_Real FirstParameter (const Handle(Adaptor3d_Curve)& C); - static Standard_Real LastParameter (const Adaptor3d_Curve& C); + static Standard_Real LastParameter (const Handle(Adaptor3d_Curve)& C); - static GeomAbs_Shape Continuity (const Adaptor3d_Curve& C); + static GeomAbs_Shape Continuity (const Handle(Adaptor3d_Curve)& C); //! Returns the number of intervals for continuity //! . May be one if Continuity(me) >= - static Standard_Integer NbIntervals (Adaptor3d_Curve& C, const GeomAbs_Shape S); + static Standard_Integer NbIntervals (Handle(Adaptor3d_Curve)& C, const GeomAbs_Shape S); //! Stores in the parameters bounding the intervals //! of continuity . //! //! The array must provide enough room to accommodate //! for the parameters. i.e. T.Length() > NbIntervals() - static void Intervals (Adaptor3d_Curve& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); + static void Intervals (Handle(Adaptor3d_Curve)& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); //! Returns the parameters bounding the intervals of subdivision of curve //! according to Curvature deflection. Value of deflection is defined in method. //! - Standard_EXPORT static Handle(TColStd_HArray1OfReal) DeflCurvIntervals(const Adaptor3d_Curve& C); + Standard_EXPORT static Handle(TColStd_HArray1OfReal) DeflCurvIntervals(const Handle(Adaptor3d_Curve)& C); - Standard_EXPORT static Standard_Boolean IsPeriodic (const Adaptor3d_Curve& C); + Standard_EXPORT static Standard_Boolean IsPeriodic (const Handle(Adaptor3d_Curve)& C); - static Standard_Real Period (const Adaptor3d_Curve& C); + static Standard_Real Period (const Handle(Adaptor3d_Curve)& C); - static Standard_Real Resolution (const Adaptor3d_Curve& C, const Standard_Real R3d); + static Standard_Real Resolution (const Handle(Adaptor3d_Curve)& C, const Standard_Real R3d); - static GeomAbs_CurveType GetType (const Adaptor3d_Curve& C); + static GeomAbs_CurveType GetType (const Handle(Adaptor3d_Curve)& C); - static gp_Pnt Value (const Adaptor3d_Curve& C, const Standard_Real U); + static gp_Pnt Value (const Handle(Adaptor3d_Curve)& C, const Standard_Real U); - static void D0 (const Adaptor3d_Curve& C, const Standard_Real U, gp_Pnt& P); + static void D0 (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P); - static void D1 (const Adaptor3d_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V); + static void D1 (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V); - static void D2 (const Adaptor3d_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2); + static void D2 (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2); - static void D3 (const Adaptor3d_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3); + static void D3 (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3); - static gp_Vec DN (const Adaptor3d_Curve& C, const Standard_Real U, const Standard_Integer N); + static gp_Vec DN (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, const Standard_Integer N); - static gp_Lin Line (const Adaptor3d_Curve& C); + static gp_Lin Line (const Handle(Adaptor3d_Curve)& C); - static gp_Circ Circle (const Adaptor3d_Curve& C); + static gp_Circ Circle (const Handle(Adaptor3d_Curve)& C); - static gp_Elips Ellipse (const Adaptor3d_Curve& C); + static gp_Elips Ellipse (const Handle(Adaptor3d_Curve)& C); - static gp_Hypr Hyperbola (const Adaptor3d_Curve& C); + static gp_Hypr Hyperbola (const Handle(Adaptor3d_Curve)& C); - static gp_Parab Parabola (const Adaptor3d_Curve& C); + static gp_Parab Parabola (const Handle(Adaptor3d_Curve)& C); - static Standard_Integer Degree (const Adaptor3d_Curve& C); + static Standard_Integer Degree (const Handle(Adaptor3d_Curve)& C); - static Standard_Boolean IsRational (const Adaptor3d_Curve& C); + static Standard_Boolean IsRational (const Handle(Adaptor3d_Curve)& C); - static Standard_Integer NbPoles (const Adaptor3d_Curve& C); + static Standard_Integer NbPoles (const Handle(Adaptor3d_Curve)& C); - static Standard_Integer NbKnots (const Adaptor3d_Curve& C); + static Standard_Integer NbKnots (const Handle(Adaptor3d_Curve)& C); - static Handle(Geom_BezierCurve) Bezier (const Adaptor3d_Curve& C); + static Handle(Geom_BezierCurve) Bezier (const Handle(Adaptor3d_Curve)& C); - static Handle(Geom_BSplineCurve) BSpline (const Adaptor3d_Curve& C); + static Handle(Geom_BSplineCurve) BSpline (const Handle(Adaptor3d_Curve)& C); diff --git a/src/Extrema/Extrema_CurveTool.lxx b/src/Extrema/Extrema_CurveTool.lxx index 9a37c79137..e856ae7e5e 100644 --- a/src/Extrema/Extrema_CurveTool.lxx +++ b/src/Extrema/Extrema_CurveTool.lxx @@ -31,9 +31,9 @@ //purpose : //======================================================================= -inline Standard_Real Extrema_CurveTool::FirstParameter(const Adaptor3d_Curve& C) +inline Standard_Real Extrema_CurveTool::FirstParameter(const Handle(Adaptor3d_Curve)& C) { - return C.FirstParameter(); + return C->FirstParameter(); } //======================================================================= @@ -41,9 +41,9 @@ inline Standard_Real Extrema_CurveTool::FirstParameter(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline Standard_Real Extrema_CurveTool::LastParameter(const Adaptor3d_Curve& C) +inline Standard_Real Extrema_CurveTool::LastParameter(const Handle(Adaptor3d_Curve)& C) { - return C.LastParameter(); + return C->LastParameter(); } //======================================================================= @@ -51,10 +51,10 @@ inline Standard_Real Extrema_CurveTool::LastParameter(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline gp_Pnt Extrema_CurveTool::Value(const Adaptor3d_Curve& C, +inline gp_Pnt Extrema_CurveTool::Value(const Handle(Adaptor3d_Curve)& C, const Standard_Real U) { - return C.Value(U); + return C->Value(U); } //======================================================================= @@ -62,11 +62,11 @@ inline gp_Pnt Extrema_CurveTool::Value(const Adaptor3d_Curve& C, //purpose : //======================================================================= -inline void Extrema_CurveTool::D0(const Adaptor3d_Curve& C, +inline void Extrema_CurveTool::D0(const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P) { - C.D0(U, P); + C->D0(U, P); } //======================================================================= @@ -74,12 +74,12 @@ inline void Extrema_CurveTool::D0(const Adaptor3d_Curve& C, //purpose : //======================================================================= -inline void Extrema_CurveTool::D1(const Adaptor3d_Curve& C, +inline void Extrema_CurveTool::D1(const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V) { - C.D1(U, P, V); + C->D1(U, P, V); } //======================================================================= @@ -87,13 +87,13 @@ inline void Extrema_CurveTool::D1(const Adaptor3d_Curve& C, //purpose : //======================================================================= -inline void Extrema_CurveTool::D2(const Adaptor3d_Curve& C, +inline void Extrema_CurveTool::D2(const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2) { - C.D2(U, P, V1, V2); + C->D2(U, P, V1, V2); } //======================================================================= @@ -101,25 +101,25 @@ inline void Extrema_CurveTool::D2(const Adaptor3d_Curve& C, //purpose : //======================================================================= - inline void Extrema_CurveTool::D3(const Adaptor3d_Curve& C, + inline void Extrema_CurveTool::D3(const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3) { - C.D3(U, P, V1, V2, V3); + C->D3(U, P, V1, V2, V3); } //======================================================================= //function : DN //purpose : //======================================================================= -inline gp_Vec Extrema_CurveTool::DN(const Adaptor3d_Curve& C, +inline gp_Vec Extrema_CurveTool::DN(const Handle(Adaptor3d_Curve)& C, const Standard_Real U, const Standard_Integer N) { - return C.DN(U, N); + return C->DN(U, N); } @@ -128,9 +128,9 @@ inline gp_Vec Extrema_CurveTool::DN(const Adaptor3d_Curve& C, //purpose : //======================================================================= -inline GeomAbs_Shape Extrema_CurveTool::Continuity(const Adaptor3d_Curve& C) +inline GeomAbs_Shape Extrema_CurveTool::Continuity(const Handle(Adaptor3d_Curve)& C) { - return C.Continuity(); + return C->Continuity(); } //======================================================================= @@ -138,10 +138,10 @@ inline GeomAbs_Shape Extrema_CurveTool::Continuity(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline Standard_Integer Extrema_CurveTool::NbIntervals(Adaptor3d_Curve& C, +inline Standard_Integer Extrema_CurveTool::NbIntervals(Handle(Adaptor3d_Curve)& C, const GeomAbs_Shape S) { - return C.NbIntervals(S); + return C->NbIntervals(S); } @@ -150,11 +150,11 @@ inline Standard_Integer Extrema_CurveTool::NbIntervals(Adaptor3d_Curve& C, //purpose : //======================================================================= -inline void Extrema_CurveTool::Intervals(Adaptor3d_Curve& C, +inline void Extrema_CurveTool::Intervals(Handle(Adaptor3d_Curve)& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S) { - C.Intervals(T, S); + C->Intervals(T, S); } //======================================================================= @@ -162,9 +162,9 @@ inline void Extrema_CurveTool::Intervals(Adaptor3d_Curve& C, //purpose : //======================================================================= -inline Standard_Real Extrema_CurveTool::Period(const Adaptor3d_Curve& C) +inline Standard_Real Extrema_CurveTool::Period(const Handle(Adaptor3d_Curve)& C) { - return C.Period(); + return C->Period(); } @@ -173,9 +173,9 @@ inline Standard_Real Extrema_CurveTool::Period(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline GeomAbs_CurveType Extrema_CurveTool::GetType(const Adaptor3d_Curve& C) +inline GeomAbs_CurveType Extrema_CurveTool::GetType(const Handle(Adaptor3d_Curve)& C) { - return C.GetType(); + return C->GetType(); } //======================================================================= @@ -183,9 +183,9 @@ inline GeomAbs_CurveType Extrema_CurveTool::GetType(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline gp_Lin Extrema_CurveTool::Line(const Adaptor3d_Curve& C) +inline gp_Lin Extrema_CurveTool::Line(const Handle(Adaptor3d_Curve)& C) { - return C.Line(); + return C->Line(); } //======================================================================= @@ -193,9 +193,9 @@ inline gp_Lin Extrema_CurveTool::Line(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline gp_Circ Extrema_CurveTool::Circle(const Adaptor3d_Curve& C) +inline gp_Circ Extrema_CurveTool::Circle(const Handle(Adaptor3d_Curve)& C) { - return C.Circle(); + return C->Circle(); } //======================================================================= @@ -203,9 +203,9 @@ inline gp_Circ Extrema_CurveTool::Circle(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline gp_Elips Extrema_CurveTool::Ellipse(const Adaptor3d_Curve& C) +inline gp_Elips Extrema_CurveTool::Ellipse(const Handle(Adaptor3d_Curve)& C) { - return C.Ellipse(); + return C->Ellipse(); } //======================================================================= @@ -213,9 +213,9 @@ inline gp_Elips Extrema_CurveTool::Ellipse(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline gp_Hypr Extrema_CurveTool::Hyperbola(const Adaptor3d_Curve& C) +inline gp_Hypr Extrema_CurveTool::Hyperbola(const Handle(Adaptor3d_Curve)& C) { - return C.Hyperbola(); + return C->Hyperbola(); } //======================================================================= @@ -223,18 +223,18 @@ inline gp_Hypr Extrema_CurveTool::Hyperbola(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline gp_Parab Extrema_CurveTool::Parabola(const Adaptor3d_Curve& C) +inline gp_Parab Extrema_CurveTool::Parabola(const Handle(Adaptor3d_Curve)& C) { - return C.Parabola(); + return C->Parabola(); } //======================================================================= //function : NbPoles //purpose : //======================================================================= - inline Standard_Integer Extrema_CurveTool::NbPoles(const Adaptor3d_Curve& C) + inline Standard_Integer Extrema_CurveTool::NbPoles(const Handle(Adaptor3d_Curve)& C) { - return C.NbPoles(); + return C->NbPoles(); } //======================================================================= @@ -242,9 +242,9 @@ inline gp_Parab Extrema_CurveTool::Parabola(const Adaptor3d_Curve& C) //purpose : //======================================================================= - inline Standard_Integer Extrema_CurveTool::Degree(const Adaptor3d_Curve& C) + inline Standard_Integer Extrema_CurveTool::Degree(const Handle(Adaptor3d_Curve)& C) { - return C.Degree(); + return C->Degree(); } //======================================================================= @@ -252,9 +252,9 @@ inline gp_Parab Extrema_CurveTool::Parabola(const Adaptor3d_Curve& C) //purpose : //======================================================================= - inline Standard_Boolean Extrema_CurveTool::IsRational(const Adaptor3d_Curve& C) + inline Standard_Boolean Extrema_CurveTool::IsRational(const Handle(Adaptor3d_Curve)& C) { - return C.IsRational(); + return C->IsRational(); } //======================================================================= @@ -262,9 +262,9 @@ inline gp_Parab Extrema_CurveTool::Parabola(const Adaptor3d_Curve& C) //purpose : //======================================================================= - inline Standard_Integer Extrema_CurveTool::NbKnots(const Adaptor3d_Curve& C) + inline Standard_Integer Extrema_CurveTool::NbKnots(const Handle(Adaptor3d_Curve)& C) { - return C.NbKnots(); + return C->NbKnots(); } @@ -273,9 +273,9 @@ inline gp_Parab Extrema_CurveTool::Parabola(const Adaptor3d_Curve& C) //purpose : //======================================================================= -inline Handle(Geom_BezierCurve) Extrema_CurveTool::Bezier(const Adaptor3d_Curve& C) +inline Handle(Geom_BezierCurve) Extrema_CurveTool::Bezier(const Handle(Adaptor3d_Curve)& C) { - return C.Bezier(); + return C->Bezier(); } //======================================================================= @@ -283,9 +283,9 @@ inline Handle(Geom_BezierCurve) Extrema_CurveTool::Bezier(const Adaptor3d_Curve& //purpose : //======================================================================= -inline Handle(Geom_BSplineCurve) Extrema_CurveTool::BSpline(const Adaptor3d_Curve& C) +inline Handle(Geom_BSplineCurve) Extrema_CurveTool::BSpline(const Handle(Adaptor3d_Curve)& C) { - return C.BSpline(); + return C->BSpline(); } //======================================================================= @@ -293,8 +293,8 @@ inline Handle(Geom_BSplineCurve) Extrema_CurveTool::BSpline(const Adaptor3d_Curv //purpose : //======================================================================= -inline Standard_Real Extrema_CurveTool::Resolution(const Adaptor3d_Curve& C, +inline Standard_Real Extrema_CurveTool::Resolution(const Handle(Adaptor3d_Curve)& C, const Standard_Real R3d) { - return C.Resolution(R3d); + return C->Resolution(R3d); } diff --git a/src/Extrema/Extrema_ECC.hxx b/src/Extrema/Extrema_ECC.hxx index b36cda84ab..8aa66d201e 100644 --- a/src/Extrema/Extrema_ECC.hxx +++ b/src/Extrema/Extrema_ECC.hxx @@ -48,15 +48,15 @@ public: //! The function F(u,v)=distance(C1(u),C2(v)) has an //! extremum when gradient(f)=0. The algorithm uses //! Evtushenko's global optimization solver. - Standard_EXPORT Extrema_ECC(const Adaptor3d_Curve& C1, const Adaptor3d_Curve& C2); + Standard_EXPORT Extrema_ECC(const Handle(Adaptor3d_Curve)& C1, const Handle(Adaptor3d_Curve)& C2); //! Calculates all the distances as above //! between Uinf and Usup for C1 and between Vinf and Vsup //! for C2. - Standard_EXPORT Extrema_ECC(const Adaptor3d_Curve& C1, const Adaptor3d_Curve& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); + Standard_EXPORT Extrema_ECC(const Handle(Adaptor3d_Curve)& C1, const Handle(Adaptor3d_Curve)& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); //! Set params in case of empty constructor is usage. - Standard_EXPORT void SetParams (const Adaptor3d_Curve& C1, const Adaptor3d_Curve& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); + Standard_EXPORT void SetParams (const Handle(Adaptor3d_Curve)& C1, const Handle(Adaptor3d_Curve)& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); Standard_EXPORT void SetTolerance (const Standard_Real Tol); diff --git a/src/Extrema/Extrema_ECC2d.hxx b/src/Extrema/Extrema_ECC2d.hxx index e2cbb4a5c5..0f2dd1d98c 100644 --- a/src/Extrema/Extrema_ECC2d.hxx +++ b/src/Extrema/Extrema_ECC2d.hxx @@ -46,15 +46,15 @@ public: //! The function F(u,v)=distance(C1(u),C2(v)) has an //! extremum when gradient(f)=0. The algorithm uses //! Evtushenko's global optimization solver. - Standard_EXPORT Extrema_ECC2d(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2); + Standard_EXPORT Extrema_ECC2d(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2); //! Calculates all the distances as above //! between Uinf and Usup for C1 and between Vinf and Vsup //! for C2. - Standard_EXPORT Extrema_ECC2d(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); + Standard_EXPORT Extrema_ECC2d(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); //! Set params in case of empty constructor is usage. - Standard_EXPORT void SetParams (const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); + Standard_EXPORT void SetParams (const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup); Standard_EXPORT void SetTolerance (const Standard_Real Tol); diff --git a/src/Extrema/Extrema_ECC2d_0.cxx b/src/Extrema/Extrema_ECC2d_0.cxx index 93a06c2bcb..d00e42a663 100644 --- a/src/Extrema/Extrema_ECC2d_0.cxx +++ b/src/Extrema/Extrema_ECC2d_0.cxx @@ -24,11 +24,11 @@ #include -#define Curve1 Adaptor2d_Curve2d +#define Curve1 Handle(Adaptor2d_Curve2d) #define Curve1_hxx #define Tool1 Extrema_Curve2dTool #define Tool1_hxx -#define Curve2 Adaptor2d_Curve2d +#define Curve2 Handle(Adaptor2d_Curve2d) #define Curve2_hxx #define Tool2 Extrema_Curve2dTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_ECC_0.cxx b/src/Extrema/Extrema_ECC_0.cxx index 4ef949e189..e744b0ada4 100644 --- a/src/Extrema/Extrema_ECC_0.cxx +++ b/src/Extrema/Extrema_ECC_0.cxx @@ -24,11 +24,11 @@ #include -#define Curve1 Adaptor3d_Curve +#define Curve1 Handle(Adaptor3d_Curve) #define Curve1_hxx #define Tool1 Extrema_CurveTool #define Tool1_hxx -#define Curve2 Adaptor3d_Curve +#define Curve2 Handle(Adaptor3d_Curve) #define Curve2_hxx #define Tool2 Extrema_CurveTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_ELPCOfLocateExtPC.hxx b/src/Extrema/Extrema_ELPCOfLocateExtPC.hxx index f7df76f2c4..3c61de0936 100644 --- a/src/Extrema/Extrema_ELPCOfLocateExtPC.hxx +++ b/src/Extrema/Extrema_ELPCOfLocateExtPC.hxx @@ -60,7 +60,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ELPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ELPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -70,10 +70,10 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ELPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ELPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real TolF = 1.0e-10); //! initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! An exception is raised if the fields have not been //! initialized. diff --git a/src/Extrema/Extrema_ELPCOfLocateExtPC2d.hxx b/src/Extrema/Extrema_ELPCOfLocateExtPC2d.hxx index f70ac62c81..e7ea65cc5c 100644 --- a/src/Extrema/Extrema_ELPCOfLocateExtPC2d.hxx +++ b/src/Extrema/Extrema_ELPCOfLocateExtPC2d.hxx @@ -60,7 +60,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -70,10 +70,10 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real TolF = 1.0e-10); //! initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! An exception is raised if the fields have not been //! initialized. diff --git a/src/Extrema/Extrema_ELPCOfLocateExtPC2d_0.cxx b/src/Extrema/Extrema_ELPCOfLocateExtPC2d_0.cxx index 6e25e2d886..59e74153ce 100644 --- a/src/Extrema/Extrema_ELPCOfLocateExtPC2d_0.cxx +++ b/src/Extrema/Extrema_ELPCOfLocateExtPC2d_0.cxx @@ -29,7 +29,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Extrema_Curve2dTool #define TheCurveTool_hxx diff --git a/src/Extrema/Extrema_ELPCOfLocateExtPC_0.cxx b/src/Extrema/Extrema_ELPCOfLocateExtPC_0.cxx index 7202b99428..7bd117942b 100644 --- a/src/Extrema/Extrema_ELPCOfLocateExtPC_0.cxx +++ b/src/Extrema/Extrema_ELPCOfLocateExtPC_0.cxx @@ -29,7 +29,7 @@ #include -#define TheCurve Adaptor3d_Curve +#define TheCurve Handle(Adaptor3d_Curve) #define TheCurve_hxx #define TheCurveTool Extrema_CurveTool #define TheCurveTool_hxx diff --git a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC.hxx b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC.hxx index 9f10c33889..c36d1df764 100644 --- a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC.hxx +++ b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC.hxx @@ -51,7 +51,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -64,16 +64,16 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C); //! sets the fields of the algorithm. Standard_EXPORT void Initialize (const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); diff --git a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d.hxx b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d.hxx index e79150cc8f..b875fd7704 100644 --- a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d.hxx +++ b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d.hxx @@ -52,7 +52,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -65,16 +65,16 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C); //! sets the fields of the algorithm. Standard_EXPORT void Initialize (const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); diff --git a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d_0.cxx b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d_0.cxx index 3f8ed60883..acda8f6a3d 100644 --- a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d_0.cxx +++ b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC2d_0.cxx @@ -28,7 +28,7 @@ #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Extrema_Curve2dTool #define Tool_hxx diff --git a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC_0.cxx b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC_0.cxx index 2935373de0..114f74e18d 100644 --- a/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC_0.cxx +++ b/src/Extrema/Extrema_EPCOfELPCOfLocateExtPC_0.cxx @@ -28,7 +28,7 @@ #include -#define Curve Adaptor3d_Curve +#define Curve Handle(Adaptor3d_Curve) #define Curve_hxx #define Tool Extrema_CurveTool #define Tool_hxx diff --git a/src/Extrema/Extrema_EPCOfExtPC.hxx b/src/Extrema/Extrema_EPCOfExtPC.hxx index 02fe694dac..a272ec06c0 100644 --- a/src/Extrema/Extrema_EPCOfExtPC.hxx +++ b/src/Extrema/Extrema_EPCOfExtPC.hxx @@ -51,7 +51,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -64,16 +64,16 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C); //! sets the fields of the algorithm. Standard_EXPORT void Initialize (const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); diff --git a/src/Extrema/Extrema_EPCOfExtPC2d.hxx b/src/Extrema/Extrema_EPCOfExtPC2d.hxx index 6c1404a9d8..d4d035a619 100644 --- a/src/Extrema/Extrema_EPCOfExtPC2d.hxx +++ b/src/Extrema/Extrema_EPCOfExtPC2d.hxx @@ -51,7 +51,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -64,16 +64,16 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! abs(Un-Un-1) < TolU and abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_EPCOfExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT Extrema_EPCOfExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C); //! sets the fields of the algorithm. Standard_EXPORT void Initialize (const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU, const Standard_Real TolF); diff --git a/src/Extrema/Extrema_EPCOfExtPC2d_0.cxx b/src/Extrema/Extrema_EPCOfExtPC2d_0.cxx index afe9710113..808e75f0fe 100644 --- a/src/Extrema/Extrema_EPCOfExtPC2d_0.cxx +++ b/src/Extrema/Extrema_EPCOfExtPC2d_0.cxx @@ -28,7 +28,7 @@ #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Extrema_Curve2dTool #define Tool_hxx diff --git a/src/Extrema/Extrema_EPCOfExtPC_0.cxx b/src/Extrema/Extrema_EPCOfExtPC_0.cxx index d31fcd450a..e007f5cd27 100644 --- a/src/Extrema/Extrema_EPCOfExtPC_0.cxx +++ b/src/Extrema/Extrema_EPCOfExtPC_0.cxx @@ -28,7 +28,7 @@ #include -#define Curve Adaptor3d_Curve +#define Curve Handle(Adaptor3d_Curve) #define Curve_hxx #define Tool Extrema_CurveTool #define Tool_hxx diff --git a/src/Extrema/Extrema_ExtCC.cxx b/src/Extrema/Extrema_ExtCC.cxx index def27cbe5e..4f2f9299d5 100644 --- a/src/Extrema/Extrema_ExtCC.cxx +++ b/src/Extrema/Extrema_ExtCC.cxx @@ -62,8 +62,8 @@ Extrema_ExtCC::Extrema_ExtCC (const Standard_Real TolC1, //purpose : //======================================================================= -Extrema_ExtCC::Extrema_ExtCC(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +Extrema_ExtCC::Extrema_ExtCC(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real U1, const Standard_Real U2, const Standard_Real V1, @@ -88,16 +88,16 @@ Extrema_ExtCC::Extrema_ExtCC(const Adaptor3d_Curve& C1, //purpose : //======================================================================= -Extrema_ExtCC::Extrema_ExtCC(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +Extrema_ExtCC::Extrema_ExtCC(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real TolC1, const Standard_Real TolC2) : myIsFindSingleSolution(Standard_False), myECC(C1, C2), myDone (Standard_False) { - SetCurve (1, C1, C1.FirstParameter(), C1.LastParameter()); - SetCurve (2, C2, C2.FirstParameter(), C2.LastParameter()); + SetCurve (1, C1, C1->FirstParameter(), C1->LastParameter()); + SetCurve (2, C2, C2->FirstParameter(), C2->LastParameter()); SetTolerance (1, TolC1); SetTolerance (2, TolC2); mydist11 = mydist12 = mydist21 = mydist22 = RealFirst(); @@ -108,15 +108,15 @@ Extrema_ExtCC::Extrema_ExtCC(const Adaptor3d_Curve& C1, //function : Initialize //purpose : //======================================================================= -void Extrema_ExtCC::Initialize (const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +void Extrema_ExtCC::Initialize (const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real TolC1, const Standard_Real TolC2) { // myECC will be re-initialized by Perform() myDone = Standard_False; - SetCurve (1, C1, C1.FirstParameter(), C1.LastParameter()); - SetCurve (2, C2, C2.FirstParameter(), C2.LastParameter()); + SetCurve (1, C1, C1->FirstParameter(), C1->LastParameter()); + SetCurve (2, C2, C2->FirstParameter(), C2->LastParameter()); SetTolerance (1, TolC1); SetTolerance (2, TolC2); mydist11 = mydist12 = mydist21 = mydist22 = RealFirst(); @@ -126,8 +126,8 @@ void Extrema_ExtCC::Initialize (const Adaptor3d_Curve& C1, //function : Initialize //purpose : //======================================================================= -void Extrema_ExtCC::Initialize (const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +void Extrema_ExtCC::Initialize (const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real U1, const Standard_Real U2, const Standard_Real V1, @@ -149,11 +149,11 @@ void Extrema_ExtCC::Initialize (const Adaptor3d_Curve& C1, //purpose : //======================================================================= -void Extrema_ExtCC::SetCurve (const Standard_Integer theRank, const Adaptor3d_Curve& C) +void Extrema_ExtCC::SetCurve (const Standard_Integer theRank, const Handle(Adaptor3d_Curve)& C) { Standard_OutOfRange_Raise_if (theRank < 1 || theRank > 2, "Extrema_ExtCC::SetCurve()") Standard_Integer anInd = theRank - 1; - myC[anInd] = &C; + myC[anInd] = C; } //======================================================================= @@ -161,7 +161,7 @@ void Extrema_ExtCC::SetCurve (const Standard_Integer theRank, const Adaptor3d_Cu //purpose : //======================================================================= -void Extrema_ExtCC::SetCurve (const Standard_Integer theRank, const Adaptor3d_Curve& C, +void Extrema_ExtCC::SetCurve (const Standard_Integer theRank, const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup) { SetCurve (theRank, C); @@ -203,7 +203,7 @@ void Extrema_ExtCC::SetTolerance (const Standard_Integer theRank, const Standard void Extrema_ExtCC::Perform() { Standard_NullObject_Raise_if (!myC[0] || !myC[1], "Extrema_ExtCC::Perform()") - myECC.SetParams(*myC[0], *myC[1], myInf[0], mySup[0], myInf[1], mySup[1]); + myECC.SetParams(myC[0], myC[1], myInf[0], mySup[0], myInf[1], mySup[1]); myECC.SetTolerance(Min(myTol[0], myTol[1])); myECC.SetSingleSolutionFlag(GetSingleSolutionFlag()); myDone = Standard_False; @@ -220,10 +220,10 @@ void Extrema_ExtCC::Perform() U21 = myInf[1]; U22 = mySup[1]; - if (!Precision::IsInfinite(U11)) myP1f = Extrema_CurveTool::Value(*myC[0], U11); - if (!Precision::IsInfinite(U12)) myP1l = Extrema_CurveTool::Value(*myC[0], U12); - if (!Precision::IsInfinite(U21)) myP2f = Extrema_CurveTool::Value(*myC[1], U21); - if (!Precision::IsInfinite(U22)) myP2l = Extrema_CurveTool::Value(*myC[1], U22); + if (!Precision::IsInfinite(U11)) myP1f = Extrema_CurveTool::Value(myC[0], U11); + if (!Precision::IsInfinite(U12)) myP1l = Extrema_CurveTool::Value(myC[0], U12); + if (!Precision::IsInfinite(U21)) myP2f = Extrema_CurveTool::Value(myC[1], U21); + if (!Precision::IsInfinite(U22)) myP2l = Extrema_CurveTool::Value(myC[1], U22); if (Precision::IsInfinite(U11) || Precision::IsInfinite(U21)) mydist11 = RealLast(); @@ -406,8 +406,8 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, if (!myIsParallel) return; - const GeomAbs_CurveType aType1 = Extrema_CurveTool::GetType (*myC[0]); - const GeomAbs_CurveType aType2 = Extrema_CurveTool::GetType (*myC[1]); + const GeomAbs_CurveType aType1 = Extrema_CurveTool::GetType (myC[0]); + const GeomAbs_CurveType aType2 = Extrema_CurveTool::GetType (myC[1]); if (((aType1 != GeomAbs_Line) && (aType1 != GeomAbs_Circle)) || ((aType2 != GeomAbs_Line) && (aType2 != GeomAbs_Circle))) { @@ -424,8 +424,8 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, //The projection of the circle's location to the trimmed line must exist. const Standard_Boolean isReversed = (aType1 != GeomAbs_Circle); const gp_Pnt aPonC = !isReversed ? - Extrema_CurveTool::Value (*myC[0], theUt11) : - Extrema_CurveTool::Value (*myC[1], theUt21); + Extrema_CurveTool::Value (myC[0], theUt11) : + Extrema_CurveTool::Value (myC[1], theUt21); const gp_Lin aL = myC[!isReversed ? 1 : 0]->Line(); const Extrema_ExtPElC ExtPLin(aPonC, aL, Precision::Confusion(), @@ -596,8 +596,8 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, const Standard_Real aPeriod = M_PI + M_PI; gp_Vec aVTg1; gp_Pnt aP11; - const gp_Pnt aP12 = Extrema_CurveTool::Value (*myC[0], theUt12); - Extrema_CurveTool::D1 (*myC[0], theUt11, aP11, aVTg1); + const gp_Pnt aP12 = Extrema_CurveTool::Value (myC[0], theUt12); + Extrema_CurveTool::D1 (myC[0], theUt11, aP11, aVTg1); const Bnd_Range aRange(theUt21, theUt22); Bnd_Range aProjRng1; @@ -610,7 +610,7 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, Standard_Real aPar1 = ElCLib::InPeriod(ElCLib::Parameter(aWorkCirc, aP11), theUt21, theUt21 + aPeriod); - const gp_Vec aVTg2 = Extrema_CurveTool::DN (*myC[1], aPar1, 1); + const gp_Vec aVTg2 = Extrema_CurveTool::DN (myC[1], aPar1, 1); // Check if circles have same/opposite directions const Standard_Boolean isOpposite(aVTg1.Dot(aVTg2) < 0.0); @@ -672,7 +672,7 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, aRng.GetIntermediatePoint(0.5, aPar); const gp_Pnt aPCirc2 = ElCLib::Value(aPar, aWorkCirc); Extrema_ExtPElC ExtPCir(aPCirc2, - Extrema_CurveTool::Circle (*myC[0]), + Extrema_CurveTool::Circle (myC[0]), Precision::Confusion(), theUt11, theUt12); Standard_Real aMinSqD = ExtPCir.SquareDistance(1); @@ -723,7 +723,7 @@ void Extrema_ExtCC::PrepareParallelResult(const Standard_Real theUt11, const Extrema_POnCurv aP2(aPar, aPCirc2); Extrema_ExtPElC ExtPCir(aPCirc2, - Extrema_CurveTool::Circle (*myC[0]), + Extrema_CurveTool::Circle (myC[0]), Precision::Confusion(), theUt11, theUt12); Standard_Boolean isFound = !myIsParallel; @@ -852,13 +852,13 @@ void Extrema_ExtCC::PrepareResults(const Extrema_ExtElC& AlgExt, U = P2.Parameter(); } - if (Extrema_CurveTool::IsPeriodic (*myC[0])) + if (Extrema_CurveTool::IsPeriodic (myC[0])) { - U = ElCLib::InPeriod(U, Ut11, Ut11+Extrema_CurveTool::Period (*myC[0])); + U = ElCLib::InPeriod(U, Ut11, Ut11+Extrema_CurveTool::Period (myC[0])); } - if (Extrema_CurveTool::IsPeriodic (*myC[1])) + if (Extrema_CurveTool::IsPeriodic (myC[1])) { - U2 = ElCLib::InPeriod(U2, Ut21, Ut21+Extrema_CurveTool::Period (*myC[1])); + U2 = ElCLib::InPeriod(U2, Ut21, Ut21+Extrema_CurveTool::Period (myC[1])); } if ((U >= Ut11 - RealEpsilon()) && @@ -921,13 +921,13 @@ void Extrema_ExtCC::PrepareResults(const Extrema_ECC& AlgExt, U2 = P2.Parameter(); // Check points to be into param space. - if (Extrema_CurveTool::IsPeriodic (*myC[0])) + if (Extrema_CurveTool::IsPeriodic (myC[0])) { - U = ElCLib::InPeriod(U, Ut11, Ut11 + Extrema_CurveTool::Period (*myC[0])); + U = ElCLib::InPeriod(U, Ut11, Ut11 + Extrema_CurveTool::Period (myC[0])); } - if (Extrema_CurveTool::IsPeriodic (*myC[1])) + if (Extrema_CurveTool::IsPeriodic (myC[1])) { - U2 = ElCLib::InPeriod(U2, Ut21, Ut21 + Extrema_CurveTool::Period (*myC[1])); + U2 = ElCLib::InPeriod(U2, Ut21, Ut21 + Extrema_CurveTool::Period (myC[1])); } if ((U >= Ut11 - RealEpsilon()) && diff --git a/src/Extrema/Extrema_ExtCC.hxx b/src/Extrema/Extrema_ExtCC.hxx index e5d2d77306..9aaec2c760 100644 --- a/src/Extrema/Extrema_ExtCC.hxx +++ b/src/Extrema/Extrema_ExtCC.hxx @@ -43,14 +43,14 @@ public: const Standard_Real TolC2 = 1.0e-10); //! It calculates all the distances. - Standard_EXPORT Extrema_ExtCC(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, + Standard_EXPORT Extrema_ExtCC(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); //! It calculates all the distances. - Standard_EXPORT Extrema_ExtCC(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, + Standard_EXPORT Extrema_ExtCC(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real U1, const Standard_Real U2, const Standard_Real V1, @@ -59,14 +59,14 @@ public: const Standard_Real TolC2 = 1.0e-10); //! Initializes but does not perform algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); //! Initializes but does not perform algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real U1, const Standard_Real U2, const Standard_Real V1, @@ -74,10 +74,10 @@ public: const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); - Standard_EXPORT void SetCurve (const Standard_Integer theRank, const Adaptor3d_Curve& C); + Standard_EXPORT void SetCurve (const Standard_Integer theRank, const Handle(Adaptor3d_Curve)& C); Standard_EXPORT void SetCurve (const Standard_Integer theRank, - const Adaptor3d_Curve& C, + const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup); @@ -172,7 +172,7 @@ private: Standard_Boolean myIsParallel; Extrema_SequenceOfPOnCurv mypoints; TColStd_SequenceOfReal mySqDist; - const Adaptor3d_Curve* myC[2]; + Handle(Adaptor3d_Curve) myC[2]; Standard_Real myInf[2]; Standard_Real mySup[2]; Standard_Real myTol[2]; diff --git a/src/Extrema/Extrema_ExtCC2d.cxx b/src/Extrema/Extrema_ExtCC2d.cxx index bc232fac52..0772dfac54 100644 --- a/src/Extrema/Extrema_ExtCC2d.cxx +++ b/src/Extrema/Extrema_ExtCC2d.cxx @@ -47,8 +47,8 @@ Extrema_ExtCC2d::Extrema_ExtCC2d() } -Extrema_ExtCC2d::Extrema_ExtCC2d(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2, +Extrema_ExtCC2d::Extrema_ExtCC2d(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real TolC1, const Standard_Real TolC2) : myIsFindSingleSolution(Standard_False) @@ -57,8 +57,8 @@ Extrema_ExtCC2d::Extrema_ExtCC2d(const Adaptor2d_Curve2d& C1, Perform(C1, Extrema_Curve2dTool::FirstParameter(C1), Extrema_Curve2dTool::LastParameter(C1)); } -Extrema_ExtCC2d::Extrema_ExtCC2d(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2, +Extrema_ExtCC2d::Extrema_ExtCC2d(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real U1, const Standard_Real U2, const Standard_Real V1, @@ -73,13 +73,13 @@ Extrema_ExtCC2d::Extrema_ExtCC2d(const Adaptor2d_Curve2d& C1, -void Extrema_ExtCC2d::Initialize(const Adaptor2d_Curve2d& C2, +void Extrema_ExtCC2d::Initialize(const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real V1, const Standard_Real V2, const Standard_Real TolC1, const Standard_Real TolC2) { - myC = &C2; + myC = C2; myv1 = V1; myv2 = V2; mytolc1 = TolC1; @@ -88,13 +88,13 @@ void Extrema_ExtCC2d::Initialize(const Adaptor2d_Curve2d& C2, -void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, +void Extrema_ExtCC2d::Perform (const Handle(Adaptor2d_Curve2d)& C1, const Standard_Real U1, const Standard_Real U2) { mypoints.Clear(); mySqDist.Clear(); - GeomAbs_CurveType type1 = Extrema_Curve2dTool::GetType(C1), type2 = Extrema_Curve2dTool::GetType (*myC); + GeomAbs_CurveType type1 = Extrema_Curve2dTool::GetType(C1), type2 = Extrema_Curve2dTool::GetType (myC); Standard_Real U11, U12, U21, U22, Tol = Min(mytolc1, mytolc2); // Extrema_POnCurv2d P1, P2; mynbext = 0; @@ -107,8 +107,8 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, U22 = myv2; P1f = Extrema_Curve2dTool::Value(C1, U11); P1l = Extrema_Curve2dTool::Value(C1, U12); - P2f = Extrema_Curve2dTool::Value(*myC, U21); - P2l = Extrema_Curve2dTool::Value(*myC, U22); + P2f = Extrema_Curve2dTool::Value(myC, U21); + P2l = Extrema_Curve2dTool::Value(myC, U22); switch(type1) { @@ -120,36 +120,36 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, switch(type2) { case GeomAbs_Line: { inverse = Standard_True; - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*myC), Extrema_Curve2dTool::Circle(C1), Tol); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(myC), Extrema_Curve2dTool::Circle(C1), Tol); Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0.); } break; case GeomAbs_Circle: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Circle(*myC)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Circle(myC)); Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 2*M_PI); } break; case GeomAbs_Ellipse: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Ellipse(*myC)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Ellipse(myC)); Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 2*M_PI ); } break; case GeomAbs_Parabola: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Parabola(*myC)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Parabola(myC)); Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0.); } break; case GeomAbs_Hyperbola: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Hyperbola(*myC)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(C1), Extrema_Curve2dTool::Hyperbola(myC)); Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0. ); } break; default: { - Extrema_ECC2d aParamSolver(C1, *myC); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Standard_Real Period2 = 0.; - if (Extrema_Curve2dTool::IsPeriodic(*myC)) Period2 = Extrema_Curve2dTool::Period(*myC); + if (Extrema_Curve2dTool::IsPeriodic(myC)) Period2 = Extrema_Curve2dTool::Period(myC); Results(aParamSolver, U11, U12, U21, U22, 2*M_PI,Period2); } break; @@ -165,46 +165,46 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, switch(type2) { case GeomAbs_Line: { inverse = Standard_True; - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*myC), Extrema_Curve2dTool::Ellipse(C1)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(myC), Extrema_Curve2dTool::Ellipse(C1)); Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 0.); } break; case GeomAbs_Circle: { inverse = Standard_True; - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(*myC), Extrema_Curve2dTool::Ellipse(C1)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(myC), Extrema_Curve2dTool::Ellipse(C1)); Results(Xtrem, U11, U12, U21, U22, 2*M_PI, 2*M_PI); } break; case GeomAbs_Ellipse: { - Extrema_ECC2d aParamSolver(C1, *myC); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22,2*M_PI, 2*M_PI); } break; case GeomAbs_Parabola: { - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(C1), Extrema_Curve2dTool::Parabola(*myC)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(C1), Extrema_Curve2dTool::Parabola(myC)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 2*M_PI, 0.); } break; case GeomAbs_Hyperbola: { - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(C1), Extrema_Curve2dTool::Hyperbola(*myC)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(C1), Extrema_Curve2dTool::Hyperbola(myC)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 2*M_PI, 0.); } break; default: { - Extrema_ECC2d aParamSolver(C1, *myC); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Standard_Real Period2 = 0.; - if (Extrema_Curve2dTool::IsPeriodic(*myC)) Period2 = Extrema_Curve2dTool::Period(*myC); + if (Extrema_Curve2dTool::IsPeriodic(myC)) Period2 = Extrema_Curve2dTool::Period(myC); Results(aParamSolver, U11, U12, U21, U22, 2*M_PI,Period2); } break; @@ -220,28 +220,28 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, switch(type2) { case GeomAbs_Line: { inverse = Standard_True; - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*myC), Extrema_Curve2dTool::Parabola(C1)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(myC), Extrema_Curve2dTool::Parabola(C1)); Results(Xtrem, U11, U12, U21, U22, 0., 0.); } break; case GeomAbs_Circle: { inverse = Standard_True; - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(*myC), Extrema_Curve2dTool::Parabola(C1)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(myC), Extrema_Curve2dTool::Parabola(C1)); Results(Xtrem, U11, U12, U21, U22, 0., 2*M_PI); } break; case GeomAbs_Ellipse: { //inverse = Standard_True; - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(*myC), Extrema_Curve2dTool::Parabola(C1)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(myC), Extrema_Curve2dTool::Parabola(C1)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 0., 2*M_PI); } break; case GeomAbs_Parabola: { - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Parabola(C1), Extrema_Curve2dTool::Parabola(*myC)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Parabola(C1), Extrema_Curve2dTool::Parabola(myC)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 0., 0.); @@ -249,19 +249,19 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, break; case GeomAbs_Hyperbola: { //inverse = Standard_True; - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Hyperbola(*myC), Extrema_Curve2dTool::Parabola(C1)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Hyperbola(myC), Extrema_Curve2dTool::Parabola(C1)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 0., 0.); } break; default: { - Extrema_ECC2d aParamSolver(C1, *myC); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Standard_Real Period2 = 0.; - if (Extrema_Curve2dTool::IsPeriodic(*myC)) Period2 = Extrema_Curve2dTool::Period(*myC); + if (Extrema_Curve2dTool::IsPeriodic(myC)) Period2 = Extrema_Curve2dTool::Period(myC); Results(aParamSolver, U11, U12, U21, U22, 0., Period2); } break; @@ -277,47 +277,47 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, switch(type2) { case GeomAbs_Line: { inverse = Standard_True; - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(*myC), Extrema_Curve2dTool::Hyperbola(C1)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(myC), Extrema_Curve2dTool::Hyperbola(C1)); Results(Xtrem, U11, U12, U21, U22, 0., 0.); } break; case GeomAbs_Circle: { inverse = Standard_True; - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(*myC), Extrema_Curve2dTool::Hyperbola(C1)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Circle(myC), Extrema_Curve2dTool::Hyperbola(C1)); Results(Xtrem, U11, U12, U21, U22, 0., 2*M_PI); } break; case GeomAbs_Ellipse: { //inverse = Standard_True; - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(*myC), Extrema_Curve2dTool::Hyperbola(C1)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Ellipse(myC), Extrema_Curve2dTool::Hyperbola(C1)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 0., 2*M_PI ); } break; case GeomAbs_Parabola: { - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Hyperbola(C1), Extrema_Curve2dTool::Parabola(*myC)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Hyperbola(C1), Extrema_Curve2dTool::Parabola(myC)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 0., 0.); } break; case GeomAbs_Hyperbola: { - //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Hyperbola(C1), Extrema_Curve2dTool::Hyperbola(*myC)); - Extrema_ECC2d aParamSolver(C1, *myC); + //Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Hyperbola(C1), Extrema_Curve2dTool::Hyperbola(myC)); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Results(aParamSolver, U11, U12, U21, U22, 0., 0.); } break; default: { - Extrema_ECC2d aParamSolver(C1, *myC); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Standard_Real Period2 = 0.; - if (Extrema_Curve2dTool::IsPeriodic(*myC)) Period2 = Extrema_Curve2dTool::Period(*myC); + if (Extrema_Curve2dTool::IsPeriodic(myC)) Period2 = Extrema_Curve2dTool::Period(myC); Results(aParamSolver, U11, U12, U21, U22, 0., Period2); } break; @@ -332,36 +332,36 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, switch(type2) { case GeomAbs_Line: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Line(*myC), Tol); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Line(myC), Tol); Results(Xtrem, U11, U12, U21, U22, 0., 0.); } break; case GeomAbs_Circle: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Circle(*myC), Tol); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Circle(myC), Tol); Results(Xtrem, U11, U12, U21, U22, 0., 2*M_PI); } break; case GeomAbs_Ellipse: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Ellipse(*myC)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Ellipse(myC)); Results(Xtrem, U11, U12, U21, U22, 0., 2*M_PI); } break; case GeomAbs_Parabola: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Parabola(*myC)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Parabola(myC)); Results(Xtrem, U11, U12, U21, U22, 0., 0.); } break; case GeomAbs_Hyperbola: { - Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Hyperbola(*myC)); + Extrema_ExtElC2d Xtrem(Extrema_Curve2dTool::Line(C1), Extrema_Curve2dTool::Hyperbola(myC)); Results(Xtrem, U11, U12, U21, U22, 0., 0.); } break; default: { - Extrema_ECC2d aParamSolver(C1, *myC); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Standard_Real Period2 = 0.; - if (Extrema_Curve2dTool::IsPeriodic(*myC)) Period2 = Extrema_Curve2dTool::Period(*myC); + if (Extrema_Curve2dTool::IsPeriodic(myC)) Period2 = Extrema_Curve2dTool::Period(myC); Results(aParamSolver, U11, U12, U21, U22, 0., Period2); } break; @@ -373,13 +373,13 @@ void Extrema_ExtCC2d::Perform (const Adaptor2d_Curve2d& C1, // La premiere courbe est une BezierCurve ou une BSplineCurve: // default: { - Extrema_ECC2d aParamSolver(C1, *myC); + Extrema_ECC2d aParamSolver(C1, myC); aParamSolver.SetSingleSolutionFlag(GetSingleSolutionFlag()); aParamSolver.Perform(); Standard_Real Period1 = 0.; if (Extrema_Curve2dTool::IsPeriodic(C1)) Period1 = Extrema_Curve2dTool::Period(C1); Standard_Real Period2 = 0.; - if (Extrema_Curve2dTool::IsPeriodic(*myC)) Period2 = Extrema_Curve2dTool::Period(*myC); + if (Extrema_Curve2dTool::IsPeriodic(myC)) Period2 = Extrema_Curve2dTool::Period(myC); Results(aParamSolver, U11, U12, U21, U22, Period1, Period2); } break; diff --git a/src/Extrema/Extrema_ExtCC2d.hxx b/src/Extrema/Extrema_ExtCC2d.hxx index c69a189d72..20fe3dc056 100644 --- a/src/Extrema/Extrema_ExtCC2d.hxx +++ b/src/Extrema/Extrema_ExtCC2d.hxx @@ -43,15 +43,15 @@ public: Standard_EXPORT Extrema_ExtCC2d(); //! It calculates all the distances. - Standard_EXPORT Extrema_ExtCC2d(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); + Standard_EXPORT Extrema_ExtCC2d(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); //! It calculates all the distances. - Standard_EXPORT Extrema_ExtCC2d(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real U1, const Standard_Real U2, const Standard_Real V1, const Standard_Real V2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); + Standard_EXPORT Extrema_ExtCC2d(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real U1, const Standard_Real U2, const Standard_Real V1, const Standard_Real V2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); //! initializes the fields. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C2, const Standard_Real V1, const Standard_Real V2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real V1, const Standard_Real V2, const Standard_Real TolC1 = 1.0e-10, const Standard_Real TolC2 = 1.0e-10); - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& C1, const Standard_Real U1, const Standard_Real U2); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& C1, const Standard_Real U1, const Standard_Real U2); //! Returns True if the distances are found. Standard_EXPORT Standard_Boolean IsDone() const; @@ -102,7 +102,7 @@ private: TColStd_SequenceOfReal mySqDist; Standard_Integer mynbext; Standard_Boolean inverse; - const Adaptor2d_Curve2d* myC; + Handle(Adaptor2d_Curve2d) myC; Standard_Real myv1; Standard_Real myv2; Standard_Real mytolc1; diff --git a/src/Extrema/Extrema_ExtCS.cxx b/src/Extrema/Extrema_ExtCS.cxx index 0f5a233988..e4dabeede1 100644 --- a/src/Extrema/Extrema_ExtCS.cxx +++ b/src/Extrema/Extrema_ExtCS.cxx @@ -50,18 +50,18 @@ Extrema_ExtCS::Extrema_ExtCS() { } -Extrema_ExtCS::Extrema_ExtCS(const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S, +Extrema_ExtCS::Extrema_ExtCS(const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S, const Standard_Real TolC, const Standard_Real TolS) { Initialize (S, TolC, TolS); - Perform(C, C.FirstParameter(), C.LastParameter()); + Perform(C, C->FirstParameter(), C->LastParameter()); } -Extrema_ExtCS::Extrema_ExtCS(const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S, +Extrema_ExtCS::Extrema_ExtCS(const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S, const Standard_Real UCinf, const Standard_Real UCsup, const Standard_Real Uinf, @@ -76,14 +76,14 @@ Extrema_ExtCS::Extrema_ExtCS(const Adaptor3d_Curve& C, Perform(C, UCinf, UCsup); } -void Extrema_ExtCS::Initialize (const Adaptor3d_Surface& S, const Standard_Real TolC, const Standard_Real TolS) +void Extrema_ExtCS::Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Real TolC, const Standard_Real TolS) { - Initialize (S, S.FirstUParameter(), S.LastUParameter(), - S.FirstVParameter(), S.LastVParameter(), + Initialize (S, S->FirstUParameter(), S->LastUParameter(), + S->FirstVParameter(), S->LastVParameter(), TolC, TolS); } -void Extrema_ExtCS::Initialize(const Adaptor3d_Surface& S, +void Extrema_ExtCS::Initialize(const Handle(Adaptor3d_Surface)& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, @@ -91,7 +91,7 @@ void Extrema_ExtCS::Initialize(const Adaptor3d_Surface& S, const Standard_Real TolC, const Standard_Real TolS) { - myS = &S; + myS = S; myIsPar = Standard_False; myuinf = Uinf; myusup = Usup; @@ -103,7 +103,7 @@ void Extrema_ExtCS::Initialize(const Adaptor3d_Surface& S, } -void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, +void Extrema_ExtCS::Perform(const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup) { @@ -115,7 +115,7 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, Standard_Integer i, j; Standard_Integer NbT, NbU, NbV; NbT = 12; NbU = NbV = 10; - GeomAbs_CurveType myCtype = C.GetType(); + GeomAbs_CurveType myCtype = C->GetType(); myDone = Standard_False; // Try analytic computation of extrema @@ -128,13 +128,13 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, switch(myStype) { case GeomAbs_Sphere: - myExtElCS.Perform(C.Line(), myS->Sphere()); + myExtElCS.Perform(C->Line(), myS->Sphere()); break; case GeomAbs_Cylinder: - myExtElCS.Perform(C.Line(), myS->Cylinder()); + myExtElCS.Perform(C->Line(), myS->Cylinder()); break; case GeomAbs_Plane: - myExtElCS.Perform(C.Line(), myS->Plane()); + myExtElCS.Perform(C->Line(), myS->Plane()); if (myExtElCS.IsParallel()) break; Standard_FALLTHROUGH @@ -157,9 +157,9 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, Standard_Real tmin = Precision::Infinite(), tmax = -tmin; Standard_Real xmin, ymin, zmin, xmax, ymax, zmax; Bnd_Box aSurfBox; - BndLib_AddSurface::Add(*myS, ufirst, ulast, vfirst, vlast, Precision::Confusion(), aSurfBox); + BndLib_AddSurface::Add(myS, ufirst, ulast, vfirst, vlast, Precision::Confusion(), aSurfBox); aSurfBox.Get(xmin, ymin, zmin, xmax, ymax, zmax); - gp_Lin aLin = C.Line(); + gp_Lin aLin = C->Line(); Standard_Real aParOnLin; gp_Pnt aLimPntArray[8]; @@ -189,8 +189,8 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, if (clast - cfirst <= Precision::Confusion()) { Standard_Real aCPar = (cfirst + clast) / 2.; - gp_Pnt aPm = C.Value(aCPar); - Extrema_ExtPS anExtPS(aPm, *myS, ufirst, ulast, + gp_Pnt aPm = C->Value(aCPar); + Extrema_ExtPS anExtPS(aPm, myS, ufirst, ulast, vfirst, vlast, mytolS, mytolS, Extrema_ExtFlag_MIN); myDone = anExtPS.IsDone(); if (myDone) { @@ -207,7 +207,7 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, return; } - Extrema_GenExtCS Ext(C, *myS, NbT, NbU, NbV, cfirst, clast, ufirst, ulast, + Extrema_GenExtCS Ext(C, myS, NbT, NbU, NbV, cfirst, clast, ufirst, ulast, vfirst, vlast, mytolC, mytolS); myDone = Ext.IsDone(); @@ -233,17 +233,17 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, case GeomAbs_Circle: { if(myStype == GeomAbs_Cylinder) { - myExtElCS.Perform(C.Circle(), myS->Cylinder()); + myExtElCS.Perform(C->Circle(), myS->Cylinder()); break; } else if(myStype == GeomAbs_Plane) { - myExtElCS.Perform(C.Circle(), myS->Plane()); + myExtElCS.Perform(C->Circle(), myS->Plane()); break; } else if (myStype == GeomAbs_Sphere) { - myExtElCS.Perform(C.Circle(), myS->Sphere()); + myExtElCS.Perform(C->Circle(), myS->Sphere()); break; } } @@ -252,7 +252,7 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, { if(myCtype == GeomAbs_Hyperbola && myStype == GeomAbs_Plane) { // Modified by skv - Thu Jul 7 12:29:34 2005 OCC9134 End - myExtElCS.Perform(C.Hyperbola(), myS->Plane()); + myExtElCS.Perform(C->Hyperbola(), myS->Plane()); break; } } @@ -300,7 +300,7 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, if (Precision::IsInfinite(aT[i])) continue; - aPOnC[i] = C.Value(aT[i]); + aPOnC[i] = C->Value(aT[i]); switch (myStype) { case GeomAbs_Plane: @@ -377,10 +377,10 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, // Elementary extrema is not done, try generic solution Extrema_GenExtCS Ext; - Ext.Initialize(*myS, NbU, NbV, mytolS); + Ext.Initialize(myS, NbU, NbV, mytolS); if (myCtype == GeomAbs_Hyperbola) { - Standard_Real tmin = Max(-20., C.FirstParameter()); - Standard_Real tmax = Min(20., C.LastParameter()); + Standard_Real tmin = Max(-20., C->FirstParameter()); + Standard_Real tmax = Min(20., C->LastParameter()); Ext.Perform(C, NbT, tmin, tmax, mytolC); // to avoid overflow } else { @@ -408,14 +408,12 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, //Add sharp points Standard_Integer SolNumber = mySqDist.Length(); - Standard_Address CopyC = (Standard_Address)&C; - Adaptor3d_Curve& aC = *(Adaptor3d_Curve*)CopyC; - Standard_Integer NbIntervals = aC.NbIntervals(GeomAbs_C1); + Standard_Integer NbIntervals = C->NbIntervals(GeomAbs_C1); TColStd_Array1OfReal SharpPoints(1, NbIntervals + 1); - aC.Intervals(SharpPoints, GeomAbs_C1); + C->Intervals(SharpPoints, GeomAbs_C1); Extrema_ExtPS aProjPS; - aProjPS.Initialize(*myS, + aProjPS.Initialize(myS, myS->FirstUParameter(), myS->LastUParameter(), myS->FirstVParameter(), @@ -426,7 +424,7 @@ void Extrema_ExtCS::Perform(const Adaptor3d_Curve& C, for (i = 2; i < SharpPoints.Upper(); ++i) { T = SharpPoints(i); - gp_Pnt aPnt = C.Value(T); + gp_Pnt aPnt = C->Value(T); aProjPS.Perform(aPnt); if (!aProjPS.IsDone()) continue; @@ -533,7 +531,7 @@ void Extrema_ExtCS::Points(const Standard_Integer N, P2 = myPOnS.Value(N); } -Standard_Boolean Extrema_ExtCS::AddSolution(const Adaptor3d_Curve& theCurve, +Standard_Boolean Extrema_ExtCS::AddSolution(const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real aT, const Standard_Real aU, const Standard_Real aV, @@ -545,8 +543,8 @@ Standard_Boolean Extrema_ExtCS::AddSolution(const Adaptor3d_Curve& theCurve, Standard_Real T = aT, U = aU, V = aV; - if (theCurve.IsPeriodic()) - T = ElCLib::InPeriod(T, myucinf, myucinf + theCurve.Period()); + if (theCurve->IsPeriodic()) + T = ElCLib::InPeriod(T, myucinf, myucinf + theCurve->Period()); if (myS->IsUPeriodic()) U = ElCLib::InPeriod(U, myuinf, myuinf + myS->UPeriod()); if (myS->IsVPeriodic()) diff --git a/src/Extrema/Extrema_ExtCS.hxx b/src/Extrema/Extrema_ExtCS.hxx index d9110ec5a1..747f7c8fbd 100644 --- a/src/Extrema/Extrema_ExtCS.hxx +++ b/src/Extrema/Extrema_ExtCS.hxx @@ -46,23 +46,23 @@ public: Standard_EXPORT Extrema_ExtCS(); //! It calculates all the distances between C and S. - Standard_EXPORT Extrema_ExtCS(const Adaptor3d_Curve& C, const Adaptor3d_Surface& S, const Standard_Real TolC, const Standard_Real TolS); + Standard_EXPORT Extrema_ExtCS(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Real TolC, const Standard_Real TolS); //! It calculates all the distances between C and S. //! UCinf and UCmax are the start and end parameters //! of the curve. - Standard_EXPORT Extrema_ExtCS(const Adaptor3d_Curve& C, const Adaptor3d_Surface& S, const Standard_Real UCinf, const Standard_Real UCsup, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolC, const Standard_Real TolS); + Standard_EXPORT Extrema_ExtCS(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Real UCinf, const Standard_Real UCsup, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolC, const Standard_Real TolS); //! Initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S, const Standard_Real TolC, const Standard_Real TolS); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Real TolC, const Standard_Real TolS); //! Initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolC, const Standard_Real TolS); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolC, const Standard_Real TolS); //! Computes the distances. //! An exception is raised if the fieds have not been //! initialized. - Standard_EXPORT void Perform (const Adaptor3d_Curve& C, const Standard_Real Uinf, const Standard_Real Usup); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup); //! Returns True if the distances are found. Standard_EXPORT Standard_Boolean IsDone() const; @@ -81,7 +81,7 @@ public: private: - Standard_EXPORT Standard_Boolean AddSolution (const Adaptor3d_Curve& Curve, const Standard_Real T, const Standard_Real U, const Standard_Real V, const gp_Pnt& PointOnCurve, const gp_Pnt& PointOnSurf, const Standard_Real SquareDist); + Standard_EXPORT Standard_Boolean AddSolution (const Handle(Adaptor3d_Curve)& Curve, const Standard_Real T, const Standard_Real U, const Standard_Real V, const gp_Pnt& PointOnCurve, const gp_Pnt& PointOnSurf, const Standard_Real SquareDist); private: @@ -91,7 +91,7 @@ private: private: - const Adaptor3d_Surface* myS; + Handle(Adaptor3d_Surface) myS; Standard_Boolean myDone; Standard_Boolean myIsPar; Extrema_ExtElCS myExtElCS; diff --git a/src/Extrema/Extrema_ExtPC.hxx b/src/Extrema/Extrema_ExtPC.hxx index e878092a18..4d9df5694f 100644 --- a/src/Extrema/Extrema_ExtPC.hxx +++ b/src/Extrema/Extrema_ExtPC.hxx @@ -59,7 +59,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -69,10 +69,10 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real TolF = 1.0e-10); //! initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! An exception is raised if the fields have not been //! initialized. diff --git a/src/Extrema/Extrema_ExtPC2d.hxx b/src/Extrema/Extrema_ExtPC2d.hxx index fd68c8b9f0..2fd9854e17 100644 --- a/src/Extrema/Extrema_ExtPC2d.hxx +++ b/src/Extrema/Extrema_ExtPC2d.hxx @@ -59,7 +59,7 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! It calculates all the distances. //! The function F(u)=distance(P,C(u)) has an extremum @@ -69,10 +69,10 @@ public: //! iterations according to the following condition: //! if n is the number of iterations, //! the algorithm stops when abs(F(Un)-F(Un-1)) < Tol. - Standard_EXPORT Extrema_ExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT Extrema_ExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real TolF = 1.0e-10); //! initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real TolF = 1.0e-10); //! An exception is raised if the fields have not been //! initialized. diff --git a/src/Extrema/Extrema_ExtPC2d_0.cxx b/src/Extrema/Extrema_ExtPC2d_0.cxx index 1e6eeed03b..6e93dc010b 100644 --- a/src/Extrema/Extrema_ExtPC2d_0.cxx +++ b/src/Extrema/Extrema_ExtPC2d_0.cxx @@ -29,7 +29,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Extrema_Curve2dTool #define TheCurveTool_hxx diff --git a/src/Extrema/Extrema_ExtPC_0.cxx b/src/Extrema/Extrema_ExtPC_0.cxx index a95c9ec007..e1b18a5ad0 100644 --- a/src/Extrema/Extrema_ExtPC_0.cxx +++ b/src/Extrema/Extrema_ExtPC_0.cxx @@ -29,7 +29,7 @@ #include -#define TheCurve Adaptor3d_Curve +#define TheCurve Handle(Adaptor3d_Curve) #define TheCurve_hxx #define TheCurveTool Extrema_CurveTool #define TheCurveTool_hxx diff --git a/src/Extrema/Extrema_ExtPExtS.cxx b/src/Extrema/Extrema_ExtPExtS.cxx index 1173a5efdb..40a95ba306 100644 --- a/src/Extrema/Extrema_ExtPExtS.cxx +++ b/src/Extrema/Extrema_ExtPExtS.cxx @@ -252,7 +252,7 @@ void Extrema_ExtPExtS::Initialize (const Handle(GeomAdaptor_SurfaceOfLinearExtru Handle(Adaptor3d_Curve) anACurve = theS->BasisCurve(); - myF.Initialize (*theS); + myF.Initialize (theS); myC = anACurve; myS = theS; myPosition = GetPosition(myC); @@ -262,7 +262,7 @@ void Extrema_ExtPExtS::Initialize (const Handle(GeomAdaptor_SurfaceOfLinearExtru if (!myIsAnalyticallyComputable) { - myExtPS.Initialize (*theS, + myExtPS.Initialize (theS, 32, 32, theUinf, diff --git a/src/Extrema/Extrema_ExtPRevS.cxx b/src/Extrema/Extrema_ExtPRevS.cxx index 29764f4c03..a6bba83c01 100644 --- a/src/Extrema/Extrema_ExtPRevS.cxx +++ b/src/Extrema/Extrema_ExtPRevS.cxx @@ -186,7 +186,7 @@ static Standard_Boolean IsOriginalPnt (const gp_Pnt& P, //======================================================================= static Standard_Boolean IsExtremum (const Standard_Real U, const Standard_Real V, - const gp_Pnt& P, const Adaptor3d_Surface* S, + const gp_Pnt& P, const Handle(Adaptor3d_Surface) S, gp_Pnt& E, Standard_Real& Dist2, const Standard_Boolean IsVSup, const Standard_Boolean IsMin) @@ -304,7 +304,7 @@ void Extrema_ExtPRevS::Initialize (const Handle(GeomAdaptor_SurfaceOfRevolution) aNbv = 100; } - myExtPS.Initialize (*theS, + myExtPS.Initialize (theS, aNbu, aNbv, theUmin, diff --git a/src/Extrema/Extrema_ExtPS.cxx b/src/Extrema/Extrema_ExtPS.cxx index 7a09e25bf9..9eb927a6e5 100644 --- a/src/Extrema/Extrema_ExtPS.cxx +++ b/src/Extrema/Extrema_ExtPS.cxx @@ -31,7 +31,7 @@ //function : IsoIsDeg //purpose : //======================================================================= -static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, +static Standard_Boolean IsoIsDeg (const Handle(Adaptor3d_Surface)& S, const Standard_Real Param, const GeomAbs_IsoType IT, const Standard_Real TolMin, @@ -39,10 +39,10 @@ static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, { Standard_Real U1=0.,U2=0.,V1=0.,V2=0.,T; Standard_Boolean Along = Standard_True; - U1 = S.FirstUParameter(); - U2 = S.LastUParameter(); - V1 = S.FirstVParameter(); - V2 = S.LastVParameter(); + U1 = S->FirstUParameter(); + U2 = S->LastUParameter(); + V1 = S->FirstVParameter(); + V2 = S->LastVParameter(); gp_Vec D1U,D1V; gp_Pnt P; Standard_Real Step,D1NormMax; @@ -58,7 +58,7 @@ static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, for (T=U1;T<=U2;T=T+Step) { - S.D1(T,Param,P,D1U,D1V); + S->D1(T,Param,P,D1U,D1V); D1NormMax=Max(D1NormMax,D1U.Magnitude()); } @@ -77,7 +77,7 @@ static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, D1NormMax=0.; for (T=V1;T<=V2;T=T+Step) { - S.D1(Param,T,P,D1U,D1V); + S->D1(Param,T,P,D1U,D1V); D1NormMax=Max(D1NormMax,D1V.Magnitude()); } @@ -156,7 +156,7 @@ Extrema_ExtPS::Extrema_ExtPS() //======================================================================= Extrema_ExtPS::Extrema_ExtPS (const gp_Pnt& theP, - const Adaptor3d_Surface& theS, + const Handle(Adaptor3d_Surface)& theS, const Standard_Real theTolU, const Standard_Real theTolV, const Extrema_ExtFlag theF, @@ -166,10 +166,10 @@ Extrema_ExtPS::Extrema_ExtPS (const gp_Pnt& theP, myExtPS.SetAlgo (theA); Initialize (theS, - theS.FirstUParameter(), - theS.LastUParameter(), - theS.FirstVParameter(), - theS.LastVParameter(), + theS->FirstUParameter(), + theS->LastUParameter(), + theS->FirstVParameter(), + theS->LastVParameter(), theTolU, theTolV); @@ -182,7 +182,7 @@ Extrema_ExtPS::Extrema_ExtPS (const gp_Pnt& theP, //======================================================================= Extrema_ExtPS::Extrema_ExtPS (const gp_Pnt& theP, - const Adaptor3d_Surface& theS, + const Handle(Adaptor3d_Surface)& theS, const Standard_Real theUinf, const Standard_Real theUsup, const Standard_Real theVinf, @@ -212,7 +212,7 @@ Extrema_ExtPS::Extrema_ExtPS (const gp_Pnt& theP, //purpose : //======================================================================= -void Extrema_ExtPS::Initialize (const Adaptor3d_Surface& theS, +void Extrema_ExtPS::Initialize (const Handle(Adaptor3d_Surface)& theS, const Standard_Real theUinf, const Standard_Real theUsup, const Standard_Real theVinf, @@ -220,7 +220,7 @@ void Extrema_ExtPS::Initialize (const Adaptor3d_Surface& theS, const Standard_Real theTolU, const Standard_Real theTolV) { - myS = &theS; + myS = theS; myuinf = theUinf; myusup = theUsup; myvinf = theVinf; @@ -253,7 +253,7 @@ void Extrema_ExtPS::Initialize (const Adaptor3d_Surface& theS, if(bUIsoIsDeg) nbU = 300; if(bVIsoIsDeg) nbV = 300; - myExtPS.Initialize(*myS, nbU, nbV, myuinf, myusup, myvinf, myvsup, mytolu, mytolv); + myExtPS.Initialize(myS, nbU, nbV, myuinf, myusup, myvinf, myvsup, mytolu, mytolv); myExtPExtS.Nullify(); myExtPRevS.Nullify(); diff --git a/src/Extrema/Extrema_ExtPS.hxx b/src/Extrema/Extrema_ExtPS.hxx index 60c9aadade..3d257bce26 100644 --- a/src/Extrema/Extrema_ExtPS.hxx +++ b/src/Extrema/Extrema_ExtPS.hxx @@ -56,7 +56,7 @@ public: //! TolU et TolV are used to determine the conditions //! to stop the iterations; at the iteration number n: //! (Un - Un-1) < TolU and (Vn - Vn-1) < TolV . - Standard_EXPORT Extrema_ExtPS(const gp_Pnt& P, const Adaptor3d_Surface& S, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); + Standard_EXPORT Extrema_ExtPS(const gp_Pnt& P, const Handle(Adaptor3d_Surface)& S, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); //! It calculates all the distances. //! NbU and NbV are used to locate the close points @@ -66,10 +66,10 @@ public: //! TolU et TolV are used to determine the conditions //! to stop the iterations; at the iteration number n: //! (Un - Un-1) < TolU and (Vn - Vn-1) < TolV . - Standard_EXPORT Extrema_ExtPS(const gp_Pnt& P, const Adaptor3d_Surface& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); + Standard_EXPORT Extrema_ExtPS(const gp_Pnt& P, const Handle(Adaptor3d_Surface)& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); //! Initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real Vinf, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV); //! Computes the distances. //! An exception is raised if the fieds have not been @@ -109,7 +109,7 @@ private: private: - const Adaptor3d_Surface* myS; + Handle(Adaptor3d_Surface) myS; Standard_Boolean myDone; Extrema_ExtPElS myExtPElS; Extrema_GenExtPS myExtPS; diff --git a/src/Extrema/Extrema_ExtSS.cxx b/src/Extrema/Extrema_ExtSS.cxx index 0d0162fa35..8c32ab46df 100644 --- a/src/Extrema/Extrema_ExtSS.cxx +++ b/src/Extrema/Extrema_ExtSS.cxx @@ -42,25 +42,25 @@ Extrema_ExtSS::Extrema_ExtSS() { } -Extrema_ExtSS::Extrema_ExtSS(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2, +Extrema_ExtSS::Extrema_ExtSS(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2, const Standard_Real TolS1, const Standard_Real TolS2) { - Initialize(S2, S2.FirstUParameter(), - S2.LastUParameter(), - S2.FirstVParameter(), - S2.LastVParameter(), TolS2); + Initialize(S2, S2->FirstUParameter(), + S2->LastUParameter(), + S2->FirstVParameter(), + S2->LastVParameter(), TolS2); - Perform(S1, S1.FirstUParameter(), - S1.LastUParameter(), - S1.FirstVParameter(), - S1.LastVParameter(), TolS1); + Perform(S1, S1->FirstUParameter(), + S1->LastUParameter(), + S1->FirstVParameter(), + S1->LastVParameter(), TolS1); } -Extrema_ExtSS::Extrema_ExtSS(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2, +Extrema_ExtSS::Extrema_ExtSS(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2, const Standard_Real Uinf1, const Standard_Real Usup1, const Standard_Real Vinf1, @@ -78,25 +78,25 @@ Extrema_ExtSS::Extrema_ExtSS(const Adaptor3d_Surface& S1, } -void Extrema_ExtSS::Initialize(const Adaptor3d_Surface& S2, +void Extrema_ExtSS::Initialize(const Handle(Adaptor3d_Surface)& S2, const Standard_Real Uinf2, const Standard_Real Usup2, const Standard_Real Vinf2, const Standard_Real Vsup2, const Standard_Real TolS2) { - myS2 = &S2; + myS2 = S2; myIsPar = Standard_False; myuinf2 = Uinf2; myusup2 = Usup2; myvinf2 = Vinf2; myvsup2 = Vsup2; mytolS2 = TolS2; - myStype = S2.GetType(); + myStype = S2->GetType(); } -void Extrema_ExtSS::Perform(const Adaptor3d_Surface& S1, +void Extrema_ExtSS::Perform(const Handle(Adaptor3d_Surface)& S1, const Standard_Real Uinf1, const Standard_Real Usup1, const Standard_Real Vinf1, @@ -112,7 +112,7 @@ void Extrema_ExtSS::Perform(const Adaptor3d_Surface& S1, myPOnS2.Clear(); mySqDist.Clear(); Standard_Integer i; - GeomAbs_SurfaceType myS1type = S1.GetType(); + GeomAbs_SurfaceType myS1type = S1->GetType(); const Standard_Integer NbU = 20, NbV = 20; switch(myS1type) { @@ -123,12 +123,12 @@ void Extrema_ExtSS::Perform(const Adaptor3d_Surface& S1, switch(myStype) { case GeomAbs_Plane: { - myExtElSS.Perform(S1.Plane(),myS2->Plane()); + myExtElSS.Perform(S1->Plane(),myS2->Plane()); } break; default: { - Extrema_GenExtSS Ext(S1, *myS2, NbU, NbV, mytolS1, mytolS2); + Extrema_GenExtSS Ext(S1, myS2, NbU, NbV, mytolS1, mytolS2); myDone = Ext.IsDone(); if (myDone) { Standard_Integer NbExt = Ext.NbExt(); @@ -140,10 +140,10 @@ void Extrema_ExtSS::Perform(const Adaptor3d_Surface& S1, PS2 = Ext.PointOnS2(i); PS1.Parameter(U1, V1); PS2.Parameter(U2, V2); - if (S1.IsUPeriodic()) - U1 = ElCLib::InPeriod(U1, myuinf1, myuinf1+S1.UPeriod()); - if (S1.IsVPeriodic()) - V1 = ElCLib::InPeriod(V1, myvinf1, myvinf1+S1.VPeriod()); + if (S1->IsUPeriodic()) + U1 = ElCLib::InPeriod(U1, myuinf1, myuinf1 + S1->UPeriod()); + if (S1->IsVPeriodic()) + V1 = ElCLib::InPeriod(V1, myvinf1, myvinf1 + S1->VPeriod()); if (myS2->IsUPeriodic()) U2 = ElCLib::InPeriod(U2, myuinf2, myuinf2+myS2->UPeriod()); if (myS2->IsVPeriodic()) @@ -168,7 +168,7 @@ void Extrema_ExtSS::Perform(const Adaptor3d_Surface& S1, } default: { - Extrema_GenExtSS Ext(S1, *myS2, NbU, NbV, mytolS1, mytolS2); + Extrema_GenExtSS Ext(S1, myS2, NbU, NbV, mytolS1, mytolS2); myDone = Ext.IsDone(); if (myDone) { Standard_Integer NbExt = Ext.NbExt(); @@ -180,10 +180,10 @@ void Extrema_ExtSS::Perform(const Adaptor3d_Surface& S1, PS2 = Ext.PointOnS2(i); PS1.Parameter(U1, V1); PS2.Parameter(U2, V2); - if (S1.IsUPeriodic()) - U1 = ElCLib::InPeriod(U1, myuinf1, myuinf1+S1.UPeriod()); - if (S1.IsVPeriodic()) - V1 = ElCLib::InPeriod(V1, myvinf1, myvinf1+S1.VPeriod()); + if (S1->IsUPeriodic()) + U1 = ElCLib::InPeriod(U1, myuinf1, myuinf1 + S1->UPeriod()); + if (S1->IsVPeriodic()) + V1 = ElCLib::InPeriod(V1, myvinf1, myvinf1 + S1->VPeriod()); if (myS2->IsUPeriodic()) U2 = ElCLib::InPeriod(U2, myuinf2, myuinf2+myS2->UPeriod()); if (myS2->IsVPeriodic()) diff --git a/src/Extrema/Extrema_ExtSS.hxx b/src/Extrema/Extrema_ExtSS.hxx index 5ec6f7c5fe..0528868acf 100644 --- a/src/Extrema/Extrema_ExtSS.hxx +++ b/src/Extrema/Extrema_ExtSS.hxx @@ -42,18 +42,18 @@ public: Standard_EXPORT Extrema_ExtSS(); //! It calculates all the distances between S1 and S2. - Standard_EXPORT Extrema_ExtSS(const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2, const Standard_Real TolS1, const Standard_Real TolS2); + Standard_EXPORT Extrema_ExtSS(const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2, const Standard_Real TolS1, const Standard_Real TolS2); //! It calculates all the distances between S1 and S2. - Standard_EXPORT Extrema_ExtSS(const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2, const Standard_Real Uinf1, const Standard_Real Usup1, const Standard_Real Vinf1, const Standard_Real Vsup1, const Standard_Real Uinf2, const Standard_Real Usup2, const Standard_Real Vinf2, const Standard_Real Vsup2, const Standard_Real TolS1, const Standard_Real TolS2); + Standard_EXPORT Extrema_ExtSS(const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2, const Standard_Real Uinf1, const Standard_Real Usup1, const Standard_Real Vinf1, const Standard_Real Vsup1, const Standard_Real Uinf2, const Standard_Real Usup2, const Standard_Real Vinf2, const Standard_Real Vsup2, const Standard_Real TolS1, const Standard_Real TolS2); //! Initializes the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S2, const Standard_Real Uinf2, const Standard_Real Usup2, const Standard_Real Vinf2, const Standard_Real Vsup2, const Standard_Real TolS1); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S2, const Standard_Real Uinf2, const Standard_Real Usup2, const Standard_Real Vinf2, const Standard_Real Vsup2, const Standard_Real TolS1); //! Computes the distances. //! An exception is raised if the fieds have not been //! initialized. - Standard_EXPORT void Perform (const Adaptor3d_Surface& S1, const Standard_Real Uinf1, const Standard_Real Usup1, const Standard_Real Vinf1, const Standard_Real Vsup1, const Standard_Real TolS1); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Surface)& S1, const Standard_Real Uinf1, const Standard_Real Usup1, const Standard_Real Vinf1, const Standard_Real Vsup1, const Standard_Real TolS1); //! Returns True if the distances are found. Standard_EXPORT Standard_Boolean IsDone() const; @@ -72,7 +72,7 @@ public: private: - const Adaptor3d_Surface* myS2; + Handle(Adaptor3d_Surface) myS2; Standard_Boolean myDone; Standard_Boolean myIsPar; Extrema_ExtElSS myExtElSS; diff --git a/src/Extrema/Extrema_FuncExtCC.gxx b/src/Extrema/Extrema_FuncExtCC.gxx index 3c1134dea3..8c5b276421 100644 --- a/src/Extrema/Extrema_FuncExtCC.gxx +++ b/src/Extrema/Extrema_FuncExtCC.gxx @@ -82,7 +82,7 @@ Standard_Real Extrema_FuncExtCC::SearchOfTolerance(const Standard_Address C) Pnt Ptemp; //empty point (is not used below) Vec VDer; // 1st derivative vector - Tool1::D1(*((Curve1*)C), u, Ptemp, VDer); + Tool1::D1((Curve1::element_type*)(C), u, Ptemp, VDer); Standard_Real vm = VDer.Magnitude(); if(vm > aMax) aMax = vm; @@ -111,24 +111,24 @@ Extrema_FuncExtCC::Extrema_FuncExtCC(const Standard_Real thetol) : myC1 (0), myC Extrema_FuncExtCC::Extrema_FuncExtCC (const Curve1& C1, const Curve2& C2, const Standard_Real thetol) : -myC1 ((Standard_Address)&C1), myC2 ((Standard_Address)&C2), +myC1 (C1.get()), myC2 (C2.get()), myTol (thetol) { math_Vector V1(1,2), V2(1,2); - V1(1) = Tool1::FirstParameter(*((Curve1*)myC1)); - V2(1) = Tool1::LastParameter(*((Curve1*)myC1)); - V1(2) = Tool2::FirstParameter(*((Curve2*)myC2)); - V2(2) = Tool2::LastParameter(*((Curve2*)myC2)); + V1(1) = Tool1::FirstParameter((Curve1::element_type*)(myC1)); + V2(1) = Tool1::LastParameter((Curve1::element_type*)(myC1)); + V1(2) = Tool2::FirstParameter((Curve2::element_type*)(myC2)); + V2(2) = Tool2::LastParameter((Curve2::element_type*)(myC2)); SubIntervalInitialize(V1, V2); - switch(Tool1::GetType(*((Curve1*)myC1))) + switch(Tool1::GetType((Curve1::element_type*)(myC1))) { case GeomAbs_BezierCurve: case GeomAbs_BSplineCurve: case GeomAbs_OffsetCurve: case GeomAbs_OtherCurve: myMaxDerivOrderC1 = MaxOrder; - myTolC1 = SearchOfTolerance((Standard_Address)&C1); + myTolC1 = SearchOfTolerance(C1.get()); break; default: myMaxDerivOrderC1 = 0; @@ -136,14 +136,14 @@ myTol (thetol) break; } - switch(Tool2::GetType(*((Curve2*)myC2))) + switch(Tool2::GetType((Curve2::element_type*)(myC2))) { case GeomAbs_BezierCurve: case GeomAbs_BSplineCurve: case GeomAbs_OffsetCurve: case GeomAbs_OtherCurve: myMaxDerivOrderC2 = MaxOrder; - myTolC2 = SearchOfTolerance((Standard_Address)&C2); + myTolC2 = SearchOfTolerance(C2.get()); break; default: myMaxDerivOrderC2 = 0; @@ -159,15 +159,15 @@ void Extrema_FuncExtCC::SetCurve (const Standard_Integer theRank, const Curve1& if (theRank == 1) { - myC1 = (Standard_Address)&C; - switch(/*Tool1::GetType(*((Curve1*)myC1))*/ C.GetType()) + myC1 = C.get(); + switch(/*Tool1::GetType((Curve1::element_type*)(myC1))*/ C->GetType()) { case GeomAbs_BezierCurve: case GeomAbs_BSplineCurve: case GeomAbs_OffsetCurve: case GeomAbs_OtherCurve: myMaxDerivOrderC1 = MaxOrder; - myTolC1 = SearchOfTolerance((Standard_Address)&C); + myTolC1 = SearchOfTolerance(C.get()); break; default: myMaxDerivOrderC1 = 0; @@ -177,15 +177,15 @@ void Extrema_FuncExtCC::SetCurve (const Standard_Integer theRank, const Curve1& } else if (theRank == 2) { - myC2 = (Standard_Address)&C; - switch(/*Tool2::GetType(*((Curve2*)myC2))*/C.GetType()) + myC2 = C.get(); + switch(/*Tool2::GetType((Curve2::element_type*)(myC2))*/C->GetType()) { case GeomAbs_BezierCurve: case GeomAbs_BSplineCurve: case GeomAbs_OffsetCurve: case GeomAbs_OtherCurve: myMaxDerivOrderC2 = MaxOrder; - myTolC2 = SearchOfTolerance((Standard_Address)&C); + myTolC2 = SearchOfTolerance(C.get()); break; default: myMaxDerivOrderC2 = 0; @@ -200,8 +200,8 @@ Standard_Boolean Extrema_FuncExtCC::Value (const math_Vector& UV, math_Vector& F { myU = UV(1); myV = UV(2); - Tool1::D1(*((Curve1*)myC1), myU,myP1,myDu); - Tool2::D1(*((Curve2*)myC2), myV,myP2,myDv); + Tool1::D1((Curve1::element_type*)(myC1), myU,myP1,myDu); + Tool2::D1((Curve2::element_type*)(myC2), myV,myP2,myDv); Vec P1P2 (myP1,myP2); @@ -228,7 +228,7 @@ Standard_Boolean Extrema_FuncExtCC::Value (const math_Vector& UV, math_Vector& F do { - V = Tool1::DN(*((Curve1*)myC1),myU,++n); + V = Tool1::DN((Curve1::element_type*)(myC1),myU,++n); Ndu = V.Magnitude(); IsDeriveFound = (Ndu > myTolC1); } @@ -244,8 +244,8 @@ Standard_Boolean Extrema_FuncExtCC::Value (const math_Vector& UV, math_Vector& F u = myU-aDelta; Pnt P1, P2; - Tool1::D0(*((Curve1*)myC1),Min(myU, u),P1); - Tool1::D0(*((Curve1*)myC1),Max(myU, u),P2); + Tool1::D0((Curve1::element_type*)(myC1),Min(myU, u),P1); + Tool1::D0((Curve1::element_type*)(myC1),Max(myU, u),P2); Vec V1(P1,P2); Standard_Real aDirFactor = V.Dot(V1); @@ -265,16 +265,16 @@ Standard_Boolean Extrema_FuncExtCC::Value (const math_Vector& UV, math_Vector& F if(myU-myUinfium < 2*aDelta) { - Tool1::D0(*((Curve1*)myC1),myU,P1); - Tool1::D0(*((Curve1*)myC1),myU+aDelta,P2); - Tool1::D0(*((Curve1*)myC1),myU+2*aDelta,P3); + Tool1::D0((Curve1::element_type*)(myC1), myU, P1); + Tool1::D0((Curve1::element_type*)(myC1), myU + aDelta, P2); + Tool1::D0((Curve1::element_type*)(myC1), myU + 2*aDelta, P3); IsParameterGrown = Standard_True; } else { - Tool1::D0(*((Curve1*)myC1),myU-2*aDelta,P1); - Tool1::D0(*((Curve1*)myC1),myU-aDelta,P2); - Tool1::D0(*((Curve1*)myC1),myU,P3); + Tool1::D0((Curve1::element_type*)(myC1), myU - 2*aDelta, P1); + Tool1::D0((Curve1::element_type*)(myC1), myU - aDelta, P2); + Tool1::D0((Curve1::element_type*)(myC1), myU, P3); IsParameterGrown = Standard_False; } @@ -318,7 +318,7 @@ Standard_Boolean Extrema_FuncExtCC::Value (const math_Vector& UV, math_Vector& F do { - V = Tool2::DN(*((Curve2*)myC2),myV,++n); + V = Tool2::DN((Curve2::element_type*)(myC2),myV,++n); Ndv = V.Magnitude(); IsDeriveFound = (Ndv > myTolC2); } @@ -334,8 +334,8 @@ Standard_Boolean Extrema_FuncExtCC::Value (const math_Vector& UV, math_Vector& F v = myV-aDelta; Pnt P1, P2; - Tool2::D0(*((Curve2*)myC2),Min(myV, v),P1); - Tool2::D0(*((Curve2*)myC2),Max(myV, v),P2); + Tool2::D0((Curve2::element_type*)(myC2),Min(myV, v),P1); + Tool2::D0((Curve2::element_type*)(myC2),Max(myV, v),P2); Vec V1(P1,P2); Standard_Real aDirFactor = V.Dot(V1); @@ -355,16 +355,16 @@ Standard_Boolean Extrema_FuncExtCC::Value (const math_Vector& UV, math_Vector& F if(myV-myVinfium < 2*aDelta) { - Tool2::D0(*((Curve2*)myC2),myV,P1); - Tool2::D0(*((Curve2*)myC2),myV+aDelta,P2); - Tool2::D0(*((Curve2*)myC2),myV+2*aDelta,P3); + Tool2::D0((Curve2::element_type*)(myC2),myV,P1); + Tool2::D0((Curve2::element_type*)(myC2),myV+aDelta,P2); + Tool2::D0((Curve2::element_type*)(myC2),myV+2*aDelta,P3); IsParameterGrown = Standard_True; } else { - Tool2::D0(*((Curve2*)myC2),myV-2*aDelta,P1); - Tool2::D0(*((Curve2*)myC2),myV-aDelta,P2); - Tool2::D0(*((Curve2*)myC2),myV,P3); + Tool2::D0((Curve2::element_type*)(myC2),myV-2*aDelta,P1); + Tool2::D0((Curve2::element_type*)(myC2),myV-aDelta,P2); + Tool2::D0((Curve2::element_type*)(myC2),myV,P3); IsParameterGrown = Standard_False; } @@ -414,8 +414,8 @@ Standard_Boolean Extrema_FuncExtCC::Values (const math_Vector& UV, }//if(Value(UV, F) == Standard_False) Vec Du, Dv, Duu, Dvv; - Tool1::D2(*((Curve1*)myC1), myU,myP1,Du,Duu); - Tool2::D2(*((Curve2*)myC2), myV,myP2,Dv,Dvv); + Tool1::D2((Curve1::element_type*)(myC1), myU,myP1,Du,Duu); + Tool2::D2((Curve2::element_type*)(myC2), myV,myP2,Dv,Dvv); //Calling of "Value(...)" function change class member values. //After running it is necessary to return to previous values. diff --git a/src/Extrema/Extrema_FuncExtCS.cxx b/src/Extrema/Extrema_FuncExtCS.cxx index 78b2146d63..16f9a576c0 100644 --- a/src/Extrema/Extrema_FuncExtCS.cxx +++ b/src/Extrema/Extrema_FuncExtCS.cxx @@ -64,8 +64,8 @@ les algorithmes math_FunctionRoot et math_FunctionRoots. //purpose : //======================================================================= - Extrema_FuncExtCS::Extrema_FuncExtCS(const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S) + Extrema_FuncExtCS::Extrema_FuncExtCS(const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S) { Initialize(C, S); } @@ -75,11 +75,11 @@ les algorithmes math_FunctionRoot et math_FunctionRoots. //purpose : //======================================================================= -void Extrema_FuncExtCS::Initialize(const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S) +void Extrema_FuncExtCS::Initialize(const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S) { - myC = &C; - myS = &S; + myC = C; + myS = S; myCinit = Standard_True; mySinit = Standard_True; myPoint1.Clear(); diff --git a/src/Extrema/Extrema_FuncExtCS.hxx b/src/Extrema/Extrema_FuncExtCS.hxx index ef37ca6278..360401d7a4 100644 --- a/src/Extrema/Extrema_FuncExtCS.hxx +++ b/src/Extrema/Extrema_FuncExtCS.hxx @@ -44,10 +44,10 @@ public: Standard_EXPORT Extrema_FuncExtCS(); - Standard_EXPORT Extrema_FuncExtCS(const Adaptor3d_Curve& C, const Adaptor3d_Surface& S); + Standard_EXPORT Extrema_FuncExtCS(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S); //! sets the field mysurf of the function. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Adaptor3d_Surface& S); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S); Standard_EXPORT Standard_Integer NbVariables() const Standard_OVERRIDE; @@ -95,8 +95,8 @@ public: private: - const Adaptor3d_Curve* myC; - const Adaptor3d_Surface* myS; + Handle(Adaptor3d_Curve) myC; + Handle(Adaptor3d_Surface) myS; gp_Pnt myP1; gp_Pnt myP2; Standard_Real myt; diff --git a/src/Extrema/Extrema_FuncExtSS.cxx b/src/Extrema/Extrema_FuncExtSS.cxx index 1657e169e4..78010b57e0 100644 --- a/src/Extrema/Extrema_FuncExtSS.cxx +++ b/src/Extrema/Extrema_FuncExtSS.cxx @@ -71,15 +71,15 @@ Extrema_FuncExtSS::Extrema_FuncExtSS () //purpose : //======================================================================= -Extrema_FuncExtSS::Extrema_FuncExtSS (const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2) +Extrema_FuncExtSS::Extrema_FuncExtSS (const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2) : myU1(0.0), myV1(0.0), myU2(0.0), myV2(0.0) { - myS1 = &S1; - myS2 = &S2; + myS1 = S1; + myS2 = S2; myS1init = Standard_True; myS2init = Standard_True; } @@ -89,11 +89,11 @@ Extrema_FuncExtSS::Extrema_FuncExtSS (const Adaptor3d_Surface& S1, //purpose : //======================================================================= -void Extrema_FuncExtSS::Initialize(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2) +void Extrema_FuncExtSS::Initialize(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2) { - myS1 = &S1; - myS2 = &S2; + myS1 = S1; + myS2 = S2; myS1init = Standard_True; myS2init = Standard_True; myPoint1.Clear(); diff --git a/src/Extrema/Extrema_FuncExtSS.hxx b/src/Extrema/Extrema_FuncExtSS.hxx index 1c151d664d..b42ad132d8 100644 --- a/src/Extrema/Extrema_FuncExtSS.hxx +++ b/src/Extrema/Extrema_FuncExtSS.hxx @@ -41,10 +41,10 @@ public: Standard_EXPORT Extrema_FuncExtSS(); - Standard_EXPORT Extrema_FuncExtSS(const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2); + Standard_EXPORT Extrema_FuncExtSS(const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2); //! sets the field mysurf of the function. - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2); Standard_EXPORT Standard_Integer NbVariables() const Standard_OVERRIDE; @@ -76,8 +76,8 @@ public: private: - const Adaptor3d_Surface* myS1; - const Adaptor3d_Surface* myS2; + Handle(Adaptor3d_Surface) myS1; + Handle(Adaptor3d_Surface) myS2; gp_Pnt myP1; gp_Pnt myP2; Standard_Real myU1; diff --git a/src/Extrema/Extrema_FuncPSDist.cxx b/src/Extrema/Extrema_FuncPSDist.cxx index 5b04de5bc8..1f28aaedc4 100644 --- a/src/Extrema/Extrema_FuncPSDist.cxx +++ b/src/Extrema/Extrema_FuncPSDist.cxx @@ -24,7 +24,7 @@ //function : Extrema_FuncPSDist //purpose : //======================================================================= -Extrema_FuncPSDist::Extrema_FuncPSDist(const Adaptor3d_Surface& theS, +Extrema_FuncPSDist::Extrema_FuncPSDist(const Handle(Adaptor3d_Surface)& theS, const gp_Pnt& theP) : mySurf(theS), myP(theP) @@ -49,7 +49,7 @@ Standard_Boolean Extrema_FuncPSDist::Value(const math_Vector& X,Standard_Real& F if (!IsInside(X)) return Standard_False; - F = mySurf.Value(X(1), X(2)).SquareDistance(myP); + F = mySurf->Value(X(1), X(2)).SquareDistance(myP); return Standard_True; } @@ -66,7 +66,7 @@ Standard_Boolean Extrema_FuncPSDist::Gradient(const math_Vector& X,math_Vector& gp_Pnt aP; gp_Vec Du1s, Dv1s; - mySurf.D1(X(1),X(2),aP,Du1s,Dv1s); + mySurf->D1(X(1),X(2),aP,Du1s,Dv1s); gp_Vec P1P2 (aP, myP); @@ -87,14 +87,14 @@ Standard_Boolean Extrema_FuncPSDist::Values(const math_Vector& X,Standard_Real& gp_Pnt aP; gp_Vec Du1s, Dv1s; - mySurf.D1(X(1),X(2),aP,Du1s,Dv1s); + mySurf->D1(X(1),X(2),aP,Du1s,Dv1s); gp_Vec P1P2 (aP, myP); G(1) = P1P2.Dot(Du1s); G(2) = P1P2.Dot(Dv1s); - F = mySurf.Value(X(1), X(2)).SquareDistance(myP); + F = mySurf->Value(X(1), X(2)).SquareDistance(myP); return true; } @@ -105,10 +105,10 @@ Standard_Boolean Extrema_FuncPSDist::Values(const math_Vector& X,Standard_Real& //======================================================================= Standard_Boolean Extrema_FuncPSDist::IsInside(const math_Vector& X) { - if (X(1) < mySurf.FirstUParameter() || - X(1) > mySurf.LastUParameter() || - X(2) < mySurf.FirstVParameter() || - X(2) > mySurf.LastVParameter() ) + if (X(1) < mySurf->FirstUParameter() || + X(1) > mySurf->LastUParameter() || + X(2) < mySurf->FirstVParameter() || + X(2) > mySurf->LastVParameter() ) { // Point out of borders. return Standard_False; diff --git a/src/Extrema/Extrema_FuncPSDist.hxx b/src/Extrema/Extrema_FuncPSDist.hxx index b29931ce62..2ced474bb5 100644 --- a/src/Extrema/Extrema_FuncPSDist.hxx +++ b/src/Extrema/Extrema_FuncPSDist.hxx @@ -48,7 +48,7 @@ public: DEFINE_STANDARD_ALLOC //! Constructor. - Standard_EXPORT Extrema_FuncPSDist(const Adaptor3d_Surface& theS, + Standard_EXPORT Extrema_FuncPSDist(const Handle(Adaptor3d_Surface)& theS, const gp_Pnt& theP); //! Number of variables. @@ -73,7 +73,7 @@ private: const Extrema_FuncPSDist& operator=(const Extrema_FuncPSDist&); Extrema_FuncPSDist(const Extrema_FuncPSDist&); - const Adaptor3d_Surface &mySurf; + const Handle(Adaptor3d_Surface) &mySurf; const gp_Pnt &myP; }; #endif // _Extrema_FuncPSDsit_HeaderFile diff --git a/src/Extrema/Extrema_FuncPSNorm.cxx b/src/Extrema/Extrema_FuncPSNorm.cxx index 649d5da027..39bfe49c79 100644 --- a/src/Extrema/Extrema_FuncPSNorm.cxx +++ b/src/Extrema/Extrema_FuncPSNorm.cxx @@ -35,20 +35,20 @@ Extrema_FuncPSNorm::Extrema_FuncPSNorm () //============================================================================= Extrema_FuncPSNorm::Extrema_FuncPSNorm (const gp_Pnt& P, - const Adaptor3d_Surface& S) + const Handle(Adaptor3d_Surface)& S) : myU(0.0), myV(0.0) { myP = P; - myS = &S; + myS = S; myPinit = Standard_True; mySinit = Standard_True; } //============================================================================= -void Extrema_FuncPSNorm::Initialize(const Adaptor3d_Surface& S) +void Extrema_FuncPSNorm::Initialize(const Handle(Adaptor3d_Surface)& S) { - myS = &S; + myS = S; mySinit = Standard_True; myPoint.Clear(); mySqDist.Clear(); diff --git a/src/Extrema/Extrema_FuncPSNorm.hxx b/src/Extrema/Extrema_FuncPSNorm.hxx index 2a57f835f5..6cb4af2733 100644 --- a/src/Extrema/Extrema_FuncPSNorm.hxx +++ b/src/Extrema/Extrema_FuncPSNorm.hxx @@ -62,10 +62,10 @@ public: Standard_EXPORT Extrema_FuncPSNorm(); - Standard_EXPORT Extrema_FuncPSNorm(const gp_Pnt& P, const Adaptor3d_Surface& S); + Standard_EXPORT Extrema_FuncPSNorm(const gp_Pnt& P, const Handle(Adaptor3d_Surface)& S); //! sets the field mysurf of the function. - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S); //! sets the field mysurf of the function. Standard_EXPORT void SetPoint (const gp_Pnt& P); @@ -98,7 +98,7 @@ public: private: gp_Pnt myP; - const Adaptor3d_Surface* myS; + Handle(Adaptor3d_Surface) myS; Standard_Real myU; Standard_Real myV; gp_Pnt myPs; diff --git a/src/Extrema/Extrema_GExtPC.gxx b/src/Extrema/Extrema_GExtPC.gxx index a06710a5d1..12fe602711 100644 --- a/src/Extrema/Extrema_GExtPC.gxx +++ b/src/Extrema/Extrema_GExtPC.gxx @@ -47,17 +47,17 @@ void Extrema_GExtPC::Perform(const ThePoint& P) Standard_Real t3d = Precision::Confusion(); if (Precision::IsInfinite(myuinf)) mydist1 = RealLast(); else { - Pf = TheCurveTool::Value(*((TheCurve*)myC), myuinf); + Pf = TheCurveTool::Value((TheCurve::element_type*)(myC), myuinf); mydist1 = P.SquareDistance(Pf); } if (Precision::IsInfinite(myusup)) mydist2 = RealLast(); else { - Pl = TheCurveTool::Value(*((TheCurve*)myC), myusup); + Pl = TheCurveTool::Value((TheCurve::element_type*)(myC), myusup); mydist2 = P.SquareDistance(Pl); } - TheCurve & aCurve = *((TheCurve*)myC); + TheCurve aCurve = (TheCurve::element_type*)(myC); switch(type) { case GeomAbs_Circle: @@ -494,11 +494,11 @@ void Extrema_GExtPC::Initialize(const TheCurve& C, const Standard_Real Usup, const Standard_Real TolF) { - myC = (Standard_Address)&C; + myC = (Standard_Address)(C.get()); myintuinf = myuinf = Uinf; myintusup = myusup = Usup; mytolf = TolF; - mytolu = TheCurveTool::Resolution(*((TheCurve*)myC), Precision::Confusion()); + mytolu = TheCurveTool::Resolution((TheCurve::element_type*)(myC), Precision::Confusion()); type = TheCurveTool::GetType(C); mydone = Standard_False; mydist1 = RealLast(); @@ -527,9 +527,9 @@ void Extrema_GExtPC::IntervalPerform(const ThePoint& P) // Verification de la validite des parametres pour le cas trimme: ThePOnC PC = myExtPC.Point(i); U = PC.Parameter(); - if (TheCurveTool::IsPeriodic(*((TheCurve*)myC))) + if (TheCurveTool::IsPeriodic((TheCurve::element_type*)(myC))) { - U = ElCLib::InPeriod(U, myuinf, myuinf+TheCurveTool::Period(*((TheCurve*)myC))); + U = ElCLib::InPeriod(U, myuinf, myuinf+TheCurveTool::Period((TheCurve::element_type*)(myC))); } if ((U >= myuinf - mytolu) && (U <= myusup + mytolu)) { diff --git a/src/Extrema/Extrema_GenExtCC.gxx b/src/Extrema/Extrema_GenExtCC.gxx index 33826fc5c8..82a27532e7 100644 --- a/src/Extrema/Extrema_GenExtCC.gxx +++ b/src/Extrema/Extrema_GenExtCC.gxx @@ -195,12 +195,12 @@ Extrema_GenExtCC::Extrema_GenExtCC(const Curve1& C1, myUppBorder(1,2), myDone(Standard_False) { - myC[0] = (Standard_Address)&C1; - myC[1] = (Standard_Address)&C2; - myLowBorder(1) = C1.FirstParameter(); - myLowBorder(2) = C2.FirstParameter(); - myUppBorder(1) = C1.LastParameter(); - myUppBorder(2) = C2.LastParameter(); + myC[0] = (Standard_Address)(C1.get()); + myC[1] = (Standard_Address)(C2.get()); + myLowBorder(1) = C1->FirstParameter(); + myLowBorder(2) = C2->FirstParameter(); + myUppBorder(1) = C1->LastParameter(); + myUppBorder(2) = C2->LastParameter(); } //======================================================================= @@ -220,8 +220,8 @@ Extrema_GenExtCC::Extrema_GenExtCC(const Curve1& C1, myUppBorder(1,2), myDone(Standard_False) { - myC[0] = (Standard_Address)&C1; - myC[1] = (Standard_Address)&C2; + myC[0] = (Standard_Address)(C1.get()); + myC[1] = (Standard_Address)(C2.get()); myLowBorder(1) = Uinf; myLowBorder(2) = Vinf; myUppBorder(1) = Usup; @@ -239,8 +239,8 @@ void Extrema_GenExtCC::SetParams(const Curve1& C1, const Standard_Real Vinf, const Standard_Real Vsup) { - myC[0] = (Standard_Address)&C1; - myC[1] = (Standard_Address)&C2; + myC[0] = (Standard_Address)(C1.get()); + myC[1] = (Standard_Address)(C2.get()); myLowBorder(1) = Uinf; myLowBorder(2) = Vinf; myUppBorder(1) = Usup; @@ -265,26 +265,26 @@ void Extrema_GenExtCC::Perform() myDone = Standard_False; myParallel = Standard_False; - Curve1 &C1 = *(Curve1*)myC[0]; - Curve2 &C2 = *(Curve2*)myC[1]; + Curve1 C1 = (Curve1::element_type*)(myC[0]); + Curve2 C2 = (Curve2::element_type*)(myC[1]); Standard_Integer aNbInter[2]; GeomAbs_Shape aContinuity = GeomAbs_C2; - aNbInter[0] = C1.NbIntervals(aContinuity); - aNbInter[1] = C2.NbIntervals(aContinuity); + aNbInter[0] = C1->NbIntervals(aContinuity); + aNbInter[1] = C2->NbIntervals(aContinuity); if (aNbInter[0] * aNbInter[1] > 100) { aContinuity = GeomAbs_C1; - aNbInter[0] = C1.NbIntervals(aContinuity); - aNbInter[1] = C2.NbIntervals(aContinuity); + aNbInter[0] = C1->NbIntervals(aContinuity); + aNbInter[1] = C2->NbIntervals(aContinuity); } Standard_Real anL[2]; Standard_Integer indmax = -1, indmin = -1; const Standard_Real mult = 20.; - if (!(Precision::IsInfinite(C1.FirstParameter()) || Precision::IsInfinite(C1.LastParameter()) || - Precision::IsInfinite(C2.FirstParameter()) || Precision::IsInfinite(C2.LastParameter()))) + if (!(Precision::IsInfinite(C1->FirstParameter()) || Precision::IsInfinite(C1->LastParameter()) || + Precision::IsInfinite(C2->FirstParameter()) || Precision::IsInfinite(C2->LastParameter()))) { anL[0] = GCPnts_AbscissaPoint::Length(C1); anL[1] = GCPnts_AbscissaPoint::Length(C2); @@ -322,8 +322,8 @@ void Extrema_GenExtCC::Perform() Handle(TColStd_HArray1OfReal) anIntervals1 = new TColStd_HArray1OfReal(1, aNbInter[0] + 1); Handle(TColStd_HArray1OfReal) anIntervals2 = new TColStd_HArray1OfReal(1, aNbInter[1] + 1); - C1.Intervals(anIntervals1->ChangeArray1(), aContinuity); - C2.Intervals(anIntervals2->ChangeArray1(), aContinuity); + C1->Intervals(anIntervals1->ChangeArray1(), aContinuity); + C2->Intervals(anIntervals2->ChangeArray1(), aContinuity); if (indmax >= 0) { if (indmax == 0) @@ -339,12 +339,12 @@ void Extrema_GenExtCC::Perform() aNbInter[1] = anIntervals2->Length() - 1; } } - if (C1.IsClosed() && aNbInter[0] == 1) + if (C1->IsClosed() && aNbInter[0] == 1) { ChangeIntervals(anIntervals1, 3); aNbInter[0] = anIntervals1->Length() - 1; } - if (C2.IsClosed() && aNbInter[1] == 1) + if (C2->IsClosed() && aNbInter[1] == 1) { ChangeIntervals(anIntervals2, 3); aNbInter[1] = anIntervals2->Length() - 1; @@ -353,8 +353,8 @@ void Extrema_GenExtCC::Perform() // Lipchitz constant computation. const Standard_Real aMaxLC = 10000.; Standard_Real aLC = 100.0; // Default value. - const Standard_Real aMaxDer1 = 1.0 / C1.Resolution(1.0); - const Standard_Real aMaxDer2 = 1.0 / C2.Resolution(1.0); + const Standard_Real aMaxDer1 = 1.0 / C1->Resolution(1.0); + const Standard_Real aMaxDer2 = 1.0 / C2->Resolution(1.0); Standard_Real aMaxDer = Max(aMaxDer1, aMaxDer2) * Sqrt(2.0); if (aLC > aMaxDer) aLC = aMaxDer; @@ -372,18 +372,18 @@ void Extrema_GenExtCC::Perform() aLC = aMaxLC; isConstLockedFlag = Standard_True; } - if (C1.GetType() == GeomAbs_Line) + if (C1->GetType() == GeomAbs_Line) { - aMaxDer = 1.0 / C2.Resolution(1.0); + aMaxDer = 1.0 / C2->Resolution(1.0); if (aLC > aMaxDer) { isConstLockedFlag = Standard_True; aLC = aMaxDer; } } - if (C2.GetType() == GeomAbs_Line) + if (C2->GetType() == GeomAbs_Line) { - aMaxDer = 1.0 / C1.Resolution(1.0); + aMaxDer = 1.0 / C1->Resolution(1.0); if (aLC > aMaxDer) { isConstLockedFlag = Standard_True; @@ -400,12 +400,12 @@ void Extrema_GenExtCC::Perform() Standard_Real aF, aMaxG = 0.; Standard_Real t1, t2, dt1, dt2; Standard_Integer n1 = 21, n2 = 21, i1, i2; - dt1 = (C1.LastParameter() - C1.FirstParameter()) / (n1 - 1); - dt2 = (C2.LastParameter() - C2.FirstParameter()) / (n2 - 1); - for (i1 = 1, t1 = C1.FirstParameter(); i1 <= n1; ++i1, t1 += dt1) + dt1 = (C1->LastParameter() - C1->FirstParameter()) / (n1 - 1); + dt2 = (C2->LastParameter() - C2->FirstParameter()) / (n2 - 1); + for (i1 = 1, t1 = C1->FirstParameter(); i1 <= n1; ++i1, t1 += dt1) { aT(1) = t1; - for (i2 = 1, t2 = C2.FirstParameter(); i2 <= n2; ++i2, t2 += dt2) + for (i2 = 1, t2 = C2->FirstParameter(); i2 <= n2; ++i2, t2 += dt2) { aT(2) = t2; aFunc.Values(aT, aF, aG); @@ -625,8 +625,8 @@ void Extrema_GenExtCC::Perform() for (Standard_Integer iT = 0; isParallel && (iT < 2); ++iT) { - Standard_Real aDist1 = ProjPOnC(C1.Value(aT1[iT]), anExtPC2); - Standard_Real aDist2 = ProjPOnC(C2.Value(aT2[iT]), anExtPC1); + Standard_Real aDist1 = ProjPOnC(C1->Value(aT1[iT]), anExtPC2); + Standard_Real aDist2 = ProjPOnC(C2->Value(aT2[iT]), anExtPC1); isParallel = (Abs(Min(aDist1, aDist2) - aF) < Precision::Confusion()); } } @@ -692,7 +692,7 @@ Standard_Real Extrema_GenExtCC::SquareDistance(const Standard_Integer N) const throw Standard_OutOfRange(); } - return Tool1::Value(*((Curve1*)myC[0]), myPoints1(N)).SquareDistance(Tool2::Value(*((Curve2*)myC[1]), myPoints2(N))); + return Tool1::Value((Curve1::element_type*)(myC[0]), myPoints1(N)).SquareDistance(Tool2::Value((Curve2::element_type*)(myC[1]), myPoints2(N))); } //======================================================================= @@ -708,8 +708,8 @@ void Extrema_GenExtCC::Points(const Standard_Integer N, throw Standard_OutOfRange(); } - P1.SetValues(myPoints1(N), Tool1::Value(*((Curve1*)myC[0]), myPoints1(N))); - P2.SetValues(myPoints2(N), Tool2::Value(*((Curve2*)myC[1]), myPoints2(N))); + P1.SetValues(myPoints1(N), Tool1::Value((Curve1::element_type*)(myC[0]), myPoints1(N))); + P2.SetValues(myPoints2(N), Tool2::Value((Curve2::element_type*)(myC[1]), myPoints2(N))); } //======================================================================= diff --git a/src/Extrema/Extrema_GenExtCS.cxx b/src/Extrema/Extrema_GenExtCS.cxx index c6a8f5089b..041e370bed 100644 --- a/src/Extrema/Extrema_GenExtCS.cxx +++ b/src/Extrema/Extrema_GenExtCS.cxx @@ -59,15 +59,15 @@ static Standard_Boolean IsConic(const GeomAbs_CurveType theCType) return Standard_False; } // restrict maximal parameter on hyperbola to avoid FPE -static Standard_Real GetCurvMaxParamVal (const Adaptor3d_Curve& theC) +static Standard_Real GetCurvMaxParamVal (const Handle(Adaptor3d_Curve)& theC) { - if (theC.GetType() == GeomAbs_Hyperbola) + if (theC->GetType() == GeomAbs_Hyperbola) { return HyperbolaLimit; } - if (theC.GetType() == GeomAbs_OffsetCurve) + if (theC->GetType() == GeomAbs_OffsetCurve) { - Handle(Geom_Curve) aBC (theC.OffsetCurve()->BasisCurve()); + Handle(Geom_Curve) aBC (theC->OffsetCurve()->BasisCurve()); Handle(Geom_TrimmedCurve) aTC = Handle(Geom_TrimmedCurve)::DownCast (aBC); if (! aTC.IsNull()) { @@ -80,22 +80,22 @@ static Standard_Real GetCurvMaxParamVal (const Adaptor3d_Curve& theC) } // restrict maximal parameter on surfaces based on hyperbola to avoid FPE -static void GetSurfMaxParamVals (const Adaptor3d_Surface& theS, +static void GetSurfMaxParamVals (const Handle(Adaptor3d_Surface)& theS, Standard_Real& theUmax, Standard_Real& theVmax) { theUmax = theVmax = MaxParamVal; - if (theS.GetType() == GeomAbs_SurfaceOfExtrusion) + if (theS->GetType() == GeomAbs_SurfaceOfExtrusion) { - theUmax = GetCurvMaxParamVal (*theS.BasisCurve()); + theUmax = GetCurvMaxParamVal (theS->BasisCurve()); } - else if (theS.GetType() == GeomAbs_SurfaceOfRevolution) + else if (theS->GetType() == GeomAbs_SurfaceOfRevolution) { - theVmax = GetCurvMaxParamVal (*theS.BasisCurve()); + theVmax = GetCurvMaxParamVal (theS->BasisCurve()); } - else if (theS.GetType() == GeomAbs_OffsetSurface) + else if (theS->GetType() == GeomAbs_OffsetSurface) { - GetSurfMaxParamVals (*theS.BasisSurface(), theUmax, theVmax); + GetSurfMaxParamVals (theS->BasisSurface(), theUmax, theVmax); } } @@ -133,8 +133,8 @@ Extrema_GenExtCS::~Extrema_GenExtCS() //function : Extrema_GenExtCS //purpose : //======================================================================= -Extrema_GenExtCS::Extrema_GenExtCS(const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S, +Extrema_GenExtCS::Extrema_GenExtCS(const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbT, const Standard_Integer NbU, const Standard_Integer NbV, @@ -150,8 +150,8 @@ Extrema_GenExtCS::Extrema_GenExtCS(const Adaptor3d_Curve& C, //purpose : //======================================================================= -Extrema_GenExtCS::Extrema_GenExtCS (const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S, +Extrema_GenExtCS::Extrema_GenExtCS (const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbT, const Standard_Integer NbU, const Standard_Integer NbV, @@ -172,15 +172,15 @@ Extrema_GenExtCS::Extrema_GenExtCS (const Adaptor3d_Curve& C, //function : Initialize //purpose : //======================================================================= -void Extrema_GenExtCS::Initialize (const Adaptor3d_Surface& S, +void Extrema_GenExtCS::Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol2) { - myumin = S.FirstUParameter(); - myusup = S.LastUParameter(); - myvmin = S.FirstVParameter(); - myvsup = S.LastVParameter(); + myumin = S->FirstUParameter(); + myusup = S->LastUParameter(); + myvmin = S->FirstVParameter(); + myvsup = S->LastVParameter(); Initialize(S,NbU,NbV,myumin,myusup,myvmin,myvsup,Tol2); } @@ -188,7 +188,7 @@ void Extrema_GenExtCS::Initialize (const Adaptor3d_Surface& S, //function : Initialize //purpose : //======================================================================= -void Extrema_GenExtCS::Initialize (const Adaptor3d_Surface& S, +void Extrema_GenExtCS::Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, @@ -197,7 +197,7 @@ void Extrema_GenExtCS::Initialize (const Adaptor3d_Surface& S, const Standard_Real Vsup, const Standard_Real Tol2) { - myS = &S; + myS = S; myusample = NbU; myvsample = NbV; myumin = Umin; @@ -207,7 +207,7 @@ void Extrema_GenExtCS::Initialize (const Adaptor3d_Surface& S, mytol2 = Tol2; Standard_Real umaxpar, vmaxpar; - GetSurfMaxParamVals(*myS, umaxpar, vmaxpar); + GetSurfMaxParamVals(myS, umaxpar, vmaxpar); if(Precision::IsInfinite (myusup)) { @@ -253,12 +253,12 @@ void Extrema_GenExtCS::Initialize (const Adaptor3d_Surface& S, //function : Perform //purpose : //======================================================================= -void Extrema_GenExtCS::Perform(const Adaptor3d_Curve& C, +void Extrema_GenExtCS::Perform(const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbT, const Standard_Real Tol1) { - mytmin = C.FirstParameter(); - mytsup = C.LastParameter(); + mytmin = C->FirstParameter(); + mytsup = C->LastParameter(); Perform(C, NbT, mytmin, mytsup,Tol1); } @@ -266,14 +266,14 @@ void Extrema_GenExtCS::Perform(const Adaptor3d_Curve& C, //function : Perform //purpose : //======================================================================= -void Extrema_GenExtCS::Perform (const Adaptor3d_Curve& C, +void Extrema_GenExtCS::Perform (const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbT, const Standard_Real tmin, const Standard_Real tsup, const Standard_Real Tol1) { myDone = Standard_False; - myF.Initialize(C,*myS); + myF.Initialize(C, myS); mytmin = tmin; mytsup = tsup; mytol1 = Tol1; @@ -297,7 +297,7 @@ void Extrema_GenExtCS::Perform (const Adaptor3d_Curve& C, } else { - GeomAbs_CurveType aCType = C.GetType(); + GeomAbs_CurveType aCType = C->GetType(); if (IsConic(aCType)) { aNbVar = 2; @@ -314,10 +314,10 @@ void Extrema_GenExtCS::Perform (const Adaptor3d_Curve& C, const Standard_Integer aNbParticles = 48; Standard_Integer aNbIntC = 1; - if (C.IsClosed() || C.IsPeriodic()) + if (C->IsClosed() || C->IsPeriodic()) { - Standard_Real aPeriod = C.Period(); - if (C.LastParameter() - C.FirstParameter() > 2. * aPeriod / 3.) + Standard_Real aPeriod = C->Period(); + if (C->LastParameter() - C->FirstParameter() > 2. * aPeriod / 3.) { aNbIntC = 2; } @@ -394,7 +394,7 @@ void Extrema_GenExtCS::Perform (const Adaptor3d_Curve& C, //function : GlobMinGenCS //purpose : //======================================================================= -void Extrema_GenExtCS::GlobMinGenCS(const Adaptor3d_Curve& theC, +void Extrema_GenExtCS::GlobMinGenCS(const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbParticles, const math_Vector& theTUVinf, const math_Vector& theTUVsup, @@ -415,7 +415,7 @@ void Extrema_GenExtCS::GlobMinGenCS(const Adaptor3d_Curve& theC, // Correct number of curve samples in case of low resolution Standard_Integer aNewCsample = mytsample; Standard_Real aScaleFactor = 5.0; - Standard_Real aResolutionCU = aStepCU / theC.Resolution(1.0); + Standard_Real aResolutionCU = aStepCU / theC->Resolution(1.0); Standard_Real aMinResolution = aScaleFactor * Min(aResolutionCU, Min(aStepSU / myS->UResolution(1.0), aStepSV / myS->VResolution(1.0))); @@ -438,7 +438,7 @@ void Extrema_GenExtCS::GlobMinGenCS(const Adaptor3d_Curve& theC, Standard_Real aCU1 = aMinTUV(1); for (Standard_Integer aCUI = 0; aCUI <= aNewCsample; aCUI++, aCU1 += aStepCU) - aCurvPnts.SetValue(aCUI, theC.Value(aCU1)); + aCurvPnts.SetValue(aCUI, theC->Value(aCU1)); PSO_Particle* aParticle = aParticles.GetWorstParticle(); // Select specified number of particles from pre-computed set of samples @@ -479,7 +479,7 @@ void Extrema_GenExtCS::GlobMinGenCS(const Adaptor3d_Curve& theC, // Find min approximation Standard_Real aValue; - Extrema_GlobOptFuncCS aFunc(&theC, myS); + Extrema_GlobOptFuncCS aFunc(theC, myS); math_PSO aPSO(&aFunc, theTUVinf, theTUVsup, aStep); aPSO.Perform(aParticles, theNbParticles, aValue, theTUV); @@ -488,7 +488,7 @@ void Extrema_GenExtCS::GlobMinGenCS(const Adaptor3d_Curve& theC, //function : GlobMinConicS //purpose : //======================================================================= -void Extrema_GenExtCS::GlobMinConicS(const Adaptor3d_Curve& theC, +void Extrema_GenExtCS::GlobMinConicS(const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbParticles, const math_Vector& theTUVinf, const math_Vector& theTUVsup, @@ -521,7 +521,7 @@ void Extrema_GenExtCS::GlobMinConicS(const Adaptor3d_Curve& theC, Standard_Real aStepSV = (aMaxUV(2) - aMinUV(2)) / aVsample; // Extrema_GlobOptFuncConicS aFunc(myS, anUVinf(1), anUVsup(1), anUVinf(2), anUVsup(2)); - aFunc.LoadConic(&theC, theTUVinf(1), theTUVsup(1)); + aFunc.LoadConic(theC, theTUVinf(1), theTUVsup(1)); PSO_Particle* aParticle = aParticles.GetWorstParticle(); @@ -567,7 +567,7 @@ void Extrema_GenExtCS::GlobMinConicS(const Adaptor3d_Curve& theC, aPSO.Perform(aParticles, theNbParticles, aValue, anUV); // Standard_Real aCT = aFunc.ConicParameter(anUV); - if (theC.IsPeriodic()) + if (theC->IsPeriodic()) { if (aCT < theTUVinf(1) - Precision::PConfusion() || aCT > theTUVsup(1) + Precision::PConfusion()) { @@ -583,7 +583,7 @@ void Extrema_GenExtCS::GlobMinConicS(const Adaptor3d_Curve& theC, gp_Vec aDU, aDV, aDT; gp_Pnt aPOnS, aPOnC; myS->D1(anUV(1), anUV(2), aPOnS, aDU, aDV); - theC.D1(aCT, aPOnC, aDT); + theC->D1(aCT, aPOnC, aDT); Standard_Real aSqDist = aPOnC.SquareDistance(aPOnS); if (aSqDist <= Precision::SquareConfusion()) return; @@ -651,7 +651,7 @@ void Extrema_GenExtCS::GlobMinConicS(const Adaptor3d_Curve& theC, aF(3) = PcPs.Dot(aDV); Standard_Real aFF = aF.Norm2(); - Extrema_GenLocateExtPS anExtPS(*myS, mytol2, mytol2); + Extrema_GenLocateExtPS anExtPS(myS, mytol2, mytol2); anExtPS.Perform(aPOnC, anUV(1), anUV(2), Standard_False); if (anExtPS.IsDone()) { @@ -676,7 +676,7 @@ void Extrema_GenExtCS::GlobMinConicS(const Adaptor3d_Curve& theC, //function : GlobMinCQuadric //purpose : //======================================================================= -void Extrema_GenExtCS::GlobMinCQuadric(const Adaptor3d_Curve& theC, +void Extrema_GenExtCS::GlobMinCQuadric(const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbParticles, const math_Vector& theTUVinf, const math_Vector& theTUVsup, @@ -709,7 +709,7 @@ void Extrema_GenExtCS::GlobMinCQuadric(const Adaptor3d_Curve& theC, Standard_Real aStepSU = (theTUVsup(2) - theTUVinf(2)) / myusample; Standard_Real aStepSV = (theTUVsup(3) - theTUVinf(3)) / myvsample; Standard_Real aScaleFactor = 5.0; - Standard_Real aResolutionCU = aStepCT / theC.Resolution(1.0); + Standard_Real aResolutionCU = aStepCT / theC->Resolution(1.0); Standard_Real aMinResolution = aScaleFactor * Min(aResolutionCU, Min(aStepSU / myS->UResolution(1.0), aStepSV / myS->VResolution(1.0))); @@ -727,7 +727,7 @@ void Extrema_GenExtCS::GlobMinCQuadric(const Adaptor3d_Curve& theC, } // - Extrema_GlobOptFuncCQuadric aFunc(&theC, aTinf(1), aTsup(1)); + Extrema_GlobOptFuncCQuadric aFunc(theC, aTinf(1), aTsup(1)); aFunc.LoadQuad(myS, theTUVinf(2), theTUVsup(2), theTUVinf(3), theTUVsup(3)); PSO_Particle* aParticle = aParticles.GetWorstParticle(); diff --git a/src/Extrema/Extrema_GenExtCS.hxx b/src/Extrema/Extrema_GenExtCS.hxx index cd460ba7f2..668ed7769d 100644 --- a/src/Extrema/Extrema_GenExtCS.hxx +++ b/src/Extrema/Extrema_GenExtCS.hxx @@ -48,7 +48,7 @@ public: //! surfaces. //! NbU and NbV are used to locate the close points on the //! surface and NbT on the curve to find the zeros. - Standard_EXPORT Extrema_GenExtCS(const Adaptor3d_Curve& C, const Adaptor3d_Surface& S, const Standard_Integer NbT, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT Extrema_GenExtCS(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbT, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol1, const Standard_Real Tol2); //! It calculates all the distances. //! The function F(u,v)=distance(P,S(u,v)) has an @@ -57,21 +57,21 @@ public: //! surface. //! NbT,NbU and NbV are used to locate the close points //! to find the zeros. - Standard_EXPORT Extrema_GenExtCS(const Adaptor3d_Curve& C, const Adaptor3d_Surface& S, const Standard_Integer NbT, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real tmin, const Standard_Real tsup, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT Extrema_GenExtCS(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbT, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real tmin, const Standard_Real tsup, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real Tol1, const Standard_Real Tol2); - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol2); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol2); - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real Tol2); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real Tol2); //! the algorithm is done with S //! An exception is raised if the fields have not //! been initialized. - Standard_EXPORT void Perform (const Adaptor3d_Curve& C, const Standard_Integer NbT, const Standard_Real Tol1); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbT, const Standard_Real Tol1); //! the algorithm is done with C //! An exception is raised if the fields have not //! been initialized. - Standard_EXPORT void Perform (const Adaptor3d_Curve& C, const Standard_Integer NbT, const Standard_Real tmin, const Standard_Real tsup, const Standard_Real Tol1); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Curve)& C, const Standard_Integer NbT, const Standard_Real tmin, const Standard_Real tsup, const Standard_Real Tol1); //! Returns True if the distances are found. Standard_EXPORT Standard_Boolean IsDone() const; @@ -90,19 +90,19 @@ public: private: - Standard_EXPORT void GlobMinGenCS(const Adaptor3d_Curve& theC, + Standard_EXPORT void GlobMinGenCS(const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbParticles, const math_Vector& theTUVinf, const math_Vector& theTUVsup, math_Vector& theTUV); - Standard_EXPORT void GlobMinConicS(const Adaptor3d_Curve& theC, + Standard_EXPORT void GlobMinConicS(const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbParticles, const math_Vector& theTUVinf, const math_Vector& theTUVsup, math_Vector& theTUV); - Standard_EXPORT void GlobMinCQuadric(const Adaptor3d_Curve& theC, + Standard_EXPORT void GlobMinCQuadric(const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbParticles, const math_Vector& theTUVinf, const math_Vector& theTUVsup, @@ -129,7 +129,7 @@ private: Standard_Real mytol1; Standard_Real mytol2; Extrema_FuncExtCS myF; - const Adaptor3d_Surface* myS; + Handle(Adaptor3d_Surface) myS; Handle(TColgp_HArray2OfPnt) mySurfPnts; }; diff --git a/src/Extrema/Extrema_GenExtPS.cxx b/src/Extrema/Extrema_GenExtPS.cxx index ed2b6373bc..2098abdf55 100644 --- a/src/Extrema/Extrema_GenExtPS.cxx +++ b/src/Extrema/Extrema_GenExtPS.cxx @@ -238,7 +238,7 @@ Extrema_GenExtPS::~Extrema_GenExtPS() // purpose : // ======================================================================= Extrema_GenExtPS::Extrema_GenExtPS (const gp_Pnt& P, - const Adaptor3d_Surface& S, + const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real TolU, @@ -254,7 +254,7 @@ Extrema_GenExtPS::Extrema_GenExtPS (const gp_Pnt& P, } Extrema_GenExtPS::Extrema_GenExtPS (const gp_Pnt& P, - const Adaptor3d_Surface& S, + const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, @@ -274,21 +274,21 @@ Extrema_GenExtPS::Extrema_GenExtPS (const gp_Pnt& P, } -void Extrema_GenExtPS::Initialize(const Adaptor3d_Surface& S, +void Extrema_GenExtPS::Initialize(const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real TolU, const Standard_Real TolV) { - myumin = S.FirstUParameter(); - myusup = S.LastUParameter(); - myvmin = S.FirstVParameter(); - myvsup = S.LastVParameter(); + myumin = S->FirstUParameter(); + myusup = S->LastUParameter(); + myvmin = S->FirstVParameter(); + myvsup = S->LastVParameter(); Initialize(S,NbU,NbV,myumin,myusup,myvmin,myvsup,TolU,TolV); } -void Extrema_GenExtPS::Initialize(const Adaptor3d_Surface& S, +void Extrema_GenExtPS::Initialize(const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, @@ -298,7 +298,7 @@ void Extrema_GenExtPS::Initialize(const Adaptor3d_Surface& S, const Standard_Real TolU, const Standard_Real TolV) { - myS = &S; + myS = S; myusample = NbU; myvsample = NbV; mytolu = TolU; @@ -361,18 +361,18 @@ inline static void fillParams(const TColStd_Array1OfReal& theKnots, theParams->SetValue(i+1,aParams(i)); } -void Extrema_GenExtPS::GetGridPoints( const Adaptor3d_Surface& theSurf) +void Extrema_GenExtPS::GetGridPoints( const Handle(Adaptor3d_Surface)& theSurf) { //creation parametric points for BSpline and Bezier surfaces //with taking into account of Degree and NbKnots of BSpline or Bezier geometry - if (theSurf.GetType() == GeomAbs_OffsetSurface) + if (theSurf->GetType() == GeomAbs_OffsetSurface) { - GetGridPoints (*theSurf.BasisSurface()); + GetGridPoints (theSurf->BasisSurface()); } //parametric points for BSpline surfaces - else if( theSurf.GetType() == GeomAbs_BSplineSurface) + else if( theSurf->GetType() == GeomAbs_BSplineSurface) { - Handle(Geom_BSplineSurface) aBspl = theSurf.BSpline(); + Handle(Geom_BSplineSurface) aBspl = theSurf->BSpline(); if(!aBspl.IsNull()) { TColStd_Array1OfReal aUKnots(1, aBspl->NbUKnots()); @@ -384,9 +384,9 @@ void Extrema_GenExtPS::GetGridPoints( const Adaptor3d_Surface& theSurf) } } //calculation parametric points for Bezier surfaces - else if(theSurf.GetType() == GeomAbs_BezierSurface) + else if(theSurf->GetType() == GeomAbs_BezierSurface) { - Handle(Geom_BezierSurface) aBezier = theSurf.Bezier(); + Handle(Geom_BezierSurface) aBezier = theSurf->Bezier(); if(aBezier.IsNull()) return; @@ -398,14 +398,14 @@ void Extrema_GenExtPS::GetGridPoints( const Adaptor3d_Surface& theSurf) } //creation points for surfaces based on BSpline or Bezier curves - else if(theSurf.GetType() == GeomAbs_SurfaceOfRevolution || - theSurf.GetType() == GeomAbs_SurfaceOfExtrusion) + else if(theSurf->GetType() == GeomAbs_SurfaceOfRevolution || + theSurf->GetType() == GeomAbs_SurfaceOfExtrusion) { Handle(TColStd_HArray1OfReal) anArrKnots; Standard_Integer aDegree = 0; - if(theSurf.BasisCurve()->GetType() == GeomAbs_BSplineCurve) + if(theSurf->BasisCurve()->GetType() == GeomAbs_BSplineCurve) { - Handle(Geom_BSplineCurve) aBspl = theSurf.BasisCurve()->BSpline(); + Handle(Geom_BSplineCurve) aBspl = theSurf->BasisCurve()->BSpline(); if(!aBspl.IsNull()) { anArrKnots = new TColStd_HArray1OfReal(1,aBspl->NbKnots()); @@ -415,9 +415,9 @@ void Extrema_GenExtPS::GetGridPoints( const Adaptor3d_Surface& theSurf) } } - if(theSurf.BasisCurve()->GetType() == GeomAbs_BezierCurve) + if(theSurf->BasisCurve()->GetType() == GeomAbs_BezierCurve) { - Handle(Geom_BezierCurve) aBez = theSurf.BasisCurve()->Bezier(); + Handle(Geom_BezierCurve) aBez = theSurf->BasisCurve()->Bezier(); if(!aBez.IsNull()) { anArrKnots = new TColStd_HArray1OfReal(1,2); @@ -429,7 +429,7 @@ void Extrema_GenExtPS::GetGridPoints( const Adaptor3d_Surface& theSurf) } if(anArrKnots.IsNull()) return; - if( theSurf.GetType() == GeomAbs_SurfaceOfRevolution ) + if( theSurf->GetType() == GeomAbs_SurfaceOfRevolution ) fillParams( anArrKnots->Array1(), aDegree, myvmin, myvsup, myVParams, myvsample); else fillParams( anArrKnots->Array1(), aDegree, myumin, myusup, myUParams, myusample); @@ -523,7 +523,7 @@ void Extrema_GenExtPS::BuildGrid(const gp_Pnt &thePoint) //if grid was already built skip its creation if (!myInit) { //build parametric grid in case of a complex surface geometry (BSpline and Bezier surfaces) - GetGridPoints(*myS); + GetGridPoints(myS); //build grid in other cases if( myUParams.IsNull() ) @@ -715,7 +715,7 @@ void Extrema_GenExtPS::BuildGrid(const gp_Pnt &thePoint) } } -static Standard_Real LengthOfIso(const Adaptor3d_Surface& theS, const GeomAbs_IsoType theIso, +static Standard_Real LengthOfIso(const Handle(Adaptor3d_Surface)& theS, const GeomAbs_IsoType theIso, const Standard_Real thePar1, const Standard_Real thePar2, const Standard_Integer theNbPnts, const Standard_Real thePar) { @@ -726,22 +726,22 @@ static Standard_Real LengthOfIso(const Adaptor3d_Surface& theS, const GeomAbs_Is Standard_Real aPar = thePar1 + dPar; if(theIso == GeomAbs_IsoU) { - aP1 = theS.Value(thePar, thePar1); + aP1 = theS->Value(thePar, thePar1); } else { - aP1 = theS.Value(thePar1, thePar); + aP1 = theS->Value(thePar1, thePar); } for (i = 2; i <= theNbPnts; ++i) { if (theIso == GeomAbs_IsoU) { - aP2 = theS.Value(thePar, aPar); + aP2 = theS->Value(thePar, aPar); } else { - aP2 = theS.Value(aPar, thePar); + aP2 = theS->Value(aPar, thePar); } aLen += aP1.Distance(aP2); aP1 = aP2; @@ -749,7 +749,7 @@ static Standard_Real LengthOfIso(const Adaptor3d_Surface& theS, const GeomAbs_Is } return aLen; } -static void CorrectNbSamples(const Adaptor3d_Surface& theS, +static void CorrectNbSamples(const Handle(Adaptor3d_Surface)& theS, const Standard_Real theU1, const Standard_Real theU2, Standard_Integer& theNbU, const Standard_Real theV1, const Standard_Real theV2, Standard_Integer& theNbV) { @@ -821,7 +821,7 @@ void Extrema_GenExtPS::BuildTree() myvsample = Min(aVValue, 300); } // - CorrectNbSamples(*myS, myumin, myusup, myusample, myvmin, myvsup, myvsample); + CorrectNbSamples(myS, myumin, myusup, myusample, myvmin, myvsup, myvsample); // Standard_Real PasU = myusup - myumin; Standard_Real PasV = myvsup - myvmin; diff --git a/src/Extrema/Extrema_GenExtPS.hxx b/src/Extrema/Extrema_GenExtPS.hxx index 61d3b8c769..86ba8621ad 100644 --- a/src/Extrema/Extrema_GenExtPS.hxx +++ b/src/Extrema/Extrema_GenExtPS.hxx @@ -55,7 +55,7 @@ public: //! TolU et TolV are used to determine the conditions //! to stop the iterations; at the iteration number n: //! (Un - Un-1) < TolU and (Vn - Vn-1) < TolV . - Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P, const Adaptor3d_Surface& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); + Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P, const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); //! It calculates all the distances. //! The function F(u,v)=distance(P,S(u,v)) has an @@ -69,11 +69,11 @@ public: //! TolU et TolV are used to determine the conditions //! to stop the iterations; at the iteration number n: //! (Un - Un-1) < TolU and (Vn - Vn-1) < TolV . - Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P, const Adaptor3d_Surface& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); + Standard_EXPORT Extrema_GenExtPS(const gp_Pnt& P, const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV, const Extrema_ExtFlag F = Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo A = Extrema_ExtAlgo_Grad); - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real TolU, const Standard_Real TolV); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real TolU, const Standard_Real TolV); - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real Vmin, const Standard_Real Vsup, const Standard_Real TolU, const Standard_Real TolV); //! the algorithm is done with the point P. //! An exception is raised if the fields have not @@ -103,7 +103,7 @@ private: Standard_EXPORT void FindSolution (const gp_Pnt& P, const Extrema_POnSurfParams& theParams); //! Selection of points to build grid, depending on the type of surface - Standard_EXPORT void GetGridPoints (const Adaptor3d_Surface& theSurf); + Standard_EXPORT void GetGridPoints (const Handle(Adaptor3d_Surface)& theSurf); //! Creation of grid of parametric points Standard_EXPORT void BuildGrid (const gp_Pnt& thePoint); @@ -134,7 +134,7 @@ private: Extrema_HUBTreeOfSphere mySphereUBTree; Handle(Bnd_HArray1OfSphere) mySphereArray; Extrema_FuncPSNorm myF; - const Adaptor3d_Surface* myS; + Handle(Adaptor3d_Surface) myS; Extrema_ExtFlag myFlag; Extrema_ExtAlgo myAlgo; Handle(TColStd_HArray1OfReal) myUParams; diff --git a/src/Extrema/Extrema_GenExtSS.cxx b/src/Extrema/Extrema_GenExtSS.cxx index b56eca7397..e7445bb406 100644 --- a/src/Extrema/Extrema_GenExtSS.cxx +++ b/src/Extrema/Extrema_GenExtSS.cxx @@ -31,10 +31,10 @@ class Extrema_FuncDistSS : public math_MultipleVarFunctionWithGradient public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Extrema_FuncDistSS(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2) - : myS1(&S1), - myS2(&S2) + Standard_EXPORT Extrema_FuncDistSS(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2) + : myS1(S1), + myS2(S2) { } @@ -91,8 +91,8 @@ protected: private: - const Adaptor3d_Surface *myS1; - const Adaptor3d_Surface *myS2; + const Handle(Adaptor3d_Surface) myS1; + const Handle(Adaptor3d_Surface) myS2; }; //======================================================================= @@ -132,8 +132,8 @@ Extrema_GenExtSS::~Extrema_GenExtSS() //purpose : //======================================================================= -Extrema_GenExtSS::Extrema_GenExtSS(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2, +Extrema_GenExtSS::Extrema_GenExtSS(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol1, @@ -148,8 +148,8 @@ Extrema_GenExtSS::Extrema_GenExtSS(const Adaptor3d_Surface& S1, //purpose : //======================================================================= -Extrema_GenExtSS::Extrema_GenExtSS(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2, +Extrema_GenExtSS::Extrema_GenExtSS(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real U1min, @@ -172,15 +172,15 @@ Extrema_GenExtSS::Extrema_GenExtSS(const Adaptor3d_Surface& S1, //purpose : //======================================================================= -void Extrema_GenExtSS::Initialize(const Adaptor3d_Surface& S2, +void Extrema_GenExtSS::Initialize(const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol2) { - myu2min = S2.FirstUParameter(); - myu2sup = S2.LastUParameter(); - myv2min = S2.FirstVParameter(); - myv2sup = S2.LastVParameter(); + myu2min = S2->FirstUParameter(); + myu2sup = S2->LastUParameter(); + myv2min = S2->FirstVParameter(); + myv2sup = S2->LastVParameter(); Initialize(S2,NbU,NbV,myu2min,myu2sup,myv2min,myv2sup,Tol2); } @@ -189,7 +189,7 @@ void Extrema_GenExtSS::Initialize(const Adaptor3d_Surface& S2, //purpose : //======================================================================= -void Extrema_GenExtSS::Initialize(const Adaptor3d_Surface& S2, +void Extrema_GenExtSS::Initialize(const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real U2min, @@ -198,7 +198,7 @@ void Extrema_GenExtSS::Initialize(const Adaptor3d_Surface& S2, const Standard_Real V2sup, const Standard_Real Tol2) { - myS2 = &S2; + myS2 = S2; mypoints1 = new TColgp_HArray2OfPnt(0,NbU+1,0,NbV+1); mypoints2 = new TColgp_HArray2OfPnt(0,NbU+1,0,NbV+1); myusample = NbU; @@ -238,13 +238,13 @@ void Extrema_GenExtSS::Initialize(const Adaptor3d_Surface& S2, //purpose : //======================================================================= -void Extrema_GenExtSS::Perform(const Adaptor3d_Surface& S1, +void Extrema_GenExtSS::Perform(const Handle(Adaptor3d_Surface)& S1, const Standard_Real Tol1) { - myu1min = S1.FirstUParameter(); - myu1sup = S1.LastUParameter(); - myv1min = S1.FirstVParameter(); - myv1sup = S1.LastVParameter(); + myu1min = S1->FirstUParameter(); + myu1sup = S1->LastUParameter(); + myv1min = S1->FirstVParameter(); + myv1sup = S1->LastVParameter(); Perform(S1, myu1min, myu1sup,myv1min,myv1sup,Tol1); } @@ -253,14 +253,14 @@ void Extrema_GenExtSS::Perform(const Adaptor3d_Surface& S1, //purpose : //======================================================================= -void Extrema_GenExtSS::Perform(const Adaptor3d_Surface& S1, +void Extrema_GenExtSS::Perform(const Handle(Adaptor3d_Surface)& S1, const Standard_Real U1min, const Standard_Real U1sup, const Standard_Real V1min, const Standard_Real V1sup, const Standard_Real Tol1) { - myF.Initialize(S1,*myS2); + myF.Initialize(S1, myS2); myu1min = U1min; myu1sup = U1sup; myv1min = V1min; @@ -295,7 +295,7 @@ void Extrema_GenExtSS::Perform(const Adaptor3d_Surface& S1, for ( NoU1 = 1, U1 = U10; NoU1 <= myusample; NoU1++, U1 += PasU1) { for ( NoV1 = 1, V1 = V10; NoV1 <= myvsample; NoV1++, V1 += PasV1) { - P1 = S1.Value(U1, V1); + P1 = S1->Value(U1, V1); mypoints1->SetValue(NoU1,NoV1,P1); } } @@ -364,7 +364,7 @@ b- Calcul des minima: UV(3) = U20 + (N2Umin - 1) * PasU2; UV(4) = V20 + (N2Vmin - 1) * PasV2; - Extrema_FuncDistSS aGFSS(S1, *myS2); + Extrema_FuncDistSS aGFSS(S1, myS2); math_BFGS aBFGSSolver(4); aBFGSSolver.Perform(aGFSS, UV); if (aBFGSSolver.IsDone()) diff --git a/src/Extrema/Extrema_GenExtSS.hxx b/src/Extrema/Extrema_GenExtSS.hxx index d02f5c2575..42a74e37bf 100644 --- a/src/Extrema/Extrema_GenExtSS.hxx +++ b/src/Extrema/Extrema_GenExtSS.hxx @@ -49,7 +49,7 @@ public: //! surfaces. //! NbU and NbV are used to locate the close points //! to find the zeros. - Standard_EXPORT Extrema_GenExtSS(const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT Extrema_GenExtSS(const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol1, const Standard_Real Tol2); //! It calculates all the distances. //! The function F(u,v)=distance(P,S(u,v)) has an @@ -58,21 +58,21 @@ public: //! surface. //! NbU and NbV are used to locate the close points //! to find the zeros. - Standard_EXPORT Extrema_GenExtSS(const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real U1min, const Standard_Real U1sup, const Standard_Real V1min, const Standard_Real V1sup, const Standard_Real U2min, const Standard_Real U2sup, const Standard_Real V2min, const Standard_Real V2sup, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT Extrema_GenExtSS(const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real U1min, const Standard_Real U1sup, const Standard_Real V1min, const Standard_Real V1sup, const Standard_Real U2min, const Standard_Real U2sup, const Standard_Real V2min, const Standard_Real V2sup, const Standard_Real Tol1, const Standard_Real Tol2); - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol2); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real Tol2); - Standard_EXPORT void Initialize (const Adaptor3d_Surface& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real U2min, const Standard_Real U2sup, const Standard_Real V2min, const Standard_Real V2sup, const Standard_Real Tol2); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Surface)& S2, const Standard_Integer NbU, const Standard_Integer NbV, const Standard_Real U2min, const Standard_Real U2sup, const Standard_Real V2min, const Standard_Real V2sup, const Standard_Real Tol2); //! the algorithm is done with S1 //! An exception is raised if the fields have not //! been initialized. - Standard_EXPORT void Perform (const Adaptor3d_Surface& S1, const Standard_Real Tol1); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Surface)& S1, const Standard_Real Tol1); //! the algorithm is done withS1 //! An exception is raised if the fields have not //! been initialized. - Standard_EXPORT void Perform (const Adaptor3d_Surface& S1, const Standard_Real U1min, const Standard_Real U1sup, const Standard_Real V1min, const Standard_Real V1sup, const Standard_Real Tol1); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Surface)& S1, const Standard_Real U1min, const Standard_Real U1sup, const Standard_Real V1min, const Standard_Real V1sup, const Standard_Real Tol1); //! Returns True if the distances are found. Standard_EXPORT Standard_Boolean IsDone() const; @@ -114,7 +114,7 @@ private: Standard_Real mytol1; Standard_Real mytol2; Extrema_FuncExtSS myF; - const Adaptor3d_Surface* myS2; + Handle(Adaptor3d_Surface) myS2; }; diff --git a/src/Extrema/Extrema_GenLocateExtCS.cxx b/src/Extrema/Extrema_GenLocateExtCS.cxx index 16e38a32a8..150bc053bf 100644 --- a/src/Extrema/Extrema_GenLocateExtCS.cxx +++ b/src/Extrema/Extrema_GenLocateExtCS.cxx @@ -40,8 +40,8 @@ Extrema_GenLocateExtCS::Extrema_GenLocateExtCS() //purpose : //======================================================================= - Extrema_GenLocateExtCS::Extrema_GenLocateExtCS(const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S, + Extrema_GenLocateExtCS::Extrema_GenLocateExtCS(const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S, const Standard_Real T, const Standard_Real U, const Standard_Real V, @@ -56,8 +56,8 @@ Extrema_GenLocateExtCS::Extrema_GenLocateExtCS() //purpose : //======================================================================= -void Extrema_GenLocateExtCS::Perform(const Adaptor3d_Curve& C, - const Adaptor3d_Surface& S, +void Extrema_GenLocateExtCS::Perform(const Handle(Adaptor3d_Curve)& C, + const Handle(Adaptor3d_Surface)& S, const Standard_Real T, const Standard_Real U, const Standard_Real V, @@ -67,14 +67,14 @@ void Extrema_GenLocateExtCS::Perform(const Adaptor3d_Curve& C, myDone = Standard_False; Standard_Real Tinf, Tsup; - Tinf = C.FirstParameter(); - Tsup = C.LastParameter(); + Tinf = C->FirstParameter(); + Tsup = C->LastParameter(); Standard_Real Uinf, Usup, Vinf, Vsup; - Uinf = S.FirstUParameter(); - Usup = S.LastUParameter(); - Vinf = S.FirstVParameter(); - Vsup = S.LastVParameter(); + Uinf = S->FirstUParameter(); + Usup = S->LastUParameter(); + Vinf = S->FirstVParameter(); + Vsup = S->LastVParameter(); Extrema_FuncExtCS F (C,S); math_Vector Tol(1, 3), Start(1, 3), BInf(1, 3), BSup(1, 3); diff --git a/src/Extrema/Extrema_GenLocateExtCS.hxx b/src/Extrema/Extrema_GenLocateExtCS.hxx index 35b1373a56..446ed3d23a 100644 --- a/src/Extrema/Extrema_GenLocateExtCS.hxx +++ b/src/Extrema/Extrema_GenLocateExtCS.hxx @@ -44,9 +44,9 @@ public: //! The function F(t,u,v)=distance(C(t),S(u,v)) //! has an extremun when gradient(F)=0. The algorithm searches //! a zero near the close points. - Standard_EXPORT Extrema_GenLocateExtCS(const Adaptor3d_Curve& C, const Adaptor3d_Surface& S, const Standard_Real T, const Standard_Real U, const Standard_Real V, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT Extrema_GenLocateExtCS(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Real T, const Standard_Real U, const Standard_Real V, const Standard_Real Tol1, const Standard_Real Tol2); - Standard_EXPORT void Perform (const Adaptor3d_Curve& C, const Adaptor3d_Surface& S, const Standard_Real T, const Standard_Real U, const Standard_Real V, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Real T, const Standard_Real U, const Standard_Real V, const Standard_Real Tol1, const Standard_Real Tol2); //! Returns True if the distance is found. Standard_EXPORT Standard_Boolean IsDone() const; diff --git a/src/Extrema/Extrema_GenLocateExtPS.cxx b/src/Extrema/Extrema_GenLocateExtPS.cxx index fc2035b87c..9c34289e02 100644 --- a/src/Extrema/Extrema_GenLocateExtPS.cxx +++ b/src/Extrema/Extrema_GenLocateExtPS.cxx @@ -64,22 +64,22 @@ static void CorrectTol(const Standard_Real theU0, const Standard_Real theV0, //purpose : //======================================================================= -Standard_Boolean Extrema_GenLocateExtPS::IsMinDist(const gp_Pnt& theP, const Adaptor3d_Surface& theS, +Standard_Boolean Extrema_GenLocateExtPS::IsMinDist(const gp_Pnt& theP, const Handle(Adaptor3d_Surface)& theS, const Standard_Real theU0, const Standard_Real theV0) { - Standard_Real du = Max(theS.UResolution(10.*Precision::Confusion()), 10.*Precision::PConfusion()); - Standard_Real dv = Max(theS.VResolution(10.*Precision::Confusion()), 10.*Precision::PConfusion()); + Standard_Real du = Max(theS->UResolution(10.*Precision::Confusion()), 10.*Precision::PConfusion()); + Standard_Real dv = Max(theS->VResolution(10.*Precision::Confusion()), 10.*Precision::PConfusion()); Standard_Real u, v; - gp_Pnt aP0 = theS.Value(theU0, theV0); + gp_Pnt aP0 = theS->Value(theU0, theV0); Standard_Real d0 = theP.SquareDistance(aP0); Standard_Integer iu, iv; for (iu = -1; iu <= 1; ++iu) { u = theU0 + iu * du; - if (!theS.IsUPeriodic()) + if (!theS->IsUPeriodic()) { - u = Max(u, theS.FirstUParameter()); - u = Min(u, theS.LastUParameter()); + u = Max(u, theS->FirstUParameter()); + u = Min(u, theS->LastUParameter()); } for (iv = -1; iv <= 1; ++iv) { @@ -87,12 +87,12 @@ Standard_Boolean Extrema_GenLocateExtPS::IsMinDist(const gp_Pnt& theP, const Ada continue; v = theV0 + iv * dv; - if (!theS.IsVPeriodic()) + if (!theS->IsVPeriodic()) { - v = Max(v, theS.FirstVParameter()); - v = Min(v, theS.LastVParameter()); + v = Max(v, theS->FirstVParameter()); + v = Min(v, theS->LastVParameter()); } - Standard_Real d = theP.SquareDistance(theS.Value(u, v)); + Standard_Real d = theP.SquareDistance(theS->Value(u, v)); if (d < d0) return Standard_False; } @@ -103,7 +103,7 @@ Standard_Boolean Extrema_GenLocateExtPS::IsMinDist(const gp_Pnt& theP, const Ada //function : Extrema_GenLocateExtPS //purpose : //======================================================================= -Extrema_GenLocateExtPS::Extrema_GenLocateExtPS(const Adaptor3d_Surface& theS, +Extrema_GenLocateExtPS::Extrema_GenLocateExtPS(const Handle(Adaptor3d_Surface)& theS, const Standard_Real theTolU, const Standard_Real theTolV) : mySurf(theS), @@ -136,10 +136,10 @@ void Extrema_GenLocateExtPS::Perform(const gp_Pnt& theP, aStart(2) = theV0; // Borders. - aBoundInf(1) = mySurf.FirstUParameter(); - aBoundInf(2) = mySurf.FirstVParameter(); - aBoundSup(1) = mySurf.LastUParameter(); - aBoundSup(2) = mySurf.LastVParameter(); + aBoundInf(1) = mySurf->FirstUParameter(); + aBoundInf(2) = mySurf->FirstVParameter(); + aBoundSup(1) = mySurf->LastUParameter(); + aBoundSup(2) = mySurf->LastVParameter(); if (isDistanceCriteria) { @@ -168,7 +168,7 @@ void Extrema_GenLocateExtPS::Perform(const gp_Pnt& theP, mySqDist = aSolver.Minimum(); } - myPoint.SetParameters(aResPnt(1), aResPnt(2), mySurf.Value(aResPnt(1), aResPnt(2))); + myPoint.SetParameters(aResPnt(1), aResPnt(2), mySurf->Value(aResPnt(1), aResPnt(2))); myDone = Standard_True; } else @@ -176,7 +176,7 @@ void Extrema_GenLocateExtPS::Perform(const gp_Pnt& theP, // Normal projection criteria. Extrema_FuncPSNorm F(theP, mySurf); - if (mySurf.GetType() == GeomAbs_BSplineSurface) + if (mySurf->GetType() == GeomAbs_BSplineSurface) { aTol(1) = myTolU; aTol(2) = myTolV; diff --git a/src/Extrema/Extrema_GenLocateExtPS.hxx b/src/Extrema/Extrema_GenLocateExtPS.hxx index 631384a17b..0fab91ec15 100644 --- a/src/Extrema/Extrema_GenLocateExtPS.hxx +++ b/src/Extrema/Extrema_GenLocateExtPS.hxx @@ -36,7 +36,7 @@ public: DEFINE_STANDARD_ALLOC //! Constructor. - Standard_EXPORT Extrema_GenLocateExtPS(const Adaptor3d_Surface& theS, + Standard_EXPORT Extrema_GenLocateExtPS(const Handle(Adaptor3d_Surface)& theS, const Standard_Real theTolU = Precision::PConfusion(), const Standard_Real theTolV = Precision::PConfusion()); @@ -61,7 +61,7 @@ public: //! Returns True if UV point theU0, theV0 is point of local minimum of square distance between //! point theP and points theS(U, V), U, V are in small area around theU0, theV0 - Standard_EXPORT static Standard_Boolean IsMinDist(const gp_Pnt& theP, const Adaptor3d_Surface& theS, + Standard_EXPORT static Standard_Boolean IsMinDist(const gp_Pnt& theP, const Handle(Adaptor3d_Surface)& theS, const Standard_Real theU0, const Standard_Real theV0); private: @@ -70,7 +70,7 @@ private: Extrema_GenLocateExtPS(const Extrema_GenLocateExtPS&); // Input. - const Adaptor3d_Surface& mySurf; + const Handle(Adaptor3d_Surface)& mySurf; Standard_Real myTolU, myTolV; // State. diff --git a/src/Extrema/Extrema_GenLocateExtSS.cxx b/src/Extrema/Extrema_GenLocateExtSS.cxx index 48a1441f43..ac0e6c004e 100644 --- a/src/Extrema/Extrema_GenLocateExtSS.cxx +++ b/src/Extrema/Extrema_GenLocateExtSS.cxx @@ -39,8 +39,8 @@ Extrema_GenLocateExtSS::Extrema_GenLocateExtSS() //purpose : //======================================================================= - Extrema_GenLocateExtSS::Extrema_GenLocateExtSS(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2, + Extrema_GenLocateExtSS::Extrema_GenLocateExtSS(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2, const Standard_Real U1, const Standard_Real V1, const Standard_Real U2, @@ -56,8 +56,8 @@ Extrema_GenLocateExtSS::Extrema_GenLocateExtSS() //purpose : //======================================================================= -void Extrema_GenLocateExtSS::Perform(const Adaptor3d_Surface& S1, - const Adaptor3d_Surface& S2, +void Extrema_GenLocateExtSS::Perform(const Handle(Adaptor3d_Surface)& S1, + const Handle(Adaptor3d_Surface)& S2, const Standard_Real U1, const Standard_Real V1, const Standard_Real U2, @@ -68,16 +68,16 @@ void Extrema_GenLocateExtSS::Perform(const Adaptor3d_Surface& S1, myDone = Standard_False; Standard_Real Uinf1, Usup1, Vinf1, Vsup1; - Uinf1 = S1.FirstUParameter(); - Usup1 = S1.LastUParameter(); - Vinf1 = S1.FirstVParameter(); - Vsup1 = S1.LastVParameter(); + Uinf1 = S1->FirstUParameter(); + Usup1 = S1->LastUParameter(); + Vinf1 = S1->FirstVParameter(); + Vsup1 = S1->LastVParameter(); Standard_Real Uinf2, Usup2, Vinf2, Vsup2; - Uinf2 = S2.FirstUParameter(); - Usup2 = S2.LastUParameter(); - Vinf2 = S2.FirstVParameter(); - Vsup2 = S2.LastVParameter(); + Uinf2 = S2->FirstUParameter(); + Usup2 = S2->LastUParameter(); + Vinf2 = S2->FirstVParameter(); + Vsup2 = S2->LastVParameter(); Extrema_FuncExtSS F (S1,S2); math_Vector Tol(1, 4), Start(1, 4), BInf(1, 4), BSup(1, 4); diff --git a/src/Extrema/Extrema_GenLocateExtSS.hxx b/src/Extrema/Extrema_GenLocateExtSS.hxx index c8ee0429b5..3a35cd6565 100644 --- a/src/Extrema/Extrema_GenLocateExtSS.hxx +++ b/src/Extrema/Extrema_GenLocateExtSS.hxx @@ -42,9 +42,9 @@ public: //! The function F(u1,v1,u2,v2)=distance(S1(u1,v1),S2(u2,v2)) //! has an extremun when gradient(F)=0. The algorithm searches //! a zero near the close points. - Standard_EXPORT Extrema_GenLocateExtSS(const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2, const Standard_Real U1, const Standard_Real V1, const Standard_Real U2, const Standard_Real V2, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT Extrema_GenLocateExtSS(const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2, const Standard_Real U1, const Standard_Real V1, const Standard_Real U2, const Standard_Real V2, const Standard_Real Tol1, const Standard_Real Tol2); - Standard_EXPORT void Perform (const Adaptor3d_Surface& S1, const Adaptor3d_Surface& S2, const Standard_Real U1, const Standard_Real V1, const Standard_Real U2, const Standard_Real V2, const Standard_Real Tol1, const Standard_Real Tol2); + Standard_EXPORT void Perform (const Handle(Adaptor3d_Surface)& S1, const Handle(Adaptor3d_Surface)& S2, const Standard_Real U1, const Standard_Real V1, const Standard_Real U2, const Standard_Real V2, const Standard_Real Tol1, const Standard_Real Tol2); //! Returns True if the distance is found. Standard_EXPORT Standard_Boolean IsDone() const; diff --git a/src/Extrema/Extrema_GlobOptFuncCC.cxx b/src/Extrema/Extrema_GlobOptFuncCC.cxx index 93b5fd60b0..251f4cfdca 100644 --- a/src/Extrema/Extrema_GlobOptFuncCC.cxx +++ b/src/Extrema/Extrema_GlobOptFuncCC.cxx @@ -27,68 +27,68 @@ static Standard_Integer _NbVariables() } // 3d _Value -static Standard_Boolean _Value(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +static Standard_Boolean _Value(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const math_Vector& X, Standard_Real& F) { Standard_Real u = X(1); Standard_Real v = X(2); - if (u < C1.FirstParameter() || - u > C1.LastParameter() || - v < C2.FirstParameter() || - v > C2.LastParameter()) + if (u < C1->FirstParameter() || + u > C1->LastParameter() || + v < C2->FirstParameter() || + v > C2->LastParameter()) { return Standard_False; } - F = C2.Value(v).SquareDistance(C1.Value(u)); + F = C2->Value(v).SquareDistance(C1->Value(u)); return Standard_True; } // 2d _Value -static Standard_Boolean _Value(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2, +static Standard_Boolean _Value(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2, const math_Vector& X, Standard_Real& F) { Standard_Real u = X(1); Standard_Real v = X(2); - if (u < C1.FirstParameter() || - u > C1.LastParameter() || - v < C2.FirstParameter() || - v > C2.LastParameter()) + if (u < C1->FirstParameter() || + u > C1->LastParameter() || + v < C2->FirstParameter() || + v > C2->LastParameter()) { return Standard_False; } - F = C2.Value(v).SquareDistance(C1.Value(u)); + F = C2->Value(v).SquareDistance(C1->Value(u)); return Standard_True; } //! F = (x2(v) - x1(u))^2 + (y2(v) - y1(u))^2 + (z2(v) - z1(u))^2 // 3d _Gradient -static Standard_Boolean _Gradient(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +static Standard_Boolean _Gradient(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const math_Vector& X, math_Vector& G) { gp_Pnt C1D0, C2D0; gp_Vec C1D1, C2D1; - if(X(1) < C1.FirstParameter() || - X(1) > C1.LastParameter() || - X(2) < C2.FirstParameter() || - X(2) > C2.LastParameter()) + if(X(1) < C1->FirstParameter() || + X(1) > C1->LastParameter() || + X(2) < C2->FirstParameter() || + X(2) > C2->LastParameter()) { return Standard_False; } - C1.D1(X(1), C1D0, C1D1); - C2.D1(X(2), C2D0, C2D1); + C1->D1(X(1), C1D0, C1D1); + C2->D1(X(2), C2D0, C2D1); G(1) = - (C2D0.X() - C1D0.X()) * C1D1.X() - (C2D0.Y() - C1D0.Y()) * C1D1.Y() @@ -101,24 +101,24 @@ static Standard_Boolean _Gradient(const Adaptor3d_Curve& C1, } // 2d _Graient -static Standard_Boolean _Gradient(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2, +static Standard_Boolean _Gradient(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2, const math_Vector& X, math_Vector& G) { gp_Pnt2d C1D0, C2D0; gp_Vec2d C1D1, C2D1; - if(X(1) < C1.FirstParameter() || - X(1) > C1.LastParameter() || - X(2) < C2.FirstParameter() || - X(2) > C2.LastParameter()) + if(X(1) < C1->FirstParameter() || + X(1) > C1->LastParameter() || + X(2) < C2->FirstParameter() || + X(2) > C2->LastParameter()) { return Standard_False; } - C1.D1(X(1), C1D0, C1D1); - C2.D1(X(2), C2D0, C2D1); + C1->D1(X(1), C1D0, C1D1); + C2->D1(X(2), C2D0, C2D1); G(1) = - (C2D0.X() - C1D0.X()) * C1D1.X() - (C2D0.Y() - C1D0.Y()) * C1D1.Y(); @@ -131,8 +131,8 @@ static Standard_Boolean _Gradient(const Adaptor2d_Curve2d& C1, } // 3d _Hessian -static Standard_Boolean _Hessian (const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +static Standard_Boolean _Hessian (const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const math_Vector& X, math_Matrix & H) { @@ -140,16 +140,16 @@ static Standard_Boolean _Hessian (const Adaptor3d_Curve& C1, gp_Vec C1D1, C2D1; gp_Vec C1D2, C2D2; - if(X(1) < C1.FirstParameter() || - X(1) > C1.LastParameter() || - X(2) < C2.FirstParameter() || - X(2) > C2.LastParameter()) + if(X(1) < C1->FirstParameter() || + X(1) > C1->LastParameter() || + X(2) < C2->FirstParameter() || + X(2) > C2->LastParameter()) { return Standard_False; } - C1.D2(X(1), C1D0, C1D1, C1D2); - C2.D2(X(2), C2D0, C2D1, C2D2); + C1->D2(X(1), C1D0, C1D1, C1D2); + C2->D2(X(2), C2D0, C2D1, C2D2); H(1, 1) = C1D1.X() * C1D1.X() + C1D1.Y() * C1D1.Y() @@ -175,8 +175,8 @@ static Standard_Boolean _Hessian (const Adaptor3d_Curve& C1, } // 2d _Hessian -static Standard_Boolean _Hessian (const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2, +static Standard_Boolean _Hessian (const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2, const math_Vector& X, math_Matrix & H) { @@ -184,16 +184,16 @@ static Standard_Boolean _Hessian (const Adaptor2d_Curve2d& C1, gp_Vec2d C1D1, C2D1; gp_Vec2d C1D2, C2D2; - if(X(1) < C1.FirstParameter() || - X(1) > C1.LastParameter() || - X(2) < C2.FirstParameter() || - X(2) > C2.LastParameter()) + if(X(1) < C1->FirstParameter() || + X(1) > C1->LastParameter() || + X(2) < C2->FirstParameter() || + X(2) > C2->LastParameter()) { return Standard_False; } - C1.D2(X(1), C1D0, C1D1, C1D2); - C2.D2(X(2), C2D0, C2D1, C2D2); + C1->D2(X(1), C1D0, C1D1, C1D2); + C2->D2(X(2), C2D0, C2D1, C2D2); H(1, 1) = C1D1.X() * C1D1.X() + C1D1.Y() * C1D1.Y() @@ -219,10 +219,10 @@ static Standard_Boolean _Hessian (const Adaptor2d_Curve2d& C1, //function : Extrema_GlobOptFuncCCC0 //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCCC0::Extrema_GlobOptFuncCCC0(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2) -: myC1_3d(&C1), - myC2_3d(&C2), +Extrema_GlobOptFuncCCC0::Extrema_GlobOptFuncCCC0(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2) +: myC1_3d(C1), + myC2_3d(C2), myC1_2d(NULL), myC2_2d(NULL) { @@ -233,12 +233,12 @@ Extrema_GlobOptFuncCCC0::Extrema_GlobOptFuncCCC0(const Adaptor3d_Curve& C1, //function : Extrema_GlobOptFuncCCC0 //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCCC0::Extrema_GlobOptFuncCCC0(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2) +Extrema_GlobOptFuncCCC0::Extrema_GlobOptFuncCCC0(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2) : myC1_3d(NULL), myC2_3d(NULL), - myC1_2d(&C1), - myC2_2d(&C2) + myC1_2d(C1), + myC2_2d(C2) { myType = 2; } @@ -260,9 +260,9 @@ Standard_Integer Extrema_GlobOptFuncCCC0::NbVariables() const Standard_Boolean Extrema_GlobOptFuncCCC0::Value(const math_Vector& X,Standard_Real& F) { if (myType == 1) - return _Value(*myC1_3d, *myC2_3d, X, F); + return _Value(myC1_3d, myC2_3d, X, F); else - return _Value(*myC1_2d, *myC2_2d, X, F); + return _Value(myC1_2d, myC2_2d, X, F); } // C1 @@ -271,10 +271,10 @@ Standard_Boolean Extrema_GlobOptFuncCCC0::Value(const math_Vector& X,Standard_Re //function : Extrema_GlobOptFuncCCC1 //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCCC1::Extrema_GlobOptFuncCCC1(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2) -: myC1_3d(&C1), - myC2_3d(&C2), +Extrema_GlobOptFuncCCC1::Extrema_GlobOptFuncCCC1(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2) +: myC1_3d(C1), + myC2_3d(C2), myC1_2d(NULL), myC2_2d(NULL) { @@ -285,12 +285,12 @@ Extrema_GlobOptFuncCCC1::Extrema_GlobOptFuncCCC1(const Adaptor3d_Curve& C1, //function : Extrema_GlobOptFuncCCC1 //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCCC1::Extrema_GlobOptFuncCCC1(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2) +Extrema_GlobOptFuncCCC1::Extrema_GlobOptFuncCCC1(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2) : myC1_3d(NULL), myC2_3d(NULL), - myC1_2d(&C1), - myC2_2d(&C2) + myC1_2d(C1), + myC2_2d(C2) { myType = 2; } @@ -311,9 +311,9 @@ Standard_Integer Extrema_GlobOptFuncCCC1::NbVariables() const Standard_Boolean Extrema_GlobOptFuncCCC1::Value(const math_Vector& X,Standard_Real& F) { if (myType == 1) - return _Value(*myC1_3d, *myC2_3d, X, F); + return _Value(myC1_3d, myC2_3d, X, F); else - return _Value(*myC1_2d, *myC2_2d, X, F); + return _Value(myC1_2d, myC2_2d, X, F); } //======================================================================= @@ -323,9 +323,9 @@ Standard_Boolean Extrema_GlobOptFuncCCC1::Value(const math_Vector& X,Standard_Re Standard_Boolean Extrema_GlobOptFuncCCC1::Gradient(const math_Vector& X,math_Vector& G) { if (myType == 1) - return _Gradient(*myC1_3d, *myC2_3d, X, G); + return _Gradient(myC1_3d, myC2_3d, X, G); else - return _Gradient(*myC1_2d, *myC2_2d, X, G); + return _Gradient(myC1_2d, myC2_2d, X, G); } //======================================================================= @@ -343,10 +343,10 @@ Standard_Boolean Extrema_GlobOptFuncCCC1::Values(const math_Vector& X,Standard_R //function : Extrema_GlobOptFuncCCC2 //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCCC2::Extrema_GlobOptFuncCCC2(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2) -: myC1_3d(&C1), - myC2_3d(&C2), +Extrema_GlobOptFuncCCC2::Extrema_GlobOptFuncCCC2(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2) +: myC1_3d(C1), + myC2_3d(C2), myC1_2d(NULL), myC2_2d(NULL) { @@ -357,12 +357,12 @@ Extrema_GlobOptFuncCCC2::Extrema_GlobOptFuncCCC2(const Adaptor3d_Curve& C1, //function : Extrema_GlobOptFuncCCC2 //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCCC2::Extrema_GlobOptFuncCCC2(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2) +Extrema_GlobOptFuncCCC2::Extrema_GlobOptFuncCCC2(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2) : myC1_3d(NULL), myC2_3d(NULL), - myC1_2d(&C1), - myC2_2d(&C2) + myC1_2d(C1), + myC2_2d(C2) { myType = 2; } @@ -383,9 +383,9 @@ Standard_Integer Extrema_GlobOptFuncCCC2::NbVariables() const Standard_Boolean Extrema_GlobOptFuncCCC2::Value(const math_Vector& X,Standard_Real& F) { if (myType == 1) - return _Value(*myC1_3d, *myC2_3d, X, F); + return _Value(myC1_3d, myC2_3d, X, F); else - return _Value(*myC1_2d, *myC2_2d, X, F); + return _Value(myC1_2d, myC2_2d, X, F); } //======================================================================= @@ -395,9 +395,9 @@ Standard_Boolean Extrema_GlobOptFuncCCC2::Value(const math_Vector& X,Standard_Re Standard_Boolean Extrema_GlobOptFuncCCC2::Gradient(const math_Vector& X,math_Vector& G) { if (myType == 1) - return _Gradient(*myC1_3d, *myC2_3d, X, G); + return _Gradient(myC1_3d, myC2_3d, X, G); else - return _Gradient(*myC1_2d, *myC2_2d, X, G); + return _Gradient(myC1_2d, myC2_2d, X, G); } //======================================================================= @@ -417,9 +417,9 @@ Standard_Boolean Extrema_GlobOptFuncCCC2::Values(const math_Vector& X,Standard_R { Standard_Boolean isHessianComputed = Standard_False; if (myType == 1) - isHessianComputed = _Hessian(*myC1_3d, *myC2_3d, X, H); + isHessianComputed = _Hessian(myC1_3d, myC2_3d, X, H); else - isHessianComputed = _Hessian(*myC1_2d, *myC2_2d, X, H); + isHessianComputed = _Hessian(myC1_2d, myC2_2d, X, H); return (Value(X, F) && Gradient(X, G) && isHessianComputed); } diff --git a/src/Extrema/Extrema_GlobOptFuncCC.hxx b/src/Extrema/Extrema_GlobOptFuncCC.hxx index c236c547a0..152fd67efe 100644 --- a/src/Extrema/Extrema_GlobOptFuncCC.hxx +++ b/src/Extrema/Extrema_GlobOptFuncCC.hxx @@ -28,11 +28,11 @@ class Extrema_GlobOptFuncCCC0 : public math_MultipleVarFunction { public: - Standard_EXPORT Extrema_GlobOptFuncCCC0(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2); + Standard_EXPORT Extrema_GlobOptFuncCCC0(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2); - Standard_EXPORT Extrema_GlobOptFuncCCC0(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2); + Standard_EXPORT Extrema_GlobOptFuncCCC0(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2); @@ -45,8 +45,8 @@ private: Extrema_GlobOptFuncCCC0 & operator = (const Extrema_GlobOptFuncCCC0 & theOther); - const Adaptor3d_Curve *myC1_3d, *myC2_3d; - const Adaptor2d_Curve2d *myC1_2d, *myC2_2d; + const Handle(Adaptor3d_Curve) myC1_3d, myC2_3d; + const Handle(Adaptor2d_Curve2d) myC1_2d, myC2_2d; Standard_Integer myType; }; @@ -57,11 +57,11 @@ class Extrema_GlobOptFuncCCC1 : public math_MultipleVarFunctionWithGradient { public: - Standard_EXPORT Extrema_GlobOptFuncCCC1(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2); + Standard_EXPORT Extrema_GlobOptFuncCCC1(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2); - Standard_EXPORT Extrema_GlobOptFuncCCC1(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2); + Standard_EXPORT Extrema_GlobOptFuncCCC1(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2); Standard_EXPORT virtual Standard_Integer NbVariables() const; @@ -76,8 +76,8 @@ private: Extrema_GlobOptFuncCCC1 & operator = (const Extrema_GlobOptFuncCCC1 & theOther); - const Adaptor3d_Curve *myC1_3d, *myC2_3d; - const Adaptor2d_Curve2d *myC1_2d, *myC2_2d; + const Handle(Adaptor3d_Curve) myC1_3d, myC2_3d; + const Handle(Adaptor2d_Curve2d) myC1_2d, myC2_2d; Standard_Integer myType; }; @@ -88,11 +88,11 @@ class Extrema_GlobOptFuncCCC2 : public math_MultipleVarFunctionWithHessian { public: - Standard_EXPORT Extrema_GlobOptFuncCCC2(const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2); + Standard_EXPORT Extrema_GlobOptFuncCCC2(const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2); - Standard_EXPORT Extrema_GlobOptFuncCCC2(const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2); + Standard_EXPORT Extrema_GlobOptFuncCCC2(const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2); Standard_EXPORT virtual Standard_Integer NbVariables() const; @@ -109,8 +109,8 @@ private: Extrema_GlobOptFuncCCC2 & operator = (const Extrema_GlobOptFuncCCC2 & theOther); - const Adaptor3d_Curve *myC1_3d, *myC2_3d; - const Adaptor2d_Curve2d *myC1_2d, *myC2_2d; + const Handle(Adaptor3d_Curve) myC1_3d, myC2_3d; + const Handle(Adaptor2d_Curve2d) myC1_2d, myC2_2d; Standard_Integer myType; }; diff --git a/src/Extrema/Extrema_GlobOptFuncCQuadric.cxx b/src/Extrema/Extrema_GlobOptFuncCQuadric.cxx index 26250f8474..aa1aede5b2 100644 --- a/src/Extrema/Extrema_GlobOptFuncCQuadric.cxx +++ b/src/Extrema/Extrema_GlobOptFuncCQuadric.cxx @@ -99,8 +99,8 @@ Standard_Boolean Extrema_GlobOptFuncCQuadric::checkInputData(const math_Vector //function : Extrema_GlobOptFuncCQuadric //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve *C, - const Adaptor3d_Surface *S) +Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Handle(Adaptor3d_Curve) C, + const Handle(Adaptor3d_Surface) S) : myC(C) { myTf = myC->FirstParameter(); @@ -113,7 +113,7 @@ Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve //function : Extrema_GlobOptFuncCQuadric //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve *C) +Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Handle(Adaptor3d_Curve) C) : myC(C) { myTf = myC->FirstParameter(); @@ -123,7 +123,7 @@ Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve * //function : Extrema_GlobOptFuncCQuadric //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve *C, +Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Handle(Adaptor3d_Curve) C, const Standard_Real theTf, const Standard_Real theTl) : myC(C), myTf(theTf), myTl(theTl) { @@ -133,7 +133,7 @@ Extrema_GlobOptFuncCQuadric::Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve * //function : LoadQuad //purpose : //======================================================================= -void Extrema_GlobOptFuncCQuadric::LoadQuad( const Adaptor3d_Surface *S, +void Extrema_GlobOptFuncCQuadric::LoadQuad( const Handle(Adaptor3d_Surface) S, const Standard_Real theUf, const Standard_Real theUl, const Standard_Real theVf, const Standard_Real theVl) { diff --git a/src/Extrema/Extrema_GlobOptFuncCQuadric.hxx b/src/Extrema/Extrema_GlobOptFuncCQuadric.hxx index cb32bbed1b..640b571b25 100644 --- a/src/Extrema/Extrema_GlobOptFuncCQuadric.hxx +++ b/src/Extrema/Extrema_GlobOptFuncCQuadric.hxx @@ -31,16 +31,16 @@ class Extrema_GlobOptFuncCQuadric : public math_MultipleVarFunction public: //! Curve and surface should exist during all the lifetime of Extrema_GlobOptFuncCQuadric. - Standard_EXPORT Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve *C); + Standard_EXPORT Extrema_GlobOptFuncCQuadric(const Handle(Adaptor3d_Curve) C); - Standard_EXPORT Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve *C, + Standard_EXPORT Extrema_GlobOptFuncCQuadric(const Handle(Adaptor3d_Curve) C, const Standard_Real theTf, const Standard_Real theTl); - Standard_EXPORT Extrema_GlobOptFuncCQuadric(const Adaptor3d_Curve *C, - const Adaptor3d_Surface *S); + Standard_EXPORT Extrema_GlobOptFuncCQuadric(const Handle(Adaptor3d_Curve) C, + const Handle(Adaptor3d_Surface) S); - Standard_EXPORT void LoadQuad(const Adaptor3d_Surface *S, + Standard_EXPORT void LoadQuad(const Handle(Adaptor3d_Surface) S, const Standard_Real theUf, const Standard_Real theUl, const Standard_Real theVf, @@ -63,8 +63,8 @@ private: Standard_Real &F); - const Adaptor3d_Curve *myC; - const Adaptor3d_Surface *myS; + Handle(Adaptor3d_Curve) myC; + Handle(Adaptor3d_Surface) myS; GeomAbs_SurfaceType mySType; gp_Pln myPln; gp_Cone myCone; diff --git a/src/Extrema/Extrema_GlobOptFuncCS.cxx b/src/Extrema/Extrema_GlobOptFuncCS.cxx index 8c3ba28287..0d095ace2f 100644 --- a/src/Extrema/Extrema_GlobOptFuncCS.cxx +++ b/src/Extrema/Extrema_GlobOptFuncCS.cxx @@ -150,8 +150,8 @@ Standard_Boolean Extrema_GlobOptFuncCS::checkInputData(const math_Vector &X, //function : Extrema_GlobOptFuncCS //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncCS::Extrema_GlobOptFuncCS(const Adaptor3d_Curve *C, - const Adaptor3d_Surface *S) +Extrema_GlobOptFuncCS::Extrema_GlobOptFuncCS(const Handle(Adaptor3d_Curve) C, + const Handle(Adaptor3d_Surface) S) : myC(C), myS(S) { diff --git a/src/Extrema/Extrema_GlobOptFuncCS.hxx b/src/Extrema/Extrema_GlobOptFuncCS.hxx index 2b1d8bc0ed..b878b9781c 100644 --- a/src/Extrema/Extrema_GlobOptFuncCS.hxx +++ b/src/Extrema/Extrema_GlobOptFuncCS.hxx @@ -29,8 +29,8 @@ class Extrema_GlobOptFuncCS : public math_MultipleVarFunctionWithHessian public: //! Curve and surface should exist during all the lifetime of Extrema_GlobOptFuncCS. - Standard_EXPORT Extrema_GlobOptFuncCS(const Adaptor3d_Curve *C, - const Adaptor3d_Surface *S); + Standard_EXPORT Extrema_GlobOptFuncCS(const Handle(Adaptor3d_Curve) C, + const Handle(Adaptor3d_Surface) S); Standard_EXPORT virtual Standard_Integer NbVariables() const; @@ -73,8 +73,8 @@ private: Extrema_GlobOptFuncCS & operator = (const Extrema_GlobOptFuncCS & theOther); - const Adaptor3d_Curve *myC; - const Adaptor3d_Surface *myS; + const Handle(Adaptor3d_Curve) myC; + const Handle(Adaptor3d_Surface) myS; }; #endif diff --git a/src/Extrema/Extrema_GlobOptFuncConicS.cxx b/src/Extrema/Extrema_GlobOptFuncConicS.cxx index 8ea81b15be..bacd826ae7 100644 --- a/src/Extrema/Extrema_GlobOptFuncConicS.cxx +++ b/src/Extrema/Extrema_GlobOptFuncConicS.cxx @@ -93,7 +93,7 @@ Standard_Boolean Extrema_GlobOptFuncConicS::checkInputData(const math_Vector & //function : Extrema_GlobOptFuncConicS //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Adaptor3d_Surface *S, +Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Handle(Adaptor3d_Surface) S, const Standard_Real theUf, const Standard_Real theUl, const Standard_Real theVf, const Standard_Real theVl) : myS(S), myUf(theUf), myUl(theUl), @@ -106,7 +106,7 @@ Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Adaptor3d_Surface *S, //function : Extrema_GlobOptFuncConicS //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Adaptor3d_Surface *S) +Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Handle(Adaptor3d_Surface) S) : myS(S), myUf(S->FirstUParameter()), myUl(S->LastUParameter()), myVf(S->FirstVParameter()), myVl(S->LastVParameter()) { @@ -116,8 +116,8 @@ Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Adaptor3d_Surface *S) //function : Extrema_GlobOptFuncConicS //purpose : Constructor //======================================================================= -Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Adaptor3d_Curve *C, - const Adaptor3d_Surface *S) +Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Handle(Adaptor3d_Curve) C, + const Handle(Adaptor3d_Surface) S) : myS(S), myUf(S->FirstUParameter()), myUl(S->LastUParameter()), myVf(S->FirstVParameter()), myVl(S->LastVParameter()) { @@ -130,7 +130,7 @@ Extrema_GlobOptFuncConicS::Extrema_GlobOptFuncConicS(const Adaptor3d_Curve *C, //function : LoadConic //purpose : //======================================================================= -void Extrema_GlobOptFuncConicS::LoadConic(const Adaptor3d_Curve *C, +void Extrema_GlobOptFuncConicS::LoadConic(const Handle(Adaptor3d_Curve) C, const Standard_Real theTf, const Standard_Real theTl) { myC = C; diff --git a/src/Extrema/Extrema_GlobOptFuncConicS.hxx b/src/Extrema/Extrema_GlobOptFuncConicS.hxx index 8329a0f699..55e919ea7f 100644 --- a/src/Extrema/Extrema_GlobOptFuncConicS.hxx +++ b/src/Extrema/Extrema_GlobOptFuncConicS.hxx @@ -32,18 +32,18 @@ class Extrema_GlobOptFuncConicS : public math_MultipleVarFunction public: //! Curve and surface should exist during all the lifetime of Extrema_GlobOptFuncConicS. - Standard_EXPORT Extrema_GlobOptFuncConicS(const Adaptor3d_Curve *C, - const Adaptor3d_Surface *S); + Standard_EXPORT Extrema_GlobOptFuncConicS(const Handle(Adaptor3d_Curve) C, + const Handle(Adaptor3d_Surface) S); - Standard_EXPORT Extrema_GlobOptFuncConicS(const Adaptor3d_Surface *S); + Standard_EXPORT Extrema_GlobOptFuncConicS(const Handle(Adaptor3d_Surface) S); - Standard_EXPORT Extrema_GlobOptFuncConicS(const Adaptor3d_Surface *S, + Standard_EXPORT Extrema_GlobOptFuncConicS(const Handle(Adaptor3d_Surface) S, const Standard_Real theUf, const Standard_Real theUl, const Standard_Real theVf, const Standard_Real theVl); - Standard_EXPORT void LoadConic(const Adaptor3d_Curve *S, const Standard_Real theTf, const Standard_Real theTl); + Standard_EXPORT void LoadConic(const Handle(Adaptor3d_Curve) S, const Standard_Real theTf, const Standard_Real theTl); Standard_EXPORT virtual Standard_Integer NbVariables() const; @@ -64,8 +64,8 @@ private: Standard_Real &F); - const Adaptor3d_Curve *myC; - const Adaptor3d_Surface *myS; + Handle(Adaptor3d_Curve) myC; + Handle(Adaptor3d_Surface) myS; GeomAbs_CurveType myCType; gp_Lin myLin; gp_Circ myCirc; diff --git a/src/Extrema/Extrema_LocECC.hxx b/src/Extrema/Extrema_LocECC.hxx index d4614d12d9..6d7c495f42 100644 --- a/src/Extrema/Extrema_LocECC.hxx +++ b/src/Extrema/Extrema_LocECC.hxx @@ -44,7 +44,7 @@ public: //! The function F(u,v)=distance(C1(u),C2(v)) has an //! extremun when gradient(f)=0. The algorithm searches //! the zero near the close point. - Standard_EXPORT Extrema_LocECC(const Adaptor3d_Curve& C1, const Adaptor3d_Curve& C2, const Standard_Real U0, const Standard_Real V0, const Standard_Real TolU, const Standard_Real TolV); + Standard_EXPORT Extrema_LocECC(const Handle(Adaptor3d_Curve)& C1, const Handle(Adaptor3d_Curve)& C2, const Standard_Real U0, const Standard_Real V0, const Standard_Real TolU, const Standard_Real TolV); //! Returns True if the distance is found. Standard_EXPORT Standard_Boolean IsDone() const; diff --git a/src/Extrema/Extrema_LocECC2d.hxx b/src/Extrema/Extrema_LocECC2d.hxx index 723111cc49..2ffe322865 100644 --- a/src/Extrema/Extrema_LocECC2d.hxx +++ b/src/Extrema/Extrema_LocECC2d.hxx @@ -44,7 +44,7 @@ public: //! The function F(u,v)=distance(C1(u),C2(v)) has an //! extremun when gradient(f)=0. The algorithm searches //! the zero near the close point. - Standard_EXPORT Extrema_LocECC2d(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real U0, const Standard_Real V0, const Standard_Real TolU, const Standard_Real TolV); + Standard_EXPORT Extrema_LocECC2d(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real U0, const Standard_Real V0, const Standard_Real TolU, const Standard_Real TolV); //! Returns True if the distance is found. Standard_EXPORT Standard_Boolean IsDone() const; diff --git a/src/Extrema/Extrema_LocECC2d_0.cxx b/src/Extrema/Extrema_LocECC2d_0.cxx index c172451618..bff47abf9d 100644 --- a/src/Extrema/Extrema_LocECC2d_0.cxx +++ b/src/Extrema/Extrema_LocECC2d_0.cxx @@ -27,11 +27,11 @@ #include -#define Curve1 Adaptor2d_Curve2d +#define Curve1 Handle(Adaptor2d_Curve2d) #define Curve1_hxx #define Tool1 Extrema_Curve2dTool #define Tool1_hxx -#define Curve2 Adaptor2d_Curve2d +#define Curve2 Handle(Adaptor2d_Curve2d) #define Curve2_hxx #define Tool2 Extrema_Curve2dTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_LocECC_0.cxx b/src/Extrema/Extrema_LocECC_0.cxx index e8a9a3ce12..e264456fbf 100644 --- a/src/Extrema/Extrema_LocECC_0.cxx +++ b/src/Extrema/Extrema_LocECC_0.cxx @@ -27,11 +27,11 @@ #include -#define Curve1 Adaptor3d_Curve +#define Curve1 Handle(Adaptor3d_Curve) #define Curve1_hxx #define Tool1 Extrema_CurveTool #define Tool1_hxx -#define Curve2 Adaptor3d_Curve +#define Curve2 Handle(Adaptor3d_Curve) #define Curve2_hxx #define Tool2 Extrema_CurveTool #define Tool2_hxx diff --git a/src/Extrema/Extrema_LocEPCOfLocateExtPC.hxx b/src/Extrema/Extrema_LocEPCOfLocateExtPC.hxx index 7a48682718..80e2d8cb69 100644 --- a/src/Extrema/Extrema_LocEPCOfLocateExtPC.hxx +++ b/src/Extrema/Extrema_LocEPCOfLocateExtPC.hxx @@ -49,7 +49,7 @@ public: //! TolU is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolU. - Standard_EXPORT Extrema_LocEPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real U0, const Standard_Real TolU); + Standard_EXPORT Extrema_LocEPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real U0, const Standard_Real TolU); //! Calculates the distance with a close point. //! The close point is defined by the parameter value @@ -61,10 +61,10 @@ public: //! TolU is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolU. - Standard_EXPORT Extrema_LocEPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); + Standard_EXPORT Extrema_LocEPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); //! the algorithm is done with the point P. //! An exception is raised if the fields have not diff --git a/src/Extrema/Extrema_LocEPCOfLocateExtPC2d.hxx b/src/Extrema/Extrema_LocEPCOfLocateExtPC2d.hxx index e498df9f12..bc924a3e67 100644 --- a/src/Extrema/Extrema_LocEPCOfLocateExtPC2d.hxx +++ b/src/Extrema/Extrema_LocEPCOfLocateExtPC2d.hxx @@ -51,7 +51,7 @@ public: //! TolU is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolU. - Standard_EXPORT Extrema_LocEPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real TolU); + Standard_EXPORT Extrema_LocEPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real TolU); //! Calculates the distance with a close point. //! The close point is defined by the parameter value @@ -63,10 +63,10 @@ public: //! TolU is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolU. - Standard_EXPORT Extrema_LocEPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); + Standard_EXPORT Extrema_LocEPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); //! the algorithm is done with the point P. //! An exception is raised if the fields have not diff --git a/src/Extrema/Extrema_LocEPCOfLocateExtPC2d_0.cxx b/src/Extrema/Extrema_LocEPCOfLocateExtPC2d_0.cxx index 47bd650ac2..f2a8cfe9af 100644 --- a/src/Extrema/Extrema_LocEPCOfLocateExtPC2d_0.cxx +++ b/src/Extrema/Extrema_LocEPCOfLocateExtPC2d_0.cxx @@ -28,7 +28,7 @@ #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Extrema_Curve2dTool #define Tool_hxx diff --git a/src/Extrema/Extrema_LocEPCOfLocateExtPC_0.cxx b/src/Extrema/Extrema_LocEPCOfLocateExtPC_0.cxx index 7c76117660..00f74027f1 100644 --- a/src/Extrema/Extrema_LocEPCOfLocateExtPC_0.cxx +++ b/src/Extrema/Extrema_LocEPCOfLocateExtPC_0.cxx @@ -28,7 +28,7 @@ #include -#define Curve Adaptor3d_Curve +#define Curve Handle(Adaptor3d_Curve) #define Curve_hxx #define Tool Extrema_CurveTool #define Tool_hxx diff --git a/src/Extrema/Extrema_LocateExtCC.cxx b/src/Extrema/Extrema_LocateExtCC.cxx index 075bb2696c..f0e769ad61 100644 --- a/src/Extrema/Extrema_LocateExtCC.cxx +++ b/src/Extrema/Extrema_LocateExtCC.cxx @@ -22,20 +22,19 @@ #include #include -Extrema_LocateExtCC::Extrema_LocateExtCC (const Adaptor3d_Curve& C1, - const Adaptor3d_Curve& C2, +Extrema_LocateExtCC::Extrema_LocateExtCC (const Handle(Adaptor3d_Curve)& C1, + const Handle(Adaptor3d_Curve)& C2, const Standard_Real U0, const Standard_Real V0) : mySqDist(RealLast()) { - Standard_Real TolU = C1.Resolution(Precision::Confusion()); - Standard_Real TolV = C2.Resolution(Precision::Confusion()); + Standard_Real TolU = C1->Resolution(Precision::Confusion()); + Standard_Real TolV = C2->Resolution(Precision::Confusion()); Extrema_POnCurv P1, P2; // Non implemente pour l instant: l appel a Extrema_ELCC. - Extrema_LocECC Xtrem(C1, C2, - U0, V0, TolU, TolV); + Extrema_LocECC Xtrem(C1, C2, U0, V0, TolU, TolV); // Exploitation myDone = Xtrem.IsDone(); diff --git a/src/Extrema/Extrema_LocateExtCC.hxx b/src/Extrema/Extrema_LocateExtCC.hxx index 143600b510..0c8a83e982 100644 --- a/src/Extrema/Extrema_LocateExtCC.hxx +++ b/src/Extrema/Extrema_LocateExtCC.hxx @@ -40,7 +40,7 @@ public: //! The function F(u,v)=distance(C1(u),C2(v)) has an //! extremun when gradient(f)=0. The algorithm searches //! the zero near the close point. - Standard_EXPORT Extrema_LocateExtCC(const Adaptor3d_Curve& C1, const Adaptor3d_Curve& C2, const Standard_Real U0, const Standard_Real V0); + Standard_EXPORT Extrema_LocateExtCC(const Handle(Adaptor3d_Curve)& C1, const Handle(Adaptor3d_Curve)& C2, const Standard_Real U0, const Standard_Real V0); //! Returns True if the distance is found. Standard_EXPORT Standard_Boolean IsDone() const; diff --git a/src/Extrema/Extrema_LocateExtCC2d.cxx b/src/Extrema/Extrema_LocateExtCC2d.cxx index a219d8666a..15a13a64de 100644 --- a/src/Extrema/Extrema_LocateExtCC2d.cxx +++ b/src/Extrema/Extrema_LocateExtCC2d.cxx @@ -28,8 +28,8 @@ //purpose : //======================================================================= -Extrema_LocateExtCC2d::Extrema_LocateExtCC2d (const Adaptor2d_Curve2d& C1, - const Adaptor2d_Curve2d& C2, +Extrema_LocateExtCC2d::Extrema_LocateExtCC2d (const Handle(Adaptor2d_Curve2d)& C1, + const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real U0, const Standard_Real V0) : mySqDist(RealLast()) diff --git a/src/Extrema/Extrema_LocateExtCC2d.hxx b/src/Extrema/Extrema_LocateExtCC2d.hxx index 5a2fee58a9..49af86cc34 100644 --- a/src/Extrema/Extrema_LocateExtCC2d.hxx +++ b/src/Extrema/Extrema_LocateExtCC2d.hxx @@ -42,7 +42,7 @@ public: //! The function F(u,v)=distance(C1(u),C2(v)) has an //! extremun when gradient(f)=0. The algorithm searches //! the zero near the close point. - Standard_EXPORT Extrema_LocateExtCC2d(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real U0, const Standard_Real V0); + Standard_EXPORT Extrema_LocateExtCC2d(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real U0, const Standard_Real V0); //! Returns True if the distance is found. Standard_EXPORT Standard_Boolean IsDone() const; diff --git a/src/Extrema/Extrema_LocateExtPC.hxx b/src/Extrema/Extrema_LocateExtPC.hxx index dcee1ca1a8..1c5c251728 100644 --- a/src/Extrema/Extrema_LocateExtPC.hxx +++ b/src/Extrema/Extrema_LocateExtPC.hxx @@ -57,7 +57,7 @@ public: //! TolF is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolF. - Standard_EXPORT Extrema_LocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real U0, const Standard_Real TolF); + Standard_EXPORT Extrema_LocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real U0, const Standard_Real TolF); //! Calculates the distance with a close point. //! The close point is defined by the parameter value @@ -69,10 +69,10 @@ public: //! TolF is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolF. - Standard_EXPORT Extrema_LocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); + Standard_EXPORT Extrema_LocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); Standard_EXPORT void Perform (const gp_Pnt& P, const Standard_Real U0); diff --git a/src/Extrema/Extrema_LocateExtPC2d.hxx b/src/Extrema/Extrema_LocateExtPC2d.hxx index 0a87e7a14b..b01995814b 100644 --- a/src/Extrema/Extrema_LocateExtPC2d.hxx +++ b/src/Extrema/Extrema_LocateExtPC2d.hxx @@ -59,7 +59,7 @@ public: //! TolF is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolF. - Standard_EXPORT Extrema_LocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real TolF); + Standard_EXPORT Extrema_LocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real TolF); //! Calculates the distance with a close point. //! The close point is defined by the parameter value @@ -71,10 +71,10 @@ public: //! TolF is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolF. - Standard_EXPORT Extrema_LocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); + Standard_EXPORT Extrema_LocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolF); Standard_EXPORT void Perform (const gp_Pnt2d& P, const Standard_Real U0); diff --git a/src/Extrema/Extrema_LocateExtPC2d_0.cxx b/src/Extrema/Extrema_LocateExtPC2d_0.cxx index 321dc1557a..eb34a97792 100644 --- a/src/Extrema/Extrema_LocateExtPC2d_0.cxx +++ b/src/Extrema/Extrema_LocateExtPC2d_0.cxx @@ -30,7 +30,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Extrema_Curve2dTool #define TheCurveTool_hxx diff --git a/src/Extrema/Extrema_LocateExtPC_0.cxx b/src/Extrema/Extrema_LocateExtPC_0.cxx index 413e6a6680..572d28238e 100644 --- a/src/Extrema/Extrema_LocateExtPC_0.cxx +++ b/src/Extrema/Extrema_LocateExtPC_0.cxx @@ -30,7 +30,7 @@ #include -#define TheCurve Adaptor3d_Curve +#define TheCurve Handle(Adaptor3d_Curve) #define TheCurve_hxx #define TheCurveTool Extrema_CurveTool #define TheCurveTool_hxx diff --git a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC.hxx b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC.hxx index 5e6877bfcc..0c798bc7a9 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC.hxx +++ b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC.hxx @@ -43,10 +43,10 @@ public: Standard_EXPORT Extrema_PCFOfEPCOfELPCOfLocateExtPC(); - Standard_EXPORT Extrema_PCFOfEPCOfELPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C); + Standard_EXPORT Extrema_PCFOfEPCOfELPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C); //! sets the field mycurve of the function. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C); //! sets the field P of the function. Standard_EXPORT void SetPoint (const gp_Pnt& P); diff --git a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d.hxx b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d.hxx index d0472ef1ce..c642d26039 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d.hxx +++ b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d.hxx @@ -44,10 +44,10 @@ public: Standard_EXPORT Extrema_PCFOfEPCOfELPCOfLocateExtPC2d(); - Standard_EXPORT Extrema_PCFOfEPCOfELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C); + Standard_EXPORT Extrema_PCFOfEPCOfELPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C); //! sets the field mycurve of the function. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C); //! sets the field P of the function. Standard_EXPORT void SetPoint (const gp_Pnt2d& P); diff --git a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_0.cxx b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_0.cxx index 4596b87a01..a42e3b0be5 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_0.cxx +++ b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC2d_0.cxx @@ -25,7 +25,7 @@ #include #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Extrema_Curve2dTool #define Tool_hxx diff --git a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC_0.cxx b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC_0.cxx index 66ee027500..de968b6df0 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC_0.cxx +++ b/src/Extrema/Extrema_PCFOfEPCOfELPCOfLocateExtPC_0.cxx @@ -25,7 +25,7 @@ #include #include -#define Curve Adaptor3d_Curve +#define Curve Handle(Adaptor3d_Curve) #define Curve_hxx #define Tool Extrema_CurveTool #define Tool_hxx diff --git a/src/Extrema/Extrema_PCFOfEPCOfExtPC.hxx b/src/Extrema/Extrema_PCFOfEPCOfExtPC.hxx index b84254134c..e3642d133d 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfExtPC.hxx +++ b/src/Extrema/Extrema_PCFOfEPCOfExtPC.hxx @@ -43,10 +43,10 @@ public: Standard_EXPORT Extrema_PCFOfEPCOfExtPC(); - Standard_EXPORT Extrema_PCFOfEPCOfExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C); + Standard_EXPORT Extrema_PCFOfEPCOfExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C); //! sets the field mycurve of the function. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C); //! sets the field P of the function. Standard_EXPORT void SetPoint (const gp_Pnt& P); diff --git a/src/Extrema/Extrema_PCFOfEPCOfExtPC2d.hxx b/src/Extrema/Extrema_PCFOfEPCOfExtPC2d.hxx index 290e25bcbf..68cdeb24c7 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfExtPC2d.hxx +++ b/src/Extrema/Extrema_PCFOfEPCOfExtPC2d.hxx @@ -43,10 +43,10 @@ public: Standard_EXPORT Extrema_PCFOfEPCOfExtPC2d(); - Standard_EXPORT Extrema_PCFOfEPCOfExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C); + Standard_EXPORT Extrema_PCFOfEPCOfExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C); //! sets the field mycurve of the function. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C); //! sets the field P of the function. Standard_EXPORT void SetPoint (const gp_Pnt2d& P); diff --git a/src/Extrema/Extrema_PCFOfEPCOfExtPC2d_0.cxx b/src/Extrema/Extrema_PCFOfEPCOfExtPC2d_0.cxx index 1861dc4fcd..5eabce0a99 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfExtPC2d_0.cxx +++ b/src/Extrema/Extrema_PCFOfEPCOfExtPC2d_0.cxx @@ -25,7 +25,7 @@ #include #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Extrema_Curve2dTool #define Tool_hxx diff --git a/src/Extrema/Extrema_PCFOfEPCOfExtPC_0.cxx b/src/Extrema/Extrema_PCFOfEPCOfExtPC_0.cxx index 0665f0592e..8bf75bf891 100644 --- a/src/Extrema/Extrema_PCFOfEPCOfExtPC_0.cxx +++ b/src/Extrema/Extrema_PCFOfEPCOfExtPC_0.cxx @@ -25,7 +25,7 @@ #include #include -#define Curve Adaptor3d_Curve +#define Curve Handle(Adaptor3d_Curve) #define Curve_hxx #define Tool Extrema_CurveTool #define Tool_hxx diff --git a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC.hxx b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC.hxx index 7af163ec47..7dba05f46b 100644 --- a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC.hxx +++ b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC.hxx @@ -43,10 +43,10 @@ public: Standard_EXPORT Extrema_PCLocFOfLocEPCOfLocateExtPC(); - Standard_EXPORT Extrema_PCLocFOfLocEPCOfLocateExtPC(const gp_Pnt& P, const Adaptor3d_Curve& C); + Standard_EXPORT Extrema_PCLocFOfLocEPCOfLocateExtPC(const gp_Pnt& P, const Handle(Adaptor3d_Curve)& C); //! sets the field mycurve of the function. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& C); + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& C); //! sets the field P of the function. Standard_EXPORT void SetPoint (const gp_Pnt& P); diff --git a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d.hxx b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d.hxx index 1598ea18ab..5acb5aa653 100644 --- a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d.hxx +++ b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d.hxx @@ -44,10 +44,10 @@ public: Standard_EXPORT Extrema_PCLocFOfLocEPCOfLocateExtPC2d(); - Standard_EXPORT Extrema_PCLocFOfLocEPCOfLocateExtPC2d(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C); + Standard_EXPORT Extrema_PCLocFOfLocEPCOfLocateExtPC2d(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C); //! sets the field mycurve of the function. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C); //! sets the field P of the function. Standard_EXPORT void SetPoint (const gp_Pnt2d& P); diff --git a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d_0.cxx b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d_0.cxx index f485877b12..252ea581c7 100644 --- a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d_0.cxx +++ b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC2d_0.cxx @@ -25,7 +25,7 @@ #include #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Extrema_Curve2dTool #define Tool_hxx diff --git a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC_0.cxx b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC_0.cxx index 9eed971224..14d4e3adbd 100644 --- a/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC_0.cxx +++ b/src/Extrema/Extrema_PCLocFOfLocEPCOfLocateExtPC_0.cxx @@ -25,7 +25,7 @@ #include #include -#define Curve Adaptor3d_Curve +#define Curve Handle(Adaptor3d_Curve) #define Curve_hxx #define Tool Extrema_CurveTool #define Tool_hxx diff --git a/src/FilletSurf/FilletSurf_InternalBuilder.cxx b/src/FilletSurf/FilletSurf_InternalBuilder.cxx index fb1c98ed0f..38a02c5877 100644 --- a/src/FilletSurf/FilletSurf_InternalBuilder.cxx +++ b/src/FilletSurf/FilletSurf_InternalBuilder.cxx @@ -136,7 +136,7 @@ static Standard_Boolean ComputeEdgeParameter(const Handle(ChFiDS_Spine)& Spin gp_Pnt P; gp_Vec V; Guide->D1(pelsp,P,V); gp_Pln pln(P,V); - Handle(BRepAdaptor_Curve) ed = new BRepAdaptor_Curve (Spine->CurrentElementarySpine(ind)); + Handle(BRepAdaptor_Curve) ed = Handle(BRepAdaptor_Curve)::DownCast(Spine->CurrentElementarySpine(ind)->ShallowCopy()); return IntPlanEdge(ed,pln,ped,tol3d); } diff --git a/src/GCPnts/GCPnts_AbscissaPoint.cxx b/src/GCPnts/GCPnts_AbscissaPoint.cxx index d916786227..6060f7172a 100644 --- a/src/GCPnts/GCPnts_AbscissaPoint.cxx +++ b/src/GCPnts/GCPnts_AbscissaPoint.cxx @@ -26,12 +26,12 @@ template static GCPnts_AbscissaType computeType (const TheCurve& theC, Standard_Real& theRatio) { - if (theC.NbIntervals (GeomAbs_CN) > 1) + if (theC->NbIntervals (GeomAbs_CN) > 1) { return GCPnts_AbsComposite; } - switch (theC.GetType()) + switch (theC->GetType()) { case GeomAbs_Line: { @@ -40,12 +40,12 @@ static GCPnts_AbscissaType computeType (const TheCurve& theC, } case GeomAbs_Circle: { - theRatio = theC.Circle().Radius(); + theRatio = theC->Circle().Radius(); return GCPnts_LengthParametrized; } case GeomAbs_BezierCurve: { - Handle(typename GCPnts_TCurveTypes::BezierCurve) aBz = theC.Bezier(); + Handle(typename GCPnts_TCurveTypes::BezierCurve) aBz = theC->Bezier(); if (aBz->NbPoles() == 2 && !aBz->IsRational()) { @@ -56,7 +56,7 @@ static GCPnts_AbscissaType computeType (const TheCurve& theC, } case GeomAbs_BSplineCurve: { - Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBs = theC.BSpline(); + Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBs = theC->BSpline(); if (aBs->NbPoles() == 2 && !aBs->IsRational()) { @@ -105,9 +105,9 @@ static void Compute (CPnts_AbscissaPoint& theComputer, } case GCPnts_AbsComposite: { - const Standard_Integer aNbIntervals = theC.NbIntervals (GeomAbs_CN); + const Standard_Integer aNbIntervals = theC->NbIntervals (GeomAbs_CN); TColStd_Array1OfReal aTI (1, aNbIntervals + 1); - theC.Intervals (aTI, GeomAbs_CN); + theC->Intervals (aTI, GeomAbs_CN); Standard_Real aL = 0.0, aSign = 1.0; Standard_Integer anIndex = 1; BSplCLib::Hunt (aTI, theU0, anIndex); @@ -201,9 +201,9 @@ static void AdvCompute (CPnts_AbscissaPoint& theComputer, } case GCPnts_AbsComposite: { - const Standard_Integer aNbIntervals = theC.NbIntervals (GeomAbs_CN); + const Standard_Integer aNbIntervals = theC->NbIntervals (GeomAbs_CN); TColStd_Array1OfReal aTI (1, aNbIntervals + 1); - theC.Intervals (aTI, GeomAbs_CN); + theC->Intervals (aTI, GeomAbs_CN); Standard_Real aL = 0.0, aSign = 1.0; Standard_Integer anIndex = 1; BSplCLib::Hunt (aTI, theU0, anIndex); @@ -289,20 +289,20 @@ static void AdvCompute (CPnts_AbscissaPoint& theComputer, } // Push a little bit outside the limits (hairy !!!) - const Standard_Boolean isNonPeriodic = !theC.IsPeriodic(); + const Standard_Boolean isNonPeriodic = !theC->IsPeriodic(); theUi = theU0 + aSign * 0.1; Standard_Real aU1 = theU0 + aSign * 0.2; if (isNonPeriodic) { if (aSign > 0) { - theUi = Min (theUi, theC.LastParameter()); - aU1 = Min (aU1, theC.LastParameter()); + theUi = Min (theUi, theC->LastParameter()); + aU1 = Min (aU1, theC->LastParameter()); } else { - theUi = Max (theUi, theC.FirstParameter()); - aU1 = Max (aU1, theC.FirstParameter()); + theUi = Max (theUi, theC->FirstParameter()); + aU1 = Max (aU1, theC->FirstParameter()); } } @@ -327,45 +327,45 @@ GCPnts_AbscissaPoint::GCPnts_AbscissaPoint() //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor3d_Curve& theC) +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor3d_Curve)& theC) { - return GCPnts_AbscissaPoint::Length (theC, theC.FirstParameter(), theC.LastParameter()); + return GCPnts_AbscissaPoint::Length (theC, theC->FirstParameter(), theC->LastParameter()); } //======================================================================= //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor2d_Curve2d& theC) +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor2d_Curve2d)& theC) { - return GCPnts_AbscissaPoint::Length (theC, theC.FirstParameter(), theC.LastParameter()); + return GCPnts_AbscissaPoint::Length (theC, theC->FirstParameter(), theC->LastParameter()); } //======================================================================= //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor3d_Curve& theC, +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theTol) { - return GCPnts_AbscissaPoint::Length (theC, theC.FirstParameter(), theC.LastParameter(), theTol); + return GCPnts_AbscissaPoint::Length (theC, theC->FirstParameter(), theC->LastParameter(), theTol); } //======================================================================= //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor2d_Curve2d& theC, +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theTol) { - return GCPnts_AbscissaPoint::Length (theC, theC.FirstParameter(), theC.LastParameter(), theTol); + return GCPnts_AbscissaPoint::Length (theC, theC->FirstParameter(), theC->LastParameter(), theTol); } //======================================================================= //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor3d_Curve& theC, +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theU1, const Standard_Real theU2) { return length (theC, theU1, theU2, NULL); @@ -375,7 +375,7 @@ Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor3d_Curve& theC, //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor2d_Curve2d& theC, +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theU1, const Standard_Real theU2) { return length (theC, theU1, theU2, NULL); @@ -385,7 +385,7 @@ Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor2d_Curve2d& theC, //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor3d_Curve& theC, +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) { @@ -396,7 +396,7 @@ Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor3d_Curve& theC, //function : Length //purpose : //======================================================================= -Standard_Real GCPnts_AbscissaPoint::Length (const Adaptor2d_Curve2d& theC, +Standard_Real GCPnts_AbscissaPoint::Length (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) { @@ -428,9 +428,9 @@ Standard_Real GCPnts_AbscissaPoint::length (const TheCurve& theC, } case GCPnts_AbsComposite: { - const Standard_Integer aNbIntervals = theC.NbIntervals (GeomAbs_CN); + const Standard_Integer aNbIntervals = theC->NbIntervals (GeomAbs_CN); TColStd_Array1OfReal aTI (1, aNbIntervals + 1); - theC.Intervals (aTI, GeomAbs_CN); + theC->Intervals (aTI, GeomAbs_CN); const Standard_Real aUU1 = Min (theU1, theU2); const Standard_Real aUU2 = Max (theU1, theU2); Standard_Real aL = 0.0; @@ -475,16 +475,16 @@ void GCPnts_AbscissaPoint::compute (const TheCurve& theC, Standard_Real anAbscis = theAbscissa; Standard_Real aUU0 = theU0; - Standard_Real aUUi = theU0 + (anAbscis / aL) * (theC.LastParameter() - theC.FirstParameter()); + Standard_Real aUUi = theU0 + (anAbscis / aL) * (theC->LastParameter() - theC->FirstParameter()); Compute (myComputer, theC, anAbscis, aUU0, aUUi, - theC.Resolution (Precision::Confusion())); + theC->Resolution (Precision::Confusion())); } //======================================================================= //function : GCPnts_AbscissaPoint //purpose : //======================================================================= -GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, +GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0) { @@ -495,7 +495,7 @@ GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, //function : GCPnts_AbscissaPoint //purpose : //======================================================================= -GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor2d_Curve2d& theC, +GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0) { @@ -522,7 +522,7 @@ void GCPnts_AbscissaPoint::advCompute (const Standard_Real theTol, Standard_Real aUUi = 0.0; if (aL >= Precision::Confusion()) { - aUUi= theU0 + (anAbscis / aL) * (theC.LastParameter() - theC.FirstParameter()); + aUUi= theU0 + (anAbscis / aL) * (theC->LastParameter() - theC->FirstParameter()); } else { @@ -536,7 +536,7 @@ void GCPnts_AbscissaPoint::advCompute (const Standard_Real theTol, //purpose : //======================================================================= GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Standard_Real theTol, - const Adaptor3d_Curve& theC, + const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0) { @@ -548,7 +548,7 @@ GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Standard_Real theTol, //purpose : //======================================================================= GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Standard_Real theTol, - const Adaptor2d_Curve2d& theC, + const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0) { @@ -559,31 +559,31 @@ GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Standard_Real theTol, //function : GCPnts_AbscissaPoint //purpose : //======================================================================= -GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, +GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi) { Standard_Real anAbscis = theAbscissa, aUU0 = theU0, aUUi = theUi; - Compute (myComputer, theC, anAbscis, aUU0, aUUi, theC.Resolution (Precision::Confusion())); + Compute (myComputer, theC, anAbscis, aUU0, aUUi, theC->Resolution (Precision::Confusion())); } //======================================================================= //function : GCPnts_AbscissaPoint //purpose : //======================================================================= -GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor2d_Curve2d& theC, +GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi) { Standard_Real anAbscis = theAbscissa, aUU0 = theU0, aUUi = theUi; - Compute (myComputer, theC, anAbscis, aUU0, aUUi, theC.Resolution (Precision::Confusion())); + Compute (myComputer, theC, anAbscis, aUU0, aUUi, theC->Resolution (Precision::Confusion())); } //======================================================================= //function : GCPnts_AbscissaPoint //purpose : //======================================================================= -GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, +GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi, const Standard_Real theTol) @@ -596,7 +596,7 @@ GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, //function : GCPnts_AbscissaPoint //purpose : //======================================================================= -GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Adaptor2d_Curve2d& theC, +GCPnts_AbscissaPoint::GCPnts_AbscissaPoint (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi, const Standard_Real theTol) diff --git a/src/GCPnts/GCPnts_AbscissaPoint.hxx b/src/GCPnts/GCPnts_AbscissaPoint.hxx index eab3be2cab..477918de70 100644 --- a/src/GCPnts/GCPnts_AbscissaPoint.hxx +++ b/src/GCPnts/GCPnts_AbscissaPoint.hxx @@ -37,34 +37,34 @@ public: DEFINE_STANDARD_ALLOC //! Computes the length of the 3D Curve. - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& theC); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& theC); //! Computes the length of the 2D Curve. - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& theC); + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& theC); //! Computes the length of the 3D Curve with the given tolerance. - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& theC, + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theTol); //! Computes the length of the 2D Curve with the given tolerance. - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& theC, + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theTol); //! Computes the length of the 3D Curve. - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& theC, + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theU1, const Standard_Real theU2); //! Computes the length of the 2D Curve. - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& theC, + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theU1, const Standard_Real theU2); //! Computes the length of the 3D Curve with the given tolerance. - Standard_EXPORT static Standard_Real Length (const Adaptor3d_Curve& theC, + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol); //! Computes the length of the Curve with the given tolerance. - Standard_EXPORT static Standard_Real Length (const Adaptor2d_Curve2d& theC, + Standard_EXPORT static Standard_Real Length (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol); @@ -75,7 +75,7 @@ public: //! The algorithm computes a point on a curve at the //! distance theAbscissa from the point of parameter theU0. - Standard_EXPORT GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_AbscissaPoint (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0); @@ -83,7 +83,7 @@ public: //! the distance theAbscissa from the point of parameter //! theU0 with the given tolerance. Standard_EXPORT GCPnts_AbscissaPoint (const Standard_Real theTol, - const Adaptor3d_Curve& theC, + const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0); @@ -91,13 +91,13 @@ public: //! the distance theAbscissa from the point of parameter //! theU0 with the given tolerance. Standard_EXPORT GCPnts_AbscissaPoint (const Standard_Real theTol, - const Adaptor2d_Curve2d& theC, + const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0); //! The algorithm computes a point on a curve at the //! distance theAbscissa from the point of parameter theU0. - Standard_EXPORT GCPnts_AbscissaPoint (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_AbscissaPoint (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0); @@ -105,7 +105,7 @@ public: //! distance theAbscissa from the point of parameter theU0. //! theUi is the starting value used in the iterative process //! which find the solution, it must be close to the final solution. - Standard_EXPORT GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_AbscissaPoint (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi); @@ -113,7 +113,7 @@ public: //! distance theAbscissa from the point of parameter theU0. //! theUi is the starting value used in the iterative process //! which find the solution, it must be closed to the final solution - Standard_EXPORT GCPnts_AbscissaPoint (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_AbscissaPoint (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi); @@ -121,7 +121,7 @@ public: //! distance theAbscissa from the point of parameter theU0. //! theUi is the starting value used in the iterative process //! which find the solution, it must be close to the final solution - Standard_EXPORT GCPnts_AbscissaPoint (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_AbscissaPoint (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi, const Standard_Real theTol); @@ -130,7 +130,7 @@ public: //! distance theAbscissa from the point of parameter theU0. //! theUi is the starting value used in the iterative process //! which find the solution, it must be close to the final solution - Standard_EXPORT GCPnts_AbscissaPoint (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_AbscissaPoint (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU0, const Standard_Real theUi, const Standard_Real theTol); diff --git a/src/GCPnts/GCPnts_DistFunction.cxx b/src/GCPnts/GCPnts_DistFunction.cxx index e927f9ce60..8c80dedd64 100644 --- a/src/GCPnts/GCPnts_DistFunction.cxx +++ b/src/GCPnts/GCPnts_DistFunction.cxx @@ -18,12 +18,12 @@ //function : MaxCurvLinDist //purpose : //======================================================================= -GCPnts_DistFunction::GCPnts_DistFunction(const Adaptor3d_Curve& theCurve, +GCPnts_DistFunction::GCPnts_DistFunction(const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real U1, const Standard_Real U2) : myCurve(theCurve), myU1(U1), myU2(U2) { - gp_Pnt P1 = theCurve.Value(U1), P2 = theCurve.Value(U2); + gp_Pnt P1 = theCurve->Value(U1), P2 = theCurve->Value(U2); if (P1.SquareDistance(P2) > gp::Resolution()) { myLin = gp_Lin(P1, P2.XYZ() - P1.XYZ()); @@ -31,7 +31,7 @@ GCPnts_DistFunction::GCPnts_DistFunction(const Adaptor3d_Curve& theCurve, else { //For #28812 - theCurve.D0(U1 + .01*(U2-U1), P2); + theCurve->D0(U1 + .01*(U2-U1), P2); myLin = gp_Lin(P1, P2.XYZ() - P1.XYZ()); } } @@ -46,7 +46,7 @@ Standard_Boolean GCPnts_DistFunction::Value (const Standard_Real X, if (X < myU1 || X > myU2) return Standard_False; // - F = -myLin.SquareDistance(myCurve.Value(X)); + F = -myLin.SquareDistance(myCurve->Value(X)); return Standard_True; } diff --git a/src/GCPnts/GCPnts_DistFunction.hxx b/src/GCPnts/GCPnts_DistFunction.hxx index e944c418ae..1c485b65c3 100644 --- a/src/GCPnts/GCPnts_DistFunction.hxx +++ b/src/GCPnts/GCPnts_DistFunction.hxx @@ -26,7 +26,7 @@ class GCPnts_DistFunction : public math_Function { public: - Standard_EXPORT GCPnts_DistFunction(const Adaptor3d_Curve& theCurve, + Standard_EXPORT GCPnts_DistFunction(const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real U1, const Standard_Real U2); // Standard_EXPORT GCPnts_DistFunction(const GCPnts_DistFunction& theOther); @@ -36,7 +36,7 @@ public: private: GCPnts_DistFunction & operator = (const GCPnts_DistFunction & theOther); - const Adaptor3d_Curve& myCurve; + const Handle(Adaptor3d_Curve)& myCurve; gp_Lin myLin; Standard_Real myU1; Standard_Real myU2; diff --git a/src/GCPnts/GCPnts_DistFunction2d.cxx b/src/GCPnts/GCPnts_DistFunction2d.cxx index 2222da9803..badf1f9c8f 100644 --- a/src/GCPnts/GCPnts_DistFunction2d.cxx +++ b/src/GCPnts/GCPnts_DistFunction2d.cxx @@ -19,12 +19,12 @@ //function : GCPnts_DistFunction2d //purpose : //======================================================================= -GCPnts_DistFunction2d::GCPnts_DistFunction2d(const Adaptor2d_Curve2d& theCurve, +GCPnts_DistFunction2d::GCPnts_DistFunction2d(const Handle(Adaptor2d_Curve2d)& theCurve, const Standard_Real U1, const Standard_Real U2) : myCurve(theCurve), myU1(U1), myU2(U2) { - gp_Pnt2d P2d1 = theCurve.Value(U1), P2d2 = theCurve.Value(U2); + gp_Pnt2d P2d1 = theCurve->Value(U1), P2d2 = theCurve->Value(U2); if (P2d1.SquareDistance(P2d2) > gp::Resolution()) { myLin = gp_Lin2d(P2d1, P2d2.XY() - P2d1.XY()); @@ -32,7 +32,7 @@ GCPnts_DistFunction2d::GCPnts_DistFunction2d(const Adaptor2d_Curve2d& theCurve, else { //For #28812 - theCurve.D0(U1 + .01*(U2 - U1), P2d2); + theCurve->D0(U1 + .01*(U2 - U1), P2d2); myLin = gp_Lin2d(P2d1, P2d2.XY() - P2d1.XY()); } @@ -49,7 +49,7 @@ Standard_Boolean GCPnts_DistFunction2d::Value (const Standard_Real X, if (X < myU1 || X > myU2) return Standard_False; // - gp_Pnt2d aP2d = myCurve.Value(X); + gp_Pnt2d aP2d = myCurve->Value(X); F = -myLin.SquareDistance(aP2d); return Standard_True; } diff --git a/src/GCPnts/GCPnts_DistFunction2d.hxx b/src/GCPnts/GCPnts_DistFunction2d.hxx index 8dd4684a6e..26a13c5557 100644 --- a/src/GCPnts/GCPnts_DistFunction2d.hxx +++ b/src/GCPnts/GCPnts_DistFunction2d.hxx @@ -26,7 +26,7 @@ class GCPnts_DistFunction2d : public math_Function { public: - Standard_EXPORT GCPnts_DistFunction2d(const Adaptor2d_Curve2d& theCurve, + Standard_EXPORT GCPnts_DistFunction2d(const Handle(Adaptor2d_Curve2d)& theCurve, const Standard_Real U1, const Standard_Real U2); // Standard_EXPORT GCPnts_DistFunction2d(const GCPnts_DistFunction2d& theOther); @@ -36,7 +36,7 @@ public: private: GCPnts_DistFunction2d & operator = (const GCPnts_DistFunction2d & theOther); - const Adaptor2d_Curve2d& myCurve; + const Handle(Adaptor2d_Curve2d)& myCurve; gp_Lin2d myLin; Standard_Real myU1; Standard_Real myU2; diff --git a/src/GCPnts/GCPnts_QuasiUniformAbscissa.cxx b/src/GCPnts/GCPnts_QuasiUniformAbscissa.cxx index e4bc426f51..fa4fd289a2 100644 --- a/src/GCPnts/GCPnts_QuasiUniformAbscissa.cxx +++ b/src/GCPnts/GCPnts_QuasiUniformAbscissa.cxx @@ -35,7 +35,7 @@ GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa() //function : GCPnts_QuasiUniformAbscissa //purpose : //======================================================================= -GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor3d_Curve& theC, +GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints) : myDone (Standard_False), myNbPoints (0) @@ -47,7 +47,7 @@ GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor3d_Curve& //function : GCPnts_QuasiUniformAbscissa //purpose : //======================================================================= -GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor3d_Curve& theC, +GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2) @@ -61,7 +61,7 @@ GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor3d_Curve& //function : GCPnts_QuasiUniformAbscissa //purpose : //======================================================================= -GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor2d_Curve2d& theC, +GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints) : myDone (Standard_False), myNbPoints (0) @@ -73,7 +73,7 @@ GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor2d_Curve2 //function : GCPnts_QuasiUniformAbscissa //purpose : //======================================================================= -GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor2d_Curve2d& theC, +GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2) @@ -87,27 +87,27 @@ GCPnts_QuasiUniformAbscissa::GCPnts_QuasiUniformAbscissa (const Adaptor2d_Curve2 //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformAbscissa::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_QuasiUniformAbscissa::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints) { - Initialize (theC, theNbPoints, theC.FirstParameter(), theC.LastParameter()); + Initialize (theC, theNbPoints, theC->FirstParameter(), theC->LastParameter()); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformAbscissa::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_QuasiUniformAbscissa::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints) { - Initialize (theC, theNbPoints, theC.FirstParameter(), theC.LastParameter()); + Initialize (theC, theNbPoints, theC->FirstParameter(), theC->LastParameter()); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformAbscissa::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_QuasiUniformAbscissa::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2) @@ -119,7 +119,7 @@ void GCPnts_QuasiUniformAbscissa::Initialize (const Adaptor3d_Curve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformAbscissa::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_QuasiUniformAbscissa::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2) @@ -137,8 +137,8 @@ void GCPnts_QuasiUniformAbscissa::initialize (const TheCurve& theC, const Standard_Real theU1, const Standard_Real theU2) { - if (theC.GetType() != GeomAbs_BezierCurve - && theC.GetType() != GeomAbs_BSplineCurve) + if (theC->GetType() != GeomAbs_BezierCurve + && theC->GetType() != GeomAbs_BSplineCurve) { GCPnts_UniformAbscissa aUA (theC, theNbPoints, theU1, theU2); myDone = aUA.IsDone(); @@ -160,12 +160,12 @@ void GCPnts_QuasiUniformAbscissa::initialize (const TheCurve& theC, TColgp_Array1OfPnt2d aLP (1, 2 * theNbPoints); // table Length <-> Param typename GCPnts_TCurveTypes::Point aP1, aP2; - aP1 = theC.Value (theU1); + aP1 = theC->Value (theU1); // On additionne toutes les distances for (Standard_Integer i = 0; i < 2 * theNbPoints; ++i) { - aP2 = theC.Value (theU1 + i * dU); + aP2 = theC->Value (theU1 + i * dU); const Standard_Real aDist = aP1.Distance (aP2); aLength += aDist; aLP(i+1) = gp_Pnt2d (aLength, theU1 + (i * dU)); diff --git a/src/GCPnts/GCPnts_QuasiUniformAbscissa.hxx b/src/GCPnts/GCPnts_QuasiUniformAbscissa.hxx index def821e800..83f9b7c984 100644 --- a/src/GCPnts/GCPnts_QuasiUniformAbscissa.hxx +++ b/src/GCPnts/GCPnts_QuasiUniformAbscissa.hxx @@ -41,7 +41,7 @@ public: //! Computes a uniform abscissa distribution of points //! - on the curve where Abscissa is the curvilinear distance between //! two consecutive points of the distribution. - Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints); //! Computes a uniform abscissa distribution of points @@ -73,14 +73,14 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theU1 [in] first parameter on curve //! @param theU2 [in] last parameter on curve - Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2); //! Initialize the algorithms with 3D curve and target number of points. //! @param theC [in] input 3D curve //! @param theNbPoints [in] defines the number of desired points - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints); //! Initialize the algorithms with 3D curve, target number of points and curve parameter range. @@ -88,14 +88,14 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theU1 [in] first parameter on curve //! @param theU2 [in] last parameter on curve - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2); //! Computes a uniform abscissa distribution of points on the 2D curve. //! @param theC [in] input 2D curve //! @param theNbPoints [in] defines the number of desired points - Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints); //! Computes a Uniform abscissa distribution of points on a part of the 2D curve. @@ -103,14 +103,14 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theU1 [in] first parameter on curve //! @param theU2 [in] last parameter on curve - Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_QuasiUniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2); //! Initialize the algorithms with 2D curve and target number of points. //! @param theC [in] input 2D curve //! @param theNbPoints [in] defines the number of desired points - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints); //! Initialize the algorithms with 2D curve, target number of points and curve parameter range. @@ -118,7 +118,7 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theU1 [in] first parameter on curve //! @param theU2 [in] last parameter on curve - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2); diff --git a/src/GCPnts/GCPnts_QuasiUniformDeflection.cxx b/src/GCPnts/GCPnts_QuasiUniformDeflection.cxx index fd357bfbc6..a03e4f42a7 100644 --- a/src/GCPnts/GCPnts_QuasiUniformDeflection.cxx +++ b/src/GCPnts/GCPnts_QuasiUniformDeflection.cxx @@ -23,37 +23,37 @@ static const Standard_Integer MyMaxQuasiFleshe = 2000; // mask the return of a Adaptor2d_Curve2d as a gp_Pnt -static gp_Pnt Value (const Adaptor3d_Curve& theC, +static gp_Pnt Value (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theParameter) { - return theC.Value (theParameter); + return theC->Value (theParameter); } -static gp_Pnt Value (const Adaptor2d_Curve2d& theC, +static gp_Pnt Value (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theParameter) { gp_Pnt aPoint; - gp_Pnt2d a2dPoint (theC.Value (theParameter)); + gp_Pnt2d a2dPoint (theC->Value (theParameter)); aPoint.SetCoord (a2dPoint.X(), a2dPoint.Y(), 0.0); return aPoint; } -static void D1 (const Adaptor3d_Curve& theC, +static void D1 (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theParameter, gp_Pnt& theP, gp_Vec& theV) { - theC.D1 (theParameter, theP, theV); + theC->D1 (theParameter, theP, theV); } -static void D1 (const Adaptor2d_Curve2d& theC, +static void D1 (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theParameter, gp_Pnt& theP, gp_Vec& theV) { gp_Pnt2d a2dPoint; gp_Vec2d a2dVec; - theC.D1 (theParameter, a2dPoint, a2dVec); + theC->D1 (theParameter, a2dPoint, a2dVec); theP.SetCoord (a2dPoint.X(), a2dPoint.Y(), 0.0); theV.SetCoord (a2dVec.X(), a2dVec.Y(), 0.0); } @@ -261,7 +261,7 @@ static Standard_Boolean PerformCircular (const TheCurve& theC, const Standard_Real theU1, const Standard_Real theU2) { - Standard_Real anAngle = Max (1.0 - (theDeflection / theC.Circle().Radius()), 0.0); + Standard_Real anAngle = Max (1.0 - (theDeflection / theC->Circle().Radius()), 0.0); anAngle = 2.0 * ACos (anAngle); Standard_Integer aNbPoints = (Standard_Integer )((theU2 - theU1) / anAngle); aNbPoints += 2; @@ -284,25 +284,25 @@ static Standard_Boolean PerformCircular (const TheCurve& theC, template static GCPnts_DeflectionType GetDefType (const TheCurve& theC) { - if (theC.NbIntervals (GeomAbs_C1) > 1) + if (theC->NbIntervals (GeomAbs_C1) > 1) { return GCPnts_DefComposite; } // pour forcer les decoupages aux cassures. // G1 devrait marcher, mais donne des exceptions... - switch (theC.GetType()) + switch (theC->GetType()) { case GeomAbs_Line: return GCPnts_Linear; case GeomAbs_Circle: return GCPnts_Circular; case GeomAbs_BSplineCurve: { - Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBS = theC.BSpline(); + Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBS = theC->BSpline(); return (aBS->NbPoles() == 2) ? GCPnts_Linear : GCPnts_Curved; } case GeomAbs_BezierCurve: { - Handle(typename GCPnts_TCurveTypes::BezierCurve) aBZ = theC.Bezier(); + Handle(typename GCPnts_TCurveTypes::BezierCurve) aBZ = theC->Bezier(); return (aBZ->NbPoles() == 2) ? GCPnts_Linear : GCPnts_Curved; } default: return GCPnts_Curved; @@ -380,10 +380,10 @@ static Standard_Boolean PerformComposite (TColStd_SequenceOfReal& theParameters, // // coherence avec Intervals // - const Standard_Integer aNbIntervals = theC.NbIntervals (GeomAbs_C2); + const Standard_Integer aNbIntervals = theC->NbIntervals (GeomAbs_C2); Standard_Integer aPIndex = 0; TColStd_Array1OfReal aTI (1, aNbIntervals + 1); - theC.Intervals (aTI, GeomAbs_C2); + theC->Intervals (aTI, GeomAbs_C2); BSplCLib::Hunt (aTI, theU1, aPIndex); // iterate by continuous segments @@ -439,7 +439,7 @@ GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection() //function : GCPnts_QuasiUniformDeflection //purpose : //======================================================================= -GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor3d_Curve& theC, +GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity) @@ -454,7 +454,7 @@ GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor3d_Cu //function : GCPnts_QuasiUniformDeflection //purpose : //======================================================================= -GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor2d_Curve2d& theC, +GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity) @@ -469,7 +469,7 @@ GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor2d_Cu //function : GCPnts_QuasiUniformDeflection //purpose : //======================================================================= -GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor3d_Curve& theC, +GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity) : myDone (Standard_False), @@ -483,7 +483,7 @@ GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor3d_Cu //function : GCPnts_QuasiUniformDeflection //purpose : //======================================================================= -GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor2d_Curve2d& theC, +GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity) : myDone (Standard_False), @@ -497,29 +497,29 @@ GCPnts_QuasiUniformDeflection::GCPnts_QuasiUniformDeflection (const Adaptor2d_Cu //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformDeflection::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_QuasiUniformDeflection::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity) { - Initialize (theC, theDeflection, theC.FirstParameter(), theC.LastParameter(), theContinuity); + Initialize (theC, theDeflection, theC->FirstParameter(), theC->LastParameter(), theContinuity); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformDeflection::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_QuasiUniformDeflection::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity) { - Initialize (theC, theDeflection, theC.FirstParameter(), theC.LastParameter(), theContinuity); + Initialize (theC, theDeflection, theC->FirstParameter(), theC->LastParameter(), theContinuity); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformDeflection::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_QuasiUniformDeflection::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity) @@ -531,7 +531,7 @@ void GCPnts_QuasiUniformDeflection::Initialize (const Adaptor3d_Curve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_QuasiUniformDeflection::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_QuasiUniformDeflection::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity) @@ -555,17 +555,17 @@ void GCPnts_QuasiUniformDeflection::initialize (const TheCurve& theC, myParams.Clear(); myPoints.Clear(); - const Standard_Real anEPSILON = Min (theC.Resolution (Precision::Confusion()), 1.e50); + const Standard_Real anEPSILON = Min (theC->Resolution (Precision::Confusion()), 1.e50); const GCPnts_DeflectionType aType = GetDefType (theC); const Standard_Real aU1 = Min (theU1, theU2); const Standard_Real aU2 = Max (theU1, theU2); if (aType == GCPnts_Curved || aType == GCPnts_DefComposite) { - if (theC.GetType() == GeomAbs_BSplineCurve - || theC.GetType() == GeomAbs_BezierCurve) + if (theC->GetType() == GeomAbs_BSplineCurve + || theC->GetType() == GeomAbs_BezierCurve) { - const Standard_Real aMaxPar = Max (Abs (theC.FirstParameter()), Abs (theC.LastParameter())); + const Standard_Real aMaxPar = Max (Abs (theC->FirstParameter()), Abs (theC->LastParameter())); if (anEPSILON < Epsilon (aMaxPar)) { return; diff --git a/src/GCPnts/GCPnts_QuasiUniformDeflection.hxx b/src/GCPnts/GCPnts_QuasiUniformDeflection.hxx index c61d8b40b9..e7f766816e 100644 --- a/src/GCPnts/GCPnts_QuasiUniformDeflection.hxx +++ b/src/GCPnts/GCPnts_QuasiUniformDeflection.hxx @@ -48,17 +48,17 @@ public: Standard_EXPORT GCPnts_QuasiUniformDeflection(); //! Computes a QuasiUniform Deflection distribution of points on the Curve. - Standard_EXPORT GCPnts_QuasiUniformDeflection (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_QuasiUniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity = GeomAbs_C1); //! Computes a QuasiUniform Deflection distribution of points on the Curve. - Standard_EXPORT GCPnts_QuasiUniformDeflection (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_QuasiUniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity = GeomAbs_C1); //! Computes a QuasiUniform Deflection distribution of points on a part of the Curve. - Standard_EXPORT GCPnts_QuasiUniformDeflection (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_QuasiUniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity = GeomAbs_C1); @@ -103,23 +103,23 @@ public: //! the package Geom2d (in the case of an Adaptor2d_Curve2d curve) //! or a 3D curve from the package Geom (in the case of an Adaptor3d_Curve curve), //! - and those required on the curve by the computation algorithm. - Standard_EXPORT GCPnts_QuasiUniformDeflection (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_QuasiUniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity = GeomAbs_C1); //! Initialize the algorithms with 3D curve and deflection. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity = GeomAbs_C1); //! Initialize the algorithms with 2D curve and deflection. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const GeomAbs_Shape theContinuity = GeomAbs_C1); //! Initialize the algorithms with 3D curve, deflection and parameter range. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity = GeomAbs_C1); @@ -165,7 +165,7 @@ public: //! the package Geom2d (in the case of an Adaptor2d_Curve2d curve) //! or a 3D curve from the package Geom (in the case of an Adaptor3d_Curve curve), //! and those required on the curve by the computation algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const GeomAbs_Shape theContinuity = GeomAbs_C1); diff --git a/src/GCPnts/GCPnts_TCurveTypes.hxx b/src/GCPnts/GCPnts_TCurveTypes.hxx index eb21fe810b..acf79f9ae9 100644 --- a/src/GCPnts/GCPnts_TCurveTypes.hxx +++ b/src/GCPnts/GCPnts_TCurveTypes.hxx @@ -27,7 +27,7 @@ template struct GCPnts_TCurveTypes {}; //! Auxiliary tool to resolve 3D curve classes. -template<> struct GCPnts_TCurveTypes +template<> struct GCPnts_TCurveTypes { typedef gp_Pnt Point; typedef Geom_BezierCurve BezierCurve; @@ -37,7 +37,7 @@ template<> struct GCPnts_TCurveTypes }; //! Auxiliary tool to resolve 2D curve classes. -template<> struct GCPnts_TCurveTypes +template<> struct GCPnts_TCurveTypes { typedef gp_Pnt2d Point; typedef Geom2d_BezierCurve BezierCurve; diff --git a/src/GCPnts/GCPnts_TangentialDeflection.cxx b/src/GCPnts/GCPnts_TangentialDeflection.cxx index e13d3095a9..be47ebbdc7 100644 --- a/src/GCPnts/GCPnts_TangentialDeflection.cxx +++ b/src/GCPnts/GCPnts_TangentialDeflection.cxx @@ -33,33 +33,33 @@ namespace { static const Standard_Real Us3 = 0.3333333333333333333333333333; - inline static void D0 (const Adaptor3d_Curve& C, const Standard_Real U, gp_Pnt& P) + inline static void D0 (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P) { - C.D0 (U, P); + C->D0 (U, P); } - inline static void D2 (const Adaptor3d_Curve& C, const Standard_Real U, + inline static void D2 (const Handle(Adaptor3d_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2) { - C.D2 (U, P, V1, V2); + C->D2 (U, P, V1, V2); } - static void D0 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt& PP) + static void D0 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt& PP) { Standard_Real X, Y; gp_Pnt2d P; - C.D0 (U, P); + C->D0 (U, P); P.Coord (X, Y); PP.SetCoord (X, Y, 0.0); } - static void D2 (const Adaptor2d_Curve2d& C, const Standard_Real U, + static void D2 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt& PP, gp_Vec& VV1, gp_Vec& VV2) { Standard_Real X, Y; gp_Pnt2d P; gp_Vec2d V1,V2; - C.D2 (U, P, V1, V2); + C->D2 (U, P, V1, V2); P.Coord (X, Y); PP.SetCoord (X, Y, 0.0); V1.Coord (X, Y); @@ -120,7 +120,7 @@ GCPnts_TangentialDeflection::GCPnts_TangentialDeflection() //function : GCPnts_TangentialDeflection //purpose : //======================================================================= -GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor3d_Curve& theC, +GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, const Standard_Real theUTol, @@ -140,7 +140,7 @@ GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor3d_Curve& //function : GCPnts_TangentialDeflection //purpose : //======================================================================= -GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor3d_Curve& theC, +GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, @@ -164,7 +164,7 @@ GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor3d_Curve& //function : GCPnts_TangentialDeflection //purpose : //======================================================================= -GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor2d_Curve2d& theC, +GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, const Standard_Real theUTol, @@ -184,7 +184,7 @@ GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor2d_Curve2 //function : GCPnts_TangentialDeflection //purpose : //======================================================================= -GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor2d_Curve2d& theC, +GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, @@ -208,13 +208,13 @@ GCPnts_TangentialDeflection::GCPnts_TangentialDeflection (const Adaptor2d_Curve2 //function : Initialize //purpose : //======================================================================= -void GCPnts_TangentialDeflection::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_TangentialDeflection::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, const Standard_Real theUTol, const Standard_Real theMinLen) { - Initialize (theC, theC.FirstParameter(), theC.LastParameter(), + Initialize (theC, theC->FirstParameter(), theC->LastParameter(), theAngularDeflection, theCurvatureDeflection, theMinimumOfPoints, theUTol, theMinLen); @@ -224,13 +224,13 @@ void GCPnts_TangentialDeflection::Initialize (const Adaptor3d_Curve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_TangentialDeflection::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_TangentialDeflection::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, const Standard_Real theUTol, const Standard_Real theMinLen) { - Initialize (theC, theC.FirstParameter(), theC.LastParameter(), + Initialize (theC, theC->FirstParameter(), theC->LastParameter(), theAngularDeflection, theCurvatureDeflection, theMinimumOfPoints, theUTol, theMinLen); @@ -240,7 +240,7 @@ void GCPnts_TangentialDeflection::Initialize (const Adaptor2d_Curve2d& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_TangentialDeflection::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_TangentialDeflection::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, @@ -258,7 +258,7 @@ void GCPnts_TangentialDeflection::Initialize (const Adaptor3d_Curve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_TangentialDeflection::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_TangentialDeflection::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints, @@ -335,7 +335,7 @@ template void GCPnts_TangentialDeflection::PerformCircular (const TheCurve& theC) { // akm 8/01/02 : check the radius before divide by it - Standard_Real dfR = theC.Circle().Radius(); + Standard_Real dfR = theC->Circle().Radius(); Standard_Real Du = GCPnts_TangentialDeflection::ArcAngularStep (dfR, myCurvatureDeflection, myAngularDeflection, myMinLen); const Standard_Real aDiff = myLastU - myFirstu; @@ -391,7 +391,7 @@ void GCPnts_TangentialDeflection::initialize (const TheCurve& theC, myMinNbPnts = Max (theMinimumOfPoints, 2); myMinLen = Max (theMinLen, Precision::Confusion()); - switch (theC.GetType()) + switch (theC->GetType()) { case GeomAbs_Line: { @@ -405,14 +405,14 @@ void GCPnts_TangentialDeflection::initialize (const TheCurve& theC, } case GeomAbs_BSplineCurve: { - Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBS = theC.BSpline(); + Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBS = theC->BSpline(); if (aBS->NbPoles() == 2) PerformLinear (theC); else PerformCurve (theC); break; } case GeomAbs_BezierCurve: { - Handle(typename GCPnts_TCurveTypes::BezierCurve) aBZ = theC.Bezier(); + Handle(typename GCPnts_TCurveTypes::BezierCurve) aBZ = theC->Bezier(); if (aBZ->NbPoles() == 2) PerformLinear (theC); else PerformCurve (theC); break; @@ -529,9 +529,9 @@ void GCPnts_TangentialDeflection::PerformCurve (const TheCurve& theC) myPoints .Append (CurrentPoint); // Used to detect "isLine" current bspline and in Du computation in general handling. - const Standard_Integer NbInterv = theC.NbIntervals (GeomAbs_CN); + const Standard_Integer NbInterv = theC->NbIntervals (GeomAbs_CN); TColStd_Array1OfReal Intervs (1, NbInterv + 1); - theC.Intervals (Intervs, GeomAbs_CN); + theC->Intervals (Intervs, GeomAbs_CN); if (NotDone || Du > 5. * Dusave) { @@ -543,17 +543,17 @@ void GCPnts_TangentialDeflection::PerformCurve (const TheCurve& theC) // Si c'est une droite on verifie en calculant minNbPoints : Standard_Boolean IsLine = Standard_True; Standard_Integer NbPoints = (myMinNbPnts > 3) ? myMinNbPnts : 3; - switch (theC.GetType()) + switch (theC->GetType()) { case GeomAbs_BSplineCurve: { - Handle(typename GCPnts_TCurveTypes::BSplineCurve) BS = theC.BSpline(); + Handle(typename GCPnts_TCurveTypes::BSplineCurve) BS = theC->BSpline(); NbPoints = Max(BS->Degree() + 1, NbPoints); break; } case GeomAbs_BezierCurve: { - Handle(typename GCPnts_TCurveTypes::BezierCurve) BZ = theC.Bezier(); + Handle(typename GCPnts_TCurveTypes::BezierCurve) BZ = theC->Bezier(); NbPoints = Max(BZ->Degree() + 1, NbPoints); break; } diff --git a/src/GCPnts/GCPnts_TangentialDeflection.hxx b/src/GCPnts/GCPnts_TangentialDeflection.hxx index 9fdd0748be..a62d62feed 100644 --- a/src/GCPnts/GCPnts_TangentialDeflection.hxx +++ b/src/GCPnts/GCPnts_TangentialDeflection.hxx @@ -76,7 +76,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTol [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT GCPnts_TangentialDeflection (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_TangentialDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, const Standard_Real theUTol = 1.0e-9, @@ -91,7 +91,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTo l [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT GCPnts_TangentialDeflection (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_TangentialDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, @@ -105,7 +105,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTol [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT GCPnts_TangentialDeflection (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_TangentialDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, const Standard_Real theUTol = 1.0e-9, @@ -120,7 +120,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTol [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT GCPnts_TangentialDeflection (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_TangentialDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, @@ -134,7 +134,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTol [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, const Standard_Real theUTol = 1.0e-9, @@ -149,7 +149,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTol [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, @@ -163,7 +163,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTol [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, const Standard_Real theUTol = 1.0e-9, @@ -178,7 +178,7 @@ public: //! @param theMinimumOfPoints [in] minimum number of points //! @param theUTol [in] tolerance in curve parametric scope //! @param theMinLen [in] minimal length - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theFirstParameter, const Standard_Real theLastParameter, const Standard_Real theAngularDeflection, const Standard_Real theCurvatureDeflection, const Standard_Integer theMinimumOfPoints = 2, diff --git a/src/GCPnts/GCPnts_UniformAbscissa.cxx b/src/GCPnts/GCPnts_UniformAbscissa.cxx index 5651350375..3e7a8731d9 100644 --- a/src/GCPnts/GCPnts_UniformAbscissa.cxx +++ b/src/GCPnts/GCPnts_UniformAbscissa.cxx @@ -26,11 +26,11 @@ template static Standard_Real GetParameterLengthRatio (const TheCurve& theC) { - switch (theC.GetType()) + switch (theC->GetType()) { case GeomAbs_Circle: { - return theC.Circle().Radius(); + return theC->Circle().Radius(); } case GeomAbs_Line: { @@ -39,9 +39,9 @@ static Standard_Real GetParameterLengthRatio (const TheCurve& theC) case GeomAbs_BezierCurve: case GeomAbs_BSplineCurve: { - if (!theC.IsRational()) + if (!theC->IsRational()) { - return theC.DN (0.0, 1).Magnitude(); + return theC->DN (0.0, 1).Magnitude(); } return RealLast(); } @@ -59,12 +59,12 @@ static Standard_Real GetParameterLengthRatio (const TheCurve& theC) template static GCPnts_AbscissaType GetAbsType (const TheCurve& theC) { - if (theC.NbIntervals (GeomAbs_C1) > 1) + if (theC->NbIntervals (GeomAbs_C1) > 1) { return GCPnts_AbsComposite; } - switch (theC.GetType()) + switch (theC->GetType()) { case GeomAbs_Line: case GeomAbs_Circle: @@ -73,7 +73,7 @@ static GCPnts_AbscissaType GetAbsType (const TheCurve& theC) } case GeomAbs_BezierCurve: { - Handle(typename GCPnts_TCurveTypes::BezierCurve) aBZ = theC.Bezier(); + Handle(typename GCPnts_TCurveTypes::BezierCurve) aBZ = theC->Bezier(); if (aBZ->NbPoles() == 2 && !aBZ->IsRational()) { return GCPnts_LengthParametrized; @@ -82,7 +82,7 @@ static GCPnts_AbscissaType GetAbsType (const TheCurve& theC) } case GeomAbs_BSplineCurve: { - Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBS = theC.BSpline(); + Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBS = theC->BSpline(); if (aBS->NbPoles() == 2 && !aBS->IsRational()) { return GCPnts_LengthParametrized; @@ -247,7 +247,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa() //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theTol) : myDone (Standard_False), @@ -261,7 +261,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theTol) : myDone (Standard_False), @@ -275,7 +275,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -290,7 +290,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -305,7 +305,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theTol) : myDone (Standard_False), @@ -319,7 +319,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theTol) : myDone (Standard_False), @@ -333,7 +333,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -348,7 +348,7 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, //function : GCPnts_UniformAbscissa //purpose : //======================================================================= -GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, +GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -363,29 +363,29 @@ GCPnts_UniformAbscissa::GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theTol) { - Initialize (theC, theAbscissa, theC.FirstParameter(), theC.LastParameter(), theTol); + Initialize (theC, theAbscissa, theC->FirstParameter(), theC->LastParameter(), theTol); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theTol) { - Initialize (theC, theAbscissa, theC.FirstParameter(), theC.LastParameter(), theTol); + Initialize (theC, theAbscissa, theC->FirstParameter(), theC->LastParameter(), theTol); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -397,7 +397,7 @@ void GCPnts_UniformAbscissa::Initialize (const Adaptor3d_Curve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -419,7 +419,7 @@ void GCPnts_UniformAbscissa::initialize (const TheCurve& theC, myNbPoints = 0; myDone = Standard_False; - const Standard_Real anEPSILON = theC.Resolution (Max (theTol, Precision::Confusion())); + const Standard_Real anEPSILON = theC->Resolution (Max (theTol, Precision::Confusion())); const Standard_Real aL = GCPnts_AbscissaPoint::Length (theC, theU1, theU2, anEPSILON); if (aL <= Precision::Confusion()) { @@ -482,29 +482,29 @@ void GCPnts_UniformAbscissa::initialize (const TheCurve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theTol) { - Initialize (theC, theNbPoints, theC.FirstParameter(), theC.LastParameter(), theTol); + Initialize (theC, theNbPoints, theC->FirstParameter(), theC->LastParameter(), theTol); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theTol) { - Initialize (theC, theNbPoints, theC.FirstParameter(), theC.LastParameter(), theTol); + Initialize (theC, theNbPoints, theC->FirstParameter(), theC->LastParameter(), theTol); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -516,7 +516,7 @@ void GCPnts_UniformAbscissa::Initialize (const Adaptor3d_Curve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformAbscissa::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_UniformAbscissa::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theTol) @@ -538,7 +538,7 @@ void GCPnts_UniformAbscissa::initialize (const TheCurve& theC, myNbPoints = 0; myDone = Standard_False; - const Standard_Real anEPSILON = theC.Resolution (Max (theTol, Precision::Confusion())); + const Standard_Real anEPSILON = theC->Resolution (Max (theTol, Precision::Confusion())); // although very similar to Initialize with Abscissa this avoid // the computation of the total length of the curve twice const Standard_Real aL = GCPnts_AbscissaPoint::Length (theC, theU1, theU2, anEPSILON); diff --git a/src/GCPnts/GCPnts_UniformAbscissa.hxx b/src/GCPnts/GCPnts_UniformAbscissa.hxx index 4ff80abb5b..b21d5b9249 100644 --- a/src/GCPnts/GCPnts_UniformAbscissa.hxx +++ b/src/GCPnts/GCPnts_UniformAbscissa.hxx @@ -39,7 +39,7 @@ public: //! @param theAbscissa [in] abscissa (distance between two consecutive points) //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theToler = -1); @@ -50,7 +50,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); @@ -60,7 +60,7 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theToler = -1); @@ -71,7 +71,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); @@ -81,7 +81,7 @@ public: //! @param theAbscissa [in] abscissa (distance between two consecutive points) //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theToler = -1); @@ -92,7 +92,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); @@ -102,7 +102,7 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theToler = -1); @@ -113,7 +113,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); @@ -125,7 +125,7 @@ public: //! @param theAbscissa [in] abscissa (distance between two consecutive points) //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theToler = -1); @@ -136,7 +136,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); @@ -146,7 +146,7 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theToler = -1); @@ -157,7 +157,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT GCPnts_UniformAbscissa (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_UniformAbscissa (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); @@ -167,7 +167,7 @@ public: //! @param theAbscissa [in] abscissa (distance between two consecutive points) //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theToler = -1); @@ -178,7 +178,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theAbscissa, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); @@ -188,7 +188,7 @@ public: //! @param theNbPoints [in] defines the number of desired points //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theToler = -1); @@ -199,7 +199,7 @@ public: //! @param theU2 [in] last parameter on curve //! @param theToler [in] used for more precise calculation of curve length //! (Precision::Confusion() by default) - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Integer theNbPoints, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theToler = -1); diff --git a/src/GCPnts/GCPnts_UniformDeflection.cxx b/src/GCPnts/GCPnts_UniformDeflection.cxx index 71b89f6e3e..28171c35c2 100644 --- a/src/GCPnts/GCPnts_UniformDeflection.cxx +++ b/src/GCPnts/GCPnts_UniformDeflection.cxx @@ -23,16 +23,16 @@ #include // mask the return of a Adaptor2d_Curve2d as a gp_Pnt -static gp_Pnt Value (const Adaptor3d_Curve& theC, +static gp_Pnt Value (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theParameter) { - return theC.Value (theParameter); + return theC->Value (theParameter); } -static gp_Pnt Value (const Adaptor2d_Curve2d& theC, +static gp_Pnt Value (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theParameter) { - const gp_Pnt2d a2dPoint = theC.Value (theParameter); + const gp_Pnt2d a2dPoint = theC->Value (theParameter); return gp_Pnt (a2dPoint.X(), a2dPoint.Y(), 0.0); } @@ -51,7 +51,7 @@ GCPnts_UniformDeflection::GCPnts_UniformDeflection() //function : GCPnts_UniformDeflection //purpose : //======================================================================= -GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor3d_Curve& theC, +GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, @@ -66,7 +66,7 @@ GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor3d_Curve& theC, //function : GCPnts_UniformDeflection //purpose : //======================================================================= -GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor3d_Curve& theC, +GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl) : myDone (Standard_False), @@ -79,7 +79,7 @@ GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor3d_Curve& theC, //function : GCPnts_UniformDeflection //purpose : //======================================================================= -GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor2d_Curve2d& theC, +GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, @@ -94,7 +94,7 @@ GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor2d_Curve2d& the //function : GCPnts_UniformDeflection //purpose : //======================================================================= -GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor2d_Curve2d& theC, +GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl) : myDone (Standard_False), @@ -107,29 +107,29 @@ GCPnts_UniformDeflection::GCPnts_UniformDeflection (const Adaptor2d_Curve2d& the //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformDeflection::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_UniformDeflection::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl) { - Initialize (theC, theDeflection, theC.FirstParameter(), theC.LastParameter(), theWithControl); + Initialize (theC, theDeflection, theC->FirstParameter(), theC->LastParameter(), theWithControl); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformDeflection::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_UniformDeflection::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl) { - Initialize (theC, theDeflection, theC.FirstParameter(), theC.LastParameter(), theWithControl); + Initialize (theC, theDeflection, theC->FirstParameter(), theC->LastParameter(), theWithControl); } //======================================================================= //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformDeflection::Initialize (const Adaptor3d_Curve& theC, +void GCPnts_UniformDeflection::Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, @@ -142,7 +142,7 @@ void GCPnts_UniformDeflection::Initialize (const Adaptor3d_Curve& theC, //function : Initialize //purpose : //======================================================================= -void GCPnts_UniformDeflection::Initialize (const Adaptor2d_Curve2d& theC, +void GCPnts_UniformDeflection::Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, @@ -216,7 +216,7 @@ static Standard_Boolean PerformCircular (const TheCurve& theC, const Standard_Real theU2) { gp_Pnt aPoint; - Standard_Real anAngle = Max (1.0 - (theDeflection / theC.Circle().Radius()), 0.0); + Standard_Real anAngle = Max (1.0 - (theDeflection / theC->Circle().Radius()), 0.0); anAngle = 2.0e0 * ACos (anAngle); Standard_Integer aNbPoints = (Standard_Integer )((theU2 - theU1) / anAngle); aNbPoints += 2; @@ -239,23 +239,23 @@ static Standard_Boolean PerformCircular (const TheCurve& theC, template static GCPnts_DeflectionType GetDefType (const TheCurve& theC) { - if (theC.NbIntervals (GeomAbs_C2) > 1) + if (theC->NbIntervals (GeomAbs_C2) > 1) { return GCPnts_DefComposite; } - switch (theC.GetType()) + switch (theC->GetType()) { case GeomAbs_Line: return GCPnts_Linear; case GeomAbs_Circle: return GCPnts_Circular; case GeomAbs_BSplineCurve: { - Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBSpline = theC.BSpline(); + Handle(typename GCPnts_TCurveTypes::BSplineCurve) aBSpline = theC->BSpline(); return (aBSpline->NbPoles() == 2) ? GCPnts_Linear : GCPnts_Curved; } case GeomAbs_BezierCurve: { - Handle(typename GCPnts_TCurveTypes::BezierCurve) aBezier = theC.Bezier(); + Handle(typename GCPnts_TCurveTypes::BezierCurve) aBezier = theC->Bezier(); return (aBezier->NbPoles() == 2) ? GCPnts_Linear : GCPnts_Curved; } default: @@ -303,11 +303,11 @@ static Standard_Boolean PerformComposite (TColStd_SequenceOfReal& theParameters, const Standard_Real theEPSILON, const Standard_Boolean theWithControl) { - const Standard_Integer aNbIntervals = theC.NbIntervals (GeomAbs_C2); + const Standard_Integer aNbIntervals = theC->NbIntervals (GeomAbs_C2); Standard_Integer aPIndex = 0; TColStd_Array1OfReal aTI (1, aNbIntervals + 1); - theC.Intervals (aTI, GeomAbs_C2); + theC->Intervals (aTI, GeomAbs_C2); BSplCLib::Hunt (aTI, theU1, aPIndex); // iterate by continuous segments @@ -347,7 +347,7 @@ void GCPnts_UniformDeflection::initialize (const TheCurve& theC, const Standard_Real theU2, const Standard_Boolean theWithControl) { - const Standard_Real anEPSILON = theC.Resolution (Precision::Confusion()); + const Standard_Real anEPSILON = theC->Resolution (Precision::Confusion()); myDeflection = theDeflection; myDone = Standard_False; myParams.Clear(); diff --git a/src/GCPnts/GCPnts_UniformDeflection.hxx b/src/GCPnts/GCPnts_UniformDeflection.hxx index 9420d81912..41f25f1aed 100644 --- a/src/GCPnts/GCPnts_UniformDeflection.hxx +++ b/src/GCPnts/GCPnts_UniformDeflection.hxx @@ -47,7 +47,7 @@ public: //! @param theC [in] input 3D curve //! @param theDeflection [in] target deflection //! @param theWithControl [in] when TRUE, the algorithm controls the estimate deflection - Standard_EXPORT GCPnts_UniformDeflection (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_UniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl = Standard_True); @@ -55,7 +55,7 @@ public: //! @param theC [in] input 2D curve //! @param theDeflection [in] target deflection //! @param theWithControl [in] when TRUE, the algorithm controls the estimate deflection - Standard_EXPORT GCPnts_UniformDeflection (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_UniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl = Standard_True); @@ -65,7 +65,7 @@ public: //! @param theU1 [in] first parameter on curve //! @param theU2 [in] last parameter on curve //! @param theWithControl [in] when TRUE, the algorithm controls the estimate deflection - Standard_EXPORT GCPnts_UniformDeflection (const Adaptor3d_Curve& theC, + Standard_EXPORT GCPnts_UniformDeflection (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const Standard_Boolean theWithControl = Standard_True); @@ -76,23 +76,23 @@ public: //! @param theU1 [in] first parameter on curve //! @param theU2 [in] last parameter on curve //! @param theWithControl [in] when TRUE, the algorithm controls the estimate deflection - Standard_EXPORT GCPnts_UniformDeflection (const Adaptor2d_Curve2d& theC, + Standard_EXPORT GCPnts_UniformDeflection (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const Standard_Boolean theWithControl = Standard_True); //! Initialize the algorithms with 3D curve and deflection. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl = Standard_True); //! Initialize the algorithms with 2D curve and deflection. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Boolean theWithControl = Standard_True); //! Initialize the algorithms with 3D curve, deflection, parameter range. - Standard_EXPORT void Initialize (const Adaptor3d_Curve& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor3d_Curve)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const Standard_Boolean theWithControl = Standard_True); @@ -135,7 +135,7 @@ public: //! the package Geom2d (in the case of an Adaptor2d_Curve2d curve) //! or a 3D curve from the package Geom (in the case of an Adaptor3d_Curve curve), //! - and those required on the curve by the computation algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& theC, + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& theC, const Standard_Real theDeflection, const Standard_Real theU1, const Standard_Real theU2, const Standard_Boolean theWithControl = Standard_True); diff --git a/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.cxx b/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.cxx index 683f2d4bd5..6fca2dfddd 100644 --- a/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.cxx +++ b/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.cxx @@ -41,8 +41,8 @@ Geom2dAPI_ExtremaCurveCurve::Geom2dAPI_ExtremaCurveCurve const Standard_Real U2min, const Standard_Real U2max) { - myC1.Load(C1, U1min, U1max); - myC2.Load(C2, U2min, U2max); + myC1 = new Geom2dAdaptor_Curve(C1, U1min, U1max); + myC2 = new Geom2dAdaptor_Curve(C2, U2min, U2max); Extrema_ExtCC2d theExtCC( myC1, myC2 ); myExtCC = theExtCC; diff --git a/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.hxx b/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.hxx index d1fb57e7cb..044bbb9552 100644 --- a/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.hxx +++ b/src/Geom2dAPI/Geom2dAPI_ExtremaCurveCurve.hxx @@ -137,8 +137,8 @@ private: Standard_Boolean myIsDone; Standard_Integer myIndex; Extrema_ExtCC2d myExtCC; - Geom2dAdaptor_Curve myC1; - Geom2dAdaptor_Curve myC2; + Handle(Geom2dAdaptor_Curve) myC1; + Handle(Geom2dAdaptor_Curve) myC2; }; diff --git a/src/Geom2dAPI/Geom2dAPI_InterCurveCurve.cxx b/src/Geom2dAPI/Geom2dAPI_InterCurveCurve.cxx index 537a1ebb0a..eeaa742741 100644 --- a/src/Geom2dAPI/Geom2dAPI_InterCurveCurve.cxx +++ b/src/Geom2dAPI/Geom2dAPI_InterCurveCurve.cxx @@ -77,8 +77,8 @@ void Geom2dAPI_InterCurveCurve::Init myCurve1 = Handle(Geom2d_Curve)::DownCast(C1->Copy()); myCurve2 = Handle(Geom2d_Curve)::DownCast(C2->Copy()); - Geom2dAdaptor_Curve AC1(C1); - Geom2dAdaptor_Curve AC2(C2); + Handle(Geom2dAdaptor_Curve) AC1 = new Geom2dAdaptor_Curve(C1); + Handle(Geom2dAdaptor_Curve) AC2 = new Geom2dAdaptor_Curve(C2); myIntersector = Geom2dInt_GInter( AC1, AC2, Tol, Tol); myIsDone = myIntersector.IsDone(); @@ -97,7 +97,7 @@ void Geom2dAPI_InterCurveCurve::Init myCurve1 = Handle(Geom2d_Curve)::DownCast(C1->Copy()); myCurve2.Nullify(); - Geom2dAdaptor_Curve AC1(C1); + Handle(Geom2dAdaptor_Curve) AC1 = new Geom2dAdaptor_Curve(C1); myIntersector = Geom2dInt_GInter( AC1, Tol, Tol); myIsDone = myIntersector.IsDone(); diff --git a/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.cxx b/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.cxx index 1e9703b676..2cf90c8c09 100644 --- a/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.cxx +++ b/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.cxx @@ -26,7 +26,8 @@ //purpose : //======================================================================= Geom2dAPI_ProjectPointOnCurve::Geom2dAPI_ProjectPointOnCurve() -: myIndex(-1) +: myIndex(-1), + myC(new Geom2dAdaptor_Curve()) { myIsDone = Standard_False; } @@ -84,7 +85,7 @@ void Geom2dAPI_ProjectPointOnCurve::Init const Standard_Real Umin, const Standard_Real Usup ) { - myC.Load(Curve,Umin,Usup); + myC = new Geom2dAdaptor_Curve(Curve,Umin,Usup); Extrema_ExtPC2d theExtPC2d(P, myC); diff --git a/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.hxx b/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.hxx index a3f00ad3fa..14ba8f6a5e 100644 --- a/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.hxx +++ b/src/Geom2dAPI/Geom2dAPI_ProjectPointOnCurve.hxx @@ -125,7 +125,7 @@ private: Standard_Boolean myIsDone; Standard_Integer myIndex; Extrema_ExtPC2d myExtPC; - Geom2dAdaptor_Curve myC; + Handle(Geom2dAdaptor_Curve) myC; }; diff --git a/src/Geom2dAdaptor/Geom2dAdaptor.cxx b/src/Geom2dAdaptor/Geom2dAdaptor.cxx index e53085cd50..437e2e7fbb 100644 --- a/src/Geom2dAdaptor/Geom2dAdaptor.cxx +++ b/src/Geom2dAdaptor/Geom2dAdaptor.cxx @@ -34,62 +34,62 @@ //purpose : //======================================================================= Handle(Geom2d_Curve) Geom2dAdaptor::MakeCurve - (const Adaptor2d_Curve2d& HC) + (const Handle(Adaptor2d_Curve2d)& HC) { Handle(Geom2d_Curve) C2D; - switch (HC.GetType()) { + switch (HC->GetType()) { case GeomAbs_Line: { - Handle(Geom2d_Line) GL = new Geom2d_Line(HC.Line()); + Handle(Geom2d_Line) GL = new Geom2d_Line(HC->Line()); C2D = GL; } break; case GeomAbs_Circle: { - Handle(Geom2d_Circle) GL = new Geom2d_Circle(HC.Circle()); + Handle(Geom2d_Circle) GL = new Geom2d_Circle(HC->Circle()); C2D = GL; } break; case GeomAbs_Ellipse: { - Handle(Geom2d_Ellipse) GL = new Geom2d_Ellipse(HC.Ellipse()); + Handle(Geom2d_Ellipse) GL = new Geom2d_Ellipse(HC->Ellipse()); C2D = GL; } break; case GeomAbs_Parabola: { - Handle(Geom2d_Parabola) GL = new Geom2d_Parabola(HC.Parabola()); + Handle(Geom2d_Parabola) GL = new Geom2d_Parabola(HC->Parabola()); C2D = GL; } break; case GeomAbs_Hyperbola: { - Handle(Geom2d_Hyperbola) GL = new Geom2d_Hyperbola(HC.Hyperbola()); + Handle(Geom2d_Hyperbola) GL = new Geom2d_Hyperbola(HC->Hyperbola()); C2D = GL; } break; case GeomAbs_BezierCurve: { - C2D = HC.Bezier(); + C2D = HC->Bezier(); } break; case GeomAbs_BSplineCurve: { - C2D = HC.BSpline(); + C2D = HC->BSpline(); } break; case GeomAbs_OffsetCurve: { - const Geom2dAdaptor_Curve* pGAC = dynamic_cast(&HC); - if (pGAC != 0) + const Handle(Geom2dAdaptor_Curve) pGAC = Handle(Geom2dAdaptor_Curve)::DownCast(HC); + if (!pGAC.IsNull()) { C2D = pGAC->Curve(); } @@ -107,20 +107,20 @@ Handle(Geom2d_Curve) Geom2dAdaptor::MakeCurve // trim the curve if necassary. if (! C2D.IsNull() && - ((HC.FirstParameter() != C2D->FirstParameter()) || - (HC.LastParameter() != C2D->LastParameter()))) { + ((HC->FirstParameter() != C2D->FirstParameter()) || + (HC->LastParameter() != C2D->LastParameter()))) { if (C2D->IsPeriodic() || - (HC.FirstParameter() >= C2D->FirstParameter() && - HC.LastParameter() <= C2D->LastParameter())) + (HC->FirstParameter() >= C2D->FirstParameter() && + HC->LastParameter() <= C2D->LastParameter())) { C2D = new Geom2d_TrimmedCurve - (C2D, HC.FirstParameter(), HC.LastParameter()); + (C2D, HC->FirstParameter(), HC->LastParameter()); } else { - Standard_Real tf = Max(HC.FirstParameter(), C2D->FirstParameter()); - Standard_Real tl = Min(HC.LastParameter(), C2D->LastParameter()); + Standard_Real tf = Max(HC->FirstParameter(), C2D->FirstParameter()); + Standard_Real tl = Min(HC->LastParameter(), C2D->LastParameter()); C2D = new Geom2d_TrimmedCurve(C2D, tf, tl); } } diff --git a/src/Geom2dAdaptor/Geom2dAdaptor.hxx b/src/Geom2dAdaptor/Geom2dAdaptor.hxx index 44d5be4764..0fa2c0e1d7 100644 --- a/src/Geom2dAdaptor/Geom2dAdaptor.hxx +++ b/src/Geom2dAdaptor/Geom2dAdaptor.hxx @@ -38,7 +38,7 @@ public: //! handled by reference. //! Creates a 2d curve from a HCurve2d. This //! cannot process the OtherCurves. - Standard_EXPORT static Handle(Geom2d_Curve) MakeCurve (const Adaptor2d_Curve2d& HC); + Standard_EXPORT static Handle(Geom2d_Curve) MakeCurve (const Handle(Adaptor2d_Curve2d)& HC); }; diff --git a/src/Geom2dGcc/Geom2dGcc.cxx b/src/Geom2dGcc/Geom2dGcc.cxx index 20b9181e83..6544b7102b 100644 --- a/src/Geom2dGcc/Geom2dGcc.cxx +++ b/src/Geom2dGcc/Geom2dGcc.cxx @@ -17,22 +17,22 @@ #include Geom2dGcc_QualifiedCurve - Geom2dGcc::Unqualified(const Geom2dAdaptor_Curve& Curve) { + Geom2dGcc::Unqualified(const Handle(Geom2dAdaptor_Curve)& Curve) { return Geom2dGcc_QualifiedCurve(Curve,GccEnt_unqualified); } Geom2dGcc_QualifiedCurve - Geom2dGcc::Enclosing(const Geom2dAdaptor_Curve& Curve) { + Geom2dGcc::Enclosing(const Handle(Geom2dAdaptor_Curve)& Curve) { return Geom2dGcc_QualifiedCurve(Curve,GccEnt_enclosing); } Geom2dGcc_QualifiedCurve - Geom2dGcc::Enclosed(const Geom2dAdaptor_Curve& Curve) { + Geom2dGcc::Enclosed(const Handle(Geom2dAdaptor_Curve)& Curve) { return Geom2dGcc_QualifiedCurve(Curve,GccEnt_enclosed); } Geom2dGcc_QualifiedCurve - Geom2dGcc::Outside(const Geom2dAdaptor_Curve& Curve) { + Geom2dGcc::Outside(const Handle(Geom2dAdaptor_Curve)& Curve) { return Geom2dGcc_QualifiedCurve(Curve,GccEnt_outside); } diff --git a/src/Geom2dGcc/Geom2dGcc.hxx b/src/Geom2dGcc/Geom2dGcc.hxx index 4c994cca37..f0a39911c2 100644 --- a/src/Geom2dGcc/Geom2dGcc.hxx +++ b/src/Geom2dGcc/Geom2dGcc.hxx @@ -61,7 +61,7 @@ public: //! The qualified curve is then constructed with this object: //! Geom2dGcc_QualifiedCurve //! myQCurve = Geom2dGcc::Unqualified(Obj); - Standard_EXPORT static Geom2dGcc_QualifiedCurve Unqualified (const Geom2dAdaptor_Curve& Obj); + Standard_EXPORT static Geom2dGcc_QualifiedCurve Unqualified (const Handle(Geom2dAdaptor_Curve)& Obj); //! Constructs such a qualified curve that the solution //! computed by a construction algorithm using the qualified @@ -78,7 +78,7 @@ public: //! The qualified curve is then constructed with this object: //! Geom2dGcc_QualifiedCurve //! myQCurve = Geom2dGcc::Enclosing(Obj); - Standard_EXPORT static Geom2dGcc_QualifiedCurve Enclosing (const Geom2dAdaptor_Curve& Obj); + Standard_EXPORT static Geom2dGcc_QualifiedCurve Enclosing (const Handle(Geom2dAdaptor_Curve)& Obj); //! Constructs such a qualified curve that the solution //! computed by a construction algorithm using the qualified @@ -95,7 +95,7 @@ public: //! The qualified curve is then constructed with this object: //! Geom2dGcc_QualifiedCurve //! myQCurve = Geom2dGcc::Enclosed(Obj); - Standard_EXPORT static Geom2dGcc_QualifiedCurve Enclosed (const Geom2dAdaptor_Curve& Obj); + Standard_EXPORT static Geom2dGcc_QualifiedCurve Enclosed (const Handle(Geom2dAdaptor_Curve)& Obj); //! Constructs such a qualified curve that the solution //! computed by a construction algorithm using the qualified @@ -112,7 +112,7 @@ public: //! The qualified curve is then constructed with this object: //! Geom2dGcc_QualifiedCurve //! myQCurve = Geom2dGcc::Outside(Obj); - Standard_EXPORT static Geom2dGcc_QualifiedCurve Outside (const Geom2dAdaptor_Curve& Obj); + Standard_EXPORT static Geom2dGcc_QualifiedCurve Outside (const Handle(Geom2dAdaptor_Curve)& Obj); }; diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.cxx index de5dc5f3a7..94ccd73ea0 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.cxx @@ -35,7 +35,7 @@ Geom2dGcc_Circ2d2TanOn:: Geom2dGcc_Circ2d2TanOn (const Geom2dGcc_QualifiedCurve& Qualified1 , const Geom2dGcc_QualifiedCurve& Qualified2 , - const Geom2dAdaptor_Curve& OnCurve , + const Handle(Geom2dAdaptor_Curve)& OnCurve , const Standard_Real Tolerance , const Standard_Real Param1 , const Standard_Real Param2 , @@ -55,14 +55,14 @@ Geom2dGcc_Circ2d2TanOn:: pararg2(1,8) , parcen3(1,8) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve C2 = Qualified2.Qualified(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type2 = C2.GetType(); - GeomAbs_CurveType Type3 = OnCurve.GetType(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) CC2 = C2.Curve(); - Handle(Geom2d_Curve) Con = OnCurve.Curve(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) C2 = Qualified2.Qualified(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type2 = C2->GetType(); + GeomAbs_CurveType Type3 = OnCurve->GetType(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) CC2 = C2->Curve(); + Handle(Geom2d_Curve) Con = OnCurve->Curve(); //============================================================================= // Appel a GccAna. + @@ -370,7 +370,7 @@ Geom2dGcc_Circ2d2TanOn:: Geom2dGcc_Circ2d2TanOn:: Geom2dGcc_Circ2d2TanOn (const Geom2dGcc_QualifiedCurve& Qualified1 , const Handle(Geom2d_Point)& Point , - const Geom2dAdaptor_Curve& OnCurve , + const Handle(Geom2dAdaptor_Curve)& OnCurve , const Standard_Real Tolerance , const Standard_Real Param1 , const Standard_Real ParamOn ): @@ -389,11 +389,11 @@ Geom2dGcc_Circ2d2TanOn:: pararg2(1,8) , parcen3(1,8) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type3 = OnCurve.GetType(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) Con = OnCurve.Curve(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type3 = OnCurve->GetType(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) Con = OnCurve->Curve(); //============================================================================= // Appel a GccAna. + @@ -563,7 +563,7 @@ Geom2dGcc_Circ2d2TanOn:: Geom2dGcc_Circ2d2TanOn:: Geom2dGcc_Circ2d2TanOn (const Handle(Geom2d_Point)& Point1 , const Handle(Geom2d_Point)& Point2 , - const Geom2dAdaptor_Curve& OnCurve , + const Handle(Geom2dAdaptor_Curve)& OnCurve , const Standard_Real Tolerance ): WellDone(Standard_False), cirsol(1,8) , @@ -580,8 +580,8 @@ Geom2dGcc_Circ2d2TanOn:: pararg2(1,8) , parcen3(1,8) { - GeomAbs_CurveType Type3 = OnCurve.GetType(); - Handle(Geom2d_Curve) Con = OnCurve.Curve(); + GeomAbs_CurveType Type3 = OnCurve->GetType(); + Handle(Geom2d_Curve) Con = OnCurve->Curve(); //============================================================================= // Appel a GccAna. + diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.hxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.hxx index a002cf647b..12ad9d95e0 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.hxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOn.hxx @@ -62,7 +62,7 @@ public: //! Param1 is the initial guess on the second curve QualifiedCurv. //! ParamOn is the initial guess on the center curve OnCurv. //! Tolerance is used for the limit cases. - Standard_EXPORT Geom2dGcc_Circ2d2TanOn(const Geom2dGcc_QualifiedCurve& Qualified1, const Geom2dGcc_QualifiedCurve& Qualified2, const Geom2dAdaptor_Curve& OnCurve, const Standard_Real Tolerance, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn); + Standard_EXPORT Geom2dGcc_Circ2d2TanOn(const Geom2dGcc_QualifiedCurve& Qualified1, const Geom2dGcc_QualifiedCurve& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurve, const Standard_Real Tolerance, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn); //! This method implements the algorithms used to //! create 2d circles TANgent to one curve and one point and @@ -70,13 +70,13 @@ public: //! Param1 is the initial guess on the first curve QualifiedCurv. //! ParamOn is the initial guess on the center curve OnCurv. //! Tolerance is used for the limit cases. - Standard_EXPORT Geom2dGcc_Circ2d2TanOn(const Geom2dGcc_QualifiedCurve& Qualified1, const Handle(Geom2d_Point)& Point, const Geom2dAdaptor_Curve& OnCurve, const Standard_Real Tolerance, const Standard_Real Param1, const Standard_Real ParamOn); + Standard_EXPORT Geom2dGcc_Circ2d2TanOn(const Geom2dGcc_QualifiedCurve& Qualified1, const Handle(Geom2d_Point)& Point, const Handle(Geom2dAdaptor_Curve)& OnCurve, const Standard_Real Tolerance, const Standard_Real Param1, const Standard_Real ParamOn); //! This method implements the algorithms used to //! create 2d circles TANgent to two points and //! having the center ON a 2d curve. //! Tolerance is used for the limit cases. - Standard_EXPORT Geom2dGcc_Circ2d2TanOn(const Handle(Geom2d_Point)& Point1, const Handle(Geom2d_Point)& Point2, const Geom2dAdaptor_Curve& OnCurve, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOn(const Handle(Geom2d_Point)& Point1, const Handle(Geom2d_Point)& Point2, const Handle(Geom2dAdaptor_Curve)& OnCurve, const Standard_Real Tolerance); Standard_EXPORT void Results (const GccAna_Circ2d2TanOn& Circ); diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.cxx index d42931436e..c77dd8dec1 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.cxx @@ -50,7 +50,7 @@ static const Standard_Integer aNbSolMAX = 8; Geom2dGcc_Circ2d2TanOnGeo:: Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedCirc& Qualified1 , const GccEnt_QualifiedCirc& Qualified2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Tolerance ): cirsol(1, aNbSolMAX) , qualifier1(1, aNbSolMAX), @@ -94,12 +94,11 @@ Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedCirc& Qualified1 , if (Bis.IsDone()) { Geom2dInt_TheIntConicCurveOfGInter Intp; Standard_Integer nbsolution = Bis.NbSolutions(); - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(OnCurv); - Adaptor2d_OffsetCurve Cu2(HCu2,0.); - firstparam = Max(Cu2.FirstParameter(),thefirst); - lastparam = Min(Cu2.LastParameter(),thelast); - IntRes2d_Domain D2(Cu2.Value(firstparam), firstparam, Tol, - Cu2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) Cu2 = new Adaptor2d_OffsetCurve(OnCurv,0.); + firstparam = Max(Cu2->FirstParameter(),thefirst); + lastparam = Min(Cu2->LastParameter(),thelast); + IntRes2d_Domain D2(Cu2->Value(firstparam), firstparam, Tol, + Cu2->Value(lastparam), lastparam, Tol); Standard_Real Tol1 = Abs(Tolerance); Standard_Real Tol2 = Tol1; for (Standard_Integer i = 1 ; i <= nbsolution; i++) { @@ -275,7 +274,7 @@ Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedCirc& Qualified1 , Geom2dGcc_Circ2d2TanOnGeo:: Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedCirc& Qualified1 , const GccEnt_QualifiedLin& Qualified2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Tolerance ): cirsol(1, aNbSolMAX) , qualifier1(1, aNbSolMAX), @@ -322,12 +321,11 @@ parcen3(1, aNbSolMAX) Standard_Real Tol2 = Tol1; Geom2dInt_TheIntConicCurveOfGInter Intp; Standard_Integer nbsolution = Bis.NbSolutions(); - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(OnCurv); - Adaptor2d_OffsetCurve C2(HCu2,0.); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(OnCurv,0.); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); for (Standard_Integer i = 1 ; i <= nbsolution; i++) { Handle(GccInt_Bisec) Sol = Bis.ThisSolution(i); GccInt_IType type = Sol->ArcType(); @@ -453,7 +451,7 @@ parcen3(1, aNbSolMAX) Geom2dGcc_Circ2d2TanOnGeo:: Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedLin& Qualified1 , const GccEnt_QualifiedLin& Qualified2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Tolerance ): cirsol(1, aNbSolMAX) , qualifier1(1, aNbSolMAX), @@ -500,12 +498,11 @@ parcen3(1, aNbSolMAX) Standard_Real Tol2 = Tol1; Geom2dInt_TheIntConicCurveOfGInter Intp; Standard_Integer nbsolution = Bis.NbSolutions(); - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(OnCurv); - Adaptor2d_OffsetCurve C2(HCu2,0.); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(OnCurv,0.); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); IntRes2d_Domain D1; for (Standard_Integer i = 1 ; i <= nbsolution; i++) { Intp.Perform(Bis.ThisSolution(i),D1,C2,D2,Tol1,Tol2); @@ -608,7 +605,7 @@ parcen3(1, aNbSolMAX) Geom2dGcc_Circ2d2TanOnGeo:: Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedCirc& Qualified1 , const gp_Pnt2d& Point2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Tolerance ): cirsol(1, aNbSolMAX) , qualifier1(1, aNbSolMAX), @@ -648,12 +645,11 @@ parcen3(1, aNbSolMAX) Standard_Real Tol2 = Tol1; Geom2dInt_TheIntConicCurveOfGInter Intp; Standard_Integer nbsolution = Bis.NbSolutions(); - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(OnCurv); - Adaptor2d_OffsetCurve C2(HCu2,0.); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(OnCurv,0.); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); for (Standard_Integer i = 1 ; i <= nbsolution; i++) { Handle(GccInt_Bisec) Sol = Bis.ThisSolution(i); GccInt_IType type = Sol->ArcType(); @@ -770,7 +766,7 @@ parcen3(1, aNbSolMAX) Geom2dGcc_Circ2d2TanOnGeo:: Geom2dGcc_Circ2d2TanOnGeo (const GccEnt_QualifiedLin& Qualified1 , const gp_Pnt2d& Point2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Tolerance ): cirsol(1, aNbSolMAX) , qualifier1(1, aNbSolMAX), @@ -809,12 +805,11 @@ parcen3(1, aNbSolMAX) Standard_Real Tol1 = Abs(Tolerance); Standard_Real Tol2 = Tol1; Geom2dInt_TheIntConicCurveOfGInter Intp; - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(OnCurv); - Adaptor2d_OffsetCurve C2(HCu2,0.); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(OnCurv,0.); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); Handle(GccInt_Bisec) Sol = Bis.ThisSolution(); GccInt_IType type = Sol->ArcType(); switch (type) { @@ -907,7 +902,7 @@ parcen3(1, aNbSolMAX) Geom2dGcc_Circ2d2TanOnGeo:: Geom2dGcc_Circ2d2TanOnGeo (const gp_Pnt2d& Point1 , const gp_Pnt2d& Point2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Tolerance ): cirsol(1, aNbSolMAX) , qualifier1(1, aNbSolMAX), @@ -937,12 +932,11 @@ parcen3(1, aNbSolMAX) Standard_Real Tol1 = Abs(Tolerance); Standard_Real Tol2 = Tol1; Geom2dInt_TheIntConicCurveOfGInter Intp; - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(OnCurv); - Adaptor2d_OffsetCurve Cu2(HCu2,0.); - firstparam = Max(Cu2.FirstParameter(),thefirst); - lastparam = Min(Cu2.LastParameter(),thelast); - IntRes2d_Domain D2(Cu2.Value(firstparam), firstparam, Tol, - Cu2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) Cu2 = new Adaptor2d_OffsetCurve(OnCurv,0.); + firstparam = Max(Cu2->FirstParameter(),thefirst); + lastparam = Min(Cu2->LastParameter(),thelast); + IntRes2d_Domain D2(Cu2->Value(firstparam), firstparam, Tol, + Cu2->Value(lastparam), lastparam, Tol); IntRes2d_Domain D1; if (Bis.HasSolution()) { Intp.Perform(Bis.ThisSolution(),D1,Cu2,D2,Tol1,Tol2); diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.hxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.hxx index 49918e2cde..820ce1ebd4 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.hxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnGeo.hxx @@ -55,32 +55,32 @@ public: //! This method implements the algorithms used to //! create 2d circles TANgent to two 2d circles and //! having the center ON a curve. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1, const GccEnt_QualifiedCirc& Qualified2, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1, const GccEnt_QualifiedCirc& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to a 2d circle and a 2d line //! having the center ON a curve. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1, const GccEnt_QualifiedLin& Qualified2, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1, const GccEnt_QualifiedLin& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to a 2d circle and a point //! having the center ON a curve. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1, const gp_Pnt2d& Point2, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedCirc& Qualified1, const gp_Pnt2d& Point2, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to two 2d lines //! having the center ON a curve. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedLin& Qualified1, const GccEnt_QualifiedLin& Qualified2, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedLin& Qualified1, const GccEnt_QualifiedLin& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to a 2d line and a point //! having the center ON a 2d line. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedLin& Qualified1, const gp_Pnt2d& Qualified2, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const GccEnt_QualifiedLin& Qualified1, const gp_Pnt2d& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to two points //! having the center ON a 2d line. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const gp_Pnt2d& Point1, const gp_Pnt2d& Point2, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnGeo(const gp_Pnt2d& Point1, const gp_Pnt2d& Point2, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Tolerance); //! This method returns True if the construction //! algorithm succeeded. diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.cxx index 2b608c7575..a349b52649 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.cxx @@ -71,7 +71,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedLin& Qualified1 , } gp_Dir2d dirx(1.,0.); gp_Lin2d L1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -174,8 +174,8 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , } Standard_Real Tol = Abs(Tolerance); gp_Dir2d dirx(1.,0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -283,7 +283,7 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , } Standard_Real Tol = Abs(Tolerance); gp_Dir2d dirx(1.,0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); math_Vector Umin(1,3); math_Vector Umax(1,3); math_Vector Ufirst(1,3); @@ -374,7 +374,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedCirc& Qualified1 , gp_Dir2d dirx(1.,0.); gp_Circ2d C1 = Qualified1.Qualified(); Standard_Real R1 = C1.Radius(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -484,7 +484,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedCirc& Qualified1 , gp_Dir2d dirx(1.,0.); gp_Circ2d C1 = Qualified1.Qualified(); Standard_Real R1 = C1.Radius(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -591,7 +591,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedLin& Qualified1 , Standard_Real Tol = Abs(Tolerance); gp_Dir2d dirx(1.,0.); gp_Lin2d L1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -696,8 +696,8 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , } Standard_Real Tol = Abs(Tolerance); gp_Dir2d dirx(1.,0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -806,7 +806,7 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , } Standard_Real Tol = Abs(Tolerance); gp_Dir2d dirx(1.,0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); math_Vector Umin(1,3); math_Vector Umax(1,3); math_Vector Ufirst(1,3); @@ -870,7 +870,7 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , Geom2dGcc_Circ2d2TanOnIter:: Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , const Geom2dGcc_QCurve& Qualified2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Param1 , const Standard_Real Param2 , const Standard_Real Param3 , @@ -895,8 +895,8 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , return; } gp_Dir2d dirx(1.,0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -977,7 +977,7 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , Geom2dGcc_Circ2d2TanOnIter:: Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedCirc& Qualified1 , const Geom2dGcc_QCurve& Qualified2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Param1 , const Standard_Real Param2 , const Standard_Real ParamOn , @@ -1004,7 +1004,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedCirc& Qualified1 , Standard_Real Tol = Abs(Tolerance); gp_Circ2d C1 = Qualified1.Qualified(); Standard_Real R1 = C1.Radius(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -1082,7 +1082,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedCirc& Qualified1 , Geom2dGcc_Circ2d2TanOnIter:: Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedLin& Qualified1 , const Geom2dGcc_QCurve& Qualified2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Param1 , const Standard_Real Param2 , const Standard_Real ParamOn , @@ -1108,7 +1108,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedLin& Qualified1 , Standard_Real Tol = Abs(Tolerance); gp_Dir2d dirx(1.,0.); gp_Lin2d L1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); math_Vector Umin(1,4); math_Vector Umax(1,4); math_Vector Ufirst(1,4); @@ -1184,7 +1184,7 @@ Geom2dGcc_Circ2d2TanOnIter (const GccEnt_QualifiedLin& Qualified1 , Geom2dGcc_Circ2d2TanOnIter:: Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , const gp_Pnt2d& Point2 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Param1 , const Standard_Real ParamOn , const Standard_Real Tolerance ) @@ -1207,7 +1207,7 @@ Geom2dGcc_Circ2d2TanOnIter (const Geom2dGcc_QCurve& Qualified1 , } Standard_Real Tol = Abs(Tolerance); gp_Dir2d dirx(1.,0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); math_Vector Umin(1,3); math_Vector Umax(1,3); math_Vector Ufirst(1,3); diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.hxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.hxx index d4fef7800a..b04a6a3785 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.hxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanOnIter.hxx @@ -112,7 +112,7 @@ public: //! Param2 is the initial guess on the curve QualifiedCurv. //! ParamOn is the initial guess on the center curve OnCurv. //! Tolerance is used for the limit cases. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const GccEnt_QualifiedCirc& Qualified1, const Geom2dGcc_QCurve& Qualified2, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const GccEnt_QualifiedCirc& Qualified1, const Geom2dGcc_QCurve& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to a 2d line and a curve and @@ -120,7 +120,7 @@ public: //! Param2 is the initial guess on the curve QualifiedCurv. //! ParamOn is the initial guess on the center curve OnCurv. //! Tolerance is used for the limit cases. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const GccEnt_QualifiedLin& Qualified1, const Geom2dGcc_QCurve& Qualified2, const Geom2dAdaptor_Curve& OnCurve, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const GccEnt_QualifiedLin& Qualified1, const Geom2dGcc_QCurve& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurve, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to a 2d Point and a curve and @@ -128,7 +128,7 @@ public: //! Param1 is the initial guess on the curve QualifiedCurv. //! ParamOn is the initial guess on the center curve OnCurv. //! Tolerance is used for the limit cases. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const Geom2dGcc_QCurve& Qualified1, const gp_Pnt2d& Point2, const Geom2dAdaptor_Curve& OnCurve, const Standard_Real Param1, const Standard_Real ParamOn, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const Geom2dGcc_QCurve& Qualified1, const gp_Pnt2d& Point2, const Handle(Geom2dAdaptor_Curve)& OnCurve, const Standard_Real Param1, const Standard_Real ParamOn, const Standard_Real Tolerance); //! This method implements the algorithms used to //! create 2d circles TANgent to two curves and @@ -137,7 +137,7 @@ public: //! Param1 is the initial guess on the second curve QualifiedCurv. //! ParamOn is the initial guess on the center curve OnCurv. //! Tolerance is used for the limit cases. - Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const Geom2dGcc_QCurve& Qualified1, const Geom2dGcc_QCurve& Qualified2, const Geom2dAdaptor_Curve& OnCurve, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2d2TanOnIter(const Geom2dGcc_QCurve& Qualified1, const Geom2dGcc_QCurve& Qualified2, const Handle(Geom2dAdaptor_Curve)& OnCurve, const Standard_Real Param1, const Standard_Real Param2, const Standard_Real ParamOn, const Standard_Real Tolerance); //! This method returns True if the construction //! algorithm succeeded. diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx index 55336cd687..1f2875ceac 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRad.cxx @@ -68,12 +68,12 @@ Geom2dGcc_Circ2d2TanRad:: { if (Radius < 0.) { throw Standard_NegativeValue(); } else { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve C2 = Qualified2.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) CC2 = C2.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type2 = C2.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) C2 = Qualified2.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) CC2 = C2->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type2 = C2->GetType(); //============================================================================= // Appel a GccAna. + @@ -275,9 +275,9 @@ Geom2dGcc_Circ2d2TanRad:: { if (Radius < 0.) { throw Standard_NegativeValue(); } else { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); //============================================================================= // Appel a GccAna. + diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx index 379a9d767d..b1ccabcb1c 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d2TanRadGeo.cxx @@ -103,7 +103,7 @@ pararg2(1,aNbSolMAX) Standard_Real lyloc = (L1.Location()).Y(); gp_Pnt2d origin1(lxloc,lyloc); gp_Dir2d normL1(-y1dir,x1dir); - Geom2dAdaptor_Curve Cu2= Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); if (Radius < 0.0) { throw Standard_NegativeValue(); } else { if (Qualified1.IsEnclosed() && Qualified2.IsEnclosed()) { @@ -181,13 +181,12 @@ pararg2(1,aNbSolMAX) gp_Lin2d Line(Point,L1.Direction()); // ligne avec deport. IntRes2d_Domain D1; for (Standard_Integer jcote2 = 1; jcote2 <= nbrcote2 && NbrSol < aNbSolMAX; jcote2++) { - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(Cu2); //Adaptor2d_OffsetCurve C2(HCu2,cote2(jcote2)); - Adaptor2d_OffsetCurve C2(HCu2, -cote2(jcote2)); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(Cu2, -cote2(jcote2)); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); Geom2dInt_TheIntConicCurveOfGInter Intp(Line,D1,C2,D2,Tol,Tol); if (Intp.IsDone()) { if (!Intp.IsEmpty()) { @@ -286,7 +285,7 @@ pararg2(1,aNbSolMAX) } gp_Circ2d C1 = Qualified1.Qualified(); gp_Pnt2d center1(C1.Location()); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); if (Radius < 0.0) { throw Standard_NegativeValue(); } else { if (Qualified1.IsEnclosed() && Qualified2.IsEnclosed()) { @@ -366,13 +365,12 @@ pararg2(1,aNbSolMAX) ElCLib::Value(2.*M_PI,Circ),2.*M_PI,Tol); D1.SetEquivalentParameters(0.,2.*M_PI); for (Standard_Integer jcote2 = 1 ; jcote2 <= nbrcote2 ; jcote2++) { - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(Cu2); //Adaptor2d_OffsetCurve C2(HCu2,cote2(jcote2)); - Adaptor2d_OffsetCurve C2(HCu2, -cote2(jcote2)); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(Cu2, -cote2(jcote2)); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); Intp.Perform(Circ,D1,C2,D2,Tol,Tol); if (Intp.IsDone()) { if (!Intp.IsEmpty()) { @@ -474,7 +472,7 @@ pararg2(1,aNbSolMAX) throw GccEnt_BadQualifier(); return; } - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); if (Radius < 0.0) { throw Standard_NegativeValue(); } else { if (Qualified1.IsEnclosed()) { @@ -499,13 +497,12 @@ pararg2(1,aNbSolMAX) D1.SetEquivalentParameters(0.,M_PI+M_PI); Geom2dInt_TheIntConicCurveOfGInter Intp; for (Standard_Integer jcote1 = 1; jcote1 <= nbrcote1 && NbrSol < aNbSolMAX; jcote1++) { - Handle(Geom2dAdaptor_Curve) HCu1 = new Geom2dAdaptor_Curve(Cu1); //Adaptor2d_OffsetCurve Cu2(HCu1,cote1(jcote1)); - Adaptor2d_OffsetCurve Cu2(HCu1,-cote1(jcote1)); - firstparam = Max(Cu2.FirstParameter(),thefirst); - lastparam = Min(Cu2.LastParameter(),thelast); - IntRes2d_Domain D2(Cu2.Value(firstparam), firstparam, Tol, - Cu2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) Cu2 = new Adaptor2d_OffsetCurve(Cu1,-cote1(jcote1)); + firstparam = Max(Cu2->FirstParameter(),thefirst); + lastparam = Min(Cu2->LastParameter(),thelast); + IntRes2d_Domain D2(Cu2->Value(firstparam), firstparam, Tol, + Cu2->Value(lastparam), lastparam, Tol); Intp.Perform(Circ,D1,Cu2,D2,Tol,Tol); if (Intp.IsDone()) { if (!Intp.IsEmpty()) { @@ -542,8 +539,8 @@ pararg2(1,aNbSolMAX) // tangent vector and vector between points in two curves must // be equal to zero). //======================================================================= -static void PrecRoot(const Adaptor2d_OffsetCurve& theC1, - const Adaptor2d_OffsetCurve& theC2, +static void PrecRoot(const Handle(Adaptor2d_OffsetCurve)& theC1, + const Handle(Adaptor2d_OffsetCurve)& theC2, const Standard_Real theU0, const Standard_Real theV0, Standard_Real& theUfinal, @@ -598,8 +595,8 @@ where u_{0} and v_{0} are initial values or values computed on previous iteratio Standard_Real aSQDistPrev = RealFirst(); - theC1.D2(aU, aPu, aD1u, aD2u); - theC2.D2(aV, aPv, aD1v, aD2v); + theC1->D2(aU, aPu, aD1u, aD2u); + theC2->D2(aV, aPv, aD1v, aD2v); const Standard_Real aCrProd = Abs(aD1u.Crossed(aD1v)); if(aCrProd*aCrProd > 1.0e-6* @@ -691,8 +688,8 @@ where u_{0} and v_{0} are initial values or values computed on previous iteratio aV += aStepV; } - theC1.D2(aU, aPu, aD1u, aD2u); - theC2.D2(aV, aPv, aD1v, aD2v); + theC1->D2(aU, aPu, aD1u, aD2u); + theC2->D2(aV, aPv, aD1v, aD2v); } while(aNbIter <= aNbIterMax); } @@ -758,8 +755,8 @@ pararg2(1,aNbSolMAX) throw GccEnt_BadQualifier(); return; } - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); if (Radius < 0.0) { throw Standard_NegativeValue(); } else { if (Qualified1.IsEnclosed() && Qualified2.IsEnclosed()) { @@ -833,9 +830,8 @@ pararg2(1,aNbSolMAX) } Geom2dInt_GInter Intp; for (Standard_Integer jcote1 = 1 ; jcote1 <= nbrcote1 ; jcote1++) { - Handle(Geom2dAdaptor_Curve) HCu1 = new Geom2dAdaptor_Curve(Cu1); //Adaptor2d_OffsetCurve C1(HCu1,cote1(jcote1)); - Adaptor2d_OffsetCurve C1(HCu1, -cote1(jcote1)); + Handle(Adaptor2d_OffsetCurve) C1 = new Adaptor2d_OffsetCurve(Cu1, -cote1(jcote1)); #ifdef OCCT_DEBUG Standard_Real firstparam = Max(C1.FirstParameter(), thefirst); Standard_Real lastparam = Min(C1.LastParameter(), thelast); @@ -843,9 +839,8 @@ pararg2(1,aNbSolMAX) C1.Value(lastparam),lastparam,Tol); #endif for (Standard_Integer jcote2 = 1; jcote2 <= nbrcote2 && NbrSol < aNbSolMAX; jcote2++) { - Handle(Geom2dAdaptor_Curve) HCu2 = new Geom2dAdaptor_Curve(Cu2); //Adaptor2d_OffsetCurve C2(HCu2,cote2(jcote2)); - Adaptor2d_OffsetCurve C2(HCu2, -cote2(jcote2)); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(Cu2, -cote2(jcote2)); #ifdef OCCT_DEBUG firstparam = Max(C2.FirstParameter(), thefirst); lastparam = Min(C2.LastParameter(),thelast); @@ -868,10 +863,10 @@ pararg2(1,aNbSolMAX) Standard_Real aU2 = aU0+Precision::PApproximation(); Standard_Real aV2 = aV0+Precision::PApproximation(); - gp_Pnt2d P11 = C1.Value(aU1); - gp_Pnt2d P12 = C2.Value(aV1); - gp_Pnt2d P21 = C1.Value(aU2); - gp_Pnt2d P22 = C2.Value(aV2); + gp_Pnt2d P11 = C1->Value(aU1); + gp_Pnt2d P12 = C2->Value(aV1); + gp_Pnt2d P21 = C1->Value(aU2); + gp_Pnt2d P22 = C2->Value(aV2); Standard_Real aDist1112 = P11.SquareDistance(P12); Standard_Real aDist1122 = P11.SquareDistance(P22); @@ -886,7 +881,7 @@ pararg2(1,aNbSolMAX) } NbrSol++; - gp_Pnt2d Center(C1.Value(aU0)); + gp_Pnt2d Center(C1->Value(aU0)); cirsol(NbrSol) = gp_Circ2d(gp_Ax2d(Center,dirx),Radius); // ======================================================= qualifier1(NbrSol) = Qualified1.Qualifier(); diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d3Tan.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d3Tan.cxx index 666a977b0c..80e2e3b1eb 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d3Tan.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d3Tan.cxx @@ -55,15 +55,15 @@ Geom2dGcc_Circ2d3Tan:: pararg2(1,16) , pararg3(1,16) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve C2 = Qualified2.Qualified(); - Geom2dAdaptor_Curve C3 = Qualified3.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) CC2 = C2.Curve(); - Handle(Geom2d_Curve) CC3 = C3.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type2 = C2.GetType(); - GeomAbs_CurveType Type3 = C3.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) C2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) C3 = Qualified3.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) CC2 = C2->Curve(); + Handle(Geom2d_Curve) CC3 = C3->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type2 = C2->GetType(); + GeomAbs_CurveType Type3 = C3->GetType(); //============================================================================= // Appel a GccAna. + @@ -264,12 +264,12 @@ Geom2dGcc_Circ2d3Tan:: pararg2(1,20) , pararg3(1,20) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve C2 = Qualified2.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) CC2 = C2.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type2 = C2.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) C2 = Qualified2.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) CC2 = C2->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type2 = C2->GetType(); //============================================================================= // Appel a GccAna. + @@ -382,9 +382,9 @@ Geom2dGcc_Circ2d3Tan:: pararg2(1,16) , pararg3(1,16) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); //============================================================================= // Appel a GccAna. + diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2d3TanIter.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2d3TanIter.cxx index e6a575da70..fce76d1429 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2d3TanIter.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2d3TanIter.cxx @@ -74,9 +74,9 @@ Geom2dGcc_Circ2d3TanIter (const Geom2dGcc_QCurve& Qualified1 , throw GccEnt_BadQualifier(); return; } - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); - Geom2dAdaptor_Curve Cu3 = Qualified3.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu3 = Qualified3.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(Cu1,Cu2,Cu3); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -202,8 +202,8 @@ Geom2dGcc_Circ2d3TanIter (const GccEnt_QualifiedCirc& Qualified1 , return; } gp_Circ2d C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); - Geom2dAdaptor_Curve Cu3 = Qualified3.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu3 = Qualified3.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(C1,Cu2,Cu3); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -335,7 +335,7 @@ Geom2dGcc_Circ2d3TanIter (const GccEnt_QualifiedCirc& Qualified1 , } gp_Circ2d C1 = Qualified1.Qualified(); gp_Circ2d C2 = Qualified2.Qualified(); - Geom2dAdaptor_Curve Cu3 = Qualified3.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu3 = Qualified3.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(C1,C2,Cu3); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -469,8 +469,8 @@ Geom2dGcc_Circ2d3TanIter (const GccEnt_QualifiedLin& Qualified1 , return; } gp_Lin2d L1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); - Geom2dAdaptor_Curve Cu3 = Qualified3.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu3 = Qualified3.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(L1,Cu2,Cu3); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -605,7 +605,7 @@ Geom2dGcc_Circ2d3TanIter (const GccEnt_QualifiedLin& Qualified1 , } gp_Lin2d L1 = Qualified1.Qualified(); gp_Lin2d L2 = Qualified2.Qualified(); - Geom2dAdaptor_Curve Cu3 = Qualified3.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu3 = Qualified3.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(L1,L2,Cu3); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -730,8 +730,8 @@ Geom2dGcc_Circ2d3TanIter (const Geom2dGcc_QCurve& Qualified1 , return; } gp_Circ2d C1(gp_Ax2d(Point3,gp_Dir2d(1.,0.)),0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(C1,Cu1,Cu2); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -848,7 +848,7 @@ Geom2dGcc_Circ2d3TanIter (const Geom2dGcc_QCurve& Qualified1 , gp_Dir2d dirx(1.,0.); gp_Circ2d C1(gp_Ax2d(Point2,dirx),0.); gp_Circ2d C2(gp_Ax2d(Point3,dirx),0.); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(C1,C2,Cu1); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -961,7 +961,7 @@ Geom2dGcc_Circ2d3TanIter (const GccEnt_QualifiedLin& Qualified1 , } gp_Dir2d dirx(1.,0.); gp_Lin2d L1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); gp_Circ2d C3(gp_Ax2d(Point3,dirx),0.); Geom2dGcc_FunctionTanCuCuCu Func(C3,L1,Cu2); math_Vector Umin(1,3); @@ -1085,7 +1085,7 @@ Geom2dGcc_Circ2d3TanIter (const GccEnt_QualifiedCirc& Qualified1 , } gp_Circ2d C1 = Qualified1.Qualified(); gp_Lin2d L2 = Qualified2.Qualified(); - Geom2dAdaptor_Curve Cu3 = Qualified3.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu3 = Qualified3.Qualified(); Geom2dGcc_FunctionTanCuCuCu Func(C1,L2,Cu3); math_Vector Umin(1,3); math_Vector Umax(1,3); @@ -1214,7 +1214,7 @@ Geom2dGcc_Circ2d3TanIter (const GccEnt_QualifiedCirc& Qualified1 , return; } gp_Circ2d C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); gp_Dir2d dirx(1.,0.); gp_Circ2d C3(gp_Ax2d(Point3,dirx),0.); Geom2dGcc_FunctionTanCuCuCu Func(C1,C3,Cu2); diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2dTanCen.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2dTanCen.cxx index 5995429e38..a73b2fe048 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2dTanCen.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2dTanCen.cxx @@ -41,9 +41,9 @@ Geom2dGcc_Circ2dTanCen:: par1sol(1,2) , pararg1(1,2) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); //============================================================================= // Appel a GccAna. + diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2dTanCenGeo.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2dTanCenGeo.cxx index 44d8700e23..cb1d3b20c8 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2dTanCenGeo.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2dTanCenGeo.cxx @@ -60,7 +60,7 @@ Geom2dGcc_Circ2dTanCenGeo (const Geom2dGcc_QCurve& Qualified1, Standard_Integer nbsol = 0; gp_Dir2d dirx(1.0,0.0); Standard_Real thePar; - Geom2dAdaptor_Curve curve = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) curve = Qualified1.Qualified(); Extrema_ExtPC2d distmin(Pcenter, curve, Geom2dGcc_CurveTool::FirstParameter(curve), Geom2dGcc_CurveTool::LastParameter(curve), Tol); if (!distmin.IsDone() ) { throw Standard_Failure(); } diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.cxx index a95e2bf171..192f78bb94 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.cxx @@ -34,7 +34,7 @@ Geom2dGcc_Circ2dTanOnRad:: Geom2dGcc_Circ2dTanOnRad (const Geom2dGcc_QualifiedCurve& Qualified1 , - const Geom2dAdaptor_Curve& OnCurve , + const Handle(Geom2dAdaptor_Curve)& OnCurve , const Standard_Real Radius , const Standard_Real Tolerance ): cirsol(1,8) , @@ -50,11 +50,11 @@ Geom2dGcc_Circ2dTanOnRad:: throw Standard_NegativeValue(); } else { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type2 = OnCurve.GetType(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) Con = OnCurve.Curve(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type2 = OnCurve->GetType(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) Con = OnCurve->Curve(); //============================================================================= // Appel a GccAna. + @@ -145,7 +145,7 @@ Geom2dGcc_Circ2dTanOnRad:: Geom2dGcc_Circ2dTanOnRad:: Geom2dGcc_Circ2dTanOnRad (const Handle(Geom2d_Point)& Point1 , - const Geom2dAdaptor_Curve& OnCurve , + const Handle(Geom2dAdaptor_Curve)& OnCurve , const Standard_Real Radius , const Standard_Real Tolerance ): cirsol(1,8) , @@ -162,8 +162,8 @@ Geom2dGcc_Circ2dTanOnRad:: } else { gp_Pnt2d point1(Point1->Pnt2d()); - GeomAbs_CurveType Type2 = OnCurve.GetType(); - Handle(Geom2d_Curve) Con = OnCurve.Curve(); + GeomAbs_CurveType Type2 = OnCurve->GetType(); + Handle(Geom2d_Curve) Con = OnCurve->Curve(); //============================================================================= // Appel a GccAna. + diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.hxx b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.hxx index 99c9786e60..a4f5eb3d90 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.hxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRad.hxx @@ -69,7 +69,7 @@ public: //! Constructs one or more 2D circles of radius Radius, //! centered on the 2D curve OnCurv and: //! - tangential to the curve Qualified1 - Standard_EXPORT Geom2dGcc_Circ2dTanOnRad(const Geom2dGcc_QualifiedCurve& Qualified1, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2dTanOnRad(const Geom2dGcc_QualifiedCurve& Qualified1, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); //! Constructs one or more 2D circles of radius Radius, //! centered on the 2D curve OnCurv and: @@ -101,7 +101,7 @@ public: //! ... //! } //! } - Standard_EXPORT Geom2dGcc_Circ2dTanOnRad(const Handle(Geom2d_Point)& Point1, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2dTanOnRad(const Handle(Geom2d_Point)& Point1, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); Standard_EXPORT void Results (const GccAna_Circ2dTanOnRad& Circ); diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.cxx b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.cxx index cc18fc187d..b0cf93a248 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.cxx @@ -98,7 +98,7 @@ parcen3(1,aNbSolMAX) } Standard_Integer nbrcote1 = 0; TColStd_Array1OfReal Coef(1,2); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); if (Radius < 0.0) { throw Standard_NegativeValue(); } else { @@ -121,13 +121,12 @@ parcen3(1,aNbSolMAX) IntRes2d_Domain D1; Geom2dInt_TheIntConicCurveOfGInter Intp; for (Standard_Integer jcote1 = 1 ; jcote1 <= nbrcote1 ; jcote1++) { - Handle(Geom2dAdaptor_Curve) HCu1 = new Geom2dAdaptor_Curve(Cu1); //Adaptor2d_OffsetCurve C2(HCu1,Coef(jcote1)); - Adaptor2d_OffsetCurve C2(HCu1, -Coef(jcote1)); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(Cu1, -Coef(jcote1)); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); Intp.Perform(OnLine,D1,C2,D2,Tol,Tol); if (Intp.IsDone()) { if (!Intp.IsEmpty()) { @@ -208,7 +207,7 @@ parcen3(1,aNbSolMAX) return; } TColStd_Array1OfReal cote1(1,2); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); if (Radius < 0.0) { throw Standard_NegativeValue(); @@ -235,13 +234,12 @@ parcen3(1,aNbSolMAX) D1.SetEquivalentParameters(0.,2.*M_PI); Geom2dInt_TheIntConicCurveOfGInter Intp; for (Standard_Integer jcote1 = 1 ; jcote1 <= nbrcote1 ; jcote1++) { - Handle(Geom2dAdaptor_Curve) HCu1 = new Geom2dAdaptor_Curve(Cu1); - //Adaptor2d_OffsetCurve C2(HCu1,cote1(jcote1)); - Adaptor2d_OffsetCurve C2(HCu1, -cote1(jcote1)); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam),firstparam,Tol, - C2.Value(lastparam),lastparam,Tol); + //Adaptor2d_OffsetCurve C2(Cu1,cote1(jcote1)); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(Cu1, -cote1(jcote1)); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam),firstparam,Tol, + C2->Value(lastparam),lastparam,Tol); Intp.Perform(OnCirc,D1,C2,D2,Tol,Tol); if (Intp.IsDone()) { if (!Intp.IsEmpty()) { @@ -285,7 +283,7 @@ parcen3(1,aNbSolMAX) Geom2dGcc_Circ2dTanOnRadGeo:: Geom2dGcc_Circ2dTanOnRadGeo (const GccEnt_QualifiedCirc& Qualified1, - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Radius , const Standard_Real Tolerance ): @@ -409,7 +407,7 @@ parcen3(1,aNbSolMAX) Geom2dGcc_Circ2dTanOnRadGeo:: Geom2dGcc_Circ2dTanOnRadGeo (const GccEnt_QualifiedLin& Qualified1, - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Radius , const Standard_Real Tolerance ): @@ -530,7 +528,7 @@ parcen3(1,aNbSolMAX) Geom2dGcc_Circ2dTanOnRadGeo:: Geom2dGcc_Circ2dTanOnRadGeo (const Geom2dGcc_QCurve& Qualified1, - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Radius , const Standard_Real Tolerance ): @@ -567,7 +565,7 @@ parcen3(1,aNbSolMAX) return; } TColStd_Array1OfReal cote1(1,2); - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); if (Radius < 0.0) { throw Standard_NegativeValue(); @@ -591,19 +589,17 @@ parcen3(1,aNbSolMAX) } Geom2dInt_GInter Intp; for (Standard_Integer jcote1 = 1 ; jcote1 <= nbrcote1 ; jcote1++) { - Handle(Geom2dAdaptor_Curve) HCu1 = new Geom2dAdaptor_Curve(Cu1); - //Adaptor2d_OffsetCurve C1(HCu1,cote1(jcote1)); - Adaptor2d_OffsetCurve C1(HCu1, -cote1(jcote1)); - firstparam = Max(C1.FirstParameter(),thefirst); - lastparam = Min(C1.LastParameter(),thelast); - IntRes2d_Domain D1(C1.Value(firstparam), firstparam, Tol, - C1.Value(lastparam), lastparam, Tol); - Handle(Geom2dAdaptor_Curve) HOnCurv = new Geom2dAdaptor_Curve(OnCurv); - Adaptor2d_OffsetCurve C2(HOnCurv); - firstparam = Max(C2.FirstParameter(),thefirst); - lastparam = Min(C2.LastParameter(),thelast); - IntRes2d_Domain D2(C2.Value(firstparam), firstparam, Tol, - C2.Value(lastparam), lastparam, Tol); + //Adaptor2d_OffsetCurve C1(Cu1,cote1(jcote1)); + Handle(Adaptor2d_OffsetCurve) C1 = new Adaptor2d_OffsetCurve(Cu1, -cote1(jcote1)); + firstparam = Max(C1->FirstParameter(),thefirst); + lastparam = Min(C1->LastParameter(),thelast); + IntRes2d_Domain D1(C1->Value(firstparam), firstparam, Tol, + C1->Value(lastparam), lastparam, Tol); + Handle(Adaptor2d_OffsetCurve) C2 = new Adaptor2d_OffsetCurve(OnCurv); + firstparam = Max(C2->FirstParameter(),thefirst); + lastparam = Min(C2->LastParameter(),thelast); + IntRes2d_Domain D2(C2->Value(firstparam), firstparam, Tol, + C2->Value(lastparam), lastparam, Tol); Intp.Perform(C1,D1,C2,D2,Tol,Tol); if (Intp.IsDone()) { if (!Intp.IsEmpty()) { @@ -647,7 +643,7 @@ parcen3(1,aNbSolMAX) Geom2dGcc_Circ2dTanOnRadGeo:: Geom2dGcc_Circ2dTanOnRadGeo (const gp_Pnt2d& Point1 , - const Geom2dAdaptor_Curve& OnCurv , + const Handle(Geom2dAdaptor_Curve)& OnCurv , const Standard_Real Radius , const Standard_Real Tolerance ): diff --git a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.hxx b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.hxx index 30deec4989..3439f47340 100644 --- a/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.hxx +++ b/src/Geom2dGcc/Geom2dGcc_Circ2dTanOnRadGeo.hxx @@ -84,28 +84,28 @@ public: //! with a given radius. //! Tolerance is used to find solution in every limit cases. //! raises NegativeValue in case of NegativeRadius. - Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const GccEnt_QualifiedCirc& Qualified1, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const GccEnt_QualifiedCirc& Qualified1, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); //! This methods implements the algorithms used to create //! 2d Circles tangent to a 2d Line and centered on a 2d curve //! with a given radius. //! Tolerance is used to find solution in every limit cases. //! raises NegativeValue in case of NegativeRadius. - Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const GccEnt_QualifiedLin& Qualified1, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const GccEnt_QualifiedLin& Qualified1, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); //! This methods implements the algorithms used to create //! 2d Circles tangent to a 2d curve and centered on a 2d curve //! with a given radius. //! Tolerance is used to find solution in every limit cases. //! raises NegativeValue in case of NegativeRadius. - Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const Geom2dGcc_QCurve& Qualified1, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const Geom2dGcc_QCurve& Qualified1, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); //! This methods implements the algorithms used to create //! 2d Circles passing through a 2d point and centered on a //! 2d curve with a given radius. //! Tolerance is used to find solution in every limit cases. //! raises NegativeValue in case of NegativeRadius. - Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const gp_Pnt2d& Point1, const Geom2dAdaptor_Curve& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); + Standard_EXPORT Geom2dGcc_Circ2dTanOnRadGeo(const gp_Pnt2d& Point1, const Handle(Geom2dAdaptor_Curve)& OnCurv, const Standard_Real Radius, const Standard_Real Tolerance); //! This method returns True if the construction //! algorithm succeeded. diff --git a/src/Geom2dGcc/Geom2dGcc_CurveTool.cxx b/src/Geom2dGcc/Geom2dGcc_CurveTool.cxx index 91a391edda..925bc6ff16 100644 --- a/src/Geom2dGcc/Geom2dGcc_CurveTool.cxx +++ b/src/Geom2dGcc/Geom2dGcc_CurveTool.cxx @@ -20,56 +20,56 @@ //Template a respecter Standard_Real Geom2dGcc_CurveTool:: - EpsX (const Geom2dAdaptor_Curve& C , + EpsX (const Handle(Geom2dAdaptor_Curve)& C , const Standard_Real Tol) { - return C.Resolution(Tol); + return C->Resolution(Tol); } Standard_Integer Geom2dGcc_CurveTool:: - NbSamples (const Geom2dAdaptor_Curve& /*C*/) { + NbSamples (const Handle(Geom2dAdaptor_Curve)& /*C*/) { return 20; } -gp_Pnt2d Geom2dGcc_CurveTool::Value (const Geom2dAdaptor_Curve& C, +gp_Pnt2d Geom2dGcc_CurveTool::Value (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real U) { - return C.Value(U); + return C->Value(U); } Standard_Real - Geom2dGcc_CurveTool::FirstParameter (const Geom2dAdaptor_Curve& C) { - return C.FirstParameter(); + Geom2dGcc_CurveTool::FirstParameter (const Handle(Geom2dAdaptor_Curve)& C) { + return C->FirstParameter(); } Standard_Real - Geom2dGcc_CurveTool::LastParameter (const Geom2dAdaptor_Curve& C) { - return C.LastParameter(); + Geom2dGcc_CurveTool::LastParameter (const Handle(Geom2dAdaptor_Curve)& C) { + return C->LastParameter(); } -void Geom2dGcc_CurveTool::D1 (const Geom2dAdaptor_Curve& C, +void Geom2dGcc_CurveTool::D1 (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T) { - C.D1(U,P,T); + C->D1(U,P,T); } -void Geom2dGcc_CurveTool::D2 (const Geom2dAdaptor_Curve& C, +void Geom2dGcc_CurveTool::D2 (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N) { - C.D2(U,P,T,N); + C->D2(U,P,T,N); } -void Geom2dGcc_CurveTool::D3 (const Geom2dAdaptor_Curve& C , +void Geom2dGcc_CurveTool::D3 (const Handle(Geom2dAdaptor_Curve)& C , const Standard_Real U , gp_Pnt2d& P , gp_Vec2d& T , gp_Vec2d& N , gp_Vec2d& dN) { - C.D3(U,P,T,N,dN); + C->D3(U,P,T,N,dN); } diff --git a/src/Geom2dGcc/Geom2dGcc_CurveTool.hxx b/src/Geom2dGcc/Geom2dGcc_CurveTool.hxx index ac3859a978..30861a033c 100644 --- a/src/Geom2dGcc/Geom2dGcc_CurveTool.hxx +++ b/src/Geom2dGcc/Geom2dGcc_CurveTool.hxx @@ -19,6 +19,7 @@ #include #include +#include #include class Geom2dAdaptor_Curve; @@ -34,21 +35,21 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT static Standard_Real FirstParameter (const Geom2dAdaptor_Curve& C); + Standard_EXPORT static Standard_Real FirstParameter (const Handle(Geom2dAdaptor_Curve)& C); - Standard_EXPORT static Standard_Real LastParameter (const Geom2dAdaptor_Curve& C); + Standard_EXPORT static Standard_Real LastParameter (const Handle(Geom2dAdaptor_Curve)& C); - Standard_EXPORT static Standard_Real EpsX (const Geom2dAdaptor_Curve& C, const Standard_Real Tol); + Standard_EXPORT static Standard_Real EpsX (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real Tol); - Standard_EXPORT static Standard_Integer NbSamples (const Geom2dAdaptor_Curve& C); + Standard_EXPORT static Standard_Integer NbSamples (const Handle(Geom2dAdaptor_Curve)& C); - Standard_EXPORT static gp_Pnt2d Value (const Geom2dAdaptor_Curve& C, const Standard_Real X); + Standard_EXPORT static gp_Pnt2d Value (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real X); - Standard_EXPORT static void D1 (const Geom2dAdaptor_Curve& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T); + Standard_EXPORT static void D1 (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T); - Standard_EXPORT static void D2 (const Geom2dAdaptor_Curve& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N); + Standard_EXPORT static void D2 (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N); - Standard_EXPORT static void D3 (const Geom2dAdaptor_Curve& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N, gp_Vec2d& dN); + Standard_EXPORT static void D3 (const Handle(Geom2dAdaptor_Curve)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N, gp_Vec2d& dN); diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.cxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.cxx index 48ff699727..f4e618e1b4 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.cxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.cxx @@ -50,7 +50,7 @@ //========================================================================= Geom2dGcc_FunctionTanCirCu:: Geom2dGcc_FunctionTanCirCu(const gp_Circ2d& Circ , - const Geom2dAdaptor_Curve& Curv ) { + const Handle(Geom2dAdaptor_Curve)& Curv ) { Curve = Curv; TheCirc = Circ; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.hxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.hxx index aee1b640a7..b602f69fb4 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.hxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCirCu.hxx @@ -35,7 +35,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dGcc_FunctionTanCirCu(const gp_Circ2d& Circ, const Geom2dAdaptor_Curve& Curv); + Standard_EXPORT Geom2dGcc_FunctionTanCirCu(const gp_Circ2d& Circ, const Handle(Geom2dAdaptor_Curve)& Curv); //! Computes the value of the function F for the variable X. //! It returns True if the computation is successfully done, @@ -67,7 +67,7 @@ private: gp_Circ2d TheCirc; - Geom2dAdaptor_Curve Curve; + Handle(Geom2dAdaptor_Curve) Curve; Standard_Real myWeight; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.cxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.cxx index 751574095c..734da071dd 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.cxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.cxx @@ -53,8 +53,8 @@ InitDerivative(const math_Vector& X, } Geom2dGcc_FunctionTanCuCu:: -Geom2dGcc_FunctionTanCuCu(const Geom2dAdaptor_Curve& C1 , - const Geom2dAdaptor_Curve& C2 ) { +Geom2dGcc_FunctionTanCuCu(const Handle(Geom2dAdaptor_Curve)& C1 , + const Handle(Geom2dAdaptor_Curve)& C2 ) { TheCurve1 = C1; TheCurve2 = C2; TheType = Geom2dGcc_CuCu; @@ -62,8 +62,9 @@ Geom2dGcc_FunctionTanCuCu(const Geom2dAdaptor_Curve& C1 , Geom2dGcc_FunctionTanCuCu:: Geom2dGcc_FunctionTanCuCu(const gp_Circ2d& C1 , - const Geom2dAdaptor_Curve& C2 ) { + const Handle(Geom2dAdaptor_Curve)& C2 ) { TheCirc1 = C1; + TheCurve1 = new Geom2dAdaptor_Curve(); TheCurve2 = C2; TheType = Geom2dGcc_CiCu; } diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.hxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.hxx index cf78b6efea..40603277da 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.hxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCu.hxx @@ -39,9 +39,9 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dGcc_FunctionTanCuCu(const Geom2dAdaptor_Curve& Curv1, const Geom2dAdaptor_Curve& Curv2); + Standard_EXPORT Geom2dGcc_FunctionTanCuCu(const Handle(Geom2dAdaptor_Curve)& Curv1, const Handle(Geom2dAdaptor_Curve)& Curv2); - Standard_EXPORT Geom2dGcc_FunctionTanCuCu(const gp_Circ2d& Circ1, const Geom2dAdaptor_Curve& Curv2); + Standard_EXPORT Geom2dGcc_FunctionTanCuCu(const gp_Circ2d& Circ1, const Handle(Geom2dAdaptor_Curve)& Curv2); Standard_EXPORT void InitDerivative (const math_Vector& X, gp_Pnt2d& Point1, gp_Pnt2d& Point2, gp_Vec2d& Tan1, gp_Vec2d& Tan2, gp_Vec2d& D21, gp_Vec2d& D22); @@ -80,8 +80,8 @@ private: - Geom2dAdaptor_Curve TheCurve1; - Geom2dAdaptor_Curve TheCurve2; + Handle(Geom2dAdaptor_Curve) TheCurve1; + Handle(Geom2dAdaptor_Curve) TheCurve2; gp_Circ2d TheCirc1; Geom2dGcc_Type3 TheType; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.cxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.cxx index 2f47c8ad9d..3d53c668fc 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.cxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.cxx @@ -92,9 +92,9 @@ InitDerivative(const math_Vector& X, } Geom2dGcc_FunctionTanCuCuCu:: -Geom2dGcc_FunctionTanCuCuCu(const Geom2dAdaptor_Curve& C1 , - const Geom2dAdaptor_Curve& C2 , - const Geom2dAdaptor_Curve& C3 ) { +Geom2dGcc_FunctionTanCuCuCu(const Handle(Geom2dAdaptor_Curve)& C1 , + const Handle(Geom2dAdaptor_Curve)& C2 , + const Handle(Geom2dAdaptor_Curve)& C3 ) { Curv1 = C1; Curv2 = C2; Curv3 = C3; @@ -103,9 +103,10 @@ Geom2dGcc_FunctionTanCuCuCu(const Geom2dAdaptor_Curve& C1 , Geom2dGcc_FunctionTanCuCuCu:: Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1 , - const Geom2dAdaptor_Curve& C2 , - const Geom2dAdaptor_Curve& C3 ) { + const Handle(Geom2dAdaptor_Curve)& C2 , + const Handle(Geom2dAdaptor_Curve)& C3 ) { Circ1 = C1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; Curv3 = C3; TheType = Geom2dGcc_CiCuCu; @@ -114,7 +115,7 @@ Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1 , Geom2dGcc_FunctionTanCuCuCu:: Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1 , const gp_Circ2d& C2 , - const Geom2dAdaptor_Curve& C3 ) { + const Handle(Geom2dAdaptor_Curve)& C3 ) { Circ1 = C1; Circ2 = C2; Curv3 = C3; @@ -124,9 +125,11 @@ Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1 , Geom2dGcc_FunctionTanCuCuCu:: Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1 , const gp_Lin2d& L2 , - const Geom2dAdaptor_Curve& C3 ) { + const Handle(Geom2dAdaptor_Curve)& C3 ) { Circ1 = C1; Lin2 = L2; + Curv1 = new Geom2dAdaptor_Curve(); + Curv2 = new Geom2dAdaptor_Curve(); Curv3 = C3; TheType = Geom2dGcc_CiLiCu; } @@ -134,18 +137,21 @@ Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1 , Geom2dGcc_FunctionTanCuCuCu:: Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1 , const gp_Lin2d& L2 , - const Geom2dAdaptor_Curve& C3 ) { + const Handle(Geom2dAdaptor_Curve)& C3 ) { Lin1 = L1; Lin2 = L2; + Curv1 = new Geom2dAdaptor_Curve(); + Curv2 = new Geom2dAdaptor_Curve(); Curv3 = C3; TheType = Geom2dGcc_LiLiCu; } Geom2dGcc_FunctionTanCuCuCu:: Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1 , - const Geom2dAdaptor_Curve& C2 , - const Geom2dAdaptor_Curve& C3 ) { + const Handle(Geom2dAdaptor_Curve)& C2 , + const Handle(Geom2dAdaptor_Curve)& C3 ) { Lin1 = L1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; Curv3 = C3; TheType = Geom2dGcc_LiCuCu; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.hxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.hxx index e592a4af0b..3ae9e7a1ff 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.hxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuCu.hxx @@ -40,23 +40,23 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const Geom2dAdaptor_Curve& C1, const Geom2dAdaptor_Curve& C2, const Geom2dAdaptor_Curve& C3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const Handle(Geom2dAdaptor_Curve)& C1, const Handle(Geom2dAdaptor_Curve)& C2, const Handle(Geom2dAdaptor_Curve)& C3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const Geom2dAdaptor_Curve& C2, const Geom2dAdaptor_Curve& C3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const Handle(Geom2dAdaptor_Curve)& C2, const Handle(Geom2dAdaptor_Curve)& C3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const gp_Circ2d& C2, const Geom2dAdaptor_Curve& C3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const gp_Circ2d& C2, const Handle(Geom2dAdaptor_Curve)& C3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const gp_Lin2d& L2, const Geom2dAdaptor_Curve& C3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const gp_Lin2d& L2, const Handle(Geom2dAdaptor_Curve)& C3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1, const gp_Lin2d& L2, const Geom2dAdaptor_Curve& C3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1, const gp_Lin2d& L2, const Handle(Geom2dAdaptor_Curve)& C3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1, const Geom2dAdaptor_Curve& C2, const Geom2dAdaptor_Curve& C3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1, const Handle(Geom2dAdaptor_Curve)& C2, const Handle(Geom2dAdaptor_Curve)& C3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const Geom2dAdaptor_Curve& C2, const gp_Pnt2d& P3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Circ2d& C1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Pnt2d& P3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1, const Geom2dAdaptor_Curve& C2, const gp_Pnt2d& P3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const gp_Lin2d& L1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Pnt2d& P3); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const Geom2dAdaptor_Curve& C1, const gp_Pnt2d& P2, const gp_Pnt2d& P3); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuCu(const Handle(Geom2dAdaptor_Curve)& C1, const gp_Pnt2d& P2, const gp_Pnt2d& P3); Standard_EXPORT void InitDerivative (const math_Vector& X, gp_Pnt2d& Point1, gp_Pnt2d& Point2, gp_Pnt2d& Point3, gp_Vec2d& Tan1, gp_Vec2d& Tan2, gp_Vec2d& Tan3, gp_Vec2d& D21, gp_Vec2d& D22, gp_Vec2d& D23); @@ -89,9 +89,9 @@ private: - Geom2dAdaptor_Curve Curv1; - Geom2dAdaptor_Curve Curv2; - Geom2dAdaptor_Curve Curv3; + Handle(Geom2dAdaptor_Curve) Curv1; + Handle(Geom2dAdaptor_Curve) Curv2; + Handle(Geom2dAdaptor_Curve) Curv3; gp_Circ2d Circ1; gp_Circ2d Circ2; gp_Lin2d Lin1; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.cxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.cxx index 5559051f77..fe812a3998 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.cxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.cxx @@ -142,9 +142,9 @@ void Geom2dGcc_FunctionTanCuCuOnCu:: } Geom2dGcc_FunctionTanCuCuOnCu:: - Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1 , - const Geom2dAdaptor_Curve& C2 , - const Geom2dAdaptor_Curve& C3 , + Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1 , + const Handle(Geom2dAdaptor_Curve)& C2 , + const Handle(Geom2dAdaptor_Curve)& C3 , const Standard_Real Rad ) { Curv1 = C1; Curv2 = C2; @@ -155,10 +155,11 @@ Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1 , - const Geom2dAdaptor_Curve& C2 , - const Geom2dAdaptor_Curve& C3 , + const Handle(Geom2dAdaptor_Curve)& C2 , + const Handle(Geom2dAdaptor_Curve)& C3 , const Standard_Real Rad ) { Circ1 = C1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; Curvon = C3; FirstRad = Rad; @@ -167,10 +168,11 @@ Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1 , - const Geom2dAdaptor_Curve& C2 , - const Geom2dAdaptor_Curve& C3 , + const Handle(Geom2dAdaptor_Curve)& C2 , + const Handle(Geom2dAdaptor_Curve)& C3 , const Standard_Real Rad ) { Lin1 = L1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; Curvon = C3; FirstRad = Rad; @@ -178,11 +180,12 @@ Geom2dGcc_FunctionTanCuCuOnCu:: } Geom2dGcc_FunctionTanCuCuOnCu:: - Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1 , + Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1 , const gp_Pnt2d& P2 , - const Geom2dAdaptor_Curve& C3 , + const Handle(Geom2dAdaptor_Curve)& C3 , const Standard_Real Rad ) { Curv1 = C1; + Curv2 = new Geom2dAdaptor_Curve(); Pnt2 = P2; Curvon = C3; FirstRad = Rad; @@ -190,12 +193,13 @@ Geom2dGcc_FunctionTanCuCuOnCu:: } Geom2dGcc_FunctionTanCuCuOnCu:: - Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1 , - const Geom2dAdaptor_Curve& C2 , + Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1 , + const Handle(Geom2dAdaptor_Curve)& C2 , const gp_Lin2d& OnLi , const Standard_Real Rad ) { Curv1 = C1; Curv2 = C2; + Curvon = new Geom2dAdaptor_Curve(); Linon = OnLi; FirstRad = Rad; TheType = Geom2dGcc_CuCuOnLi; @@ -203,11 +207,13 @@ Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1 , - const Geom2dAdaptor_Curve& C2 , + const Handle(Geom2dAdaptor_Curve)& C2 , const gp_Lin2d& OnLi , const Standard_Real Rad ) { Circ1 = C1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; + Curvon = new Geom2dAdaptor_Curve(); Linon = OnLi; FirstRad = Rad; TheType = Geom2dGcc_CiCuOnLi; @@ -215,22 +221,26 @@ Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1 , - const Geom2dAdaptor_Curve& C2 , + const Handle(Geom2dAdaptor_Curve)& C2 , const gp_Lin2d& OnLi , const Standard_Real Rad ) { Lin1 = L1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; + Curvon = new Geom2dAdaptor_Curve(); Linon = OnLi; FirstRad = Rad; TheType = Geom2dGcc_LiCuOnLi; } Geom2dGcc_FunctionTanCuCuOnCu:: - Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1 , + Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1 , const gp_Pnt2d& P2 , const gp_Lin2d& OnLi , const Standard_Real Rad ) { Curv1 = C1; + Curv2 = new Geom2dAdaptor_Curve(); + Curvon = new Geom2dAdaptor_Curve(); Pnt2 = P2; Linon = OnLi; FirstRad = Rad; @@ -238,12 +248,13 @@ Geom2dGcc_FunctionTanCuCuOnCu:: } Geom2dGcc_FunctionTanCuCuOnCu:: - Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1 , - const Geom2dAdaptor_Curve& C2 , + Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1 , + const Handle(Geom2dAdaptor_Curve)& C2 , const gp_Circ2d& OnCi , const Standard_Real Rad ) { Curv1 = C1; Curv2 = C2; + Curvon = new Geom2dAdaptor_Curve(); Circon = OnCi; FirstRad = Rad; TheType = Geom2dGcc_CuCuOnCi; @@ -251,11 +262,13 @@ Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1 , - const Geom2dAdaptor_Curve& C2 , + const Handle(Geom2dAdaptor_Curve)& C2 , const gp_Circ2d& OnCi , const Standard_Real Rad ) { Circ1 = C1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; + Curvon = new Geom2dAdaptor_Curve(); Circon = OnCi; FirstRad = Rad; TheType = Geom2dGcc_CuCuOnCi; @@ -263,22 +276,26 @@ Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu:: Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1 , - const Geom2dAdaptor_Curve& C2 , + const Handle(Geom2dAdaptor_Curve)& C2 , const gp_Circ2d& OnCi , const Standard_Real Rad ) { Lin1 = L1; + Curv1 = new Geom2dAdaptor_Curve(); Curv2 = C2; + Curvon = new Geom2dAdaptor_Curve(); Circon = OnCi; FirstRad = Rad; TheType = Geom2dGcc_LiCuOnCi; } Geom2dGcc_FunctionTanCuCuOnCu:: - Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1 , + Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1 , const gp_Pnt2d& P2 , const gp_Circ2d& OnCi , const Standard_Real Rad ) { Curv1 = C1; + Curv2 = new Geom2dAdaptor_Curve(); + Curvon = new Geom2dAdaptor_Curve(); Pnt2 = P2; Circon = OnCi; FirstRad = Rad; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.hxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.hxx index 0084933128..a5a9d959a8 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.hxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuCuOnCu.hxx @@ -40,29 +40,29 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1, const Geom2dAdaptor_Curve& C2, const gp_Circ2d& OnCi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Circ2d& OnCi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1, const Geom2dAdaptor_Curve& C2, const gp_Circ2d& OnCi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Circ2d& OnCi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1, const Geom2dAdaptor_Curve& C2, const gp_Circ2d& OnCi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Circ2d& OnCi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1, const gp_Pnt2d& P2, const gp_Circ2d& OnCi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1, const gp_Pnt2d& P2, const gp_Circ2d& OnCi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1, const Geom2dAdaptor_Curve& C2, const gp_Lin2d& OnLi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Lin2d& OnLi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1, const Geom2dAdaptor_Curve& C2, const gp_Lin2d& OnLi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Lin2d& OnLi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1, const Geom2dAdaptor_Curve& C2, const gp_Lin2d& OnLi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1, const Handle(Geom2dAdaptor_Curve)& C2, const gp_Lin2d& OnLi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1, const gp_Pnt2d& P2, const gp_Lin2d& OnLi, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1, const gp_Pnt2d& P2, const gp_Lin2d& OnLi, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1, const Geom2dAdaptor_Curve& C2, const Geom2dAdaptor_Curve& OnCu, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1, const Handle(Geom2dAdaptor_Curve)& C2, const Handle(Geom2dAdaptor_Curve)& OnCu, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1, const Geom2dAdaptor_Curve& C2, const Geom2dAdaptor_Curve& OnCu, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Circ2d& C1, const Handle(Geom2dAdaptor_Curve)& C2, const Handle(Geom2dAdaptor_Curve)& OnCu, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1, const Geom2dAdaptor_Curve& C2, const Geom2dAdaptor_Curve& OnCu, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const gp_Lin2d& L1, const Handle(Geom2dAdaptor_Curve)& C2, const Handle(Geom2dAdaptor_Curve)& OnCu, const Standard_Real Rad); - Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Geom2dAdaptor_Curve& C1, const gp_Pnt2d& P1, const Geom2dAdaptor_Curve& OnCu, const Standard_Real Rad); + Standard_EXPORT Geom2dGcc_FunctionTanCuCuOnCu(const Handle(Geom2dAdaptor_Curve)& C1, const gp_Pnt2d& P1, const Handle(Geom2dAdaptor_Curve)& OnCu, const Standard_Real Rad); Standard_EXPORT void InitDerivative (const math_Vector& X, gp_Pnt2d& Point1, gp_Pnt2d& Point2, gp_Pnt2d& Point3, gp_Vec2d& Tan1, gp_Vec2d& Tan2, gp_Vec2d& Tan3, gp_Vec2d& D21, gp_Vec2d& D22, gp_Vec2d& D23); @@ -95,14 +95,14 @@ private: - Geom2dAdaptor_Curve Curv1; - Geom2dAdaptor_Curve Curv2; + Handle(Geom2dAdaptor_Curve) Curv1; + Handle(Geom2dAdaptor_Curve) Curv2; gp_Circ2d Circ1; gp_Lin2d Lin1; gp_Pnt2d Pnt2; gp_Circ2d Circon; gp_Lin2d Linon; - Geom2dAdaptor_Curve Curvon; + Handle(Geom2dAdaptor_Curve) Curvon; Standard_Real FirstRad; Geom2dGcc_Type2 TheType; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.cxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.cxx index 7e85bcedbb..9839989eb2 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.cxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.cxx @@ -36,7 +36,7 @@ // N.N N*N*N*CP1*CP1*CP1 + //========================================================================= Geom2dGcc_FunctionTanCuPnt:: -Geom2dGcc_FunctionTanCuPnt(const Geom2dAdaptor_Curve& C , +Geom2dGcc_FunctionTanCuPnt(const Handle(Geom2dAdaptor_Curve)& C , const gp_Pnt2d& Point ) { TheCurv = C; ThePoint = Point; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.hxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.hxx index 58242b34ba..921d37ad8f 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.hxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanCuPnt.hxx @@ -36,7 +36,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dGcc_FunctionTanCuPnt(const Geom2dAdaptor_Curve& C, const gp_Pnt2d& Point); + Standard_EXPORT Geom2dGcc_FunctionTanCuPnt(const Handle(Geom2dAdaptor_Curve)& C, const gp_Pnt2d& Point); //! Computes the value of the function F for the variable X. //! It returns True if the computation is successfully done, @@ -67,7 +67,7 @@ private: - Geom2dAdaptor_Curve TheCurv; + Handle(Geom2dAdaptor_Curve) TheCurv; gp_Pnt2d ThePoint; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.cxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.cxx index b23d1bdc64..7e87522d02 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.cxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.cxx @@ -22,7 +22,7 @@ #include Geom2dGcc_FunctionTanObl:: -Geom2dGcc_FunctionTanObl(const Geom2dAdaptor_Curve& C, +Geom2dGcc_FunctionTanObl(const Handle(Geom2dAdaptor_Curve)& C, const gp_Dir2d& Dir ) { TheCurv = C; diff --git a/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.hxx b/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.hxx index 41e1f093b9..7017244b3e 100644 --- a/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.hxx +++ b/src/Geom2dGcc/Geom2dGcc_FunctionTanObl.hxx @@ -34,7 +34,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dGcc_FunctionTanObl(const Geom2dAdaptor_Curve& Curve, const gp_Dir2d& Dir); + Standard_EXPORT Geom2dGcc_FunctionTanObl(const Handle(Geom2dAdaptor_Curve)& Curve, const gp_Dir2d& Dir); //! Computes the value of the function F for the variable X. //! It returns True if the computation is successfully done, @@ -65,7 +65,7 @@ private: - Geom2dAdaptor_Curve TheCurv; + Handle(Geom2dAdaptor_Curve) TheCurv; gp_Dir2d TheDirection; diff --git a/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.cxx b/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.cxx index 14ad20d020..2a4d329f3e 100644 --- a/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.cxx @@ -44,12 +44,12 @@ Geom2dGcc_Lin2d2Tan:: pararg1(1,4) , pararg2(1,4) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve C2 = Qualified2.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) CC2 = C2.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type2 = C2.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) C2 = Qualified2.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) CC2 = C2->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type2 = C2->GetType(); //============================================================================= // Appel a GccAna. + @@ -126,9 +126,9 @@ Geom2dGcc_Lin2d2Tan:: pararg1(1,2) , pararg2(1,2) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); //============================================================================= // Appel a GccAna. + @@ -165,7 +165,7 @@ Geom2dGcc_Lin2d2Tan:: Geom2dGcc_Lin2d2TanIter Lin(Qc1,ThePoint,Param1,Tolang); if (Lin.IsDone()) { - if (Add(NbrSol + 1, Lin, Tolang, C1, Geom2dAdaptor_Curve())) + if (Add(NbrSol + 1, Lin, Tolang, C1, new Geom2dAdaptor_Curve())) NbrSol++; } @@ -194,12 +194,12 @@ Geom2dGcc_Lin2d2Tan:: pararg1(1,4) , pararg2(1,4) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve C2 = Qualified2.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - Handle(Geom2d_Curve) CC2 = C2.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); - GeomAbs_CurveType Type2 = C2.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) C2 = Qualified2.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + Handle(Geom2d_Curve) CC2 = C2->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); + GeomAbs_CurveType Type2 = C2->GetType(); //============================================================================= // Appel a GccAna. + @@ -259,9 +259,9 @@ Geom2dGcc_Lin2d2Tan:: pararg1(1,2) , pararg2(1,2) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); //============================================================================= // Appel a GccAna. + @@ -361,8 +361,8 @@ void Geom2dGcc_Lin2d2Tan:: Standard_Boolean Geom2dGcc_Lin2d2Tan::Add(const Standard_Integer theIndex, const Geom2dGcc_Lin2d2TanIter &theLin, const Standard_Real theTol, - const Geom2dAdaptor_Curve &theC1, - const Geom2dAdaptor_Curve &theC2) + const Handle(Geom2dAdaptor_Curve) &theC1, + const Handle(Geom2dAdaptor_Curve) &theC2) { Standard_Integer i; Standard_Real aPar1sol; @@ -391,7 +391,7 @@ Standard_Boolean Geom2dGcc_Lin2d2Tan::Add(const Standard_Integer theIndex, if (Abs(aLinDir.Crossed(gp_Dir2d(aVTan))) > theTol) return Standard_False; - if (!theC2.Curve().IsNull()) { + if (!theC2->Curve().IsNull()) { Geom2dGcc_CurveTool::D1(theC2, aPar2arg, aPoint, aVTan); if (Abs(aLinDir.Crossed(gp_Dir2d(aVTan))) > theTol) diff --git a/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.hxx b/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.hxx index 30476ebc59..b538aee067 100644 --- a/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.hxx +++ b/src/Geom2dGcc/Geom2dGcc_Lin2d2Tan.hxx @@ -149,7 +149,7 @@ protected: private: - Standard_EXPORT Standard_Boolean Add (const Standard_Integer theIndex, const Geom2dGcc_Lin2d2TanIter& theLin, const Standard_Real theTol, const Geom2dAdaptor_Curve& theC1, const Geom2dAdaptor_Curve& theC2); + Standard_EXPORT Standard_Boolean Add (const Standard_Integer theIndex, const Geom2dGcc_Lin2d2TanIter& theLin, const Standard_Real theTol, const Handle(Geom2dAdaptor_Curve)& theC1, const Handle(Geom2dAdaptor_Curve)& theC2); Standard_Boolean WellDone; diff --git a/src/Geom2dGcc/Geom2dGcc_Lin2d2TanIter.cxx b/src/Geom2dGcc/Geom2dGcc_Lin2d2TanIter.cxx index 980c01b718..d27a2fb979 100644 --- a/src/Geom2dGcc/Geom2dGcc_Lin2d2TanIter.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Lin2d2TanIter.cxx @@ -54,7 +54,7 @@ Geom2dGcc_Lin2d2TanIter (const GccEnt_QualifiedCirc& Qualified1 , qualifier2 = GccEnt_noqualifier; if (Qualified1.IsEnclosed()) { throw GccEnt_BadQualifier(); } gp_Circ2d C1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); Standard_Real U1 = Geom2dGcc_CurveTool::FirstParameter(Cu2); Standard_Real U2 = Geom2dGcc_CurveTool::LastParameter(Cu2); Geom2dGcc_FunctionTanCirCu func(C1,Cu2); @@ -136,8 +136,8 @@ Geom2dGcc_Lin2d2TanIter (const Geom2dGcc_QCurve& Qualified1 , throw GccEnt_BadQualifier(); return; } - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); - Geom2dAdaptor_Curve Cu2 = Qualified2.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu2 = Qualified2.Qualified(); Geom2dGcc_FunctionTanCuCu Func(Cu1,Cu2); math_Vector Umin(1,2); math_Vector Umax(1,2); @@ -212,7 +212,7 @@ Geom2dGcc_Lin2d2TanIter (const Geom2dGcc_QCurve& Qualified1 , throw GccEnt_BadQualifier(); return; } - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); Standard_Real U1 = Geom2dGcc_CurveTool::FirstParameter(Cu1); Standard_Real U2 = Geom2dGcc_CurveTool::LastParameter(Cu1); Geom2dGcc_FunctionTanCuPnt func(Cu1,ThePoint); diff --git a/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.cxx b/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.cxx index 560614e6c7..356f6dc312 100644 --- a/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.cxx @@ -44,9 +44,9 @@ Geom2dGcc_Lin2dTanObl:: pararg1(1,2) , pararg2(1,2) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); //============================================================================= // Appel a GccAna. + @@ -110,9 +110,9 @@ Geom2dGcc_Lin2dTanObl:: pararg1(1,2) , pararg2(1,2) { - Geom2dAdaptor_Curve C1 = Qualified1.Qualified(); - Handle(Geom2d_Curve) CC1 = C1.Curve(); - GeomAbs_CurveType Type1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = Qualified1.Qualified(); + Handle(Geom2d_Curve) CC1 = C1->Curve(); + GeomAbs_CurveType Type1 = C1->GetType(); //============================================================================= // Appel a GccAna. + @@ -203,7 +203,7 @@ Standard_Boolean Geom2dGcc_Lin2dTanObl::Add (const Standard_Integer theIndex, const Geom2dGcc_Lin2dTanOblIter &theLin, const Standard_Real theTol, - const Geom2dAdaptor_Curve &theC1) + const Handle(Geom2dAdaptor_Curve) &theC1) { Standard_Integer i; Standard_Real aPar1sol; diff --git a/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.hxx b/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.hxx index 789a88297e..5d3756da43 100644 --- a/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.hxx +++ b/src/Geom2dGcc/Geom2dGcc_Lin2dTanObl.hxx @@ -145,7 +145,7 @@ protected: private: - Standard_EXPORT Standard_Boolean Add (const Standard_Integer theIndex, const Geom2dGcc_Lin2dTanOblIter& theLin, const Standard_Real theTol, const Geom2dAdaptor_Curve& theC1); + Standard_EXPORT Standard_Boolean Add (const Standard_Integer theIndex, const Geom2dGcc_Lin2dTanOblIter& theLin, const Standard_Real theTol, const Handle(Geom2dAdaptor_Curve)& theC1); Standard_Boolean WellDone; diff --git a/src/Geom2dGcc/Geom2dGcc_Lin2dTanOblIter.cxx b/src/Geom2dGcc/Geom2dGcc_Lin2dTanOblIter.cxx index 802c7db4db..7acd2d7a72 100644 --- a/src/Geom2dGcc/Geom2dGcc_Lin2dTanOblIter.cxx +++ b/src/Geom2dGcc/Geom2dGcc_Lin2dTanOblIter.cxx @@ -53,7 +53,7 @@ Geom2dGcc_Lin2dTanOblIter (const Geom2dGcc_QCurve& Qualified1 , return; } Paral2 = Standard_False; - Geom2dAdaptor_Curve Cu1 = Qualified1.Qualified(); + Handle(Geom2dAdaptor_Curve) Cu1 = Qualified1.Qualified(); Standard_Real U1 = Geom2dGcc_CurveTool::FirstParameter(Cu1); Standard_Real U2 = Geom2dGcc_CurveTool::LastParameter(Cu1); gp_Dir2d Dir(TheLin.Direction()); diff --git a/src/Geom2dGcc/Geom2dGcc_QCurve.cxx b/src/Geom2dGcc/Geom2dGcc_QCurve.cxx index b760d1f80d..614a4427f8 100644 --- a/src/Geom2dGcc/Geom2dGcc_QCurve.cxx +++ b/src/Geom2dGcc/Geom2dGcc_QCurve.cxx @@ -16,7 +16,7 @@ #include //#include -Geom2dAdaptor_Curve Geom2dGcc_QCurve:: +Handle(Geom2dAdaptor_Curve) Geom2dGcc_QCurve:: Qualified () const { return TheQualified; } GccEnt_Position Geom2dGcc_QCurve:: @@ -47,7 +47,7 @@ Standard_Boolean Geom2dGcc_QCurve:: } Geom2dGcc_QCurve:: - Geom2dGcc_QCurve (const Geom2dAdaptor_Curve& Curve, + Geom2dGcc_QCurve (const Handle(Geom2dAdaptor_Curve)& Curve, const GccEnt_Position Qualifier) { TheQualified = Curve; TheQualifier = Qualifier; diff --git a/src/Geom2dGcc/Geom2dGcc_QCurve.hxx b/src/Geom2dGcc/Geom2dGcc_QCurve.hxx index 1b7b2b9ff9..40cea453a7 100644 --- a/src/Geom2dGcc/Geom2dGcc_QCurve.hxx +++ b/src/Geom2dGcc/Geom2dGcc_QCurve.hxx @@ -34,9 +34,9 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dGcc_QCurve(const Geom2dAdaptor_Curve& Curve, const GccEnt_Position Qualifier); + Standard_EXPORT Geom2dGcc_QCurve(const Handle(Geom2dAdaptor_Curve)& Curve, const GccEnt_Position Qualifier); - Standard_EXPORT Geom2dAdaptor_Curve Qualified() const; + Standard_EXPORT Handle(Geom2dAdaptor_Curve) Qualified() const; Standard_EXPORT GccEnt_Position Qualifier() const; @@ -70,7 +70,7 @@ private: GccEnt_Position TheQualifier; - Geom2dAdaptor_Curve TheQualified; + Handle(Geom2dAdaptor_Curve) TheQualified; }; diff --git a/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.cxx b/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.cxx index 383a63d0f9..8c2385378f 100644 --- a/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.cxx +++ b/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.cxx @@ -16,13 +16,13 @@ #include Geom2dGcc_QualifiedCurve:: - Geom2dGcc_QualifiedCurve (const Geom2dAdaptor_Curve& Curve , + Geom2dGcc_QualifiedCurve (const Handle(Geom2dAdaptor_Curve)& Curve , const GccEnt_Position Qualifier) { TheQualified = Curve; TheQualifier = Qualifier; } -Geom2dAdaptor_Curve Geom2dGcc_QualifiedCurve:: +const Handle(Geom2dAdaptor_Curve)& Geom2dGcc_QualifiedCurve:: Qualified () const { return TheQualified; } GccEnt_Position Geom2dGcc_QualifiedCurve:: diff --git a/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.hxx b/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.hxx index dba04b693d..4f93eedfb7 100644 --- a/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.hxx +++ b/src/Geom2dGcc/Geom2dGcc_QualifiedCurve.hxx @@ -62,7 +62,7 @@ public: //! GccEnt_Position myQualif = GccEnt_outside ; //! Geom2dGcc_QualifiedCurve myQCurve ( Curve, myQualif ); //! is private; - Standard_EXPORT Geom2dGcc_QualifiedCurve(const Geom2dAdaptor_Curve& Curve, const GccEnt_Position Qualifier); + Standard_EXPORT Geom2dGcc_QualifiedCurve(const Handle(Geom2dAdaptor_Curve)& Curve, const GccEnt_Position Qualifier); //! Returns a 2D curve to which the qualifier is assigned. //! Warning @@ -73,9 +73,9 @@ public: //! The Geom2d curve on which the adapted curve is //! based can be obtained in the following way: //! myQualifiedCurve = ... ; - //! Geom2dAdaptor_Curve myAdaptedCurve = myQualifiedCurve.Qualified(); - //! Handle(Geom2d_Curve) = myAdaptedCurve.Curve(); - Standard_EXPORT Geom2dAdaptor_Curve Qualified() const; + //! Handle(Geom2dAdaptor_Curve) myAdaptedCurve = myQualifiedCurve->Qualified(); + //! Handle(Geom2d_Curve) = myAdaptedCurve->Curve(); + Standard_EXPORT const Handle(Geom2dAdaptor_Curve)& Qualified() const; //! Returns //! - the qualifier of this qualified curve if it is enclosing, @@ -112,7 +112,7 @@ private: GccEnt_Position TheQualifier; - Geom2dAdaptor_Curve TheQualified; + Handle(Geom2dAdaptor_Curve) TheQualified; }; diff --git a/src/Geom2dHatch/Geom2dHatch_Classifier.hxx b/src/Geom2dHatch/Geom2dHatch_Classifier.hxx index 13fee08517..ed26d0c39b 100644 --- a/src/Geom2dHatch/Geom2dHatch_Classifier.hxx +++ b/src/Geom2dHatch/Geom2dHatch_Classifier.hxx @@ -65,7 +65,7 @@ public: //! Returns the Edge used to determine the //! classification. When the State is ON this is the //! Edge containing the point. - Standard_EXPORT const Geom2dAdaptor_Curve& Edge() const; + Standard_EXPORT const Handle(Geom2dAdaptor_Curve)& Edge() const; //! Returns the parameter on Edge() used to determine the //! classification. @@ -83,7 +83,7 @@ protected: Geom2dHatch_FClass2dOfClassifier myClassifier; - Geom2dAdaptor_Curve myEdge; + Handle(Geom2dAdaptor_Curve) myEdge; Standard_Real myEdgeParameter; IntRes2d_Position myPosition; Standard_Boolean rejected; diff --git a/src/Geom2dHatch/Geom2dHatch_Classifier_0.cxx b/src/Geom2dHatch/Geom2dHatch_Classifier_0.cxx index 431f1d80ab..bb02a3aca9 100644 --- a/src/Geom2dHatch/Geom2dHatch_Classifier_0.cxx +++ b/src/Geom2dHatch/Geom2dHatch_Classifier_0.cxx @@ -26,7 +26,7 @@ #define TheFaceExplorer Geom2dHatch_Elements #define TheFaceExplorer_hxx -#define TheEdge Geom2dAdaptor_Curve +#define TheEdge Handle(Geom2dAdaptor_Curve) #define TheEdge_hxx #define TheIntersection2d Geom2dHatch_Intersector #define TheIntersection2d_hxx diff --git a/src/Geom2dHatch/Geom2dHatch_Element.cxx b/src/Geom2dHatch/Geom2dHatch_Element.cxx index 35248b804c..fa835aa77e 100644 --- a/src/Geom2dHatch/Geom2dHatch_Element.cxx +++ b/src/Geom2dHatch/Geom2dHatch_Element.cxx @@ -24,6 +24,7 @@ //======================================================================= Geom2dHatch_Element::Geom2dHatch_Element () { + myCurve = new Geom2dAdaptor_Curve(); } //======================================================================= @@ -31,7 +32,7 @@ Geom2dHatch_Element::Geom2dHatch_Element () { // Purpose : Constructor. //======================================================================= -Geom2dHatch_Element::Geom2dHatch_Element (const Geom2dAdaptor_Curve& Curve, +Geom2dHatch_Element::Geom2dHatch_Element (const Handle(Geom2dAdaptor_Curve)& Curve, const TopAbs_Orientation Orientation) : myCurve (Curve), myOrientation (Orientation) @@ -43,19 +44,9 @@ Geom2dHatch_Element::Geom2dHatch_Element (const Geom2dAdaptor_Curve& Curve, // Purpose : Returns the curve associated to the hatching. //======================================================================= -const Geom2dAdaptor_Curve& Geom2dHatch_Element::Curve () const +const Handle(Geom2dAdaptor_Curve)& Geom2dHatch_Element::Curve () const { - return myCurve ; -} - -//======================================================================= -// Function : ChangeCurve -// Purpose : Returns the curve associated to the hatching. -//======================================================================= - -Geom2dAdaptor_Curve& Geom2dHatch_Element::ChangeCurve () -{ - return myCurve ; + return myCurve; } //======================================================================= diff --git a/src/Geom2dHatch/Geom2dHatch_Element.hxx b/src/Geom2dHatch/Geom2dHatch_Element.hxx index 554b5ba95a..eba2b9d6ac 100644 --- a/src/Geom2dHatch/Geom2dHatch_Element.hxx +++ b/src/Geom2dHatch/Geom2dHatch_Element.hxx @@ -36,13 +36,10 @@ public: Standard_EXPORT Geom2dHatch_Element(); //! Creates an element. - Standard_EXPORT Geom2dHatch_Element(const Geom2dAdaptor_Curve& Curve, const TopAbs_Orientation Orientation = TopAbs_FORWARD); + Standard_EXPORT Geom2dHatch_Element(const Handle(Geom2dAdaptor_Curve)& Curve, const TopAbs_Orientation Orientation = TopAbs_FORWARD); //! Returns the curve associated to the element. - Standard_EXPORT const Geom2dAdaptor_Curve& Curve() const; - - //! Returns the curve associated to the element. - Standard_EXPORT Geom2dAdaptor_Curve& ChangeCurve(); + Standard_EXPORT const Handle(Geom2dAdaptor_Curve)& Curve() const; //! Sets the orientation of the element. Standard_EXPORT void Orientation (const TopAbs_Orientation Orientation); @@ -63,7 +60,7 @@ private: - Geom2dAdaptor_Curve myCurve; + Handle(Geom2dAdaptor_Curve) myCurve; TopAbs_Orientation myOrientation; diff --git a/src/Geom2dHatch/Geom2dHatch_Elements.cxx b/src/Geom2dHatch/Geom2dHatch_Elements.cxx index 5b4b63235d..d899d6ca63 100644 --- a/src/Geom2dHatch/Geom2dHatch_Elements.cxx +++ b/src/Geom2dHatch/Geom2dHatch_Elements.cxx @@ -128,11 +128,11 @@ Standard_Boolean Geom2dHatch_Elements::OtherSegment (const gp_Pnt2d& P, void *ptrmyMap = (void *)(&myMap); Geom2dHatch_Element& Item = ((Geom2dHatch_MapOfElements*)ptrmyMap)->ChangeFind (Itertemp.Key()); - Geom2dAdaptor_Curve& E = Item.ChangeCurve(); + Handle(Geom2dAdaptor_Curve) E = Item.Curve(); TopAbs_Orientation Or = Item.Orientation(); if (Or == TopAbs_FORWARD || Or == TopAbs_REVERSED) { - Standard_Real aFPar = E.FirstParameter(), aLPar = E.LastParameter(); + Standard_Real aFPar = E->FirstParameter(), aLPar = E->LastParameter(); if (Precision::IsNegativeInfinite (aFPar)) { if (Precision::IsPositiveInfinite (aLPar)) @@ -151,7 +151,7 @@ Standard_Boolean Geom2dHatch_Elements::OtherSegment (const gp_Pnt2d& P, Standard_Real aParam = myCurEdgePar * aFPar + (1. - myCurEdgePar) * aLPar; gp_Vec2d aTanVec; gp_Pnt2d aPOnC; - E.D1 (aParam, aPOnC, aTanVec); + E->D1 (aParam, aPOnC, aTanVec); gp_Vec2d aLinVec (P, aPOnC); Par = aLinVec.SquareMagnitude(); if (Par > Precision::SquarePConfusion()) @@ -173,10 +173,10 @@ Standard_Boolean Geom2dHatch_Elements::OtherSegment (const gp_Pnt2d& P, L = gp_Lin2d (P, aLinDir); - aPOnC = E.Value (aFPar); + aPOnC = E->Value (aFPar); if (L.SquareDistance (aPOnC) > Precision::SquarePConfusion()) { - aPOnC = E.Value (aLPar); + aPOnC = E->Value (aLPar); if (L.SquareDistance (aPOnC) > Precision::SquarePConfusion()) { myCurEdgePar += Probing_Step; @@ -249,18 +249,18 @@ Standard_Boolean Geom2dHatch_Elements::RejectEdge(const gp_Lin2d& , //purpose : //======================================================================= -void Geom2dHatch_Elements::CurrentEdge(Geom2dAdaptor_Curve& E, +void Geom2dHatch_Elements::CurrentEdge(Handle(Geom2dAdaptor_Curve)& E, TopAbs_Orientation& Or) const { void *ptrmyMap = (void *)(&myMap); Geom2dHatch_Element& Item=((Geom2dHatch_MapOfElements*)ptrmyMap)->ChangeFind(Iter.Key()); - E = Item.ChangeCurve(); + E = Item.Curve(); Or= Item.Orientation(); #if 0 - E.Edge() = TopoDS::Edge(myEExplorer.Current()); - E.Face() = myFace; - Or = E.Edge().Orientation(); + E->Edge() = TopoDS::Edge(myEExplorer.Current()); + E->Face() = myFace; + Or = E->Edge().Orientation(); #endif } diff --git a/src/Geom2dHatch/Geom2dHatch_Elements.hxx b/src/Geom2dHatch/Geom2dHatch_Elements.hxx index 01271cddcf..3ba4eb6449 100644 --- a/src/Geom2dHatch/Geom2dHatch_Elements.hxx +++ b/src/Geom2dHatch/Geom2dHatch_Elements.hxx @@ -90,7 +90,7 @@ Geom2dHatch_Element& operator() (const Standard_Integer K) Standard_EXPORT Standard_Boolean RejectEdge (const gp_Lin2d& L, const Standard_Real Par) const; - Standard_EXPORT void CurrentEdge (Geom2dAdaptor_Curve& E, TopAbs_Orientation& Or) const; + Standard_EXPORT void CurrentEdge (Handle(Geom2dAdaptor_Curve)& E, TopAbs_Orientation& Or) const; diff --git a/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier.hxx b/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier.hxx index acefb8d2f3..2caee7ddd8 100644 --- a/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier.hxx +++ b/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier.hxx @@ -52,7 +52,7 @@ public: //! Updates the classification process with the edge //! from the boundary. - Standard_EXPORT void Compare (const Geom2dAdaptor_Curve& E, const TopAbs_Orientation Or); + Standard_EXPORT void Compare (const Handle(Geom2dAdaptor_Curve)& E, const TopAbs_Orientation Or); //! Returns the current value of the parameter. Standard_Real Parameter() const; diff --git a/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier_0.cxx b/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier_0.cxx index ffb15c332e..ac723ada45 100644 --- a/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier_0.cxx +++ b/src/Geom2dHatch/Geom2dHatch_FClass2dOfClassifier_0.cxx @@ -22,7 +22,7 @@ #include -#define TheEdge Geom2dAdaptor_Curve +#define TheEdge Handle(Geom2dAdaptor_Curve) #define TheEdge_hxx #define TheIntersector Geom2dHatch_Intersector #define TheIntersector_hxx diff --git a/src/Geom2dHatch/Geom2dHatch_Hatcher.cxx b/src/Geom2dHatch/Geom2dHatch_Hatcher.cxx index 0f84262502..89a030f759 100644 --- a/src/Geom2dHatch/Geom2dHatch_Hatcher.cxx +++ b/src/Geom2dHatch/Geom2dHatch_Hatcher.cxx @@ -158,7 +158,7 @@ void Geom2dHatch_Hatcher::KeepSegments (const Standard_Boolean Keep) // Purpose : Adds an element to the Hatcher and returns its index. //======================================================================= -Standard_Integer Geom2dHatch_Hatcher::AddElement (const Geom2dAdaptor_Curve& Curve, +Standard_Integer Geom2dHatch_Hatcher::AddElement (const Handle(Geom2dAdaptor_Curve)& Curve, const TopAbs_Orientation Orientation) { Standard_Integer IndE ; @@ -242,7 +242,7 @@ void Geom2dHatch_Hatcher::ClrElements () // Purpose : Adds a hatching to the hatcher and returns its index. //======================================================================= -Standard_Integer Geom2dHatch_Hatcher::AddHatching (const Geom2dAdaptor_Curve& Curve) +Standard_Integer Geom2dHatch_Hatcher::AddHatching (const Handle(Geom2dAdaptor_Curve)& Curve) { Standard_Integer IndH ; for (IndH = 1 ; IndH <= myNbHatchings && myHatchings.IsBound(IndH) ; IndH++) ; @@ -317,7 +317,7 @@ void Geom2dHatch_Hatcher::Trim () // already given and returns its index. //======================================================================= -Standard_Integer Geom2dHatch_Hatcher::Trim (const Geom2dAdaptor_Curve& Curve) +Standard_Integer Geom2dHatch_Hatcher::Trim (const Handle(Geom2dAdaptor_Curve)& Curve) { Standard_Integer IndH = AddHatching (Curve) ; Trim (IndH) ; @@ -449,8 +449,8 @@ Standard_Boolean Geom2dHatch_Hatcher::Trim (const Standard_Integer IndH, Geom2dHatch_Hatching& Hatching = myHatchings.ChangeFind (IndH) ; Geom2dHatch_Element& Element = myElements.ChangeFind (IndE) ; - Geom2dAdaptor_Curve hatching = Hatching.ChangeCurve() ; - Geom2dAdaptor_Curve element = Element.ChangeCurve() ; + Handle(Geom2dAdaptor_Curve) hatching = Hatching.Curve(); + Handle(Geom2dAdaptor_Curve) element = Element.Curve(); myIntersector.Intersect (hatching, element) ; @@ -746,9 +746,9 @@ Standard_Boolean Geom2dHatch_Hatcher::GlobalTransition (HatchGen_PointOnHatching gp_Dir Tangente, Normale ; Standard_Real Courbure ; - const Geom2dAdaptor_Curve& CurveH = HatchingCurve (Point.Index()) ; + const Handle(Geom2dAdaptor_Curve)& CurveH = HatchingCurve (Point.Index()) ; - myIntersector.LocalGeometry(CurveH.Curve(), Point.Parameter(), Tangente2d, Normale2d, Courbure); + myIntersector.LocalGeometry(new Geom2dAdaptor_Curve(CurveH->Curve()), Point.Parameter(), Tangente2d, Normale2d, Courbure); Tangente.SetCoord (Tangente2d.X(), Tangente2d.Y(), 0.0) ; if (Courbure < Precision::Confusion()) { @@ -773,7 +773,7 @@ Standard_Boolean Geom2dHatch_Hatcher::GlobalTransition (HatchGen_PointOnHatching SegmentEnd = SegmentEnd || PntE.SegmentEnd() ; const Geom2dHatch_Element& Element = myElements.Find (PntE.Index()) ; - const Geom2dAdaptor_Curve& CurveE = Element.Curve() ; + const Handle(Geom2dAdaptor_Curve)& CurveE = Element.Curve() ; TopAbs_Orientation ElementOrientation = Element.Orientation() ; Standard_Boolean ToReverse = (ElementOrientation == TopAbs_REVERSED); @@ -781,7 +781,7 @@ Standard_Boolean Geom2dHatch_Hatcher::GlobalTransition (HatchGen_PointOnHatching switch (PntE.Position()) { case TopAbs_FORWARD : - Param = ToReverse ? CurveE.LastParameter() : CurveE.FirstParameter() ; + Param = ToReverse ? CurveE->LastParameter() : CurveE->FirstParameter() ; break ; case TopAbs_INTERNAL : @@ -789,7 +789,7 @@ Standard_Boolean Geom2dHatch_Hatcher::GlobalTransition (HatchGen_PointOnHatching break ; case TopAbs_REVERSED : - Param = ToReverse ? CurveE.FirstParameter() : CurveE.LastParameter() ; + Param = ToReverse ? CurveE->FirstParameter() : CurveE->LastParameter() ; break ; default: @@ -802,7 +802,7 @@ Standard_Boolean Geom2dHatch_Hatcher::GlobalTransition (HatchGen_PointOnHatching #endif Param = PntE.Parameter(); - myIntersector.LocalGeometry(CurveE.Curve(), Param, Tangente2d, Normale2d, Courbure); + myIntersector.LocalGeometry(new Geom2dAdaptor_Curve(CurveE->Curve()), Param, Tangente2d, Normale2d, Courbure); //----------------------------------------------------------------------- // Calcul de la transition locale. On suppose les relations suivantes : diff --git a/src/Geom2dHatch/Geom2dHatch_Hatcher.hxx b/src/Geom2dHatch/Geom2dHatch_Hatcher.hxx index cbef299f16..98b72af858 100644 --- a/src/Geom2dHatch/Geom2dHatch_Hatcher.hxx +++ b/src/Geom2dHatch/Geom2dHatch_Hatcher.hxx @@ -85,15 +85,15 @@ public: void Clear(); //! Returns the curve associated to the IndE-th element. - const Geom2dAdaptor_Curve& ElementCurve (const Standard_Integer IndE) const; + const Handle(Geom2dAdaptor_Curve)& ElementCurve (const Standard_Integer IndE) const; //! Adds an element to the hatcher and returns its index. - Standard_EXPORT Standard_Integer AddElement (const Geom2dAdaptor_Curve& Curve, const TopAbs_Orientation Orientation = TopAbs_FORWARD); + Standard_EXPORT Standard_Integer AddElement (const Handle(Geom2dAdaptor_Curve)& Curve, const TopAbs_Orientation Orientation = TopAbs_FORWARD); //! Adds an element to the hatcher and returns its index. Standard_Integer AddElement (const Handle(Geom2d_Curve)& Curve, const TopAbs_Orientation Orientation = TopAbs_FORWARD) { - Geom2dAdaptor_Curve aGAC (Curve); + Handle(Geom2dAdaptor_Curve) aGAC = new Geom2dAdaptor_Curve(Curve); return AddElement (aGAC, Orientation); } @@ -104,10 +104,10 @@ public: Standard_EXPORT void ClrElements(); //! Returns the curve associated to the IndH-th hatching. - const Geom2dAdaptor_Curve& HatchingCurve (const Standard_Integer IndH) const; + const Handle(Geom2dAdaptor_Curve)& HatchingCurve (const Standard_Integer IndH) const; //! Adds a hatching to the hatcher and returns its index. - Standard_EXPORT Standard_Integer AddHatching (const Geom2dAdaptor_Curve& Curve); + Standard_EXPORT Standard_Integer AddHatching (const Handle(Geom2dAdaptor_Curve)& Curve); //! Removes the IndH-th hatching from the hatcher. Standard_EXPORT void RemHatching (const Standard_Integer IndH); @@ -129,7 +129,7 @@ public: //! Adds a hatching to the hatcher and trims it by //! the elements already given and returns its index. - Standard_EXPORT Standard_Integer Trim (const Geom2dAdaptor_Curve& Curve); + Standard_EXPORT Standard_Integer Trim (const Handle(Geom2dAdaptor_Curve)& Curve); //! Trims the IndH-th hatching by the elements //! already given. diff --git a/src/Geom2dHatch/Geom2dHatch_Hatcher.lxx b/src/Geom2dHatch/Geom2dHatch_Hatcher.lxx index 51773dd57d..2aebdd4dc3 100644 --- a/src/Geom2dHatch/Geom2dHatch_Hatcher.lxx +++ b/src/Geom2dHatch/Geom2dHatch_Hatcher.lxx @@ -114,7 +114,7 @@ inline Geom2dHatch_Element& Geom2dHatch_Hatcher::Element (const Standard_Integer // Purpose : Returns the curve associated to the IndE-th element. //======================================================================= -inline const Geom2dAdaptor_Curve& Geom2dHatch_Hatcher::ElementCurve (const Standard_Integer IndE) const +inline const Handle(Geom2dAdaptor_Curve)& Geom2dHatch_Hatcher::ElementCurve (const Standard_Integer IndE) const { #if RAISE_IF_NOSUCHOBJECT Standard_NoSuchObject_Raise_if (!myElements.IsBound (IndE), "") ; @@ -143,7 +143,7 @@ inline Geom2dHatch_Hatching& Geom2dHatch_Hatcher::Hatching (const Standard_Integ // Purpose : Returns the curve associated to the IndH-th hatching. //======================================================================= -inline const Geom2dAdaptor_Curve& Geom2dHatch_Hatcher::HatchingCurve (const Standard_Integer IndH) const +inline const Handle(Geom2dAdaptor_Curve)& Geom2dHatch_Hatcher::HatchingCurve (const Standard_Integer IndH) const { #if RAISE_IF_NOSUCHOBJECT Standard_NoSuchObject_Raise_if (!myHatchings.IsBound (IndH), "") ; diff --git a/src/Geom2dHatch/Geom2dHatch_Hatching.cxx b/src/Geom2dHatch/Geom2dHatch_Hatching.cxx index b24291c999..4bb244634d 100644 --- a/src/Geom2dHatch/Geom2dHatch_Hatching.cxx +++ b/src/Geom2dHatch/Geom2dHatch_Hatching.cxx @@ -35,6 +35,7 @@ Geom2dHatch_Hatching::Geom2dHatch_Hatching () myIsDone(Standard_False), myStatus(HatchGen_NoProblem) { + myCurve = new Geom2dAdaptor_Curve(); } //======================================================================= @@ -42,7 +43,7 @@ Geom2dHatch_Hatching::Geom2dHatch_Hatching () // Purpose : Constructor. //======================================================================= -Geom2dHatch_Hatching::Geom2dHatch_Hatching (const Geom2dAdaptor_Curve& Curve) : +Geom2dHatch_Hatching::Geom2dHatch_Hatching (const Handle(Geom2dAdaptor_Curve)& Curve) : myCurve (Curve), myTrimDone (Standard_False), myTrimFailed (Standard_False), @@ -56,21 +57,11 @@ Geom2dHatch_Hatching::Geom2dHatch_Hatching (const Geom2dAdaptor_Curve& Curve) : // Purpose : Returns the curve associated to the hatching. //======================================================================= -const Geom2dAdaptor_Curve& Geom2dHatch_Hatching::Curve () const +const Handle(Geom2dAdaptor_Curve)& Geom2dHatch_Hatching::Curve () const { return myCurve ; } - -//======================================================================= -// Function : ChangeCurve -// Purpose : Returns the curve associated to the hatching. -//======================================================================= -Geom2dAdaptor_Curve& Geom2dHatch_Hatching::ChangeCurve () -{ - return myCurve ; -} - //======================================================================= // Function : TrimDone // Purpose : Sets the flag about the trimmings computation to the given @@ -324,8 +315,8 @@ void Geom2dHatch_Hatching::ClrDomains () //======================================================================= gp_Pnt2d Geom2dHatch_Hatching::ClassificationPoint () const { Standard_Real t,a,b; - a = myCurve.FirstParameter(); - b = myCurve.LastParameter(); + a = myCurve->FirstParameter(); + b = myCurve->LastParameter(); if(b >= Precision::Infinite()) { if(a <= -Precision::Infinite()) { t=0; @@ -337,6 +328,6 @@ gp_Pnt2d Geom2dHatch_Hatching::ClassificationPoint () const { else { t = b; } - return(myCurve.Value(t)); + return(myCurve->Value(t)); } diff --git a/src/Geom2dHatch/Geom2dHatch_Hatching.hxx b/src/Geom2dHatch/Geom2dHatch_Hatching.hxx index b0495c0670..58d440e8a3 100644 --- a/src/Geom2dHatch/Geom2dHatch_Hatching.hxx +++ b/src/Geom2dHatch/Geom2dHatch_Hatching.hxx @@ -44,13 +44,10 @@ public: Standard_EXPORT Geom2dHatch_Hatching(); //! Creates a hatching. - Standard_EXPORT Geom2dHatch_Hatching(const Geom2dAdaptor_Curve& Curve); + Standard_EXPORT Geom2dHatch_Hatching(const Handle(Geom2dAdaptor_Curve)& Curve); //! Returns the curve associated to the hatching. - Standard_EXPORT const Geom2dAdaptor_Curve& Curve() const; - - //! Returns the curve associated to the hatching. - Standard_EXPORT Geom2dAdaptor_Curve& ChangeCurve(); + Standard_EXPORT const Handle(Geom2dAdaptor_Curve)& Curve() const; //! Sets the flag about the trimming computations to the //! given value. @@ -143,7 +140,7 @@ private: - Geom2dAdaptor_Curve myCurve; + Handle(Geom2dAdaptor_Curve) myCurve; Standard_Boolean myTrimDone; Standard_Boolean myTrimFailed; HatchGen_PointsOnHatching myPoints; diff --git a/src/Geom2dHatch/Geom2dHatch_Intersector.cxx b/src/Geom2dHatch/Geom2dHatch_Intersector.cxx index 3719ed8c1c..9f330277e6 100644 --- a/src/Geom2dHatch/Geom2dHatch_Intersector.cxx +++ b/src/Geom2dHatch/Geom2dHatch_Intersector.cxx @@ -41,7 +41,7 @@ myTangencyTolerance(0.0) void Geom2dHatch_Intersector::Perform(const gp_Lin2d& L, const Standard_Real P, const Standard_Real Tol, - const Geom2dAdaptor_Curve& C) + const Handle(Geom2dAdaptor_Curve)& C) { //Standard_Real pfbid,plbid; @@ -51,18 +51,17 @@ void Geom2dHatch_Intersector::Perform(const gp_Lin2d& L, else DL.SetValues(L.Location(),0.,Tol,Standard_True); - IntRes2d_Domain DE(C.Value(C.FirstParameter()), - C.FirstParameter(),Precision::PIntersection(), - C.Value(C.LastParameter()), - C.LastParameter(),Precision::PIntersection()); + IntRes2d_Domain DE(C->Value(C->FirstParameter()), + C->FirstParameter(),Precision::PIntersection(), + C->Value(C->LastParameter()), + C->LastParameter(),Precision::PIntersection()); Handle(Geom2d_Line) GL= new Geom2d_Line(L); - Geom2dAdaptor_Curve CGA(GL); - void *ptrpoureviterlesproblemesdeconst = (void *)(&C); + Handle(Geom2dAdaptor_Curve) CGA = new Geom2dAdaptor_Curve(GL); Geom2dInt_GInter Inter(CGA, DL, - *((Geom2dAdaptor_Curve *)ptrpoureviterlesproblemesdeconst), + C, DE, Precision::PConfusion(), Precision::PIntersection()); @@ -74,14 +73,14 @@ void Geom2dHatch_Intersector::Perform(const gp_Lin2d& L, //purpose : //======================================================================= -void Geom2dHatch_Intersector::LocalGeometry(const Geom2dAdaptor_Curve& E, +void Geom2dHatch_Intersector::LocalGeometry(const Handle(Geom2dAdaptor_Curve)& E, const Standard_Real U, gp_Dir2d& Tang, gp_Dir2d& Norm, Standard_Real& C) const { //Standard_Real f,l; - Geom2dLProp_CLProps2d Prop(E.Curve(),U,2,Precision::PConfusion()); + Geom2dLProp_CLProps2d Prop(E->Curve(),U,2,Precision::PConfusion()); if(!Prop.IsTangentDefined()) return; diff --git a/src/Geom2dHatch/Geom2dHatch_Intersector.hxx b/src/Geom2dHatch/Geom2dHatch_Intersector.hxx index 9c857f4c57..aa5b325961 100644 --- a/src/Geom2dHatch/Geom2dHatch_Intersector.hxx +++ b/src/Geom2dHatch/Geom2dHatch_Intersector.hxx @@ -55,7 +55,7 @@ public: //! The results are retrieved by the usual methods //! described in IntRes2d_Intersection. //! Creates an intersector. - void Intersect (const Geom2dAdaptor_Curve& C1, const Geom2dAdaptor_Curve& C2); + void Intersect (const Handle(Geom2dAdaptor_Curve)& C1, const Handle(Geom2dAdaptor_Curve)& C2); Standard_EXPORT Geom2dHatch_Intersector(); @@ -66,12 +66,12 @@ public: //! RealLast()). Tol is the Tolerance on the segment. //! The order is relevant, the first argument is the //! segment, the second the Edge. - Standard_EXPORT void Perform (const gp_Lin2d& L, const Standard_Real P, const Standard_Real Tol, const Geom2dAdaptor_Curve& E); + Standard_EXPORT void Perform (const gp_Lin2d& L, const Standard_Real P, const Standard_Real Tol, const Handle(Geom2dAdaptor_Curve)& E); //! Returns in , and the tangent, normal //! and curvature of the edge at parameter value //! . - Standard_EXPORT void LocalGeometry (const Geom2dAdaptor_Curve& E, const Standard_Real U, gp_Dir2d& T, gp_Dir2d& N, Standard_Real& C) const; + Standard_EXPORT void LocalGeometry (const Handle(Geom2dAdaptor_Curve)& E, const Standard_Real U, gp_Dir2d& T, gp_Dir2d& N, Standard_Real& C) const; diff --git a/src/Geom2dHatch/Geom2dHatch_Intersector.lxx b/src/Geom2dHatch/Geom2dHatch_Intersector.lxx index 7753f1b16b..9022032963 100644 --- a/src/Geom2dHatch/Geom2dHatch_Intersector.lxx +++ b/src/Geom2dHatch/Geom2dHatch_Intersector.lxx @@ -80,8 +80,8 @@ inline void Geom2dHatch_Intersector::SetTangencyTolerance #include inline void Geom2dHatch_Intersector::Intersect - (const Geom2dAdaptor_Curve& C1, - const Geom2dAdaptor_Curve& C2) + (const Handle(Geom2dAdaptor_Curve)& C1, + const Handle(Geom2dAdaptor_Curve)& C2) { Geom2dInt_GInter::Perform(C1, C2, diff --git a/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx index b640668d39..27d4b51be9 100644 --- a/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter.hxx @@ -40,7 +40,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real Tol); Standard_EXPORT void Perform (const Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter& Poly1, const Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter& Poly2, Standard_Integer& NumSegOn1, Standard_Integer& NumSegOn2, Standard_Real& ParamOnSeg1, Standard_Real& ParamOnSeg2); diff --git a/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter_0.cxx index dd217f1616..cb4cea07ba 100644 --- a/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_ExactIntersectionPointOfTheIntPCurvePCurveOfGInter_0.cxx @@ -24,7 +24,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_GInter.hxx b/src/Geom2dInt/Geom2dInt_GInter.hxx index 8acfd124a8..fc21869259 100644 --- a/src/Geom2dInt/Geom2dInt_GInter.hxx +++ b/src/Geom2dInt/Geom2dInt_GInter.hxx @@ -54,43 +54,43 @@ public: Geom2dInt_GInter(); //! Self Intersection of a curve - Geom2dInt_GInter(const Adaptor2d_Curve2d& C, const Standard_Real TolConf, const Standard_Real Tol); + Geom2dInt_GInter(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real TolConf, const Standard_Real Tol); //! Self Intersection of a curve with a domain. - Geom2dInt_GInter(const Adaptor2d_Curve2d& C, const IntRes2d_Domain& D, const Standard_Real TolConf, const Standard_Real Tol); + Geom2dInt_GInter(const Handle(Adaptor2d_Curve2d)& C, const IntRes2d_Domain& D, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol); + Geom2dInt_GInter(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol); + Geom2dInt_GInter(const Handle(Adaptor2d_Curve2d)& C1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Geom2dInt_GInter(const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Geom2dInt_GInter(const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Geom2dInt_GInter(const Handle(Adaptor2d_Curve2d)& C1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& C1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - void Perform (const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& C1, const IntRes2d_Domain& D1, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& C1, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& C1, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - void Perform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const Handle(Adaptor2d_Curve2d)& C1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - void Perform (const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Create a domain from a curve - Standard_EXPORT IntRes2d_Domain ComputeDomain (const Adaptor2d_Curve2d& C1, const Standard_Real TolDomain) const; + Standard_EXPORT IntRes2d_Domain ComputeDomain (const Handle(Adaptor2d_Curve2d)& C1, const Standard_Real TolDomain) const; //! Set / get minimum number of points in polygon intersection. Standard_EXPORT void SetMinNbSamples (const Standard_Integer theMinNbSamples); @@ -107,13 +107,13 @@ private: //! Intersection between 2 curves. - Standard_EXPORT void InternalPerform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); + Standard_EXPORT void InternalPerform (const Handle(Adaptor2d_Curve2d)& C1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& C2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); //! Part of InternalCompositePerform function - Standard_EXPORT void InternalCompositePerform_noRecurs (const Standard_Integer NbInterC1, const Adaptor2d_Curve2d& C1, const Standard_Integer NumInterC1, const TColStd_Array1OfReal& Tab1, const IntRes2d_Domain& D1, const Standard_Integer NbInterC2, const Adaptor2d_Curve2d& C2, const Standard_Integer NumInterC2, const TColStd_Array1OfReal& Tab2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void InternalCompositePerform_noRecurs (const Standard_Integer NbInterC1, const Handle(Adaptor2d_Curve2d)& C1, const Standard_Integer NumInterC1, const TColStd_Array1OfReal& Tab1, const IntRes2d_Domain& D1, const Standard_Integer NbInterC2, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Integer NumInterC2, const TColStd_Array1OfReal& Tab2, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between 2 curves. - Standard_EXPORT void InternalCompositePerform (const Adaptor2d_Curve2d& C1, const IntRes2d_Domain& D1, const Standard_Integer N1, const Standard_Integer NB1, const TColStd_Array1OfReal& Tab1, const Adaptor2d_Curve2d& C2, const IntRes2d_Domain& D2, const Standard_Integer N2, const Standard_Integer NB2, const TColStd_Array1OfReal& Tab2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); + Standard_EXPORT void InternalCompositePerform (const Handle(Adaptor2d_Curve2d)& C1, const IntRes2d_Domain& D1, const Standard_Integer N1, const Standard_Integer NB1, const TColStd_Array1OfReal& Tab1, const Handle(Adaptor2d_Curve2d)& C2, const IntRes2d_Domain& D2, const Standard_Integer N2, const Standard_Integer NB2, const TColStd_Array1OfReal& Tab2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); Standard_Real param1inf; @@ -127,7 +127,7 @@ private: }; -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_GInter_0.cxx b/src/Geom2dInt/Geom2dInt_GInter_0.cxx index d78e9027fe..4e26d6daf2 100644 --- a/src/Geom2dInt/Geom2dInt_GInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_GInter_0.cxx @@ -32,7 +32,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.cxx b/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.cxx index 00005128b2..5c8f0214ac 100644 --- a/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.cxx +++ b/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.cxx @@ -21,26 +21,26 @@ #include //============================================================ -Standard_Integer Geom2dInt_Geom2dCurveTool::NbSamples (const Adaptor2d_Curve2d& C, +Standard_Integer Geom2dInt_Geom2dCurveTool::NbSamples (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real U1) { - GeomAbs_CurveType typC = C.GetType(); - Standard_Integer nbs = C.NbSamples(); + GeomAbs_CurveType typC = C->GetType(); + Standard_Integer nbs = C->NbSamples(); if(typC == GeomAbs_BSplineCurve) { - Standard_Real t=C.LastParameter()-C.FirstParameter(); + Standard_Real t=C->LastParameter()-C->FirstParameter(); if(t > Precision::PConfusion()) { Standard_Real t1 = U1 - U0; if(t1 < 0.0) t1 = -t1; - nbs = C.NbKnots(); - nbs*= C.Degree(); + nbs = C->NbKnots(); + nbs*= C->Degree(); Standard_Real anb = t1 / t * nbs; nbs = (Standard_Integer)anb; - Standard_Integer aMinPntNb = Max(C.Degree() + 1, 4); + Standard_Integer aMinPntNb = Max(C->Degree() + 1, 4); if(nbs < aMinPntNb) nbs = aMinPntNb; } @@ -49,7 +49,7 @@ Standard_Integer Geom2dInt_Geom2dCurveTool::NbSamples (const Adaptor2d_Curve2d& { //Try to reach deflection = eps*R, eps = 0.01 const Standard_Real minR = 1.; //eps = 0.01 - Standard_Real R = C.Circle().Radius(); + Standard_Real R = C->Circle().Radius(); if(R > minR) { Standard_Real angl = 0.283079; //2.*ACos(1. - eps); @@ -64,18 +64,18 @@ Standard_Integer Geom2dInt_Geom2dCurveTool::NbSamples (const Adaptor2d_Curve2d& } //============================================================ -Standard_Integer Geom2dInt_Geom2dCurveTool::NbSamples (const Adaptor2d_Curve2d& C) { - Standard_Integer nbs = C.NbSamples(); - GeomAbs_CurveType typC = C.GetType(); +Standard_Integer Geom2dInt_Geom2dCurveTool::NbSamples (const Handle(Adaptor2d_Curve2d)& C) { + Standard_Integer nbs = C->NbSamples(); + GeomAbs_CurveType typC = C->GetType(); if (typC == GeomAbs_Circle) { //Try to reach deflection = eps*R, eps = 0.01 const Standard_Real minR = 1.; //eps = 0.01 - Standard_Real R = C.Circle().Radius(); + Standard_Real R = C->Circle().Radius(); if(R > minR) { Standard_Real angl = 0.283079; //2.*ACos(1. - eps); - Standard_Integer n = RealToInt((C.LastParameter()-C.FirstParameter()) / angl); + Standard_Integer n = RealToInt((C->LastParameter()-C->FirstParameter()) / angl); nbs = Max(n, nbs); } } diff --git a/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.hxx b/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.hxx index 884f19b825..a648df54d6 100644 --- a/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.hxx +++ b/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.hxx @@ -44,71 +44,71 @@ public: DEFINE_STANDARD_ALLOC - static GeomAbs_CurveType GetType (const Adaptor2d_Curve2d& C); + static GeomAbs_CurveType GetType (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Boolean IsComposite (const Adaptor2d_Curve2d& C); + static Standard_Boolean IsComposite (const Handle(Adaptor2d_Curve2d)& C); //! Returns the Lin2d from gp corresponding to the curve C. //! This method is called only when TheType returns //! GeomAbs_Line. - static gp_Lin2d Line (const Adaptor2d_Curve2d& C); + static gp_Lin2d Line (const Handle(Adaptor2d_Curve2d)& C); //! Returns the Circ2d from gp corresponding to the curve C. //! This method is called only when TheType returns //! GeomAbs_Circle. - static gp_Circ2d Circle (const Adaptor2d_Curve2d& C); + static gp_Circ2d Circle (const Handle(Adaptor2d_Curve2d)& C); //! Returns the Elips2d from gp corresponding to the curve C. //! This method is called only when TheType returns //! GeomAbs_Ellipse. - static gp_Elips2d Ellipse (const Adaptor2d_Curve2d& C); + static gp_Elips2d Ellipse (const Handle(Adaptor2d_Curve2d)& C); //! Returns the Parab2d from gp corresponding to the curve C. //! This method is called only when TheType returns //! GeomAbs_Parabola. - static gp_Parab2d Parabola (const Adaptor2d_Curve2d& C); + static gp_Parab2d Parabola (const Handle(Adaptor2d_Curve2d)& C); //! Returns the Hypr2d from gp corresponding to the curve C. //! This method is called only when TheType returns //! GeomAbs_Hyperbola. - static gp_Hypr2d Hyperbola (const Adaptor2d_Curve2d& C); + static gp_Hypr2d Hyperbola (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Real EpsX (const Adaptor2d_Curve2d& C); + static Standard_Real EpsX (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Real EpsX (const Adaptor2d_Curve2d& C, const Standard_Real Eps_XYZ); + static Standard_Real EpsX (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Eps_XYZ); - Standard_EXPORT static Standard_Integer NbSamples (const Adaptor2d_Curve2d& C); + Standard_EXPORT static Standard_Integer NbSamples (const Handle(Adaptor2d_Curve2d)& C); - Standard_EXPORT static Standard_Integer NbSamples (const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real U1); + Standard_EXPORT static Standard_Integer NbSamples (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real U1); - static Standard_Real FirstParameter (const Adaptor2d_Curve2d& C); + static Standard_Real FirstParameter (const Handle(Adaptor2d_Curve2d)& C); - static Standard_Real LastParameter (const Adaptor2d_Curve2d& C); + static Standard_Real LastParameter (const Handle(Adaptor2d_Curve2d)& C); - static gp_Pnt2d Value (const Adaptor2d_Curve2d& C, const Standard_Real X); + static gp_Pnt2d Value (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real X); - static void D0 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P); + static void D0 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P); - static void D1 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T); + static void D1 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T); - static void D2 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N); + static void D2 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N); - static void D3 (const Adaptor2d_Curve2d& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N, gp_Vec2d& V); + static void D3 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N, gp_Vec2d& V); - static gp_Vec2d DN (const Adaptor2d_Curve2d& C, const Standard_Real U, const Standard_Integer N); + static gp_Vec2d DN (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, const Standard_Integer N); //! output the number of interval of continuity C2 of //! the curve - static Standard_Integer NbIntervals (const Adaptor2d_Curve2d& C); + static Standard_Integer NbIntervals (const Handle(Adaptor2d_Curve2d)& C); //! compute Tab. - static void Intervals (const Adaptor2d_Curve2d& C, TColStd_Array1OfReal& Tab); + static void Intervals (const Handle(Adaptor2d_Curve2d)& C, TColStd_Array1OfReal& Tab); //! output the bounds of interval of index //! used if Type == Composite. - static void GetInterval (const Adaptor2d_Curve2d& C, const Standard_Integer Index, const TColStd_Array1OfReal& Tab, Standard_Real& U1, Standard_Real& U2); + static void GetInterval (const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer Index, const TColStd_Array1OfReal& Tab, Standard_Real& U1, Standard_Real& U2); - static Standard_Integer Degree (const Adaptor2d_Curve2d& C); + static Standard_Integer Degree (const Handle(Adaptor2d_Curve2d)& C); diff --git a/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.lxx b/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.lxx index 2d33555ea3..e40fa5b719 100644 --- a/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.lxx +++ b/src/Geom2dInt/Geom2dInt_Geom2dCurveTool.lxx @@ -28,105 +28,105 @@ #define IS_C2_COMPOSITE 0 //============================================================ -inline GeomAbs_CurveType Geom2dInt_Geom2dCurveTool::GetType(const Adaptor2d_Curve2d& C) { - return(C.GetType()); +inline GeomAbs_CurveType Geom2dInt_Geom2dCurveTool::GetType(const Handle(Adaptor2d_Curve2d)& C) { + return(C->GetType()); } //============================================================ -inline gp_Lin2d Geom2dInt_Geom2dCurveTool::Line (const Adaptor2d_Curve2d& C) { - return(C.Line()); +inline gp_Lin2d Geom2dInt_Geom2dCurveTool::Line (const Handle(Adaptor2d_Curve2d)& C) { + return(C->Line()); } //============================================================ -inline gp_Circ2d Geom2dInt_Geom2dCurveTool::Circle (const Adaptor2d_Curve2d& C) { - return(C.Circle()); +inline gp_Circ2d Geom2dInt_Geom2dCurveTool::Circle (const Handle(Adaptor2d_Curve2d)& C) { + return(C->Circle()); } //============================================================ -inline gp_Elips2d Geom2dInt_Geom2dCurveTool::Ellipse (const Adaptor2d_Curve2d& C) { - return(C.Ellipse()); +inline gp_Elips2d Geom2dInt_Geom2dCurveTool::Ellipse (const Handle(Adaptor2d_Curve2d)& C) { + return(C->Ellipse()); } //============================================================ -inline gp_Parab2d Geom2dInt_Geom2dCurveTool::Parabola (const Adaptor2d_Curve2d& C) { - return(C.Parabola()); +inline gp_Parab2d Geom2dInt_Geom2dCurveTool::Parabola (const Handle(Adaptor2d_Curve2d)& C) { + return(C->Parabola()); } //============================================================ -inline gp_Hypr2d Geom2dInt_Geom2dCurveTool::Hyperbola (const Adaptor2d_Curve2d& C) { - return(C.Hyperbola()); +inline gp_Hypr2d Geom2dInt_Geom2dCurveTool::Hyperbola (const Handle(Adaptor2d_Curve2d)& C) { + return(C->Hyperbola()); } //============================================================ -inline gp_Pnt2d Geom2dInt_Geom2dCurveTool::Value (const Adaptor2d_Curve2d& C, +inline gp_Pnt2d Geom2dInt_Geom2dCurveTool::Value (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U) { - return(C.Value(U)); + return(C->Value(U)); } //============================================================ -inline void Geom2dInt_Geom2dCurveTool::D0(const Adaptor2d_Curve2d& C, +inline void Geom2dInt_Geom2dCurveTool::D0(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P) { - C.D0(U,P); + C->D0(U,P); } //============================================================ -inline void Geom2dInt_Geom2dCurveTool::D1 (const Adaptor2d_Curve2d& C, +inline void Geom2dInt_Geom2dCurveTool::D1 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T) { - C.D1(U,P,T); + C->D1(U,P,T); } //============================================================ -inline void Geom2dInt_Geom2dCurveTool::D2 (const Adaptor2d_Curve2d& C, +inline void Geom2dInt_Geom2dCurveTool::D2 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N) { - C.D2(U,P,T,N); + C->D2(U,P,T,N); } //============================================================ -inline void Geom2dInt_Geom2dCurveTool::D3 (const Adaptor2d_Curve2d& C, +inline void Geom2dInt_Geom2dCurveTool::D3 (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, gp_Pnt2d& P, gp_Vec2d& T, gp_Vec2d& N, gp_Vec2d& V) { - C.D3(U,P,T,N,V); + C->D3(U,P,T,N,V); } //============================================================ -inline gp_Vec2d Geom2dInt_Geom2dCurveTool::DN(const Adaptor2d_Curve2d& C, +inline gp_Vec2d Geom2dInt_Geom2dCurveTool::DN(const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U, const Standard_Integer N) { - return C.DN(U,N); + return C->DN(U,N); } //============================================================ -inline Standard_Real Geom2dInt_Geom2dCurveTool::FirstParameter (const Adaptor2d_Curve2d& C) { - return(C.FirstParameter()); +inline Standard_Real Geom2dInt_Geom2dCurveTool::FirstParameter (const Handle(Adaptor2d_Curve2d)& C) { + return(C->FirstParameter()); } //============================================================ -inline Standard_Real Geom2dInt_Geom2dCurveTool::LastParameter (const Adaptor2d_Curve2d& C) { - return(C.LastParameter()); +inline Standard_Real Geom2dInt_Geom2dCurveTool::LastParameter (const Handle(Adaptor2d_Curve2d)& C) { + return(C->LastParameter()); } //============================================================ //== tolerance used by mathemetical algorithms //== -inline Standard_Real Geom2dInt_Geom2dCurveTool::EpsX (const Adaptor2d_Curve2d& ) { +inline Standard_Real Geom2dInt_Geom2dCurveTool::EpsX (const Handle(Adaptor2d_Curve2d)& ) { return(1.0e-10); } //------------------------------------------------------------ -inline Standard_Real Geom2dInt_Geom2dCurveTool::EpsX (const Adaptor2d_Curve2d& C,const Standard_Real Eps_XYZ) { - return(C.Resolution(Eps_XYZ)); +inline Standard_Real Geom2dInt_Geom2dCurveTool::EpsX (const Handle(Adaptor2d_Curve2d)& C,const Standard_Real Eps_XYZ) { + return(C->Resolution(Eps_XYZ)); } //============================================================ -inline void Geom2dInt_Geom2dCurveTool::Intervals(const Adaptor2d_Curve2d& C, +inline void Geom2dInt_Geom2dCurveTool::Intervals(const Handle(Adaptor2d_Curve2d)& C, TColStd_Array1OfReal& Tab) { #if IS_C2_COMPOSITE - C.Intervals(Tab,GeomAbs_C2); + C->Intervals(Tab,GeomAbs_C2); #else - C.Intervals(Tab,GeomAbs_C1); + C->Intervals(Tab,GeomAbs_C1); #endif } //============================================================ -//inline void Geom2dInt_Geom2dCurveTool::GetInterval(const Adaptor2d_Curve2d& C, -inline void Geom2dInt_Geom2dCurveTool::GetInterval(const Adaptor2d_Curve2d& , +//inline void Geom2dInt_Geom2dCurveTool::GetInterval(const Handle(Adaptor2d_Curve2d)& C, +inline void Geom2dInt_Geom2dCurveTool::GetInterval(const Handle(Adaptor2d_Curve2d)& , const Standard_Integer i, const TColStd_Array1OfReal& Tab, Standard_Real& a, @@ -135,18 +135,18 @@ inline void Geom2dInt_Geom2dCurveTool::GetInterval(const Adaptor2d_Curve2d& , b = Tab.Value(i+1); } //============================================================ -inline Standard_Integer Geom2dInt_Geom2dCurveTool::NbIntervals(const Adaptor2d_Curve2d& C) { +inline Standard_Integer Geom2dInt_Geom2dCurveTool::NbIntervals(const Handle(Adaptor2d_Curve2d)& C) { Standard_Integer N=1; #if IS_C2_COMPOSITE - N = C.NbIntervals(GeomAbs_C2); + N = C->NbIntervals(GeomAbs_C2); #else - N = C.NbIntervals(GeomAbs_C1); + N = C->NbIntervals(GeomAbs_C1); #endif return(N); } //============================================================ - inline Standard_Integer Geom2dInt_Geom2dCurveTool::Degree(const Adaptor2d_Curve2d& C) + inline Standard_Integer Geom2dInt_Geom2dCurveTool::Degree(const Handle(Adaptor2d_Curve2d)& C) { - return C.Degree(); + return C->Degree(); } diff --git a/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter.hxx index b784f6eb18..6217a3ea87 100644 --- a/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter.hxx @@ -48,36 +48,36 @@ public: Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(); //! Intersection between a line and a parametric curve. - Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Lin2d& L, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Lin2d& L, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a line and a parametric curve. - Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Circ2d& C, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Circ2d& C, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between an ellipse and a parametric curve. - Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Elips2d& E, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Elips2d& E, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a parabola and a parametric curve. - Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between the main branch of an hyperbola //! and a parametric curve. - Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_IntConicCurveOfGInter(const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a line and a parametric curve. - Standard_EXPORT void Perform (const gp_Lin2d& L, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const gp_Lin2d& L, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a line and a parametric curve. - Standard_EXPORT void Perform (const gp_Circ2d& C, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const gp_Circ2d& C, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between an ellipse and a parametric curve. - Standard_EXPORT void Perform (const gp_Elips2d& E, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const gp_Elips2d& E, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a parabola and a parametric curve. - Standard_EXPORT void Perform (const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between the main branch of an hyperbola //! and a parametric curve. - Standard_EXPORT void Perform (const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); @@ -91,15 +91,15 @@ protected: private: - Standard_EXPORT void InternalPerform (const gp_Lin2d& Lin1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); + Standard_EXPORT void InternalPerform (const gp_Lin2d& Lin1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); - Standard_EXPORT void InternalPerform (const gp_Circ2d& Circ1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); + Standard_EXPORT void InternalPerform (const gp_Circ2d& Circ1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); - Standard_EXPORT void InternalPerform (const gp_Elips2d& Eli1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); + Standard_EXPORT void InternalPerform (const gp_Elips2d& Eli1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); - Standard_EXPORT void InternalPerform (const gp_Parab2d& Prb1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); + Standard_EXPORT void InternalPerform (const gp_Parab2d& Prb1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); - Standard_EXPORT void InternalPerform (const gp_Hypr2d& Hpr1, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); + Standard_EXPORT void InternalPerform (const gp_Hypr2d& Hpr1, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Boolean Composite); Standard_Real param1inf; diff --git a/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter_0.cxx index 7856005877..d4185a12ca 100644 --- a/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_IntConicCurveOfGInter_0.cxx @@ -31,7 +31,7 @@ #define TheImpTool IntCurve_IConicTool #define TheImpTool_hxx -#define ThePCurve Adaptor2d_Curve2d +#define ThePCurve Handle(Adaptor2d_Curve2d) #define ThePCurve_hxx #define ThePCurveTool Geom2dInt_Geom2dCurveTool #define ThePCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter.hxx index 764a9ef18f..be58e95cd2 100644 --- a/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter.hxx @@ -38,7 +38,7 @@ public: //! Constructor of the class. - Standard_EXPORT Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter(const IntCurve_IConicTool& IT, const Adaptor2d_Curve2d& PC); + Standard_EXPORT Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter(const IntCurve_IConicTool& IT, const Handle(Adaptor2d_Curve2d)& PC); //! Computes the value of the signed distance between //! the implicit curve and the point at parameter Param diff --git a/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter_0.cxx index 95765c0724..263531e0b0 100644 --- a/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfGInter_0.cxx @@ -23,7 +23,7 @@ #define ImpTool IntCurve_IConicTool #define ImpTool_hxx -#define ParCurve Adaptor2d_Curve2d +#define ParCurve Handle(Adaptor2d_Curve2d) #define ParCurve_hxx #define ParTool Geom2dInt_Geom2dCurveTool #define ParTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter.hxx b/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter.hxx index 5927bb0513..c7b1e2bab3 100644 --- a/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter.hxx @@ -44,10 +44,10 @@ public: Standard_EXPORT Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter(); - Standard_EXPORT Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C); + Standard_EXPORT Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C); //! sets the field mycurve of the function. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C); //! sets the field P of the function. Standard_EXPORT void SetPoint (const gp_Pnt2d& P); diff --git a/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter_0.cxx index 21b1ba26f7..f176431de2 100644 --- a/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_PCLocFOfTheLocateExtPCOfTheProjPCurOfGInter_0.cxx @@ -25,7 +25,7 @@ #include #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Geom2dInt_Geom2dCurveTool #define Tool_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx b/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx index d6c0658d5a..ad8f8262d4 100644 --- a/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter.hxx @@ -39,19 +39,19 @@ public: //! Among a set of points {C(ui),i=1,NbU}, locate the point //! P=C(uj) such that: //! distance(P,C) = Min{distance(P,C(ui))} - Standard_EXPORT static void Locate (const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Integer NbU, Extrema_POnCurv2d& Papp); + Standard_EXPORT static void Locate (const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, Extrema_POnCurv2d& Papp); //! Among a set of points {C(ui),i=1,NbU}, locate the point //! P=C(uj) such that: //! distance(P,C) = Min{distance(P,C(ui))} //! The research is done between umin and usup. - Standard_EXPORT static void Locate (const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, Extrema_POnCurv2d& Papp); + Standard_EXPORT static void Locate (const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Integer NbU, const Standard_Real Umin, const Standard_Real Usup, Extrema_POnCurv2d& Papp); //! Among two sets of points {C1(ui),i=1,NbU} and //! {C2(vj),j=1,NbV}, locate the two points P1=C1(uk) and //! P2=C2(vl) such that: //! distance(P1,P2) = Min {distance(C1(ui),C2(vj))}. - Standard_EXPORT static void Locate (const Adaptor2d_Curve2d& C1, const Adaptor2d_Curve2d& C2, const Standard_Integer NbU, const Standard_Integer NbV, Extrema_POnCurv2d& Papp1, Extrema_POnCurv2d& Papp2); + Standard_EXPORT static void Locate (const Handle(Adaptor2d_Curve2d)& C1, const Handle(Adaptor2d_Curve2d)& C2, const Standard_Integer NbU, const Standard_Integer NbV, Extrema_POnCurv2d& Papp1, Extrema_POnCurv2d& Papp2); diff --git a/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter_0.cxx index 98c8e9d968..4916b7a3ec 100644 --- a/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_TheCurveLocatorOfTheProjPCurOfGInter_0.cxx @@ -22,11 +22,11 @@ #include -#define Curve1 Adaptor2d_Curve2d +#define Curve1 Handle(Adaptor2d_Curve2d) #define Curve1_hxx #define Tool1 Geom2dInt_Geom2dCurveTool #define Tool1_hxx -#define Curve2 Adaptor2d_Curve2d +#define Curve2 Handle(Adaptor2d_Curve2d) #define Curve2_hxx #define Tool2 Geom2dInt_Geom2dCurveTool #define Tool2_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx index 263ac8315f..f16c250dee 100644 --- a/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter.hxx @@ -37,7 +37,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter(const Adaptor2d_Curve2d& curve1, const Adaptor2d_Curve2d& curve2); + Standard_EXPORT Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter(const Handle(Adaptor2d_Curve2d)& curve1, const Handle(Adaptor2d_Curve2d)& curve2); //! returns 2. Standard_EXPORT Standard_Integer NbVariables() const; diff --git a/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter_0.cxx index 9bb59e56a8..5c28bc9a41 100644 --- a/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_TheDistBetweenPCurvesOfTheIntPCurvePCurveOfGInter_0.cxx @@ -21,7 +21,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter.hxx index 406c096d19..bedd5db718 100644 --- a/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter.hxx @@ -47,36 +47,36 @@ public: Geom2dInt_TheIntConicCurveOfGInter(); //! Intersection between a line and a parametric curve. - Geom2dInt_TheIntConicCurveOfGInter(const gp_Lin2d& L, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Geom2dInt_TheIntConicCurveOfGInter(const gp_Lin2d& L, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a line and a parametric curve. - Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Circ2d& C, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Circ2d& C, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between an ellipse and a parametric curve. - Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Elips2d& E, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Elips2d& E, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a parabola and a parametric curve. - Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between the main branch of an hyperbola //! and a parametric curve. - Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_TheIntConicCurveOfGInter(const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a line and a parametric curve. - void Perform (const gp_Lin2d& L, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const gp_Lin2d& L, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a line and a parametric curve. - void Perform (const gp_Circ2d& C, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const gp_Circ2d& C, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between an ellipse and a parametric curve. - void Perform (const gp_Elips2d& E, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const gp_Elips2d& E, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between a parabola and a parametric curve. - void Perform (const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const gp_Parab2d& Prb, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between the main branch of an hyperbola //! and a parametric curve. - void Perform (const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const gp_Hypr2d& H, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); @@ -92,7 +92,7 @@ private: //! Intersection between a conic fom gp //! and a parametric curve. - void Perform (const IntCurve_IConicTool& ICurve, const IntRes2d_Domain& D1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); + void Perform (const IntCurve_IConicTool& ICurve, const IntRes2d_Domain& D1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& D2, const Standard_Real TolConf, const Standard_Real Tol); @@ -101,7 +101,7 @@ private: #define TheImpTool IntCurve_IConicTool #define TheImpTool_hxx -#define ThePCurve Adaptor2d_Curve2d +#define ThePCurve Handle(Adaptor2d_Curve2d) #define ThePCurve_hxx #define ThePCurveTool Geom2dInt_Geom2dCurveTool #define ThePCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter_0.cxx index eabbf49a67..a9cdf4e00f 100644 --- a/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_TheIntConicCurveOfGInter_0.cxx @@ -32,7 +32,7 @@ #define TheImpTool IntCurve_IConicTool #define TheImpTool_hxx -#define ThePCurve Adaptor2d_Curve2d +#define ThePCurve Handle(Adaptor2d_Curve2d) #define ThePCurve_hxx #define ThePCurveTool Geom2dInt_Geom2dCurveTool #define ThePCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter.hxx index cb67428da8..9d25e44a2f 100644 --- a/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter.hxx @@ -41,9 +41,9 @@ public: Standard_EXPORT Geom2dInt_TheIntPCurvePCurveOfGInter(); - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& Curve1, const IntRes2d_Domain& Domain1, const Adaptor2d_Curve2d& Curve2, const IntRes2d_Domain& Domain2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& Curve1, const IntRes2d_Domain& Domain1, const Handle(Adaptor2d_Curve2d)& Curve2, const IntRes2d_Domain& Domain2, const Standard_Real TolConf, const Standard_Real Tol); - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& Curve1, const IntRes2d_Domain& Domain1, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& Curve1, const IntRes2d_Domain& Domain1, const Standard_Real TolConf, const Standard_Real Tol); //! Set / get minimum number of points in polygon for intersection. Standard_EXPORT void SetMinNbSamples (const Standard_Integer theMinNbSamples); @@ -53,9 +53,9 @@ public: protected: - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& Curve1, const IntRes2d_Domain& Domain1, const Adaptor2d_Curve2d& Curve2, const IntRes2d_Domain& Domain2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Integer NbIter, const Standard_Real DeltaU, const Standard_Real DeltaV); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& Curve1, const IntRes2d_Domain& Domain1, const Handle(Adaptor2d_Curve2d)& Curve2, const IntRes2d_Domain& Domain2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Integer NbIter, const Standard_Real DeltaU, const Standard_Real DeltaV); - Standard_EXPORT void Perform (const Adaptor2d_Curve2d& Curve1, const IntRes2d_Domain& Domain1, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Integer NbIter, const Standard_Real DeltaU, const Standard_Real DeltaV); + Standard_EXPORT void Perform (const Handle(Adaptor2d_Curve2d)& Curve1, const IntRes2d_Domain& Domain1, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Integer NbIter, const Standard_Real DeltaU, const Standard_Real DeltaV); private: @@ -65,7 +65,7 @@ private: //! : were replaced on line and exact point of intersection was not found //! : for case when point of intersection was found //! : during prelimanary search for line (case of bad paramerization of Bspline for example). - Standard_EXPORT Standard_Boolean findIntersect (const Adaptor2d_Curve2d& Curve1, const IntRes2d_Domain& Domain1, const Adaptor2d_Curve2d& Curve2, const IntRes2d_Domain& Domain2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Integer NbIter, const Standard_Real DeltaU, const Standard_Real DeltaV, const Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter& thePoly1, const Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter& thePoly2, const Standard_Boolean isFullRepresentation); + Standard_EXPORT Standard_Boolean findIntersect (const Handle(Adaptor2d_Curve2d)& Curve1, const IntRes2d_Domain& Domain1, const Handle(Adaptor2d_Curve2d)& Curve2, const IntRes2d_Domain& Domain2, const Standard_Real TolConf, const Standard_Real Tol, const Standard_Integer NbIter, const Standard_Real DeltaU, const Standard_Real DeltaV, const Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter& thePoly1, const Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter& thePoly2, const Standard_Boolean isFullRepresentation); IntRes2d_Domain DomainOnCurve1; IntRes2d_Domain DomainOnCurve2; diff --git a/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter_0.cxx index ec22b33516..585de9f006 100644 --- a/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_TheIntPCurvePCurveOfGInter_0.cxx @@ -25,7 +25,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx index 9f526cfdbc..d3162d3107 100644 --- a/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter.hxx @@ -48,20 +48,20 @@ public: //! The exception ConstructionError is raised if the domain //! of the parametrised curve does not verify HasFirstPoint //! and HasLastPoint return True. - Standard_EXPORT Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter(const IntCurve_IConicTool& ITool, const IntRes2d_Domain& Dom1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& Dom2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter(const IntCurve_IConicTool& ITool, const IntRes2d_Domain& Dom1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& Dom2, const Standard_Real TolConf, const Standard_Real Tol); //! Intersection between an implicit curve and //! a parametrised curve. //! The exception ConstructionError is raised if the domain //! of the parametrised curve does not verify HasFirstPoint //! and HasLastPoint return True. - Standard_EXPORT void Perform (const IntCurve_IConicTool& ITool, const IntRes2d_Domain& Dom1, const Adaptor2d_Curve2d& PCurve, const IntRes2d_Domain& Dom2, const Standard_Real TolConf, const Standard_Real Tol); + Standard_EXPORT void Perform (const IntCurve_IConicTool& ITool, const IntRes2d_Domain& Dom1, const Handle(Adaptor2d_Curve2d)& PCurve, const IntRes2d_Domain& Dom2, const Standard_Real TolConf, const Standard_Real Tol); - Standard_EXPORT Standard_Real FindU (const Standard_Real parameter, gp_Pnt2d& point, const Adaptor2d_Curve2d& TheParCurev, const IntCurve_IConicTool& TheImpTool) const; + Standard_EXPORT Standard_Real FindU (const Standard_Real parameter, gp_Pnt2d& point, const Handle(Adaptor2d_Curve2d)& TheParCurev, const IntCurve_IConicTool& TheImpTool) const; - Standard_EXPORT Standard_Real FindV (const Standard_Real parameter, gp_Pnt2d& point, const IntCurve_IConicTool& TheImpTool, const Adaptor2d_Curve2d& ParCurve, const IntRes2d_Domain& TheParCurveDomain, const Standard_Real V0, const Standard_Real V1, const Standard_Real Tolerance) const; + Standard_EXPORT Standard_Real FindV (const Standard_Real parameter, gp_Pnt2d& point, const IntCurve_IConicTool& TheImpTool, const Handle(Adaptor2d_Curve2d)& ParCurve, const IntRes2d_Domain& TheParCurveDomain, const Standard_Real V0, const Standard_Real V1, const Standard_Real Tolerance) const; - Standard_EXPORT void And_Domaine_Objet1_Intersections (const IntCurve_IConicTool& TheImpTool, const Adaptor2d_Curve2d& TheParCurve, const IntRes2d_Domain& TheImpCurveDomain, const IntRes2d_Domain& TheParCurveDomain, Standard_Integer& NbResultats, TColStd_Array1OfReal& Inter2_And_Domain2, TColStd_Array1OfReal& Inter1, TColStd_Array1OfReal& Resultat1, TColStd_Array1OfReal& Resultat2, const Standard_Real EpsNul) const; + Standard_EXPORT void And_Domaine_Objet1_Intersections (const IntCurve_IConicTool& TheImpTool, const Handle(Adaptor2d_Curve2d)& TheParCurve, const IntRes2d_Domain& TheImpCurveDomain, const IntRes2d_Domain& TheParCurveDomain, Standard_Integer& NbResultats, TColStd_Array1OfReal& Inter2_And_Domain2, TColStd_Array1OfReal& Inter1, TColStd_Array1OfReal& Resultat1, TColStd_Array1OfReal& Resultat2, const Standard_Real EpsNul) const; diff --git a/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter_0.cxx index 271245bc58..6ed8eca7a6 100644 --- a/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_TheIntersectorOfTheIntConicCurveOfGInter_0.cxx @@ -28,7 +28,7 @@ #define ImpTool IntCurve_IConicTool #define ImpTool_hxx -#define ParCurve Adaptor2d_Curve2d +#define ParCurve Handle(Adaptor2d_Curve2d) #define ParCurve_hxx #define ParTool Geom2dInt_Geom2dCurveTool #define ParTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx b/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx index 3eaddfd5e8..081db63992 100644 --- a/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter.hxx @@ -50,7 +50,7 @@ public: //! TolU is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolU. - Standard_EXPORT Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real TolU); + Standard_EXPORT Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real TolU); //! Calculates the distance with a close point. //! The close point is defined by the parameter value @@ -62,10 +62,10 @@ public: //! TolU is used to decide to stop the iterations. //! At the nth iteration, the criteria is: //! abs(Un - Un-1) < TolU. - Standard_EXPORT Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Adaptor2d_Curve2d& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); + Standard_EXPORT Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter(const gp_Pnt2d& P, const Handle(Adaptor2d_Curve2d)& C, const Standard_Real U0, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); //! sets the fields of the algorithm. - Standard_EXPORT void Initialize (const Adaptor2d_Curve2d& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); + Standard_EXPORT void Initialize (const Handle(Adaptor2d_Curve2d)& C, const Standard_Real Umin, const Standard_Real Usup, const Standard_Real TolU); //! the algorithm is done with the point P. //! An exception is raised if the fields have not diff --git a/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter_0.cxx index 3a593f0908..69ad43084c 100644 --- a/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_TheLocateExtPCOfTheProjPCurOfGInter_0.cxx @@ -28,7 +28,7 @@ #include -#define Curve Adaptor2d_Curve2d +#define Curve Handle(Adaptor2d_Curve2d) #define Curve_hxx #define Tool Geom2dInt_Geom2dCurveTool #define Tool_hxx diff --git a/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx b/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx index 1c8fdffad0..dd824bab9b 100644 --- a/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter.hxx @@ -43,14 +43,14 @@ public: //! Compute a polygon on the domain of the curve. - Standard_EXPORT Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter(const Adaptor2d_Curve2d& Curve, const Standard_Integer NbPnt, const IntRes2d_Domain& Domain, const Standard_Real Tol); + Standard_EXPORT Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter(const Handle(Adaptor2d_Curve2d)& Curve, const Standard_Integer NbPnt, const IntRes2d_Domain& Domain, const Standard_Real Tol); //! The current polygon is modified if most //! of the points of the polygon are //! outside the box . In this //! situation, bounds are computed to build //! a polygon inside or near the OtherBox. - Standard_EXPORT void ComputeWithBox (const Adaptor2d_Curve2d& Curve, const Bnd_Box2d& OtherBox); + Standard_EXPORT void ComputeWithBox (const Handle(Adaptor2d_Curve2d)& Curve, const Bnd_Box2d& OtherBox); virtual Standard_Real DeflectionOverEstimation() const Standard_OVERRIDE; @@ -111,7 +111,7 @@ private: }; -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter_0.cxx index 059e753c4f..65ceb2d6c7 100644 --- a/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_ThePolygon2dOfTheIntPCurvePCurveOfGInter_0.cxx @@ -24,7 +24,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter.hxx b/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter.hxx index b49553e98a..c84023f271 100644 --- a/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter.hxx +++ b/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter.hxx @@ -19,6 +19,7 @@ #include #include +#include class Adaptor2d_Curve2d; class Geom2dInt_Geom2dCurveTool; @@ -47,7 +48,7 @@ public: //! In that case, no bounds are given. The research of //! the right parameter has to be made on the natural //! parametric domain of the curve. - Standard_EXPORT static Standard_Real FindParameter (const Adaptor2d_Curve2d& C, const gp_Pnt2d& Pnt, const Standard_Real Tol); + Standard_EXPORT static Standard_Real FindParameter (const Handle(Adaptor2d_Curve2d)& C, const gp_Pnt2d& Pnt, const Standard_Real Tol); //! Returns the parameter V of the point on the //! parametric curve corresponding to the Point Pnt. @@ -63,7 +64,7 @@ public: //! implement a more efficient algorithm. So, it is not //! necessary to check that the returned value verifies //! LowParameter <= Value <= HighParameter. - Standard_EXPORT static Standard_Real FindParameter (const Adaptor2d_Curve2d& C, const gp_Pnt2d& Pnt, const Standard_Real LowParameter, const Standard_Real HighParameter, const Standard_Real Tol); + Standard_EXPORT static Standard_Real FindParameter (const Handle(Adaptor2d_Curve2d)& C, const gp_Pnt2d& Pnt, const Standard_Real LowParameter, const Standard_Real HighParameter, const Standard_Real Tol); diff --git a/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter_0.cxx b/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter_0.cxx index 283a0cc027..df7b2c02ee 100644 --- a/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter_0.cxx +++ b/src/Geom2dInt/Geom2dInt_TheProjPCurOfGInter_0.cxx @@ -24,7 +24,7 @@ #include -#define TheCurve Adaptor2d_Curve2d +#define TheCurve Handle(Adaptor2d_Curve2d) #define TheCurve_hxx #define TheCurveTool Geom2dInt_Geom2dCurveTool #define TheCurveTool_hxx diff --git a/src/GeomAPI/GeomAPI.cxx b/src/GeomAPI/GeomAPI.cxx index 8133938168..bdd0a72868 100644 --- a/src/GeomAPI/GeomAPI.cxx +++ b/src/GeomAPI/GeomAPI.cxx @@ -43,10 +43,10 @@ Handle(Geom2d_Curve) GeomAPI::To2d(const Handle(Geom_Curve)& C, Handle(Geom_Plane) Plane = new Geom_Plane(P); Handle(GeomAdaptor_Surface) HS = new GeomAdaptor_Surface(Plane); - ProjLib_ProjectedCurve Proj(HS,HC); + Handle(ProjLib_ProjectedCurve) Proj = new ProjLib_ProjectedCurve(HS,HC); - if (Proj.GetType() != GeomAbs_OffsetCurve && - Proj.GetType() != GeomAbs_OtherCurve) { + if (Proj->GetType() != GeomAbs_OffsetCurve && + Proj->GetType() != GeomAbs_OtherCurve) { result = Geom2dAdaptor::MakeCurve(Proj); } @@ -68,6 +68,6 @@ Handle(Geom_Curve) GeomAPI::To3d(const Handle(Geom2d_Curve)& C, Handle(Geom_Plane) ThePlane = new Geom_Plane(P); Handle(GeomAdaptor_Surface) AHS = new GeomAdaptor_Surface(ThePlane); - Adaptor3d_CurveOnSurface COS(AHC,AHS); - return GeomAdaptor::MakeCurve(COS); + Handle(Adaptor3d_CurveOnSurface) aCOS = new Adaptor3d_CurveOnSurface(AHC,AHS); + return GeomAdaptor::MakeCurve(aCOS); } diff --git a/src/GeomAPI/GeomAPI_ExtremaCurveCurve.cxx b/src/GeomAPI/GeomAPI_ExtremaCurveCurve.cxx index b25ebf8667..5a19670a39 100644 --- a/src/GeomAPI/GeomAPI_ExtremaCurveCurve.cxx +++ b/src/GeomAPI/GeomAPI_ExtremaCurveCurve.cxx @@ -31,6 +31,8 @@ GeomAPI_ExtremaCurveCurve::GeomAPI_ExtremaCurveCurve() : myIsDone(Standard_False), myIndex(0), + myC1(new GeomAdaptor_Curve()), + myC2(new GeomAdaptor_Curve()), myTotalExt(Standard_False), myIsInfinite(Standard_False), myTotalDist(0.0) @@ -82,8 +84,8 @@ void GeomAPI_ExtremaCurveCurve::Init myTotalExt = Standard_False; Standard_Real Tol = Precision::PConfusion(); - myC1.Load(C1); - myC2.Load(C2); + myC1 = new GeomAdaptor_Curve(C1); + myC2 = new GeomAdaptor_Curve(C2); myExtCC.Initialize (myC1, myC2, Tol,Tol); myExtCC.Perform(); @@ -124,8 +126,8 @@ void GeomAPI_ExtremaCurveCurve::Init myTotalExt = Standard_False; Standard_Real Tol = Precision::PConfusion(); - myC1.Load(C1); - myC2.Load(C2); + myC1 = new GeomAdaptor_Curve(C1); + myC2 = new GeomAdaptor_Curve(C2); myExtCC.Initialize (myC1,myC2,U1min,U1max,U2min,U2max,Tol,Tol); myExtCC.Perform(); @@ -345,10 +347,10 @@ void GeomAPI_ExtremaCurveCurve::TotalPerform() // StdFail_NotDone_Raise_if // (!myExtCC.IsDone(), "GeomAPI_ExtremaCurveCurve::TotalPerform"); - Standard_Real u11 = myC1.FirstParameter(); - Standard_Real u12 = myC1.LastParameter(); - Standard_Real u21 = myC2.FirstParameter(); - Standard_Real u22 = myC2.LastParameter(); + Standard_Real u11 = myC1->FirstParameter(); + Standard_Real u12 = myC1->LastParameter(); + Standard_Real u21 = myC2->FirstParameter(); + Standard_Real u22 = myC2->LastParameter(); Standard_Boolean infinite = Precision::IsInfinite(u11) && Precision::IsInfinite(u12) && @@ -363,8 +365,8 @@ void GeomAPI_ExtremaCurveCurve::TotalPerform() //calculate distance between any suitable point on C1 and C2 - gp_Pnt PonC1 = myC1.Value(0.); - GeomAPI_ProjectPointOnCurve proj(PonC1, myC2.Curve()); + gp_Pnt PonC1 = myC1->Value(0.); + GeomAPI_ProjectPointOnCurve proj(PonC1, myC2->Curve()); myTotalDist = proj.LowerDistance(); return; @@ -435,7 +437,7 @@ void GeomAPI_ExtremaCurveCurve::TotalPerform() // calculate distances between extremities one curve and other curve if(!Precision::IsInfinite(u11)) { - GeomAPI_ProjectPointOnCurve proj(P11, myC2.Curve(), u21, u22); + GeomAPI_ProjectPointOnCurve proj(P11, myC2->Curve(), u21, u22); if(proj.NbPoints() > 0) { @@ -454,7 +456,7 @@ void GeomAPI_ExtremaCurveCurve::TotalPerform() } if(!Precision::IsInfinite(u12)) { - GeomAPI_ProjectPointOnCurve proj(P12, myC2.Curve(), u21, u22); + GeomAPI_ProjectPointOnCurve proj(P12, myC2->Curve(), u21, u22); if(proj.NbPoints() > 0) { @@ -473,7 +475,7 @@ void GeomAPI_ExtremaCurveCurve::TotalPerform() } if(!Precision::IsInfinite(u21)) { - GeomAPI_ProjectPointOnCurve proj(P21, myC1.Curve(), u11, u12); + GeomAPI_ProjectPointOnCurve proj(P21, myC1->Curve(), u11, u12); if(proj.NbPoints() > 0) { @@ -492,7 +494,7 @@ void GeomAPI_ExtremaCurveCurve::TotalPerform() } if(!Precision::IsInfinite(u22)) { - GeomAPI_ProjectPointOnCurve proj(P22, myC1.Curve(), u11, u12); + GeomAPI_ProjectPointOnCurve proj(P22, myC1->Curve(), u11, u12); if(proj.NbPoints() > 0) { diff --git a/src/GeomAPI/GeomAPI_ExtremaCurveCurve.hxx b/src/GeomAPI/GeomAPI_ExtremaCurveCurve.hxx index d385e637de..deb8e628eb 100644 --- a/src/GeomAPI/GeomAPI_ExtremaCurveCurve.hxx +++ b/src/GeomAPI/GeomAPI_ExtremaCurveCurve.hxx @@ -170,8 +170,8 @@ private: Standard_Boolean myIsDone; Standard_Integer myIndex; Extrema_ExtCC myExtCC; - GeomAdaptor_Curve myC1; - GeomAdaptor_Curve myC2; + Handle(GeomAdaptor_Curve) myC1; + Handle(GeomAdaptor_Curve) myC2; Standard_Boolean myTotalExt; Standard_Boolean myIsInfinite; Standard_Real myTotalDist; diff --git a/src/GeomAPI/GeomAPI_ExtremaCurveSurface.cxx b/src/GeomAPI/GeomAPI_ExtremaCurveSurface.cxx index c77fdb07a0..032ecda761 100644 --- a/src/GeomAPI/GeomAPI_ExtremaCurveSurface.cxx +++ b/src/GeomAPI/GeomAPI_ExtremaCurveSurface.cxx @@ -78,12 +78,12 @@ void GeomAPI_ExtremaCurveSurface::Init (const Handle(Geom_Curve)& Curve, const Handle(Geom_Surface)& Surface) { - GeomAdaptor_Curve TheCurve (Curve); - GeomAdaptor_Surface TheSurface (Surface); + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(Curve); + Handle(GeomAdaptor_Surface) TheSurface = new GeomAdaptor_Surface(Surface); Standard_Real Tol = Precision::PConfusion(); myExtCS.Initialize (TheSurface, Tol, Tol); - myExtCS.Perform (TheCurve, TheCurve.FirstParameter(), TheCurve.LastParameter()); + myExtCS.Perform (TheCurve, TheCurve->FirstParameter(), TheCurve->LastParameter()); myIsDone = myExtCS.IsDone() && (myExtCS.IsParallel() || myExtCS.NbExt() > 0); if ( myIsDone) { @@ -119,8 +119,8 @@ void GeomAPI_ExtremaCurveSurface::Init const Standard_Real Vmin, const Standard_Real Vmax) { - GeomAdaptor_Curve TheCurve (Curve, Wmin, Wmax); - GeomAdaptor_Surface TheSurface (Surface, Umin, Umax, Vmin, Vmax); + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(Curve, Wmin, Wmax); + Handle(GeomAdaptor_Surface) TheSurface = new GeomAdaptor_Surface(Surface, Umin, Umax, Vmin, Vmax); Standard_Real Tol = Precision::PConfusion(); myExtCS.Initialize (TheSurface, diff --git a/src/GeomAPI/GeomAPI_ExtremaSurfaceSurface.cxx b/src/GeomAPI/GeomAPI_ExtremaSurfaceSurface.cxx index 8a844f4491..1da1276570 100644 --- a/src/GeomAPI/GeomAPI_ExtremaSurfaceSurface.cxx +++ b/src/GeomAPI/GeomAPI_ExtremaSurfaceSurface.cxx @@ -78,8 +78,8 @@ void GeomAPI_ExtremaSurfaceSurface::Init (const Handle(Geom_Surface)& S1, const Handle(Geom_Surface)& S2) { - GeomAdaptor_Surface TheSurface1 (S1); - GeomAdaptor_Surface TheSurface2 (S2); + Handle(GeomAdaptor_Surface) TheSurface1 = new GeomAdaptor_Surface(S1); + Handle(GeomAdaptor_Surface) TheSurface2 = new GeomAdaptor_Surface(S2); Standard_Real Tol = Precision::PConfusion(); @@ -123,8 +123,8 @@ void GeomAPI_ExtremaSurfaceSurface::Init const Standard_Real V2min, const Standard_Real V2max) { - GeomAdaptor_Surface TheSurface1 (S1,U1min,U1max,V1min,V1max); - GeomAdaptor_Surface TheSurface2 (S2,U2min,U2max,V2min,V2max); + Handle(GeomAdaptor_Surface) TheSurface1 = new GeomAdaptor_Surface(S1,U1min,U1max,V1min,V1max); + Handle(GeomAdaptor_Surface) TheSurface2 = new GeomAdaptor_Surface(S2,U2min,U2max,V2min,V2max); Standard_Real Tol = Precision::PConfusion(); Extrema_ExtSS theExtSS(TheSurface1, TheSurface2, diff --git a/src/GeomAPI/GeomAPI_ProjectPointOnCurve.cxx b/src/GeomAPI/GeomAPI_ProjectPointOnCurve.cxx index 1b15896797..6006a37935 100644 --- a/src/GeomAPI/GeomAPI_ProjectPointOnCurve.cxx +++ b/src/GeomAPI/GeomAPI_ProjectPointOnCurve.cxx @@ -27,7 +27,8 @@ //======================================================================= GeomAPI_ProjectPointOnCurve::GeomAPI_ProjectPointOnCurve() : myIsDone(Standard_False), - myIndex(0) + myIndex(0), + myC(new GeomAdaptor_Curve()) { } //======================================================================= @@ -60,12 +61,12 @@ GeomAPI_ProjectPointOnCurve::GeomAPI_ProjectPointOnCurve() (const gp_Pnt& P, const Handle(Geom_Curve)& Curve) { - myC.Load(Curve); + myC = new GeomAdaptor_Curve(Curve); /* Extrema_ExtPC theExtPC(P, myC); myExtPC = theExtPC; */ - myExtPC.Initialize(myC, myC.FirstParameter(), myC.LastParameter()); + myExtPC.Initialize(myC, myC->FirstParameter(), myC->LastParameter()); myExtPC.Perform(P); myIsDone = myExtPC.IsDone() && ( myExtPC.NbExt() > 0); @@ -95,12 +96,12 @@ GeomAPI_ProjectPointOnCurve::GeomAPI_ProjectPointOnCurve() const Standard_Real Umin, const Standard_Real Usup ) { - myC.Load(Curve,Umin,Usup); + myC = new GeomAdaptor_Curve(Curve,Umin,Usup); /* Extrema_ExtPC theExtPC(P, myC); myExtPC = theExtPC; */ - myExtPC.Initialize(myC, myC.FirstParameter(), myC.LastParameter()); + myExtPC.Initialize(myC, myC->FirstParameter(), myC->LastParameter()); myExtPC.Perform(P); myIsDone = myExtPC.IsDone() && ( myExtPC.NbExt() > 0); @@ -130,7 +131,7 @@ GeomAPI_ProjectPointOnCurve::GeomAPI_ProjectPointOnCurve() const Standard_Real Umin, const Standard_Real Usup ) { - myC.Load(Curve,Umin,Usup); + myC = new GeomAdaptor_Curve(Curve,Umin,Usup); //myExtPC = Extrema_ExtPC(P, myC); myExtPC.Initialize(myC, Umin, Usup); myIsDone = Standard_False; diff --git a/src/GeomAPI/GeomAPI_ProjectPointOnCurve.hxx b/src/GeomAPI/GeomAPI_ProjectPointOnCurve.hxx index 6f2deabaac..ea2ac0126b 100644 --- a/src/GeomAPI/GeomAPI_ProjectPointOnCurve.hxx +++ b/src/GeomAPI/GeomAPI_ProjectPointOnCurve.hxx @@ -126,7 +126,7 @@ private: Standard_Boolean myIsDone; Standard_Integer myIndex; Extrema_ExtPC myExtPC; - GeomAdaptor_Curve myC; + Handle(GeomAdaptor_Curve) myC; }; diff --git a/src/GeomAPI/GeomAPI_ProjectPointOnSurf.cxx b/src/GeomAPI/GeomAPI_ProjectPointOnSurf.cxx index c04bcce8af..ce9a514c22 100644 --- a/src/GeomAPI/GeomAPI_ProjectPointOnSurf.cxx +++ b/src/GeomAPI/GeomAPI_ProjectPointOnSurf.cxx @@ -28,7 +28,8 @@ //======================================================================= GeomAPI_ProjectPointOnSurf::GeomAPI_ProjectPointOnSurf() : myIsDone (Standard_False), - myIndex(0) + myIndex(0), + myGeomAdaptor(new GeomAdaptor_Surface()) { } @@ -135,7 +136,7 @@ GeomAPI_ProjectPointOnSurf::GeomAPI_ProjectPointOnSurf() //modified by NIZNHY-PKV Mon Apr 8 11:13:37 2002 f XXX Standard_Real Umin, Usup, Vmin, Vsup; Surface->Bounds(Umin, Usup, Vmin, Vsup); - myGeomAdaptor.Load(Surface, Umin, Usup, Vmin, Vsup); + myGeomAdaptor = new GeomAdaptor_Surface(Surface, Umin, Usup, Vmin, Vsup); // //myExtPS = Extrema_ExtPS(); myExtPS.SetAlgo(theProjAlgo); @@ -165,7 +166,7 @@ GeomAPI_ProjectPointOnSurf::GeomAPI_ProjectPointOnSurf() //modified by NIZNHY-PKV Thu Apr 4 10:38:23 2002 f //GeomAdaptor_Surface TheSurface (Surface,Umin,Usup,Vmin,Vsup); //myExtPS = Extrema_ExtPS (P, TheSurface, Tol, Tol); - myGeomAdaptor.Load(Surface, Umin,Usup,Vmin,Vsup); + myGeomAdaptor = new GeomAdaptor_Surface(Surface, Umin,Usup,Vmin,Vsup); //myExtPS = Extrema_ExtPS(); myExtPS.SetAlgo(theProjAlgo); myExtPS.Initialize(myGeomAdaptor, Umin, Usup, Vmin, Vsup, Tolerance, Tolerance); @@ -191,7 +192,7 @@ GeomAPI_ProjectPointOnSurf::GeomAPI_ProjectPointOnSurf() //modified by NIZNHY-PKV Thu Apr 4 10:39:10 2002 f //GeomAdaptor_Surface TheSurface (Surface,Umin,Usup,Vmin,Vsup); //myExtPS = Extrema_ExtPS (P, TheSurface, Tolerance, Tolerance); - myGeomAdaptor.Load(Surface, Umin,Usup,Vmin,Vsup); + myGeomAdaptor = new GeomAdaptor_Surface(Surface, Umin,Usup,Vmin,Vsup); //myExtPS = Extrema_ExtPS(); myExtPS.SetAlgo(theProjAlgo); myExtPS.Initialize(myGeomAdaptor, Umin, Usup, Vmin, Vsup, Tolerance, Tolerance); @@ -214,7 +215,7 @@ GeomAPI_ProjectPointOnSurf::GeomAPI_ProjectPointOnSurf() Standard_Real Tolerance = Precision::PConfusion(); //modified by NIZNHY-PKV Thu Apr 4 10:41:50 2002 f //GeomAdaptor_Surface TheSurface (Surface,Umin,Usup,Vmin,Vsup); - myGeomAdaptor.Load(Surface, Umin,Usup,Vmin,Vsup); + myGeomAdaptor = new GeomAdaptor_Surface(Surface, Umin,Usup,Vmin,Vsup); //modified by NIZNHY-PKV Thu Apr 4 10:42:29 2002 t //myExtPS = Extrema_ExtPS(); //modified by NIZNHY-PKV Thu Apr 4 10:42:32 2002 f @@ -238,7 +239,7 @@ GeomAPI_ProjectPointOnSurf::GeomAPI_ProjectPointOnSurf() { //modified by NIZNHY-PKV Thu Apr 4 10:43:00 2002 f //GeomAdaptor_Surface TheSurface (Surface,Umin,Usup,Vmin,Vsup); - myGeomAdaptor.Load(Surface, Umin,Usup,Vmin,Vsup); + myGeomAdaptor = new GeomAdaptor_Surface(Surface, Umin,Usup,Vmin,Vsup); //modified by NIZNHY-PKV Thu Apr 4 10:43:16 2002 t //myExtPS = Extrema_ExtPS(); //modified by NIZNHY-PKV Thu Apr 4 10:43:18 2002 f diff --git a/src/GeomAPI/GeomAPI_ProjectPointOnSurf.hxx b/src/GeomAPI/GeomAPI_ProjectPointOnSurf.hxx index 9d08f3762c..9b6dd7873b 100644 --- a/src/GeomAPI/GeomAPI_ProjectPointOnSurf.hxx +++ b/src/GeomAPI/GeomAPI_ProjectPointOnSurf.hxx @@ -158,7 +158,7 @@ private: Standard_Boolean myIsDone; Standard_Integer myIndex; Extrema_ExtPS myExtPS; - GeomAdaptor_Surface myGeomAdaptor; + Handle(GeomAdaptor_Surface) myGeomAdaptor; }; diff --git a/src/GeomAdaptor/GeomAdaptor.cxx b/src/GeomAdaptor/GeomAdaptor.cxx index 6d6f30d4ae..175a888638 100644 --- a/src/GeomAdaptor/GeomAdaptor.cxx +++ b/src/GeomAdaptor/GeomAdaptor.cxx @@ -42,38 +42,38 @@ //function : MakeCurve //purpose : //======================================================================= -Handle(Geom_Curve) GeomAdaptor::MakeCurve (const Adaptor3d_Curve& HC) +Handle(Geom_Curve) GeomAdaptor::MakeCurve (const Handle(Adaptor3d_Curve)& HC) { Handle(Geom_Curve) C; - switch (HC.GetType()) + switch (HC->GetType()) { case GeomAbs_Line: - C = new Geom_Line(HC.Line()); + C = new Geom_Line(HC->Line()); break; case GeomAbs_Circle: - C = new Geom_Circle(HC.Circle()); + C = new Geom_Circle(HC->Circle()); break; case GeomAbs_Ellipse: - C = new Geom_Ellipse(HC.Ellipse()); + C = new Geom_Ellipse(HC->Ellipse()); break; case GeomAbs_Parabola: - C = new Geom_Parabola(HC.Parabola()); + C = new Geom_Parabola(HC->Parabola()); break; case GeomAbs_Hyperbola: - C = new Geom_Hyperbola(HC.Hyperbola()); + C = new Geom_Hyperbola(HC->Hyperbola()); break; case GeomAbs_BezierCurve: - C = Handle(Geom_BezierCurve)::DownCast(HC.Bezier()->Copy()); + C = Handle(Geom_BezierCurve)::DownCast(HC->Bezier()->Copy()); break; case GeomAbs_BSplineCurve: - C = Handle(Geom_BSplineCurve)::DownCast(HC.BSpline()->Copy()); + C = Handle(Geom_BSplineCurve)::DownCast(HC->BSpline()->Copy()); break; default: @@ -83,10 +83,10 @@ Handle(Geom_Curve) GeomAdaptor::MakeCurve (const Adaptor3d_Curve& HC) // trim the curve if necassary. if ((! C.IsNull() && - (HC.FirstParameter() != C->FirstParameter())) || - (HC.LastParameter() != C->LastParameter())) { + (HC->FirstParameter() != C->FirstParameter())) || + (HC->LastParameter() != C->LastParameter())) { - C = new Geom_TrimmedCurve(C,HC.FirstParameter(),HC.LastParameter()); + C = new Geom_TrimmedCurve(C, HC->FirstParameter(), HC->LastParameter()); } return C; @@ -97,54 +97,54 @@ Handle(Geom_Curve) GeomAdaptor::MakeCurve (const Adaptor3d_Curve& HC) //function : MakeSurface //purpose : //======================================================================= -Handle(Geom_Surface) GeomAdaptor::MakeSurface(const Adaptor3d_Surface& HS, +Handle(Geom_Surface) GeomAdaptor::MakeSurface(const Handle(Adaptor3d_Surface)& HS, const Standard_Boolean theTrimFlag) { Handle(Geom_Surface) S; - switch ( HS.GetType()) + switch (HS->GetType()) { case GeomAbs_Plane: - S = new Geom_Plane(HS.Plane()); + S = new Geom_Plane(HS->Plane()); break; case GeomAbs_Cylinder: - S = new Geom_CylindricalSurface(HS.Cylinder()); + S = new Geom_CylindricalSurface(HS->Cylinder()); break; case GeomAbs_Cone: - S = new Geom_ConicalSurface(HS.Cone()); + S = new Geom_ConicalSurface(HS->Cone()); break; case GeomAbs_Sphere: - S = new Geom_SphericalSurface(HS.Sphere()); + S = new Geom_SphericalSurface(HS->Sphere()); break; case GeomAbs_Torus: - S = new Geom_ToroidalSurface(HS.Torus()); + S = new Geom_ToroidalSurface(HS->Torus()); break; case GeomAbs_BezierSurface: - S = Handle(Geom_BezierSurface)::DownCast(HS.Bezier()->Copy()); + S = Handle(Geom_BezierSurface)::DownCast(HS->Bezier()->Copy()); break; case GeomAbs_BSplineSurface: - S = Handle(Geom_BSplineSurface)::DownCast(HS.BSpline()->Copy()); + S = Handle(Geom_BSplineSurface)::DownCast(HS->BSpline()->Copy()); break; case GeomAbs_SurfaceOfRevolution: S = new Geom_SurfaceOfRevolution - (GeomAdaptor::MakeCurve(*HS.BasisCurve()),HS.AxeOfRevolution()); + (GeomAdaptor::MakeCurve(HS->BasisCurve()), HS->AxeOfRevolution()); break; case GeomAbs_SurfaceOfExtrusion: S = new Geom_SurfaceOfLinearExtrusion - (GeomAdaptor::MakeCurve(*HS.BasisCurve()),HS.Direction()); + (GeomAdaptor::MakeCurve(HS->BasisCurve()), HS->Direction()); break; case GeomAbs_OffsetSurface: - S = new Geom_OffsetSurface(GeomAdaptor::MakeSurface (*HS.BasisSurface()), - HS.OffsetValue()); + S = new Geom_OffsetSurface(GeomAdaptor::MakeSurface (HS->BasisSurface()), + HS->OffsetValue()); break; case GeomAbs_OtherSurface: @@ -158,14 +158,14 @@ Handle(Geom_Surface) GeomAdaptor::MakeSurface(const Adaptor3d_Surface& HS, // trim the surface if necassary. Standard_Real U1, U2, V1, V2; S->Bounds(U1, U2, V1, V2); - if ((HS.FirstUParameter() != U1 ) || - (HS.LastUParameter () != U2 ) || - (HS.FirstVParameter() != V1 ) || - (HS.LastVParameter () != V2 ) ) { + if ((HS->FirstUParameter() != U1 ) || + (HS->LastUParameter () != U2 ) || + (HS->FirstVParameter() != V1 ) || + (HS->LastVParameter () != V2 )) { S = new Geom_RectangularTrimmedSurface - (S,HS.FirstUParameter(),HS.LastUParameter(), - HS.FirstVParameter(),HS.LastVParameter()); + (S,HS->FirstUParameter(), HS->LastUParameter(), + HS->FirstVParameter(), HS->LastVParameter()); } return S; diff --git a/src/GeomAdaptor/GeomAdaptor.hxx b/src/GeomAdaptor/GeomAdaptor.hxx index 2ed59da1f7..67f0e8c577 100644 --- a/src/GeomAdaptor/GeomAdaptor.hxx +++ b/src/GeomAdaptor/GeomAdaptor.hxx @@ -39,12 +39,12 @@ public: //! handled by reference. //! Build a Geom_Curve using the information from the //! Curve from Adaptor3d - Standard_EXPORT static Handle(Geom_Curve) MakeCurve (const Adaptor3d_Curve& C); + Standard_EXPORT static Handle(Geom_Curve) MakeCurve (const Handle(Adaptor3d_Curve)& C); //! Build a Geom_Surface using the information from the Surface from Adaptor3d //! @param theS - Surface adaptor to convert. //! @param theTrimFlag - True if perform trim surface values by adaptor and false otherwise. - Standard_EXPORT static Handle(Geom_Surface) MakeSurface (const Adaptor3d_Surface& theS, + Standard_EXPORT static Handle(Geom_Surface) MakeSurface (const Handle(Adaptor3d_Surface)& theS, const Standard_Boolean theTrimFlag = Standard_True); }; diff --git a/src/GeomFill/GeomFill_BoundWithSurf.cxx b/src/GeomFill/GeomFill_BoundWithSurf.cxx index 0ae0e2af78..8369fa7e67 100644 --- a/src/GeomFill/GeomFill_BoundWithSurf.cxx +++ b/src/GeomFill/GeomFill_BoundWithSurf.cxx @@ -35,7 +35,7 @@ IMPLEMENT_STANDARD_RTTIEXT(GeomFill_BoundWithSurf,GeomFill_Boundary) //purpose : //======================================================================= GeomFill_BoundWithSurf::GeomFill_BoundWithSurf -(const Adaptor3d_CurveOnSurface& CurveOnSurf, +(const Handle(Adaptor3d_CurveOnSurface)& CurveOnSurf, const Standard_Real Tol3d, const Standard_Real Tolang) : GeomFill_Boundary(Tol3d,Tolang), myConS(CurveOnSurf) @@ -52,7 +52,7 @@ gp_Pnt GeomFill_BoundWithSurf::Value(const Standard_Real U) const { Standard_Real x = U; if(!myPar.IsNull()) x = myPar->Value(U); - return myConS.Value(x); + return myConS->Value(x); } @@ -67,7 +67,7 @@ void GeomFill_BoundWithSurf::D1(const Standard_Real U, { Standard_Real x = U, dx = 1.; if(!myPar.IsNull()) myPar->D1(U,x,dx); - myConS.D1(x, P, V); + myConS->D1(x, P, V); V.Multiply(dx); } @@ -94,15 +94,15 @@ gp_Vec GeomFill_BoundWithSurf::Norm(const Standard_Real U) const if (!HasNormals()) throw Standard_Failure("BoundWithSurf Norm : pas de contrainte"); -// Handle(Adaptor3d_Surface)& S = myConS.GetSurface(); -// Handle(Adaptor2d_Curve2d)& C2d = myConS.GetCurve(); +// Handle(Adaptor3d_Surface)& S = myConS->GetSurface(); +// Handle(Adaptor2d_Curve2d)& C2d = myConS->GetCurve(); Standard_Real x,y; Standard_Real w = U; if(!myPar.IsNull()) w = myPar->Value(U); - myConS.GetCurve()->Value(w).Coord(x,y); + myConS->GetCurve()->Value(w).Coord(x,y); gp_Pnt P; gp_Vec Su, Sv; - myConS.GetSurface()->D1(x,y,P,Su,Sv); + myConS->GetSurface()->D1(x,y,P,Su,Sv); Su.Cross(Sv); Su.Normalize(); return Su; @@ -120,20 +120,20 @@ void GeomFill_BoundWithSurf::D1Norm(const Standard_Real U, { if (!HasNormals()) throw Standard_Failure("BoundWithSurf Norm : pas de contrainte"); -// Handle(Adaptor3d_Surface)& S = myConS.GetSurface(); -// Handle(Adaptor2d_Curve2d)& C2d = myConS.GetCurve(); +// Handle(Adaptor3d_Surface)& S = myConS->GetSurface(); +// Handle(Adaptor2d_Curve2d)& C2d = myConS->GetCurve(); gp_Pnt2d P2d; gp_Vec2d V2d; Standard_Real x,y,dx,dy; Standard_Real w = U, dw = 1.; if(!myPar.IsNull()) myPar->D1(U,w,dw); - myConS.GetCurve()->D1(w,P2d,V2d); + myConS->GetCurve()->D1(w,P2d,V2d); P2d.Coord(x,y); V2d.Multiply(dw); V2d.Coord(dx,dy); gp_Pnt P; gp_Vec Su, Sv, Suu, Suv, Svv; - myConS.GetSurface()->D2(x,y,P,Su,Sv, Suu, Svv, Suv); + myConS->GetSurface()->D2(x,y,P,Su,Sv, Suu, Svv, Suv); N = Su.Crossed(Sv); N.Normalize(); Standard_Real nsuu = N.Dot(Suu), nsuv = N.Dot(Suv), nsvv = N.Dot(Svv); @@ -196,8 +196,8 @@ void GeomFill_BoundWithSurf::Bounds(Standard_Real& First, { if(!myPar.IsNull()) myPar->Bounds(First,Last); else{ - First = myConS.FirstParameter(); - Last = myConS.LastParameter(); + First = myConS->FirstParameter(); + Last = myConS->LastParameter(); } } diff --git a/src/GeomFill/GeomFill_BoundWithSurf.hxx b/src/GeomFill/GeomFill_BoundWithSurf.hxx index 3ecbdef8ea..a89a2c681f 100644 --- a/src/GeomFill/GeomFill_BoundWithSurf.hxx +++ b/src/GeomFill/GeomFill_BoundWithSurf.hxx @@ -76,7 +76,7 @@ public: //! Standard_Real TolAng = ... ; //! myBoundary = GeomFill_BoundWithSurf ( //! CurveOnSurf, Tol, TolAng ); - Standard_EXPORT GeomFill_BoundWithSurf(const Adaptor3d_CurveOnSurface& CurveOnSurf, const Standard_Real Tol3d, const Standard_Real Tolang); + Standard_EXPORT GeomFill_BoundWithSurf(const Handle(Adaptor3d_CurveOnSurface)& CurveOnSurf, const Standard_Real Tol3d, const Standard_Real Tolang); Standard_EXPORT gp_Pnt Value (const Standard_Real U) const Standard_OVERRIDE; @@ -107,7 +107,7 @@ protected: private: - Adaptor3d_CurveOnSurface myConS; + Handle(Adaptor3d_CurveOnSurface) myConS; Handle(Law_Function) myPar; diff --git a/src/GeomFill/GeomFill_CircularBlendFunc.cxx b/src/GeomFill/GeomFill_CircularBlendFunc.cxx index 9bc250383b..d5fa68c6f1 100644 --- a/src/GeomFill/GeomFill_CircularBlendFunc.cxx +++ b/src/GeomFill/GeomFill_CircularBlendFunc.cxx @@ -170,7 +170,7 @@ void GeomFill_CircularBlendFunc::Discret() Standard_Real Fleche = 1.e-2 * L; Standard_Real Angle, Cosa, Percent; GCPnts_QuasiUniformDeflection Samp; - Samp.Initialize (*C, Fleche); + Samp.Initialize (C, Fleche); myBary.SetCoord(0.,0.,0.); gp_Vec ns1, ns2; diff --git a/src/GeomFill/GeomFill_CorrectedFrenet.cxx b/src/GeomFill/GeomFill_CorrectedFrenet.cxx index 609d0bb8e2..56c4f4722d 100644 --- a/src/GeomFill/GeomFill_CorrectedFrenet.cxx +++ b/src/GeomFill/GeomFill_CorrectedFrenet.cxx @@ -485,7 +485,7 @@ Standard_Boolean GeomFill_CorrectedFrenet::SetCurve(const Handle(Adaptor3d_Curve gp_Vec D1; frenet->SetInterval(First, Last); //To have right evaluation at bounds - GeomFill_SnglrFunc CS(myCurve); + Handle(GeomFill_SnglrFunc) CS = new GeomFill_SnglrFunc(myCurve); BndLib_Add3dCurve::Add(CS, First, Last, 1.e-2, Boite); LengthMin = Boite.GetGap()*1.e-4; @@ -543,7 +543,7 @@ Standard_Boolean GeomFill_CorrectedFrenet::SetCurve(const Handle(Adaptor3d_Curve i++; //Evaluate the Next step - CS.D1(Param, PonC, D1); + CS->D1(Param, PonC, D1); L = Max(PonC.XYZ().Modulus()/2, LengthMin); norm = D1.Magnitude(); if (norm < Precision::Confusion()) { diff --git a/src/GeomFill/GeomFill_EvolvedSection.cxx b/src/GeomFill/GeomFill_EvolvedSection.cxx index d9570def03..ebcd74009b 100644 --- a/src/GeomFill/GeomFill_EvolvedSection.cxx +++ b/src/GeomFill/GeomFill_EvolvedSection.cxx @@ -315,7 +315,7 @@ GeomFill_EvolvedSection::GeomFill_EvolvedSection(const Handle(Geom_Curve)& C, { Standard_Real L, val, max, U, Delta; Standard_Integer ii; - GeomAdaptor_Curve AC (mySection); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(mySection); L = GCPnts_AbscissaPoint::Length(AC); Delta = ( Last - First) / 20; diff --git a/src/GeomFill/GeomFill_Frenet.cxx b/src/GeomFill/GeomFill_Frenet.cxx index ff4f83319b..cfac9ef7b3 100644 --- a/src/GeomFill/GeomFill_Frenet.cxx +++ b/src/GeomFill/GeomFill_Frenet.cxx @@ -151,7 +151,7 @@ Standard_Boolean GeomFill_Frenet::SetCurve(const Handle(Adaptor3d_Curve)& C) void GeomFill_Frenet::Init() { Standard_Integer i, j; - GeomFill_SnglrFunc Func(myCurve); + Handle(GeomFill_SnglrFunc) Func = new GeomFill_SnglrFunc(myCurve); Standard_Real TolF = 1.0e-10, Tol = 10*TolF, Tol2 = Tol * Tol, PTol = Precision::PConfusion(); @@ -173,7 +173,7 @@ Standard_Boolean GeomFill_Frenet::SetCurve(const Handle(Adaptor3d_Curve)& C) IsLin->ChangeValue(i) = Standard_True; IsConst->ChangeValue(i) = Standard_True; for(j = 1; j <= NbControl; j++) { - Func.D0(myC2Disc->Value(i) + (j-1)*Step, C); + Func->D0(myC2Disc->Value(i) + (j-1)*Step, C); if(j == 1) C1 = C; modulus = C.XYZ().Modulus(); if(modulus > Tol) { @@ -204,7 +204,7 @@ Standard_Boolean GeomFill_Frenet::SetCurve(const Handle(Adaptor3d_Curve)& C) for(i = 1; i <= NbIntC2; i++) { if (!IsLin->Value(i) && !IsConst->Value(i)) { - Func.SetRatio(1./AveFunc(i)); // Normalization + Func->SetRatio(1./AveFunc(i)); // Normalization Ext.Initialize(Func, myC2Disc->Value(i), myC2Disc->Value(i+1), TolF); Ext.Perform(Origin); if(Ext.IsDone() && Ext.NbExt() != 0) @@ -241,7 +241,7 @@ Standard_Boolean GeomFill_Frenet::SetCurve(const Handle(Adaptor3d_Curve)& C) { SeqArray[i].Prepend( myC2Disc->Value(i+1) ); SeqArray[i].Append( myC2Disc->Value(i+2) ); - Func.SetRatio(1./AveFunc(i+1)); // Normalization + Func->SetRatio(1./AveFunc(i+1)); // Normalization for (j = 1; j < SeqArray[i].Length(); j++) if (SeqArray[i](j+1) - SeqArray[i](j) > PTol) { @@ -299,7 +299,7 @@ Standard_Boolean GeomFill_Frenet::SetCurve(const Handle(Adaptor3d_Curve)& C) gp_Vec SnglDer, SnglDer2; Standard_Real norm; for(i = 1; i <= mySngl->Length(); i++) { - Func.D2(mySngl->Value(i), C, SnglDer, SnglDer2); + Func->D2(mySngl->Value(i), C, SnglDer, SnglDer2); if ((norm = SnglDer.Magnitude()) > gp::Resolution()) mySnglLen->ChangeValue(i) = Min(NullTol/norm, MaxSingular); else if ((norm = SnglDer2.Magnitude()) > gp::Resolution()) diff --git a/src/GeomFill/GeomFill_GuideTrihedronAC.cxx b/src/GeomFill/GeomFill_GuideTrihedronAC.cxx index 2a519c1ba0..3b0cd30441 100644 --- a/src/GeomFill/GeomFill_GuideTrihedronAC.cxx +++ b/src/GeomFill/GeomFill_GuideTrihedronAC.cxx @@ -67,7 +67,7 @@ GeomFill_GuideTrihedronAC::GeomFill_GuideTrihedronAC(const Handle(Adaptor3d_Curv { Standard_Real s = myCurveAC->GetSParameter(Param); // abscisse curviligne <=> Param Standard_Real OrigG = Orig1 + s*(Orig2-Orig1); // abscisse curv sur le guide (cas multi-edges) - Standard_Real tG = myGuideAC->GetUParameter (*myGuide, OrigG, 1); // param <=> s sur theGuide + Standard_Real tG = myGuideAC->GetUParameter (myGuide, OrigG, 1); // param <=> s sur theGuide gp_Pnt P, PG; gp_Vec To, B; @@ -105,7 +105,7 @@ GeomFill_GuideTrihedronAC::GeomFill_GuideTrihedronAC(const Handle(Adaptor3d_Curv // parametre <=> s sur theGuide OrigG = Orig1 + s*(Orig2-Orig1); // parametre <=> s sur theGuide - tG = myGuideAC->GetUParameter (*myGuide, OrigG, 1); + tG = myGuideAC->GetUParameter (myGuide, OrigG, 1); gp_Pnt P, PG; gp_Vec To, DTo, TG, B, BPrim; @@ -173,7 +173,7 @@ GeomFill_GuideTrihedronAC::GeomFill_GuideTrihedronAC(const Handle(Adaptor3d_Curv Standard_Real s = myCurveAC->GetSParameter(Param); // parametre <=> s sur theGuide Standard_Real OrigG = Orig1 + s*(Orig2-Orig1); - Standard_Real tG = myGuideAC->GetUParameter (*myGuide, OrigG, 1); + Standard_Real tG = myGuideAC->GetUParameter (myGuide, OrigG, 1); gp_Pnt P,PG; gp_Vec TG,DTG; @@ -342,7 +342,7 @@ GeomFill_GuideTrihedronAC::GeomFill_GuideTrihedronAC(const Handle(Adaptor3d_Curv Nb = Seq.Length(); for (ii=1; ii<=Nb; ii++) { - TT(ii) = myCurveAC->GetUParameter (*myCurve, Seq(ii), 1); + TT(ii) = myCurveAC->GetUParameter (myCurve, Seq(ii), 1); } } @@ -363,9 +363,9 @@ void GeomFill_GuideTrihedronAC::SetInterval(const Standard_Real First, // myCurveAC->Trim(Sf, Sl, UTol); U = Orig1 + Sf*(Orig2-Orig1); - Sf = myGuideAC->GetUParameter(*myGuide, U, 1); + Sf = myGuideAC->GetUParameter(myGuide, U, 1); U = Orig1 + Sl*(Orig2-Orig1); - Sl = myGuideAC->GetUParameter(*myGuide, U, 1); + Sl = myGuideAC->GetUParameter(myGuide, U, 1); myTrimG = myGuide->Trim(Sf, Sl, UTol); } diff --git a/src/GeomFill/GeomFill_LocationGuide.cxx b/src/GeomFill/GeomFill_LocationGuide.cxx index ea04ee4ccb..fc13053f17 100644 --- a/src/GeomFill/GeomFill_LocationGuide.cxx +++ b/src/GeomFill/GeomFill_LocationGuide.cxx @@ -333,8 +333,8 @@ static void InGoodPeriod(const Standard_Real Prec, // Surface de revolution Revol = new(Geom_SurfaceOfRevolution) (S, Ax); - GeomAdaptor_Surface GArevol(Revol); - Extrema_ExtCS DistMini(*myGuide, GArevol, + Handle(GeomAdaptor_Surface) GArevol = new GeomAdaptor_Surface(Revol); + Extrema_ExtCS DistMini(myGuide, GArevol, Precision::Confusion(), Precision::Confusion()); Extrema_POnCurv Pc; Extrema_POnSurf Ps; diff --git a/src/GeomFill/GeomFill_NSections.cxx b/src/GeomFill/GeomFill_NSections.cxx index 9fd91d3fca..7ca0f48fe2 100644 --- a/src/GeomFill/GeomFill_NSections.cxx +++ b/src/GeomFill/GeomFill_NSections.cxx @@ -833,7 +833,7 @@ GeomFill_NSections::GeomFill_NSections(const TColGeom_SequenceOfCurve& NC, Standard_Real L, Lmax=0.; Standard_Integer ii; for (ii=1; ii <=mySections.Length(); ii++) { - GeomAdaptor_Curve AC (mySections(ii)); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(mySections(ii)); L = GCPnts_AbscissaPoint::Length(AC); if (L>Lmax) Lmax = L; } diff --git a/src/GeomFill/GeomFill_SectionPlacement.cxx b/src/GeomFill/GeomFill_SectionPlacement.cxx index a2616b4b1d..d7083713fa 100644 --- a/src/GeomFill/GeomFill_SectionPlacement.cxx +++ b/src/GeomFill/GeomFill_SectionPlacement.cxx @@ -53,17 +53,17 @@ // Function : // Purpose : //=============================================================== -static void Tangente(const Adaptor3d_Curve& Path, +static void Tangente(const Handle(Adaptor3d_Curve)& Path, const Standard_Real Param, gp_Pnt& P, gp_Vec& Tang) { - Path.D1(Param, P, Tang); + Path->D1(Param, P, Tang); Standard_Real Norm = Tang.Magnitude(); for (Standard_Integer ii=2; (ii<12) && (Norm < Precision::Confusion()); ii++) { - Tang = Path.DN(Param, ii); + Tang = Path->DN(Param, ii); Norm = Tang.Magnitude(); } @@ -107,7 +107,7 @@ static Standard_Real EvalAngle(const gp_Vec& V1, // Purpose : Examine un extrema pour updater & //=============================================================== static void DistMini(const Extrema_ExtPC& Ext, - const Adaptor3d_Curve& C, + const Handle(Adaptor3d_Curve)& C, Standard_Real& Dist, Standard_Real& Param) { @@ -120,11 +120,11 @@ static void DistMini(const Extrema_ExtPC& Ext, if ( (dist1FirstParameter(); } else { Dist2 = dist2; - Param = C.LastParameter(); + Param = C->LastParameter(); } } @@ -166,7 +166,7 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, else { Handle(Geom_Curve) CurveSection = Handle(Geom_Curve)::DownCast(Section); - myAdpSection.Load(CurveSection); + myAdpSection = new GeomAdaptor_Curve(CurveSection); mySection = CurveSection; } @@ -195,36 +195,36 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, gp_Pnt P; gp_Vec V; Tangente(myAdpSection, - (myAdpSection.FirstParameter()+myAdpSection.LastParameter())/2, + (myAdpSection->FirstParameter()+myAdpSection->LastParameter())/2, P, V); TheAxe.SetLocation(P); TheAxe.SetDirection(V); // y a t'il un Plan moyen ? - GeomAbs_CurveType TheType = myAdpSection.GetType(); + GeomAbs_CurveType TheType = myAdpSection->GetType(); switch (TheType) { case GeomAbs_Circle: { isplan = Standard_True; - TheAxe = myAdpSection.Circle().Axis(); + TheAxe = myAdpSection->Circle().Axis(); break; } case GeomAbs_Ellipse: { isplan = Standard_True; - TheAxe = myAdpSection.Ellipse().Axis(); + TheAxe = myAdpSection->Ellipse().Axis(); break; } case GeomAbs_Hyperbola: { isplan = Standard_True; - TheAxe = myAdpSection.Hyperbola().Axis(); + TheAxe = myAdpSection->Hyperbola().Axis(); break; } case GeomAbs_Parabola: { isplan = Standard_True; - TheAxe = myAdpSection.Parabola().Axis(); + TheAxe = myAdpSection->Parabola().Axis(); break; } case GeomAbs_Line: @@ -235,7 +235,7 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, case GeomAbs_BezierCurve: case GeomAbs_BSplineCurve: { - NbPoles = myAdpSection.NbPoles(); + NbPoles = myAdpSection->NbPoles(); break; } default: @@ -247,12 +247,12 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, { // Calcul d'un plan moyen. Handle(TColgp_HArray1OfPnt) Pnts; - Standard_Real first = myAdpSection.FirstParameter(); - Standard_Real last = myAdpSection.LastParameter(); - if (myAdpSection.IsPeriodic()) + Standard_Real first = myAdpSection->FirstParameter(); + Standard_Real last = myAdpSection->LastParameter(); + if (myAdpSection->IsPeriodic()) { //Correct boundaries to avoid mistake of LocateU - Handle(Geom_Curve) aCurve = myAdpSection.Curve(); + Handle(Geom_Curve) aCurve = myAdpSection->Curve(); if (aCurve->IsInstance(STANDARD_TYPE(Geom_TrimmedCurve))) aCurve = (Handle(Geom_TrimmedCurve)::DownCast(aCurve))->BasisCurve(); Standard_Real Ufirst = aCurve->FirstParameter(); @@ -265,10 +265,10 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, last = U2; } Standard_Real t, delta; - if (myAdpSection.GetType() == GeomAbs_BSplineCurve) + if (myAdpSection->GetType() == GeomAbs_BSplineCurve) { Handle(Geom_BSplineCurve) BC = - Handle(Geom_BSplineCurve)::DownCast(myAdpSection.Curve()); + Handle(Geom_BSplineCurve)::DownCast(myAdpSection->Curve()); Standard_Integer I1, I2, I3, I4; BC->LocateU( first, Precision::Confusion(), I1, I2 ); BC->LocateU( last, Precision::Confusion(), I3, I4 ); @@ -280,7 +280,7 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, NbPnts += NbLocalPnts; if (I3 != I4 && first < BC->Knot(I3)) NbPnts += NbLocalPnts; - if (!myAdpSection.IsClosed()) + if (!myAdpSection->IsClosed()) NbPnts++; Pnts = new TColgp_HArray1OfPnt(1, NbPnts); Standard_Integer nb = 1; @@ -291,7 +291,7 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, for (j = 0; j < NbLocalPnts; j++) { t = first + j*delta; - Pnts->SetValue( nb++, myAdpSection.Value(t) ); + Pnts->SetValue( nb++, myAdpSection->Value(t) ); } } for (i = I2; i < I3; i++) @@ -300,7 +300,7 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, delta = (BC->Knot(i+1) - t) / NbLocalPnts; for (j = 0; j < NbLocalPnts; j++) { - Pnts->SetValue( nb++, myAdpSection.Value(t) ); + Pnts->SetValue( nb++, myAdpSection->Value(t) ); t += delta; } } @@ -310,27 +310,27 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, delta = (last - t) / NbLocalPnts; for (j = 0; j < NbLocalPnts; j++) { - Pnts->SetValue( nb++, myAdpSection.Value(t) ); + Pnts->SetValue( nb++, myAdpSection->Value(t) ); t += delta; } } - if (!myAdpSection.IsClosed()) - Pnts->SetValue( nb, myAdpSection.Value(last) ); + if (!myAdpSection->IsClosed()) + Pnts->SetValue( nb, myAdpSection->Value(last) ); } else // other type { Standard_Integer NbPnts = NbPoles-1; - if (!myAdpSection.IsClosed()) + if (!myAdpSection->IsClosed()) NbPnts++; Pnts = new TColgp_HArray1OfPnt(1, NbPnts); delta = (last - first) / (NbPoles-1); for (i = 0; i < NbPoles-1; i++) { t = first + i*delta; - Pnts->SetValue( i+1, myAdpSection.Value(t) ); + Pnts->SetValue( i+1, myAdpSection->Value(t) ); } - if (!myAdpSection.IsClosed()) - Pnts->SetValue( NbPnts, myAdpSection.Value(last) ); + if (!myAdpSection->IsClosed()) + Pnts->SetValue( NbPnts, myAdpSection->Value(last) ); } Standard_Boolean issing; @@ -345,8 +345,8 @@ GeomFill_SectionPlacement(const Handle(GeomFill_LocationLaw)& L, myExt.Initialize(myAdpSection, - myAdpSection.FirstParameter(), - myAdpSection.LastParameter(), + myAdpSection->FirstParameter(), + myAdpSection->LastParameter(), Precision::Confusion()); } } @@ -384,28 +384,28 @@ void GeomFill_SectionPlacement::Perform(const Handle(Adaptor3d_Curve)& Path, if (myIsPoint) { - Extrema_ExtPC Projector(myPoint, *Path, Precision::Confusion()); - DistMini( Projector, *Path, Dist, PathParam ); + Extrema_ExtPC Projector(myPoint, Path, Precision::Confusion()); + DistMini( Projector, Path, Dist, PathParam ); AngleMax = M_PI/2; } else { PathParam = Path->FirstParameter(); - SecParam = myAdpSection.FirstParameter(); + SecParam = myAdpSection->FirstParameter(); Standard_Real distaux, taux = 0.0, alpha; gp_Pnt PonPath, PonSec, P; gp_Vec VRef, dp1; VRef.SetXYZ(TheAxe.Direction().XYZ()); - Tangente (*Path, PathParam, PonPath, dp1); - PonSec = myAdpSection.Value(SecParam); + Tangente (Path, PathParam, PonPath, dp1); + PonSec = myAdpSection->Value(SecParam); Dist = PonPath.Distance(PonSec); if (Dist > Tol) { // On Cherche un meilleur point sur la section myExt.Perform(PonPath); if ( myExt.IsDone() ) { DistMini(myExt, myAdpSection, Dist, SecParam); - PonSec = myAdpSection.Value(SecParam); + PonSec = myAdpSection->Value(SecParam); } } AngleMax = EvalAngle(VRef, dp1); @@ -477,14 +477,14 @@ void GeomFill_SectionPlacement::Perform(const Handle(Adaptor3d_Curve)& Path, else { PathParam = Path->LastParameter(); - Tangente (*Path, PathParam, PonPath, dp1); - PonSec = myAdpSection.Value(SecParam); + Tangente (Path, PathParam, PonPath, dp1); + PonSec = myAdpSection->Value(SecParam); Dist = PonPath.Distance(PonSec); if (Dist > Tol) { // On Cherche un meilleur point sur la section myExt.Perform(PonPath); if ( myExt.IsDone() ) { DistMini(myExt, myAdpSection, Dist, SecParam); - PonSec = myAdpSection.Value(SecParam); + PonSec = myAdpSection->Value(SecParam); } } AngleMax = EvalAngle(VRef, dp1); @@ -546,7 +546,7 @@ void GeomFill_SectionPlacement::Perform(const Handle(Adaptor3d_Curve)& Path, AngleMax = alpha; PonPath = P; PathParam = w; - PonSec = myAdpSection.Value(SecParam); + PonSec = myAdpSection->Value(SecParam); } } else { @@ -581,7 +581,7 @@ void GeomFill_SectionPlacement::Perform(const Handle(Adaptor3d_Curve)& Path, } Trouve = (Dist <= Tol); if (!Trouve) { - Tangente (*Path, Path->LastParameter(), P, dp1); + Tangente (Path, Path->LastParameter(), P, dp1); alpha = EvalAngle(VRef, dp1); myExt.Perform(P); if ( myExt.IsDone() ) { @@ -601,18 +601,18 @@ void GeomFill_SectionPlacement::Perform(const Handle(Adaptor3d_Curve)& Path, // (2.2) Distance courbe-courbe if (!Trouve) { - Extrema_ExtCC Ext(*Path, myAdpSection, + Extrema_ExtCC Ext(Path, myAdpSection, Path->FirstParameter(), Path->LastParameter(), - myAdpSection.FirstParameter(), - myAdpSection.LastParameter(), + myAdpSection->FirstParameter(), + myAdpSection->LastParameter(), Path->Resolution(Tol/100), - myAdpSection.Resolution(Tol/100)); + myAdpSection->Resolution(Tol/100)); if (Ext.IsDone()) { Extrema_POnCurv P1, P2; for (ii=1; ii<=Ext.NbExt(); ii++) { distaux = sqrt (Ext.SquareDistance(ii)); Ext.Points(ii, P1, P2); - Tangente (*Path, P1.Parameter(), P, dp1); + Tangente (Path, P1.Parameter(), P, dp1); alpha = EvalAngle(VRef, dp1); if (Choix(distaux, alpha)) { Trouve = Standard_True; @@ -629,7 +629,7 @@ void GeomFill_SectionPlacement::Perform(const Handle(Adaptor3d_Curve)& Path, // Si l'on a toujours rien, on essai une distance point/path // c'est la derniere chance. Extrema_ExtPC PExt; - PExt.Initialize (*Path, + PExt.Initialize (Path, Path->FirstParameter(), Path->LastParameter(), Precision::Confusion()); @@ -637,9 +637,9 @@ void GeomFill_SectionPlacement::Perform(const Handle(Adaptor3d_Curve)& Path, if ( PExt.IsDone() ) { // modified for OCC13595 Tue Oct 17 15:00:08 2006.BEGIN // DistMini(PExt, myAdpSection, distaux, taux); - DistMini(PExt, *Path, distaux, taux); + DistMini(PExt, Path, distaux, taux); // modified for OCC13595 Tue Oct 17 15:00:11 2006.END - Tangente (*Path, taux, P, dp1); + Tangente (Path, taux, P, dp1); alpha = EvalAngle(VRef, dp1); if (Choix(distaux, alpha)) { Dist = distaux; @@ -677,7 +677,7 @@ void GeomFill_SectionPlacement::Perform(const Standard_Real Param, } else { - SecParam = myAdpSection.FirstParameter(); + SecParam = myAdpSection->FirstParameter(); // Standard_Real distaux, taux, alpha; // gp_Pnt PonPath, PonSec, P; @@ -685,14 +685,14 @@ void GeomFill_SectionPlacement::Perform(const Standard_Real Param, gp_Vec VRef, dp1; VRef.SetXYZ(TheAxe.Direction().XYZ()); - Tangente (*Path, PathParam, PonPath, dp1); - PonSec = myAdpSection.Value(SecParam); + Tangente (Path, PathParam, PonPath, dp1); + PonSec = myAdpSection->Value(SecParam); Dist = PonPath.Distance(PonSec); if (Dist > Tol) { // On Cherche un meilleur point sur la section myExt.Perform(PonPath); if ( myExt.IsDone() ) { DistMini(myExt, myAdpSection, Dist, SecParam); - PonSec = myAdpSection.Value(SecParam); + PonSec = myAdpSection->Value(SecParam); } } AngleMax = EvalAngle(VRef, dp1); diff --git a/src/GeomFill/GeomFill_SectionPlacement.hxx b/src/GeomFill/GeomFill_SectionPlacement.hxx index 6baba63bd5..dfc6077bae 100644 --- a/src/GeomFill/GeomFill_SectionPlacement.hxx +++ b/src/GeomFill/GeomFill_SectionPlacement.hxx @@ -99,7 +99,7 @@ private: gp_Ax1 TheAxe; Standard_Real Gabarit; Handle(GeomFill_LocationLaw) myLaw; - GeomAdaptor_Curve myAdpSection; + Handle(GeomAdaptor_Curve) myAdpSection; Handle(Geom_Curve) mySection; Standard_Real SecParam; Standard_Real PathParam; diff --git a/src/GeomFill/GeomFill_SimpleBound.cxx b/src/GeomFill/GeomFill_SimpleBound.cxx index ec99dfd41c..a251f644e6 100644 --- a/src/GeomFill/GeomFill_SimpleBound.cxx +++ b/src/GeomFill/GeomFill_SimpleBound.cxx @@ -79,7 +79,7 @@ void GeomFill_SimpleBound::Reparametrize(const Standard_Real First, const Standard_Real DL, const Standard_Boolean Rev) { - Handle(Law_BSpline) curve = Law::Reparametrize(*myC3d, + Handle(Law_BSpline) curve = Law::Reparametrize(myC3d, First,Last, HasDF,HasDL,DF,DL, Rev,30); diff --git a/src/GeomFill/GeomFill_SweepSectionGenerator.cxx b/src/GeomFill/GeomFill_SweepSectionGenerator.cxx index dfd65583c6..cf20ae646e 100644 --- a/src/GeomFill/GeomFill_SweepSectionGenerator.cxx +++ b/src/GeomFill/GeomFill_SweepSectionGenerator.cxx @@ -252,7 +252,7 @@ void GeomFill_SweepSectionGenerator::Init myRadius = Radius; myType = 0; - Handle(Geom_Curve) CC = GeomAdaptor::MakeCurve(*Path); + Handle(Geom_Curve) CC = GeomAdaptor::MakeCurve(Path); myPath = GeomConvert::CurveToBSplineCurve(CC); myAdpPath = Path; myAdpFirstSect = Curve1; @@ -281,10 +281,10 @@ void GeomFill_SweepSectionGenerator::Perform(const Standard_Boolean Polynomial) GCPnts_QuasiUniformDeflection Samp; // Calcul de la longueur approximative de la courbe - GeomAdaptor_Curve AdpPath(myPath); - gp_Pnt P1 = AdpPath.Value(U1); - gp_Pnt P2 = AdpPath.Value((U1+U2)/2.); - gp_Pnt P3 = AdpPath.Value(U2); + Handle(GeomAdaptor_Curve) AdpPath = new GeomAdaptor_Curve(myPath); + gp_Pnt P1 = AdpPath->Value(U1); + gp_Pnt P2 = AdpPath->Value((U1+U2)/2.); + gp_Pnt P3 = AdpPath->Value(U2); Standard_Real Length = P1.Distance(P2) + P2.Distance(P3); Standard_Real Fleche = 1.e-5 * Length; diff --git a/src/GeomFill/GeomFill_UniformSection.cxx b/src/GeomFill/GeomFill_UniformSection.cxx index 1d153407ed..eddb156bff 100644 --- a/src/GeomFill/GeomFill_UniformSection.cxx +++ b/src/GeomFill/GeomFill_UniformSection.cxx @@ -287,7 +287,7 @@ GeomFill_UniformSection::GeomFill_UniformSection(const Handle(Geom_Curve)& C, Standard_Real GeomFill_UniformSection::MaximalSection() const { - GeomAdaptor_Curve AC (mySection); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(mySection); return GCPnts_AbscissaPoint::Length(AC); } diff --git a/src/GeomInt/GeomInt_IntSS_1.cxx b/src/GeomInt/GeomInt_IntSS_1.cxx index d75c6cdc81..f8c6ef4579 100644 --- a/src/GeomInt/GeomInt_IntSS_1.cxx +++ b/src/GeomInt/GeomInt_IntSS_1.cxx @@ -198,13 +198,13 @@ static void IntersectCurveAndBoundary(const Handle(Geom2d_Curve)& theC2d, if(theC2d.IsNull()) return; - Geom2dAdaptor_Curve anAC1(theC2d); + Handle(Geom2dAdaptor_Curve) anAC1 = new Geom2dAdaptor_Curve(theC2d); for(Standard_Integer aCurID = 0; aCurID < theNumberOfCurves; aCurID++) { if(theArrBounds[aCurID].IsNull()) continue; - Geom2dAdaptor_Curve anAC2(theArrBounds[aCurID]); + Handle(Geom2dAdaptor_Curve) anAC2 = new Geom2dAdaptor_Curve(theArrBounds[aCurID]); Geom2dInt_GInter anIntCC2d(anAC1, anAC2, theTol, theTol); if(!anIntCC2d.IsDone() || anIntCC2d.IsEmpty()) @@ -1017,7 +1017,7 @@ void GeomInt_IntSS::TreatRLine(const Handle(IntPatch_RLine)& theRL, aGAHS = theHS1; anAHC2d = theRL->ArcOnS1(); theRL->ParamOnS1(tf, tl); - theC2d1 = Geom2dAdaptor::MakeCurve (*anAHC2d); + theC2d1 = Geom2dAdaptor::MakeCurve (anAHC2d); tf = Max(tf, theC2d1->FirstParameter()); tl = Min(tl, theC2d1->LastParameter()); theC2d1 = new Geom2d_TrimmedCurve(theC2d1, tf, tl); @@ -1027,7 +1027,7 @@ void GeomInt_IntSS::TreatRLine(const Handle(IntPatch_RLine)& theRL, aGAHS = theHS2; anAHC2d = theRL->ArcOnS2(); theRL->ParamOnS2(tf, tl); - theC2d2 = Geom2dAdaptor::MakeCurve (*anAHC2d); + theC2d2 = Geom2dAdaptor::MakeCurve (anAHC2d); tf = Max(tf, theC2d2->FirstParameter()); tl = Min(tl, theC2d2->LastParameter()); theC2d2 = new Geom2d_TrimmedCurve(theC2d2, tf, tl); @@ -1057,13 +1057,13 @@ void GeomInt_IntSS::TreatRLine(const Handle(IntPatch_RLine)& theRL, Standard_Real aTol = Precision::Confusion(); if(theRL->IsArcOnS1()) { - Handle(Geom_Surface) aS = GeomAdaptor::MakeSurface (*theHS2); + Handle(Geom_Surface) aS = GeomAdaptor::MakeSurface (theHS2); BuildPCurves (tf, tl, aTol, aS, theC3d, theC2d2); } if(theRL->IsArcOnS2()) { - Handle(Geom_Surface) aS = GeomAdaptor::MakeSurface (*theHS1); + Handle(Geom_Surface) aS = GeomAdaptor::MakeSurface (theHS1); BuildPCurves (tf, tl, aTol, aS, theC3d, theC2d1); } @@ -1122,8 +1122,7 @@ void GeomInt_IntSS::BuildPCurves (Standard_Real f, //of line. Standard_Real aU=0., aV=0.; - GeomAdaptor_Surface anAS; - anAS.Load(S); + Handle(GeomAdaptor_Surface) anAS = new GeomAdaptor_Surface(S); Extrema_ExtPS anExtr; const gp_Pnt aP3d1 = C->Value(f); const gp_Pnt aP3d2 = C->Value(l); @@ -1159,7 +1158,7 @@ void GeomInt_IntSS::BuildPCurves (Standard_Real f, //Check same parameter in middle point .begin const gp_Pnt PMid(C->Value(0.5*(f+l))); const gp_Pnt2d pmidcurve2d(0.5*(aP2d1.XY() + aP2d2.XY())); - const gp_Pnt aPC(anAS.Value(pmidcurve2d.X(), pmidcurve2d.Y())); + const gp_Pnt aPC(anAS->Value(pmidcurve2d.X(), pmidcurve2d.Y())); const Standard_Real aDist = PMid.Distance(aPC); Tol = Max(aDist, Tol); //Check same parameter in middle point .end diff --git a/src/GeomInt/GeomInt_LineTool.cxx b/src/GeomInt/GeomInt_LineTool.cxx index f33fedb3f9..658e84485f 100644 --- a/src/GeomInt/GeomInt_LineTool.cxx +++ b/src/GeomInt/GeomInt_LineTool.cxx @@ -51,7 +51,7 @@ class ProjectPointOnSurf Standard_Boolean myIsDone; Standard_Integer myIndex; Extrema_ExtPS myExtPS; - GeomAdaptor_Surface myGeomAdaptor; + Handle(GeomAdaptor_Surface) myGeomAdaptor; }; //======================================================================= @@ -66,7 +66,7 @@ void ProjectPointOnSurf::Init ( const Handle(Geom_Surface)& Surface, { const Standard_Real Tolerance = Precision::PConfusion(); // - myGeomAdaptor.Load(Surface, Umin,Usup,Vmin,Vsup); + myGeomAdaptor = new GeomAdaptor_Surface(Surface, Umin,Usup,Vmin,Vsup); myExtPS.Initialize(myGeomAdaptor, Umin, Usup, Vmin, Vsup, Tolerance, Tolerance); myIsDone = Standard_False; } diff --git a/src/GeomInt/GeomInt_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfWLApprox.hxx b/src/GeomInt/GeomInt_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfWLApprox.hxx index aaae630909..b106070238 100644 --- a/src/GeomInt/GeomInt_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfWLApprox.hxx +++ b/src/GeomInt/GeomInt_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfWLApprox.hxx @@ -63,9 +63,9 @@ public: gp_Dir2d DirectionOnS2() const; - const Handle(Adaptor3d_Surface)& AuxillarSurface1() const; + const Handle(Adaptor3d_Surface) AuxillarSurface1() const; - const Handle(Adaptor3d_Surface)& AuxillarSurface2() const; + const Handle(Adaptor3d_Surface) AuxillarSurface2() const; diff --git a/src/GeomInt/GeomInt_TheZerImpFuncOfTheImpPrmSvSurfacesOfWLApprox.hxx b/src/GeomInt/GeomInt_TheZerImpFuncOfTheImpPrmSvSurfacesOfWLApprox.hxx index 2ccdb87244..8c88aa904f 100644 --- a/src/GeomInt/GeomInt_TheZerImpFuncOfTheImpPrmSvSurfacesOfWLApprox.hxx +++ b/src/GeomInt/GeomInt_TheZerImpFuncOfTheImpPrmSvSurfacesOfWLApprox.hxx @@ -72,7 +72,7 @@ public: const gp_Dir2d& Direction2d(); - const Handle(Adaptor3d_Surface)& PSurface() const; + const Handle(Adaptor3d_Surface) PSurface() const; const IntSurf_Quadric& ISurface() const; diff --git a/src/GeomLib/GeomLib.cxx b/src/GeomLib/GeomLib.cxx index fcb2305344..b8cb6bde84 100644 --- a/src/GeomLib/GeomLib.cxx +++ b/src/GeomLib/GeomLib.cxx @@ -467,8 +467,8 @@ void GeomLib::FuseIntervals(const TColStd_Array1OfReal& I1, //purpose : //======================================================================= -void GeomLib::EvalMaxParametricDistance(const Adaptor3d_Curve& ACurve, - const Adaptor3d_Curve& AReferenceCurve, +void GeomLib::EvalMaxParametricDistance(const Handle(Adaptor3d_Curve)& ACurve, + const Handle(Adaptor3d_Curve)& AReferenceCurve, // const Standard_Real Tolerance, const Standard_Real , const TColStd_Array1OfReal& Parameters, @@ -484,9 +484,9 @@ void GeomLib::EvalMaxParametricDistance(const Adaptor3d_Curve& ACurve, gp_Pnt Point1 ; gp_Pnt Point2 ; for (ii = Parameters.Lower() ; ii <= Parameters.Upper() ; ii++) { - ACurve.D0(Parameters(ii), + ACurve->D0(Parameters(ii), Point1) ; - AReferenceCurve.D0(Parameters(ii), + AReferenceCurve->D0(Parameters(ii), Point2) ; local_distance_squared = Point1.SquareDistance (Point2) ; @@ -505,8 +505,8 @@ void GeomLib::EvalMaxParametricDistance(const Adaptor3d_Curve& ACurve, //purpose : //======================================================================= -void GeomLib::EvalMaxDistanceAlongParameter(const Adaptor3d_Curve& ACurve, - const Adaptor3d_Curve& AReferenceCurve, +void GeomLib::EvalMaxDistanceAlongParameter(const Handle(Adaptor3d_Curve)& ACurve, + const Handle(Adaptor3d_Curve)& AReferenceCurve, const Standard_Real Tolerance, const TColStd_Array1OfReal& Parameters, Standard_Real& MaxDistance) @@ -523,18 +523,18 @@ void GeomLib::EvalMaxDistanceAlongParameter(const Adaptor3d_Curve& ACurve, para_tolerance = - AReferenceCurve.Resolution(Tolerance) ; + AReferenceCurve->Resolution(Tolerance) ; other_parameter = Parameters(Parameters.Lower()) ; - ACurve.D0(other_parameter, + ACurve->D0(other_parameter, Point1) ; Extrema_LocateExtPC a_projector(Point1, AReferenceCurve, other_parameter, para_tolerance) ; for (ii = Parameters.Lower() ; ii <= Parameters.Upper() ; ii++) { - ACurve.D0(Parameters(ii), + ACurve->D0(Parameters(ii), Point1) ; - AReferenceCurve.D0(Parameters(ii), + AReferenceCurve->D0(Parameters(ii), Point2) ; local_distance_squared = Point1.SquareDistance (Point2) ; @@ -551,7 +551,7 @@ void GeomLib::EvalMaxDistanceAlongParameter(const Adaptor3d_Curve& ACurve, if (a_projector.IsDone()) { other_parameter = a_projector.Point().Parameter() ; - AReferenceCurve.D0(other_parameter, + AReferenceCurve->D0(other_parameter, Point2) ; local_distance_squared = Point1.SquareDistance (Point2) ; @@ -1013,7 +1013,7 @@ void GeomLib::SameRange(const Standard_Real Tolerance, class GeomLib_CurveOnSurfaceEvaluator : public AdvApprox_EvaluatorFunction { public: - GeomLib_CurveOnSurfaceEvaluator (Adaptor3d_CurveOnSurface& theCurveOnSurface, + GeomLib_CurveOnSurfaceEvaluator (Handle(Adaptor3d_CurveOnSurface)& theCurveOnSurface, Standard_Real theFirst, Standard_Real theLast) : CurveOnSurface(theCurveOnSurface), FirstParam(theFirst), LastParam(theLast) {} @@ -1025,7 +1025,7 @@ class GeomLib_CurveOnSurfaceEvaluator : public AdvApprox_EvaluatorFunction Standard_Integer *ErrorCode); private: - Adaptor3d_CurveOnSurface& CurveOnSurface; + Handle(Adaptor3d_CurveOnSurface)& CurveOnSurface; Standard_Real FirstParam; Standard_Real LastParam; @@ -1044,7 +1044,7 @@ void GeomLib_CurveOnSurfaceEvaluator::Evaluate (Standard_Integer *,/*Dimension*/ //Gestion des positionnements gauche / droite if ((DebutFin[0] != FirstParam) || (DebutFin[1] != LastParam)) { - TrimCurve = CurveOnSurface.Trim(DebutFin[0], DebutFin[1], Precision::PConfusion()); + TrimCurve = CurveOnSurface->Trim(DebutFin[0], DebutFin[1], Precision::PConfusion()); FirstParam = DebutFin[0]; LastParam = DebutFin[1]; } @@ -1080,7 +1080,7 @@ void GeomLib_CurveOnSurfaceEvaluator::Evaluate (Standard_Integer *,/*Dimension*/ //======================================================================= void GeomLib::BuildCurve3d(const Standard_Real Tolerance, - Adaptor3d_CurveOnSurface& Curve, + Handle(Adaptor3d_CurveOnSurface)& Curve, const Standard_Real FirstParameter, const Standard_Real LastParameter, Handle(Geom_Curve)& NewCurvePtr, @@ -1095,8 +1095,8 @@ void GeomLib::BuildCurve3d(const Standard_Real Tolerance, MaxDeviation = 0.0e0 ; AverageDeviation = 0.0e0 ; - Handle(GeomAdaptor_Surface) geom_adaptor_surface_ptr (Handle(GeomAdaptor_Surface)::DownCast(Curve.GetSurface()) ); - Handle(Geom2dAdaptor_Curve) geom_adaptor_curve_ptr (Handle(Geom2dAdaptor_Curve)::DownCast(Curve.GetCurve()) ); + Handle(GeomAdaptor_Surface) geom_adaptor_surface_ptr (Handle(GeomAdaptor_Surface)::DownCast(Curve->GetSurface()) ); + Handle(Geom2dAdaptor_Curve) geom_adaptor_curve_ptr (Handle(Geom2dAdaptor_Curve)::DownCast(Curve->GetCurve()) ); if (! geom_adaptor_curve_ptr.IsNull() && ! geom_adaptor_surface_ptr.IsNull()) { @@ -1115,10 +1115,7 @@ void GeomLib::BuildCurve3d(const Standard_Real Tolerance, if (! P.IsNull()) { // compute the 3d curve gp_Ax2 axes = P->Position().Ax2(); - const Geom2dAdaptor_Curve& geom2d_curve = *geom_adaptor_curve_ptr; - NewCurvePtr = - GeomLib::To3d(axes, - geom2d_curve.Curve()); + NewCurvePtr = GeomLib::To3d(axes, geom_adaptor_curve_ptr->Curve()); return; } @@ -1146,13 +1143,13 @@ void GeomLib::BuildCurve3d(const Standard_Real Tolerance, Tolerance3DPtr->SetValue(1,Tolerance); // Recherche des discontinuitees - Standard_Integer NbIntervalC2 = Curve.NbIntervals(GeomAbs_C2); + Standard_Integer NbIntervalC2 = Curve->NbIntervals(GeomAbs_C2); TColStd_Array1OfReal Param_de_decoupeC2 (1, NbIntervalC2+1); - Curve.Intervals(Param_de_decoupeC2, GeomAbs_C2); + Curve->Intervals(Param_de_decoupeC2, GeomAbs_C2); - Standard_Integer NbIntervalC3 = Curve.NbIntervals(GeomAbs_C3); + Standard_Integer NbIntervalC3 = Curve->NbIntervals(GeomAbs_C3); TColStd_Array1OfReal Param_de_decoupeC3 (1, NbIntervalC3+1); - Curve.Intervals(Param_de_decoupeC3, GeomAbs_C3); + Curve->Intervals(Param_de_decoupeC3, GeomAbs_C3); // Note extension of the parameteric range // Pour forcer le Trim au premier appel de l'evaluateur diff --git a/src/GeomLib/GeomLib.hxx b/src/GeomLib/GeomLib.hxx index 71e817bb90..d630c07ba5 100644 --- a/src/GeomLib/GeomLib.hxx +++ b/src/GeomLib/GeomLib.hxx @@ -75,7 +75,7 @@ public: //! curve that has the required range Standard_EXPORT static void SameRange (const Standard_Real Tolerance, const Handle(Geom2d_Curve)& Curve2dPtr, const Standard_Real First, const Standard_Real Last, const Standard_Real RequestedFirst, const Standard_Real RequestedLast, Handle(Geom2d_Curve)& NewCurve2dPtr); - Standard_EXPORT static void BuildCurve3d (const Standard_Real Tolerance, Adaptor3d_CurveOnSurface& CurvePtr, const Standard_Real FirstParameter, const Standard_Real LastParameter, Handle(Geom_Curve)& NewCurvePtr, Standard_Real& MaxDeviation, Standard_Real& AverageDeviation, const GeomAbs_Shape Continuity = GeomAbs_C1, const Standard_Integer MaxDegree = 14, const Standard_Integer MaxSegment = 30); + Standard_EXPORT static void BuildCurve3d (const Standard_Real Tolerance, Handle(Adaptor3d_CurveOnSurface)& CurvePtr, const Standard_Real FirstParameter, const Standard_Real LastParameter, Handle(Geom_Curve)& NewCurvePtr, Standard_Real& MaxDeviation, Standard_Real& AverageDeviation, const GeomAbs_Shape Continuity = GeomAbs_C1, const Standard_Integer MaxDegree = 14, const Standard_Integer MaxSegment = 30); Standard_EXPORT static void AdjustExtremity (Handle(Geom_BoundedCurve)& Curve, const gp_Pnt& P1, const gp_Pnt& P2, const gp_Vec& T1, const gp_Vec& T2); @@ -172,13 +172,13 @@ public: //! parameters given in the Parameters array by //! evaluating each parameter the two curves and taking //! the maximum of the evaluated distance - Standard_EXPORT static void EvalMaxParametricDistance (const Adaptor3d_Curve& Curve, const Adaptor3d_Curve& AReferenceCurve, const Standard_Real Tolerance, const TColStd_Array1OfReal& Parameters, Standard_Real& MaxDistance); + Standard_EXPORT static void EvalMaxParametricDistance (const Handle(Adaptor3d_Curve)& Curve, const Handle(Adaptor3d_Curve)& AReferenceCurve, const Standard_Real Tolerance, const TColStd_Array1OfReal& Parameters, Standard_Real& MaxDistance); //! this will compute the maximum distance at the parameters //! given in the Parameters array by projecting from the Curve //! to the reference curve and taking the minimum distance //! Than the maximum will be taken on those minimas. - Standard_EXPORT static void EvalMaxDistanceAlongParameter (const Adaptor3d_Curve& Curve, const Adaptor3d_Curve& AReferenceCurve, const Standard_Real Tolerance, const TColStd_Array1OfReal& Parameters, Standard_Real& MaxDistance); + Standard_EXPORT static void EvalMaxDistanceAlongParameter (const Handle(Adaptor3d_Curve)& Curve, const Handle(Adaptor3d_Curve)& AReferenceCurve, const Standard_Real Tolerance, const TColStd_Array1OfReal& Parameters, Standard_Real& MaxDistance); //! Cancel,on the boundaries,the denominator first derivative //! in the directions wished by the user and set its value to 1. diff --git a/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx b/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx index 3e5df1ae20..b35102bfb5 100644 --- a/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx +++ b/src/GeomLib/GeomLib_CheckCurveOnSurface.cxx @@ -57,8 +57,8 @@ class GeomLib_CheckCurveOnSurface_TargetFunc : public math_MultipleVarFunctionWithHessian { public: - GeomLib_CheckCurveOnSurface_TargetFunc( const Adaptor3d_Curve& theC3D, - const Adaptor3d_Curve& theCurveOnSurface, + GeomLib_CheckCurveOnSurface_TargetFunc( const Handle(Adaptor3d_Curve)& theC3D, + const Handle(Adaptor3d_Curve)& theCurveOnSurface, const Standard_Real theFirst, const Standard_Real theLast): myCurve1(theC3D), @@ -92,8 +92,8 @@ class GeomLib_CheckCurveOnSurface_TargetFunc : if (!CheckParameter(theX)) return Standard_False; - const gp_Pnt aP1(myCurve1.Value(theX)), - aP2(myCurve2.Value(theX)); + const gp_Pnt aP1(myCurve1->Value(theX)), + aP2(myCurve2->Value(theX)); theFVal = -1.0*aP1.SquareDistance(aP2); } @@ -135,13 +135,13 @@ class GeomLib_CheckCurveOnSurface_TargetFunc : // if (!theDeriv2) { - myCurve1.D1(theX, aP1, aDC1); - myCurve2.D1(theX, aP2, aDC2); + myCurve1->D1(theX, aP1, aDC1); + myCurve2->D1(theX, aP2, aDC2); } else { - myCurve1.D2(theX, aP1, aDC1, aDCC1); - myCurve2.D2(theX, aP2, aDC2, aDCC2); + myCurve1->D2(theX, aP1, aDC1, aDCC1); + myCurve2->D2(theX, aP2, aDC2, aDCC2); } const gp_Vec aVec1(aP1, aP2), aVec2(aDC2-aDC1); @@ -219,8 +219,8 @@ class GeomLib_CheckCurveOnSurface_TargetFunc : return ((myFirst <= theParam) && (theParam <= myLast)); } - const Adaptor3d_Curve& myCurve1; - const Adaptor3d_Curve& myCurve2; + const Handle(Adaptor3d_Curve) myCurve1; + const Handle(Adaptor3d_Curve) myCurve2; const Standard_Real myFirst; const Standard_Real myLast; }; @@ -255,8 +255,8 @@ public: //This optimal value will be put in corresponding (depending on theIndex - the //identificator of the current interval in mySubIntervals array) cell of //myArrOfDist and myArrOfParam arrays. - GeomLib_CheckCurveOnSurface_TargetFunc aFunc(*(myCurveArray.Value(theThreadIndex).get()), - *(myCurveOnSurfaceArray.Value(theThreadIndex).get()), + GeomLib_CheckCurveOnSurface_TargetFunc aFunc(myCurveArray.Value(theThreadIndex).get(), + myCurveOnSurfaceArray.Value(theThreadIndex).get(), mySubIntervals.Value(theElemIndex), mySubIntervals.Value(theElemIndex + 1)); diff --git a/src/GeomLib/GeomLib_Tool.cxx b/src/GeomLib/GeomLib_Tool.cxx index 2c38aed268..5f87ec574f 100644 --- a/src/GeomLib/GeomLib_Tool.cxx +++ b/src/GeomLib/GeomLib_Tool.cxx @@ -49,7 +49,7 @@ Standard_Boolean GeomLib_Tool::Parameter(const Handle(Geom_Curve)& Curve, U = 0.; Standard_Real aTol = MaxDist * MaxDist; // - GeomAdaptor_Curve aGAC(Curve); + Handle(GeomAdaptor_Curve) aGAC = new GeomAdaptor_Curve(Curve); Extrema_ExtPC extrema(Point,aGAC); // if( !extrema.IsDone() ) return Standard_False; @@ -99,7 +99,7 @@ Standard_Boolean GeomLib_Tool::Parameters(const Handle(Geom_Surface)& Surface, V = 0.; Standard_Real aTol = MaxDist * MaxDist; // - GeomAdaptor_Surface aGAS(Surface); + Handle(GeomAdaptor_Surface) aGAS = new GeomAdaptor_Surface(Surface); Standard_Real aTolU = PARTOLERANCE, aTolV = PARTOLERANCE; // Extrema_ExtPS extrema(Point,aGAS,aTolU,aTolV); @@ -149,7 +149,7 @@ Standard_Boolean GeomLib_Tool::Parameter(const Handle(Geom2d_Curve)& Curve, U = 0.; Standard_Real aTol = MaxDist * MaxDist; // - Geom2dAdaptor_Curve aGAC(Curve); + Handle(Geom2dAdaptor_Curve) aGAC = new Geom2dAdaptor_Curve(Curve); Extrema_ExtPC2d extrema(Point,aGAC); if( !extrema.IsDone() ) return Standard_False; Standard_Integer n = extrema.NbExt(); @@ -188,7 +188,7 @@ public: //! Constructor. Initializes the curve and the line //! going through two given points. - FuncSolveDeviation(const Geom2dAdaptor_Curve& theCurve, + FuncSolveDeviation(const Handle(Geom2dAdaptor_Curve)& theCurve, const gp_XY& thePf, const gp_XY& thePl): myCurve(theCurve), @@ -203,7 +203,7 @@ public: //! of *this void UpdateFields(const Standard_Real theParam) { - myCurve.D0(theParam, myPointOnCurve); + myCurve->D0(theParam, myPointOnCurve); const gp_XY aVt = myPointOnCurve.XY() - myPRef; myVecCurvLine = aVt.Dot(myDirRef) * myDirRef / mySqMod - aVt; } @@ -214,7 +214,7 @@ public: { gp_Vec2d aD1; gp_Vec2d aD2; - myCurve.D2(theParam, myPointOnCurve, aD1, aD2); + myCurve->D2(theParam, myPointOnCurve, aD1, aD2); const gp_XY aVt = myPointOnCurve.XY() - myPRef; theVal = aVt.Crossed(myDirRef); @@ -284,7 +284,7 @@ public: private: //! The curve - Geom2dAdaptor_Curve myCurve; + Handle(Geom2dAdaptor_Curve) myCurve; //! Square modulus of myDirRef (it is constant) Standard_Real mySqMod; @@ -316,7 +316,7 @@ private: // where D1 and D2 are 1st and 2nd derivative of the function, computed in // the point U(n). U(0) = theStartParameter. //======================================================================= -Standard_Real GeomLib_Tool::ComputeDeviation(const Geom2dAdaptor_Curve& theCurve, +Standard_Real GeomLib_Tool::ComputeDeviation(const Handle(Geom2dAdaptor_Curve)& theCurve, const Standard_Real theFPar, const Standard_Real theLPar, const Standard_Real theStartParameter, @@ -332,8 +332,8 @@ Standard_Real GeomLib_Tool::ComputeDeviation(const Geom2dAdaptor_Curve& theCurve return -1.0; } - const gp_Pnt2d aPf(theCurve.Value(theFPar)); - const gp_Pnt2d aPl(theCurve.Value(theLPar)); + const gp_Pnt2d aPf(theCurve->Value(theFPar)); + const gp_Pnt2d aPl(theCurve->Value(theLPar)); FuncSolveDeviation aFunc(theCurve, aPf.XY(), aPl.XY()); @@ -417,7 +417,7 @@ Standard_Real GeomLib_Tool::ComputeDeviation(const Geom2dAdaptor_Curve& theCurve // (fast but not precisely). // math_PSO Algorithm is used. //======================================================================= -Standard_Real GeomLib_Tool::ComputeDeviation(const Geom2dAdaptor_Curve& theCurve, +Standard_Real GeomLib_Tool::ComputeDeviation(const Handle(Geom2dAdaptor_Curve)& theCurve, const Standard_Real theFPar, const Standard_Real theLPar, const Standard_Integer theNbSubIntervals, @@ -425,8 +425,8 @@ Standard_Real GeomLib_Tool::ComputeDeviation(const Geom2dAdaptor_Curve& theCurve Standard_Real* const thePrmOnCurve) { // Computed maximal deflection - const gp_Pnt2d aPf(theCurve.Value(theFPar)); - const gp_Pnt2d aPl(theCurve.Value(theLPar)); + const gp_Pnt2d aPf(theCurve->Value(theFPar)); + const gp_Pnt2d aPl(theCurve->Value(theLPar)); FuncSolveDeviation aFunc(theCurve, aPf.XY(), aPl.XY()); diff --git a/src/GeomLib/GeomLib_Tool.hxx b/src/GeomLib/GeomLib_Tool.hxx index cbaa02c9c7..c359df7639 100644 --- a/src/GeomLib/GeomLib_Tool.hxx +++ b/src/GeomLib/GeomLib_Tool.hxx @@ -77,7 +77,7 @@ public: //! @param theLine - the linear segment joining the point of theCurve having parameters //! theFPar and theLPar. Standard_EXPORT static - Standard_Real ComputeDeviation(const Geom2dAdaptor_Curve& theCurve, + Standard_Real ComputeDeviation(const Handle(Geom2dAdaptor_Curve)& theCurve, const Standard_Real theFPar, const Standard_Real theLPar, const Standard_Real theStartParameter, @@ -106,7 +106,7 @@ public: //! setting big value of theNbIters). But it can give some start point for //! the overloaded method. Standard_EXPORT static - Standard_Real ComputeDeviation(const Geom2dAdaptor_Curve& theCurve, + Standard_Real ComputeDeviation(const Handle(Geom2dAdaptor_Curve)& theCurve, const Standard_Real theFPar, const Standard_Real theLPar, const Standard_Integer theNbSubIntervals, diff --git a/src/GeomPlate/GeomPlate_BuildPlateSurface.cxx b/src/GeomPlate/GeomPlate_BuildPlateSurface.cxx index 9f018a8a4d..50b699f618 100644 --- a/src/GeomPlate/GeomPlate_BuildPlateSurface.cxx +++ b/src/GeomPlate/GeomPlate_BuildPlateSurface.cxx @@ -502,9 +502,9 @@ void GeomPlate_BuildPlateSurface::Perform(const Message_ProgressRange& theProgre Standard_Real u1,v1,u2,v2; mySurfInit->Bounds(u1,v1,u2,v2); - GeomAdaptor_Surface aSurfInit(mySurfInit); - myTolU = aSurfInit.UResolution(myTol3d); - myTolV = aSurfInit.VResolution(myTol3d); + Handle(GeomAdaptor_Surface) aSurfInit = new GeomAdaptor_Surface(mySurfInit); + myTolU = aSurfInit->UResolution(myTol3d); + myTolV = aSurfInit->VResolution(myTol3d); myProj.Initialize(aSurfInit,u1,v1,u2,v2, myTolU,myTolV); @@ -533,9 +533,9 @@ void GeomPlate_BuildPlateSurface::Perform(const Message_ProgressRange& theProgre mySurfInit = App.Surface(); mySurfInit->Bounds(u1,v1,u2,v2); - GeomAdaptor_Surface Surf(mySurfInit); - myTolU = Surf.UResolution(myTol3d); - myTolV = Surf.VResolution(myTol3d); + Handle(GeomAdaptor_Surface) Surf = new GeomAdaptor_Surface(mySurfInit); + myTolU = Surf->UResolution(myTol3d); + myTolV = Surf->VResolution(myTol3d); myProj.Initialize(Surf,u1,v1,u2,v2, myTolU,myTolV); @@ -555,9 +555,9 @@ void GeomPlate_BuildPlateSurface::Perform(const Message_ProgressRange& theProgre mySurfInit = myPlanarSurfInit; mySurfInit->Bounds(u1,v1,u2,v2); - GeomAdaptor_Surface SurfNew(mySurfInit); - myTolU = SurfNew.UResolution(myTol3d); - myTolV = SurfNew.VResolution(myTol3d); + Handle(GeomAdaptor_Surface) SurfNew = new GeomAdaptor_Surface(mySurfInit); + myTolU = SurfNew->UResolution(myTol3d); + myTolV = SurfNew->VResolution(myTol3d); myProj.Initialize(SurfNew,u1,v1,u2,v2, myTolU,myTolV); @@ -840,7 +840,7 @@ void GeomPlate_BuildPlateSurface:: Standard_Integer i ; mySurfInit->Bounds(u1,v1,u2,v2); - GeomAdaptor_Surface Surf(mySurfInit); + Handle(GeomAdaptor_Surface) Surf = new GeomAdaptor_Surface(mySurfInit); myProj.Initialize(Surf,u1,v1,u2,v2, myTolU,myTolV); @@ -971,10 +971,10 @@ Disc3dContour (const Standard_Integer /*nbp*/, // sampling in "cosine" + 3 points on each interval Standard_Real u1,v1,u2,v2; mySurfInit->Bounds(u1,v1,u2,v2); - GeomAdaptor_Surface Surf(mySurfInit); + Handle(GeomAdaptor_Surface) Surf = new GeomAdaptor_Surface(mySurfInit); myProj.Initialize(Surf,u1,v1,u2,v2, - Surf.UResolution(myTol3d), - Surf.VResolution(myTol3d)); + Surf->UResolution(myTol3d), + Surf->VResolution(myTol3d)); Standard_Integer NTCurve = myLinCont->Length(); Standard_Integer NTPntCont = myPntCont->Length(); // gp_Pnt2d P2d; @@ -1659,9 +1659,9 @@ void GeomPlate_BuildPlateSurface::ComputeSurfInit(const Message_ProgressRange& t #endif Standard_Real u1,v1,u2,v2; mySurfInit->Bounds(u1,v1,u2,v2); - GeomAdaptor_Surface Surf(mySurfInit); - myTolU = Surf.UResolution(myTol3d); - myTolV = Surf.VResolution(myTol3d); + Handle(GeomAdaptor_Surface) Surf = new GeomAdaptor_Surface(mySurfInit); + myTolU = Surf->UResolution(myTol3d); + myTolV = Surf->VResolution(myTol3d); myProj.Initialize(Surf,u1,v1,u2,v2, myTolU,myTolV); @@ -1770,7 +1770,8 @@ Intersect(Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, { Standard_Integer NTLinCont = myLinCont->Length(); Geom2dInt_GInter Intersection; - Geom2dAdaptor_Curve Ci, Cj; + Handle(Geom2dAdaptor_Curve) Ci = new Geom2dAdaptor_Curve(); + Handle(Geom2dAdaptor_Curve) Cj = new Geom2dAdaptor_Curve(); IntRes2d_IntersectionPoint int2d; gp_Pnt P1,P2; gp_Pnt2d P2d; @@ -1780,10 +1781,10 @@ Intersect(Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, { //Standard_Real NbPnt_i=myLinCont->Value(i)->NbPoints(); // Find the intersection with each curve including the curve itself - Ci.Load(myLinCont->Value(i)->Curve2dOnSurf()); + Ci->Load(myLinCont->Value(i)->Curve2dOnSurf()); for(Standard_Integer j=i; j<=NTLinCont; j++) { - Cj.Load(myLinCont->Value(j)->Curve2dOnSurf()); + Cj->Load(myLinCont->Value(j)->Curve2dOnSurf()); if (i==j) Intersection.Perform(Ci, myTol2d*10, myTol2d*10); else @@ -1813,8 +1814,8 @@ Intersect(Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, // the point on curve j is preserved; // the length of interval is a length 2d // corresponding in 3d to myTol3d - Standard_Real tolint = Ci.Resolution(myTol3d); - Ci.D1(int2d.ParamOnFirst(),P2d, V2d); + Standard_Real tolint = Ci->Resolution(myTol3d); + Ci->D1(int2d.ParamOnFirst(),P2d, V2d); Standard_Real aux = V2d.Magnitude(); if (aux > 1.e-7) { @@ -1856,13 +1857,13 @@ Intersect(Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, <<" "<Resolution(Tol); Standard_Real Par1=int2d.ParamOnFirst()-coin, Par2=int2d.ParamOnFirst()+coin; // Storage of the interval for curve i PntG1G1->ChangeValue(i).Append(Par1); PntG1G1->ChangeValue(i).Append(Par2); - coin = Cj.Resolution(Tol); + coin = Cj->Resolution(Tol); Par1=int2d.ParamOnSecond()-coin; Par2=int2d.ParamOnSecond()+coin; // Storage of the interval for curve j @@ -1911,7 +1912,7 @@ Intersect(Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, #endif if (myLinCont->Value(i)->Order() == 1) { - coin = Ci.Resolution(Tol); + coin = Ci->Resolution(Tol); coin *= Angle / myTolAng * 10.; #ifdef OCCT_DEBUG std::cout<Resolution(Tol); coin *= Angle / myTolAng * 10.; #ifdef OCCT_DEBUG std::cout<Resolution(Dist); PntInter->ChangeValue(i).Append( int2d.ParamOnFirst() - tolint); PntInter->ChangeValue(i).Append( int2d.ParamOnFirst() + tolint); if (j!=i) { - tolint = Cj.Resolution(Dist); + tolint = Cj->Resolution(Dist); PntInter->ChangeValue(j). Append( int2d.ParamOnSecond() - tolint); PntInter->ChangeValue(j). @@ -1997,7 +1998,7 @@ Discretise(const Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, Standard_Integer NTLinCont = myLinCont->Length(); Standard_Boolean ACR; Handle(Geom2d_Curve) C2d; - Geom2dAdaptor_Curve AC2d; + Handle(Geom2dAdaptor_Curve) AC2d = new Geom2dAdaptor_Curve(); // Handle(Adaptor_HCurve2d) HC2d; Handle(Law_Interpol) acrlaw = new (Law_Interpol) (); myPlateCont = new GeomPlate_HArray1OfSequenceOfReal(1,NTLinCont); @@ -2023,7 +2024,7 @@ Discretise(const Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, ACR = (!C2d.IsNull()); if (ACR) { // Construct a law close to curvilinear abscissa - if(!C2d.IsNull()) AC2d.Load(C2d); + if(!C2d.IsNull()) AC2d->Load(C2d); // AC2d.Load(LinCont->Curve2dOnSurf()); Standard_Integer ii, Nbint = 20; Standard_Real U; @@ -2108,7 +2109,7 @@ Discretise(const Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, gp_Pnt P3d,PP,Pdif; gp_Pnt2d P2d; - AC2d.D0(Inter, P2d); + AC2d->D0(Inter, P2d); LinCont->D0(Inter,P3d); mySurfInit->D0(P2d.Coord(1),P2d.Coord(2),PP); Pdif.SetCoord(-PP.Coord(1)+P3d.Coord(1), @@ -2150,7 +2151,7 @@ Discretise(const Handle(GeomPlate_HArray1OfSequenceOfReal)& PntInter, gp_Pnt P3d,PP,Pdif; gp_Pnt2d P2d; - AC2d.D0(Inter, P2d); + AC2d->D0(Inter, P2d); LinCont->D0(Inter,P3d); mySurfInit->D0(P2d.Coord(1),P2d.Coord(2),PP); Pdif.SetCoord(-PP.Coord(1)+P3d.Coord(1), diff --git a/src/GeomPlate/GeomPlate_CurveConstraint.cxx b/src/GeomPlate/GeomPlate_CurveConstraint.cxx index d3a0cbbf29..6116a5e703 100644 --- a/src/GeomPlate/GeomPlate_CurveConstraint.cxx +++ b/src/GeomPlate/GeomPlate_CurveConstraint.cxx @@ -144,7 +144,7 @@ Standard_Real GeomPlate_CurveConstraint :: Length() const {// GCPnts_AbscissaPoint A(myFrontiere->Curve(),AP.Length(myFrontiere->Curve())/2,myFrontiere->FirstParameter()); // Standard_Real toto=A.Parameter(); //std::cout<= 1) { // C-C-P - Geom2dGcc_Circ2d3Tan aCt3(Geom2dGcc::Unqualified(aC[0]), - Geom2dGcc::Unqualified(aC[1]), + Geom2dGcc_Circ2d3Tan aCt3(Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(aC[0])), + Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(aC[1])), new Geom2d_CartesianPoint(aP[0]), aTol, 0, 0); theDI << "Solution of type C-C-P is: "; @@ -236,8 +236,8 @@ static Standard_Integer Cirtang(Draw_Interpretor& theDI, else if (aRadius > 0) { // C-C-R - Geom2dGcc_Circ2d2TanRad aCt3(Geom2dGcc::Unqualified(aC[0]), - Geom2dGcc::Unqualified(aC[1]), + Geom2dGcc_Circ2d2TanRad aCt3(Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(aC[0])), + Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(aC[1])), aRadius, aTol); theDI << "Solution of type C-C-R is: "; return solutions(theDI, aCt3, theArgVals[1]); @@ -251,7 +251,7 @@ static Standard_Integer Cirtang(Draw_Interpretor& theDI, if (aNbPnts == 2) { //C-P-P - Geom2dGcc_Circ2d3Tan aCt3(Geom2dGcc::Unqualified(aC[0]), + Geom2dGcc_Circ2d3Tan aCt3(Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(aC[0])), new Geom2d_CartesianPoint(aP[0]), new Geom2d_CartesianPoint(aP[1]), aTol,0); @@ -263,7 +263,7 @@ static Standard_Integer Cirtang(Draw_Interpretor& theDI, if (aRadius > 0.0) { //C-P-R - Geom2dGcc_Circ2d2TanRad aCt3(Geom2dGcc::Unqualified(aC[0]), + Geom2dGcc_Circ2d2TanRad aCt3(Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(aC[0])), new Geom2d_CartesianPoint(aP[0]), aRadius, aTol); theDI << "Solution of type C-P-R is: "; @@ -272,7 +272,7 @@ static Standard_Integer Cirtang(Draw_Interpretor& theDI, else { // C-P - Geom2dGcc_Circ2dTanCen aCt2(Geom2dGcc::Unqualified(aC[0]), + Geom2dGcc_Circ2dTanCen aCt2(Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(aC[0])), new Geom2d_CartesianPoint(aP[0]), aTol); theDI << "Solution of type C-P is: "; return solutions(theDI, aCt2, theArgVals[1]); @@ -339,7 +339,7 @@ static Standard_Integer lintang (Draw_Interpretor& di,Standard_Integer n, const return 1; } Standard_Real ang = Draw::Atof(a[4]) * (M_PI / 180.0); - Geom2dGcc_Lin2dTanObl ct3(Geom2dGcc::Unqualified(C1), + Geom2dGcc_Lin2dTanObl ct3(Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(C1)), L->Lin2d(), Precision::Angular(), (C1->FirstParameter()+C1->LastParameter())/2., @@ -357,8 +357,8 @@ static Standard_Integer lintang (Draw_Interpretor& di,Standard_Integer n, const di << "Lin2dTanObl Not done\n"; } else { - Geom2dGcc_Lin2d2Tan ct3(Geom2dGcc::Unqualified(C1), - Geom2dGcc::Unqualified(C2), + Geom2dGcc_Lin2d2Tan ct3(Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(C1)), + Geom2dGcc::Unqualified(new Geom2dAdaptor_Curve(C2)), Precision::Angular(), (C1->FirstParameter()+C1->LastParameter())/2., (C2->FirstParameter()+C2->LastParameter())/2.); diff --git a/src/GeometryTest/GeometryTest_CurveCommands.cxx b/src/GeometryTest/GeometryTest_CurveCommands.cxx index 2e52fc6d11..db98a68749 100644 --- a/src/GeometryTest/GeometryTest_CurveCommands.cxx +++ b/src/GeometryTest/GeometryTest_CurveCommands.cxx @@ -799,10 +799,10 @@ static Standard_Integer movelaw (Draw_Interpretor& di, Standard_Integer n, const #include #include -static Standard_Real CompLocalDev(const Adaptor3d_Curve& theCurve, +static Standard_Real CompLocalDev(const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real u1, const Standard_Real u2); -static void ComputeDeviation(const Adaptor3d_Curve& theCurve, +static void ComputeDeviation(const Handle(Adaptor3d_Curve)& theCurve, const Handle(Geom_BSplineCurve)& thePnts, Standard_Real& theDmax, Standard_Real& theUfMax, @@ -834,7 +834,7 @@ static void ComputeDeviation(const Adaptor3d_Curve& theCurve, } } -Standard_Real CompLocalDev(const Adaptor3d_Curve& theCurve, +Standard_Real CompLocalDev(const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real u1, const Standard_Real u2) { math_Vector aLowBorder(1,1); @@ -919,7 +919,7 @@ static Standard_Integer crvpoints (Draw_Interpretor& di, Standard_Integer /*n*/, defl = Draw::Atof(a[3]); - GCPnts_QuasiUniformDeflection PntGen (*aHCurve, defl); + GCPnts_QuasiUniformDeflection PntGen (aHCurve, defl); if(!PntGen.IsDone()) { di << "Points generation failed\n"; @@ -956,7 +956,7 @@ static Standard_Integer crvpoints (Draw_Interpretor& di, Standard_Integer /*n*/, Standard_Integer imax = 0; //check deviation - ComputeDeviation (*aHCurve, aPnts, dmax, ufmax, ulmax, imax); + ComputeDeviation (aHCurve, aPnts, dmax, ufmax, ulmax, imax); di << "Max defl: " << dmax << " " << ufmax << " " << ulmax << " " << imax << "\n"; return 0; @@ -998,7 +998,7 @@ static Standard_Integer crvtpoints (Draw_Interpretor& di, Standard_Integer n, co if(n > 5) aMinPntsNb = Draw::Atoi (a[5]); - GCPnts_TangentialDeflection PntGen (*aHCurve, angle, defl, aMinPntsNb); + GCPnts_TangentialDeflection PntGen (aHCurve, angle, defl, aMinPntsNb); nbp = PntGen.NbPoints(); di << "Nb points : " << nbp << "\n"; @@ -1030,7 +1030,7 @@ static Standard_Integer crvtpoints (Draw_Interpretor& di, Standard_Integer n, co Standard_Integer imax = 0; //check deviation - ComputeDeviation (*aHCurve, aPnts, dmax, ufmax, ulmax, imax); + ComputeDeviation (aHCurve, aPnts, dmax, ufmax, ulmax, imax); // di << "Max defl: " << dmax << " " << ufmax << " " << ulmax << " " << imax << "\n"; @@ -1074,12 +1074,12 @@ static Standard_Integer uniformAbscissa (Draw_Interpretor& di, Standard_Integer GeomLProp_CLProps Prop(ellip,2,Precision::Intersection()); Prop.SetCurve(ellip); - GeomAdaptor_Curve GAC(ellip); - di<<"Type Of curve: "<GetType()<<"\n"; Standard_Real Tol = Precision::Confusion(); Standard_Real L; - L = GCPnts_AbscissaPoint::Length(GAC, GAC.FirstParameter(), GAC.LastParameter(), Tol); + L = GCPnts_AbscissaPoint::Length(GAC, GAC->FirstParameter(), GAC->LastParameter(), Tol); di<<"Ellipse length = "<GetType()<<"\n"; Standard_Real Tol = Precision::Confusion(); Standard_Real L; - L = GCPnts_AbscissaPoint::Length(GAC, GAC.FirstParameter(), GAC.LastParameter(), Tol); + L = GCPnts_AbscissaPoint::Length(GAC, GAC->FirstParameter(), GAC->LastParameter(), Tol); di<<"Ellipse length = "<Value(aSplitter.Parameter(aPntIter)); aKnots.ChangeValue(aPntIter) = (aPntIter - 1) / (aDstNbPnts - 1.0); aMultiplicities.ChangeValue(aPntIter) = 1; } @@ -1398,7 +1398,7 @@ static Standard_Integer mypoints (Draw_Interpretor& di, Standard_Integer /*n*/, Standard_Real dmax = 0., ufmax = 0., ulmax = 0.; Standard_Integer imax = 0; - ComputeDeviation(GeomAdaptor_Curve(C),aPnts,dmax,ufmax,ulmax,imax); + ComputeDeviation(new GeomAdaptor_Curve(C),aPnts,dmax,ufmax,ulmax,imax); di << "Max defl: " << dmax << " " << ufmax << " " << ulmax << " " << imax << "\n"; return 0; diff --git a/src/GeomliteTest/GeomliteTest_API2dCommands.cxx b/src/GeomliteTest/GeomliteTest_API2dCommands.cxx index 46a4b68239..483d201a3a 100644 --- a/src/GeomliteTest/GeomliteTest_API2dCommands.cxx +++ b/src/GeomliteTest/GeomliteTest_API2dCommands.cxx @@ -608,7 +608,7 @@ static Standard_Integer deviation(Draw_Interpretor& theDI, Standard_Integer theN return 1; } - Geom2dAdaptor_Curve anAC(aC); + Handle(Geom2dAdaptor_Curve) anAC = new Geom2dAdaptor_Curve(aC); Standard_Integer aNbInterv = 2; Standard_Real aU0 = RealLast(); @@ -649,8 +649,8 @@ static Standard_Integer deviation(Draw_Interpretor& theDI, Standard_Integer theN } } - const Standard_Real aU1 = anAC.FirstParameter(); - const Standard_Real aU2 = anAC.LastParameter(); + const Standard_Real aU1 = anAC->FirstParameter(); + const Standard_Real aU2 = anAC->LastParameter(); Standard_Real aRetCurvParam = aU0; gp_Pnt2d aPtOnCurv; diff --git a/src/GeomliteTest/GeomliteTest_CurveCommands.cxx b/src/GeomliteTest/GeomliteTest_CurveCommands.cxx index 578bf3295c..65f6b31d42 100644 --- a/src/GeomliteTest/GeomliteTest_CurveCommands.cxx +++ b/src/GeomliteTest/GeomliteTest_CurveCommands.cxx @@ -1945,11 +1945,11 @@ static Standard_Integer length(Draw_Interpretor& di, if (n==3) Tol = Draw::Atof(a[2]); if (!GC.IsNull()) { - GeomAdaptor_Curve AC(GC); + Handle(GeomAdaptor_Curve) AC = new GeomAdaptor_Curve(GC); L = GCPnts_AbscissaPoint::Length(AC, Tol); } else if (!GC2d.IsNull()) { - Geom2dAdaptor_Curve AC(GC2d); + Handle(Geom2dAdaptor_Curve) AC = new Geom2dAdaptor_Curve(GC2d); L = GCPnts_AbscissaPoint::Length(AC, Tol); } else { diff --git a/src/HLRBRep/HLRBRep.cxx b/src/HLRBRep/HLRBRep.cxx index 6f5fc6356d..aab963c158 100644 --- a/src/HLRBRep/HLRBRep.cxx +++ b/src/HLRBRep/HLRBRep.cxx @@ -86,15 +86,15 @@ TopoDS_Edge HLRBRep::MakeEdge (const HLRBRep_Curve& ec, case GeomAbs_BSplineCurve: { Handle(Geom2d_BSplineCurve) ec2d; - GeomAdaptor_Curve GAcurve = ec.GetCurve().Curve(); - TopoDS_Edge anEdge = ec.GetCurve().Edge(); + const Handle(GeomAdaptor_Curve)& GAcurve = ec.Curve()->Curve(); + TopoDS_Edge anEdge = ec.Curve()->Edge(); Standard_Real fpar, lpar; Handle(Geom_Curve) aCurve = BRep_Tool::Curve(anEdge, fpar, lpar); if (aCurve->DynamicType() == STANDARD_TYPE(Geom_TrimmedCurve)) aCurve = (Handle(Geom_TrimmedCurve)::DownCast(aCurve))->BasisCurve(); Handle(Geom_BSplineCurve) BSplCurve (Handle(Geom_BSplineCurve)::DownCast(aCurve)); Handle(Geom_BSplineCurve) theCurve = Handle(Geom_BSplineCurve)::DownCast(BSplCurve->Copy()); - if (theCurve->IsPeriodic() && !GAcurve.IsClosed()) + if (theCurve->IsPeriodic() && !GAcurve->IsClosed()) { theCurve->Segment(sta, end); TColgp_Array1OfPnt2d Poles(1, theCurve->NbPoles()); @@ -178,7 +178,7 @@ TopoDS_Edge HLRBRep::MakeEdge3d(const HLRBRep_Curve& ec, //const Standard_Real sta = ec.Parameter2d(U1); //const Standard_Real end = ec.Parameter2d(U2); - TopoDS_Edge anEdge = ec.GetCurve().Edge(); + TopoDS_Edge anEdge = ec.Curve()->Edge(); Standard_Real fpar, lpar; //BRep_Tool::Range(anEdge, fpar, lpar); //Handle(Geom_Curve) aCurve = BRep_Tool::Curve(anEdge, fpar, lpar); diff --git a/src/HLRBRep/HLRBRep_BCurveTool.cxx b/src/HLRBRep/HLRBRep_BCurveTool.cxx index c00ed13cab..27f5f7bace 100644 --- a/src/HLRBRep/HLRBRep_BCurveTool.cxx +++ b/src/HLRBRep/HLRBRep_BCurveTool.cxx @@ -26,22 +26,22 @@ //purpose : //======================================================================= Standard_Integer -HLRBRep_BCurveTool::NbSamples (const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::NbSamples (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U0, const Standard_Real U1) { - GeomAbs_CurveType typC = C.GetType(); + GeomAbs_CurveType typC = C->GetType(); static Standard_Real nbsOther = 10.0; Standard_Real nbs = nbsOther; if(typC == GeomAbs_Line) nbs = 2; else if(typC == GeomAbs_BezierCurve) - nbs = 3 + C.NbPoles(); + nbs = 3 + C->NbPoles(); else if(typC == GeomAbs_BSplineCurve) { - nbs = C.NbKnots(); - nbs*= C.Degree(); - nbs*= C.LastParameter()- C.FirstParameter(); + nbs = C->NbKnots(); + nbs*= C->Degree(); + nbs*= C->LastParameter()- C->FirstParameter(); nbs/= U1-U0; if(nbs < 2.0) nbs=2; } @@ -55,13 +55,13 @@ HLRBRep_BCurveTool::NbSamples (const BRepAdaptor_Curve& C, //purpose : //======================================================================= -void HLRBRep_BCurveTool::Poles(const BRepAdaptor_Curve& C, +void HLRBRep_BCurveTool::Poles(const Handle(BRepAdaptor_Curve)& C, TColgp_Array1OfPnt& T) { - if(C.GetType() == GeomAbs_BezierCurve) - C.Bezier()->Poles(T); - else if(C.GetType() == GeomAbs_BSplineCurve) - C.BSpline()->Poles(T); + if(C->GetType() == GeomAbs_BezierCurve) + C->Bezier()->Poles(T); + else if(C->GetType() == GeomAbs_BSplineCurve) + C->BSpline()->Poles(T); } //======================================================================= @@ -69,17 +69,17 @@ void HLRBRep_BCurveTool::Poles(const BRepAdaptor_Curve& C, //purpose : //======================================================================= -void HLRBRep_BCurveTool::PolesAndWeights(const BRepAdaptor_Curve& C, +void HLRBRep_BCurveTool::PolesAndWeights(const Handle(BRepAdaptor_Curve)& C, TColgp_Array1OfPnt& T, TColStd_Array1OfReal& W) { - if(C.GetType() == GeomAbs_BezierCurve) { - const Handle(Geom_BezierCurve) HB = C.Bezier(); + if(C->GetType() == GeomAbs_BezierCurve) { + const Handle(Geom_BezierCurve) HB = C->Bezier(); HB->Poles(T); HB->Weights(W); } - else if(C.GetType() == GeomAbs_BSplineCurve) { - const Handle(Geom_BSplineCurve) HB = C.BSpline(); + else if(C->GetType() == GeomAbs_BSplineCurve) { + const Handle(Geom_BSplineCurve) HB = C->BSpline(); HB->Poles(T); HB->Weights(W); } @@ -91,8 +91,8 @@ void HLRBRep_BCurveTool::PolesAndWeights(const BRepAdaptor_Curve& C, //======================================================================= Handle(Geom_BezierCurve) - HLRBRep_BCurveTool::Bezier (const BRepAdaptor_Curve& C) -{ return(C.Bezier()); } + HLRBRep_BCurveTool::Bezier (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Bezier()); } //======================================================================= //function : BSpline @@ -100,5 +100,5 @@ Handle(Geom_BezierCurve) //======================================================================= Handle(Geom_BSplineCurve) - HLRBRep_BCurveTool::BSpline (const BRepAdaptor_Curve& C) -{ return(C.BSpline()); } + HLRBRep_BCurveTool::BSpline (const Handle(BRepAdaptor_Curve)& C) +{ return(C->BSpline()); } diff --git a/src/HLRBRep/HLRBRep_BCurveTool.hxx b/src/HLRBRep/HLRBRep_BCurveTool.hxx index e460e74fa6..f4dd248645 100644 --- a/src/HLRBRep/HLRBRep_BCurveTool.hxx +++ b/src/HLRBRep/HLRBRep_BCurveTool.hxx @@ -48,54 +48,54 @@ public: DEFINE_STANDARD_ALLOC - static Standard_Real FirstParameter (const BRepAdaptor_Curve& C); + static Standard_Real FirstParameter (const Handle(BRepAdaptor_Curve)& C); - static Standard_Real LastParameter (const BRepAdaptor_Curve& C); + static Standard_Real LastParameter (const Handle(BRepAdaptor_Curve)& C); - static GeomAbs_Shape Continuity (const BRepAdaptor_Curve& C); + static GeomAbs_Shape Continuity (const Handle(BRepAdaptor_Curve)& C); //! Returns the number of intervals for continuity //! . May be one if Continuity(myclass) >= - static Standard_Integer NbIntervals (const BRepAdaptor_Curve& C, const GeomAbs_Shape S); + static Standard_Integer NbIntervals (const Handle(BRepAdaptor_Curve)& C, const GeomAbs_Shape S); //! Stores in the parameters bounding the intervals //! of continuity . //! //! The array must provide enough room to accommodate //! for the parameters. i.e. T.Length() > NbIntervals() - static void Intervals (const BRepAdaptor_Curve& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); + static void Intervals (const Handle(BRepAdaptor_Curve)& C, TColStd_Array1OfReal& T, const GeomAbs_Shape S); - static Standard_Boolean IsClosed (const BRepAdaptor_Curve& C); + static Standard_Boolean IsClosed (const Handle(BRepAdaptor_Curve)& C); - static Standard_Boolean IsPeriodic (const BRepAdaptor_Curve& C); + static Standard_Boolean IsPeriodic (const Handle(BRepAdaptor_Curve)& C); - static Standard_Real Period (const BRepAdaptor_Curve& C); + static Standard_Real Period (const Handle(BRepAdaptor_Curve)& C); //! Computes the point of parameter U on the curve. - static gp_Pnt Value (const BRepAdaptor_Curve& C, const Standard_Real U); + static gp_Pnt Value (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U); //! Computes the point of parameter U on the curve. - static void D0 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P); + static void D0 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P); //! Computes the point of parameter U on the curve with its //! first derivative. //! Raised if the continuity of the current interval //! is not C1. - static void D1 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V); + static void D1 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V); //! Returns the point P of parameter U, the first and second //! derivatives V1 and V2. //! Raised if the continuity of the current interval //! is not C2. - static void D2 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2); + static void D2 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2); //! Returns the point P of parameter U, the first, the second //! and the third derivative. //! Raised if the continuity of the current interval //! is not C3. - static void D3 (const BRepAdaptor_Curve& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3); + static void D3 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3); //! The returned vector gives the value of the derivative for the @@ -103,44 +103,44 @@ public: //! Raised if the continuity of the current interval //! is not CN. //! Raised if N < 1. - static gp_Vec DN (const BRepAdaptor_Curve& C, const Standard_Real U, const Standard_Integer N); + static gp_Vec DN (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, const Standard_Integer N); //! Returns the parametric resolution corresponding //! to the real space resolution . - static Standard_Real Resolution (const BRepAdaptor_Curve& C, const Standard_Real R3d); + static Standard_Real Resolution (const Handle(BRepAdaptor_Curve)& C, const Standard_Real R3d); //! Returns the type of the curve in the current //! interval : Line, Circle, Ellipse, Hyperbola, //! Parabola, BezierCurve, BSplineCurve, OtherCurve. - static GeomAbs_CurveType GetType (const BRepAdaptor_Curve& C); + static GeomAbs_CurveType GetType (const Handle(BRepAdaptor_Curve)& C); - static gp_Lin Line (const BRepAdaptor_Curve& C); + static gp_Lin Line (const Handle(BRepAdaptor_Curve)& C); - static gp_Circ Circle (const BRepAdaptor_Curve& C); + static gp_Circ Circle (const Handle(BRepAdaptor_Curve)& C); - static gp_Elips Ellipse (const BRepAdaptor_Curve& C); + static gp_Elips Ellipse (const Handle(BRepAdaptor_Curve)& C); - static gp_Hypr Hyperbola (const BRepAdaptor_Curve& C); + static gp_Hypr Hyperbola (const Handle(BRepAdaptor_Curve)& C); - static gp_Parab Parabola (const BRepAdaptor_Curve& C); + static gp_Parab Parabola (const Handle(BRepAdaptor_Curve)& C); - Standard_EXPORT static Handle(Geom_BezierCurve) Bezier (const BRepAdaptor_Curve& C); + Standard_EXPORT static Handle(Geom_BezierCurve) Bezier (const Handle(BRepAdaptor_Curve)& C); - Standard_EXPORT static Handle(Geom_BSplineCurve) BSpline (const BRepAdaptor_Curve& C); + Standard_EXPORT static Handle(Geom_BSplineCurve) BSpline (const Handle(BRepAdaptor_Curve)& C); - static Standard_Integer Degree (const BRepAdaptor_Curve& C); + static Standard_Integer Degree (const Handle(BRepAdaptor_Curve)& C); - static Standard_Boolean IsRational (const BRepAdaptor_Curve& C); + static Standard_Boolean IsRational (const Handle(BRepAdaptor_Curve)& C); - static Standard_Integer NbPoles (const BRepAdaptor_Curve& C); + static Standard_Integer NbPoles (const Handle(BRepAdaptor_Curve)& C); - static Standard_Integer NbKnots (const BRepAdaptor_Curve& C); + static Standard_Integer NbKnots (const Handle(BRepAdaptor_Curve)& C); - Standard_EXPORT static void Poles (const BRepAdaptor_Curve& C, TColgp_Array1OfPnt& T); + Standard_EXPORT static void Poles (const Handle(BRepAdaptor_Curve)& C, TColgp_Array1OfPnt& T); - Standard_EXPORT static void PolesAndWeights (const BRepAdaptor_Curve& C, TColgp_Array1OfPnt& T, TColStd_Array1OfReal& W); + Standard_EXPORT static void PolesAndWeights (const Handle(BRepAdaptor_Curve)& C, TColgp_Array1OfPnt& T, TColStd_Array1OfReal& W); - Standard_EXPORT static Standard_Integer NbSamples (const BRepAdaptor_Curve& C, const Standard_Real U0, const Standard_Real U1); + Standard_EXPORT static Standard_Integer NbSamples (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U0, const Standard_Real U1); diff --git a/src/HLRBRep/HLRBRep_BCurveTool.lxx b/src/HLRBRep/HLRBRep_BCurveTool.lxx index de38495abc..294f295171 100644 --- a/src/HLRBRep/HLRBRep_BCurveTool.lxx +++ b/src/HLRBRep/HLRBRep_BCurveTool.lxx @@ -30,8 +30,8 @@ //======================================================================= inline Standard_Real -HLRBRep_BCurveTool::FirstParameter (const BRepAdaptor_Curve& C) -{ return(C.FirstParameter()); } +HLRBRep_BCurveTool::FirstParameter (const Handle(BRepAdaptor_Curve)& C) +{ return(C->FirstParameter()); } //======================================================================= //function : LastParameter @@ -39,8 +39,8 @@ HLRBRep_BCurveTool::FirstParameter (const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Real -HLRBRep_BCurveTool::LastParameter (const BRepAdaptor_Curve& C) -{ return(C.LastParameter()); } +HLRBRep_BCurveTool::LastParameter (const Handle(BRepAdaptor_Curve)& C) +{ return(C->LastParameter()); } //======================================================================= //function : Continuity @@ -48,8 +48,8 @@ HLRBRep_BCurveTool::LastParameter (const BRepAdaptor_Curve& C) //======================================================================= inline GeomAbs_Shape -HLRBRep_BCurveTool::Continuity (const BRepAdaptor_Curve& C) -{ return(C.Continuity()); } +HLRBRep_BCurveTool::Continuity (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Continuity()); } //======================================================================= //function : NbIntervals @@ -57,9 +57,9 @@ HLRBRep_BCurveTool::Continuity (const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Integer -HLRBRep_BCurveTool::NbIntervals(const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::NbIntervals(const Handle(BRepAdaptor_Curve)& C, const GeomAbs_Shape Sh) -{ return(C.NbIntervals(Sh)); } +{ return(C->NbIntervals(Sh)); } //======================================================================= //function : Intervals @@ -67,10 +67,10 @@ HLRBRep_BCurveTool::NbIntervals(const BRepAdaptor_Curve& C, //======================================================================= inline void -HLRBRep_BCurveTool::Intervals(const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::Intervals(const Handle(BRepAdaptor_Curve)& C, TColStd_Array1OfReal& Tab, const GeomAbs_Shape Sh) -{ C.Intervals(Tab,Sh); } +{ C->Intervals(Tab,Sh); } //======================================================================= //function : IsClosed @@ -78,8 +78,8 @@ HLRBRep_BCurveTool::Intervals(const BRepAdaptor_Curve& C, //======================================================================= inline Standard_Boolean -HLRBRep_BCurveTool::IsClosed(const BRepAdaptor_Curve& C) -{ return(C.IsClosed()); } +HLRBRep_BCurveTool::IsClosed(const Handle(BRepAdaptor_Curve)& C) +{ return(C->IsClosed()); } //======================================================================= //function : IsPeriodic @@ -87,8 +87,8 @@ HLRBRep_BCurveTool::IsClosed(const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Boolean -HLRBRep_BCurveTool::IsPeriodic(const BRepAdaptor_Curve& C) -{ return(C.IsPeriodic()); } +HLRBRep_BCurveTool::IsPeriodic(const Handle(BRepAdaptor_Curve)& C) +{ return(C->IsPeriodic()); } //======================================================================= //function : Period @@ -96,8 +96,8 @@ HLRBRep_BCurveTool::IsPeriodic(const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Real -HLRBRep_BCurveTool::Period(const BRepAdaptor_Curve& C) -{ return(C.Period()); } +HLRBRep_BCurveTool::Period(const Handle(BRepAdaptor_Curve)& C) +{ return(C->Period()); } //======================================================================= //function : Value @@ -105,9 +105,9 @@ HLRBRep_BCurveTool::Period(const BRepAdaptor_Curve& C) //======================================================================= inline gp_Pnt -HLRBRep_BCurveTool::Value (const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::Value (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U) -{ return(C.Value(U)); } +{ return(C->Value(U)); } //======================================================================= //function : D0 @@ -115,10 +115,10 @@ HLRBRep_BCurveTool::Value (const BRepAdaptor_Curve& C, //======================================================================= inline void -HLRBRep_BCurveTool::D0(const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::D0(const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P) -{ C.D0(U,P); } +{ C->D0(U,P); } //======================================================================= //function : D1 @@ -126,19 +126,19 @@ HLRBRep_BCurveTool::D0(const BRepAdaptor_Curve& C, //======================================================================= inline void -HLRBRep_BCurveTool::D1 (const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::D1 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& T) -{ C.D1(U,P,T); } +{ C->D1(U,P,T); } inline void -HLRBRep_BCurveTool::D2 (const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::D2 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& T, gp_Vec& N) -{ C.D2(U,P,T,N); } +{ C->D2(U,P,T,N); } //======================================================================= //function : D3 @@ -146,13 +146,13 @@ HLRBRep_BCurveTool::D2 (const BRepAdaptor_Curve& C, //======================================================================= inline void -HLRBRep_BCurveTool::D3 (const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::D3 (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, gp_Pnt& P, gp_Vec& V1, gp_Vec& V2, gp_Vec& V3) -{ C.D3(U,P,V1,V2,V3); } +{ C->D3(U,P,V1,V2,V3); } //======================================================================= //function : DN @@ -160,10 +160,10 @@ HLRBRep_BCurveTool::D3 (const BRepAdaptor_Curve& C, //======================================================================= inline gp_Vec -HLRBRep_BCurveTool::DN (const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::DN (const Handle(BRepAdaptor_Curve)& C, const Standard_Real U, const Standard_Integer N) -{ return(C.DN(U,N)); } +{ return(C->DN(U,N)); } //======================================================================= //function : Resolution @@ -171,9 +171,9 @@ HLRBRep_BCurveTool::DN (const BRepAdaptor_Curve& C, //======================================================================= inline Standard_Real -HLRBRep_BCurveTool::Resolution(const BRepAdaptor_Curve& C, +HLRBRep_BCurveTool::Resolution(const Handle(BRepAdaptor_Curve)& C, const Standard_Real R3d) -{ return(C.Resolution(R3d)); } +{ return(C->Resolution(R3d)); } //======================================================================= //function : GetType @@ -181,8 +181,8 @@ HLRBRep_BCurveTool::Resolution(const BRepAdaptor_Curve& C, //======================================================================= inline GeomAbs_CurveType - HLRBRep_BCurveTool::GetType(const BRepAdaptor_Curve& C) -{ return(C.GetType()); } + HLRBRep_BCurveTool::GetType(const Handle(BRepAdaptor_Curve)& C) +{ return(C->GetType()); } //======================================================================= //function : Line @@ -190,8 +190,8 @@ inline GeomAbs_CurveType //======================================================================= inline gp_Lin -HLRBRep_BCurveTool::Line (const BRepAdaptor_Curve& C) -{ return(C.Line()); } +HLRBRep_BCurveTool::Line (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Line()); } //======================================================================= //function : Circle @@ -199,8 +199,8 @@ HLRBRep_BCurveTool::Line (const BRepAdaptor_Curve& C) //======================================================================= inline gp_Circ -HLRBRep_BCurveTool::Circle (const BRepAdaptor_Curve& C) -{ return(C.Circle()); } +HLRBRep_BCurveTool::Circle (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Circle()); } //======================================================================= //function : Ellipse @@ -208,8 +208,8 @@ HLRBRep_BCurveTool::Circle (const BRepAdaptor_Curve& C) //======================================================================= inline gp_Elips -HLRBRep_BCurveTool::Ellipse (const BRepAdaptor_Curve& C) -{ return(C.Ellipse()); } +HLRBRep_BCurveTool::Ellipse (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Ellipse()); } //======================================================================= //function : Parabola @@ -217,8 +217,8 @@ HLRBRep_BCurveTool::Ellipse (const BRepAdaptor_Curve& C) //======================================================================= inline gp_Parab -HLRBRep_BCurveTool::Parabola (const BRepAdaptor_Curve& C) -{ return(C.Parabola()); } +HLRBRep_BCurveTool::Parabola (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Parabola()); } //======================================================================= //function : Hyperbola @@ -226,8 +226,8 @@ HLRBRep_BCurveTool::Parabola (const BRepAdaptor_Curve& C) //======================================================================= inline gp_Hypr -HLRBRep_BCurveTool::Hyperbola (const BRepAdaptor_Curve& C) -{ return(C.Hyperbola()); } +HLRBRep_BCurveTool::Hyperbola (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Hyperbola()); } //======================================================================= //function : Degree @@ -235,8 +235,8 @@ HLRBRep_BCurveTool::Hyperbola (const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Integer -HLRBRep_BCurveTool::Degree (const BRepAdaptor_Curve& C) -{ return(C.Degree()); } +HLRBRep_BCurveTool::Degree (const Handle(BRepAdaptor_Curve)& C) +{ return(C->Degree()); } //======================================================================= //function : IsRational @@ -244,8 +244,8 @@ HLRBRep_BCurveTool::Degree (const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Boolean -HLRBRep_BCurveTool::IsRational (const BRepAdaptor_Curve& C) -{ return(C.IsRational()); } +HLRBRep_BCurveTool::IsRational (const Handle(BRepAdaptor_Curve)& C) +{ return(C->IsRational()); } //======================================================================= //function : NbPoles @@ -253,8 +253,8 @@ HLRBRep_BCurveTool::IsRational (const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Integer -HLRBRep_BCurveTool::NbPoles (const BRepAdaptor_Curve& C) -{ return(C.NbPoles()); } +HLRBRep_BCurveTool::NbPoles (const Handle(BRepAdaptor_Curve)& C) +{ return(C->NbPoles()); } //======================================================================= //function : NbKnots @@ -262,5 +262,5 @@ HLRBRep_BCurveTool::NbPoles (const BRepAdaptor_Curve& C) //======================================================================= inline Standard_Integer -HLRBRep_BCurveTool::NbKnots(const BRepAdaptor_Curve& C) -{ return(C.NbKnots()); } +HLRBRep_BCurveTool::NbKnots(const Handle(BRepAdaptor_Curve)& C) +{ return(C->NbKnots()); } diff --git a/src/HLRBRep/HLRBRep_BSurfaceTool.cxx b/src/HLRBRep/HLRBRep_BSurfaceTool.cxx index e4db3314e0..6a3981ba73 100644 --- a/src/HLRBRep/HLRBRep_BSurfaceTool.cxx +++ b/src/HLRBRep/HLRBRep_BSurfaceTool.cxx @@ -22,10 +22,10 @@ //purpose : //======================================================================= Standard_Integer -HLRBRep_BSurfaceTool::NbSamplesU(const BRepAdaptor_Surface& S) +HLRBRep_BSurfaceTool::NbSamplesU(const Handle(BRepAdaptor_Surface)& S) { Standard_Integer nbs; - GeomAbs_SurfaceType typS = S.GetType(); + GeomAbs_SurfaceType typS = S->GetType(); switch(typS) { case GeomAbs_Plane: { @@ -34,13 +34,13 @@ HLRBRep_BSurfaceTool::NbSamplesU(const BRepAdaptor_Surface& S) break; case GeomAbs_BezierSurface: { - nbs = 3 + S.NbUPoles(); + nbs = 3 + S->NbUPoles(); } break; case GeomAbs_BSplineSurface: { - nbs = S.NbUKnots(); - nbs*= S.UDegree(); + nbs = S->NbUKnots(); + nbs*= S->UDegree(); if(nbs < 2) nbs=2; } @@ -75,10 +75,10 @@ HLRBRep_BSurfaceTool::NbSamplesU(const BRepAdaptor_Surface& S) //======================================================================= Standard_Integer -HLRBRep_BSurfaceTool::NbSamplesV(const BRepAdaptor_Surface& S) +HLRBRep_BSurfaceTool::NbSamplesV(const Handle(BRepAdaptor_Surface)& S) { Standard_Integer nbs; - GeomAbs_SurfaceType typS = S.GetType(); + GeomAbs_SurfaceType typS = S->GetType(); switch(typS) { case GeomAbs_Plane: { @@ -87,13 +87,13 @@ HLRBRep_BSurfaceTool::NbSamplesV(const BRepAdaptor_Surface& S) break; case GeomAbs_BezierSurface: { - nbs = 3 + S.NbVPoles(); + nbs = 3 + S->NbVPoles(); } break; case GeomAbs_BSplineSurface: { - nbs = S.NbVKnots(); - nbs*= S.VDegree(); + nbs = S->NbVKnots(); + nbs*= S->VDegree(); if(nbs < 2) nbs=2; } @@ -124,7 +124,7 @@ HLRBRep_BSurfaceTool::NbSamplesV(const BRepAdaptor_Surface& S) //======================================================================= Standard_Integer -HLRBRep_BSurfaceTool::NbSamplesU(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::NbSamplesU(const Handle(BRepAdaptor_Surface)& S, const Standard_Real u1, const Standard_Real u2) { @@ -146,7 +146,7 @@ HLRBRep_BSurfaceTool::NbSamplesU(const BRepAdaptor_Surface& S, //======================================================================= Standard_Integer -HLRBRep_BSurfaceTool::NbSamplesV(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::NbSamplesV(const Handle(BRepAdaptor_Surface)& S, const Standard_Real v1, const Standard_Real v2) { diff --git a/src/HLRBRep/HLRBRep_BSurfaceTool.hxx b/src/HLRBRep/HLRBRep_BSurfaceTool.hxx index b5c0c8996f..be90d15132 100644 --- a/src/HLRBRep/HLRBRep_BSurfaceTool.hxx +++ b/src/HLRBRep/HLRBRep_BSurfaceTool.hxx @@ -45,107 +45,107 @@ public: DEFINE_STANDARD_ALLOC - static Standard_Real FirstUParameter (const BRepAdaptor_Surface& S); + static Standard_Real FirstUParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real FirstVParameter (const BRepAdaptor_Surface& S); + static Standard_Real FirstVParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real LastUParameter (const BRepAdaptor_Surface& S); + static Standard_Real LastUParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real LastVParameter (const BRepAdaptor_Surface& S); + static Standard_Real LastVParameter (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer NbUIntervals (const BRepAdaptor_Surface& S, const GeomAbs_Shape Sh); + static Standard_Integer NbUIntervals (const Handle(BRepAdaptor_Surface)& S, const GeomAbs_Shape Sh); - static Standard_Integer NbVIntervals (const BRepAdaptor_Surface& S, const GeomAbs_Shape Sh); + static Standard_Integer NbVIntervals (const Handle(BRepAdaptor_Surface)& S, const GeomAbs_Shape Sh); - static void UIntervals (const BRepAdaptor_Surface& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); + static void UIntervals (const Handle(BRepAdaptor_Surface)& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); - static void VIntervals (const BRepAdaptor_Surface& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); + static void VIntervals (const Handle(BRepAdaptor_Surface)& S, TColStd_Array1OfReal& T, const GeomAbs_Shape Sh); //! If >= - static Handle(Adaptor3d_Surface) UTrim (const BRepAdaptor_Surface& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); + static Handle(Adaptor3d_Surface) UTrim (const Handle(BRepAdaptor_Surface)& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); //! If >= - static Handle(Adaptor3d_Surface) VTrim (const BRepAdaptor_Surface& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); + static Handle(Adaptor3d_Surface) VTrim (const Handle(BRepAdaptor_Surface)& S, const Standard_Real First, const Standard_Real Last, const Standard_Real Tol); - static Standard_Boolean IsUClosed (const BRepAdaptor_Surface& S); + static Standard_Boolean IsUClosed (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsVClosed (const BRepAdaptor_Surface& S); + static Standard_Boolean IsVClosed (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsUPeriodic (const BRepAdaptor_Surface& S); + static Standard_Boolean IsUPeriodic (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real UPeriod (const BRepAdaptor_Surface& S); + static Standard_Real UPeriod (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsVPeriodic (const BRepAdaptor_Surface& S); + static Standard_Boolean IsVPeriodic (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real VPeriod (const BRepAdaptor_Surface& S); + static Standard_Real VPeriod (const Handle(BRepAdaptor_Surface)& S); - static gp_Pnt Value (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v); + static gp_Pnt Value (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v); - static void D0 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P); + static void D0 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P); - static void D1 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1u, gp_Vec& D1v); + static void D1 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1u, gp_Vec& D1v); - static void D2 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV); + static void D2 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV); - static void D3 (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV); + static void D3 (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV, gp_Vec& D3U, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV); - static gp_Vec DN (const BRepAdaptor_Surface& S, const Standard_Real u, const Standard_Real v, const Standard_Integer Nu, const Standard_Integer Nv); + static gp_Vec DN (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u, const Standard_Real v, const Standard_Integer Nu, const Standard_Integer Nv); - static GeomAbs_Shape UContinuity (const BRepAdaptor_Surface& S); + static GeomAbs_Shape UContinuity (const Handle(BRepAdaptor_Surface)& S); - static GeomAbs_Shape VContinuity (const BRepAdaptor_Surface& S); + static GeomAbs_Shape VContinuity (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer UDegree (const BRepAdaptor_Surface& S); + static Standard_Integer UDegree (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer NbUPoles (const BRepAdaptor_Surface& S); + static Standard_Integer NbUPoles (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer NbUKnots (const BRepAdaptor_Surface& S); + static Standard_Integer NbUKnots (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsURational (const BRepAdaptor_Surface& S); + static Standard_Boolean IsURational (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer VDegree (const BRepAdaptor_Surface& S); + static Standard_Integer VDegree (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer NbVPoles (const BRepAdaptor_Surface& S); + static Standard_Integer NbVPoles (const Handle(BRepAdaptor_Surface)& S); - static Standard_Integer NbVKnots (const BRepAdaptor_Surface& S); + static Standard_Integer NbVKnots (const Handle(BRepAdaptor_Surface)& S); - static Standard_Boolean IsVRational (const BRepAdaptor_Surface& S); + static Standard_Boolean IsVRational (const Handle(BRepAdaptor_Surface)& S); - static Standard_Real UResolution (const BRepAdaptor_Surface& S, const Standard_Real R3d); + static Standard_Real UResolution (const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d); - static Standard_Real VResolution (const BRepAdaptor_Surface& S, const Standard_Real R3d); + static Standard_Real VResolution (const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d); - static GeomAbs_SurfaceType GetType (const BRepAdaptor_Surface& S); + static GeomAbs_SurfaceType GetType (const Handle(BRepAdaptor_Surface)& S); - static gp_Pln Plane (const BRepAdaptor_Surface& S); + static gp_Pln Plane (const Handle(BRepAdaptor_Surface)& S); - static gp_Cylinder Cylinder (const BRepAdaptor_Surface& S); + static gp_Cylinder Cylinder (const Handle(BRepAdaptor_Surface)& S); - static gp_Cone Cone (const BRepAdaptor_Surface& S); + static gp_Cone Cone (const Handle(BRepAdaptor_Surface)& S); - static gp_Torus Torus (const BRepAdaptor_Surface& S); + static gp_Torus Torus (const Handle(BRepAdaptor_Surface)& S); - static gp_Sphere Sphere (const BRepAdaptor_Surface& S); + static gp_Sphere Sphere (const Handle(BRepAdaptor_Surface)& S); - static Handle(Geom_BezierSurface) Bezier (const BRepAdaptor_Surface& S); + static Handle(Geom_BezierSurface) Bezier (const Handle(BRepAdaptor_Surface)& S); - static Handle(Geom_BSplineSurface) BSpline (const BRepAdaptor_Surface& S); + static Handle(Geom_BSplineSurface) BSpline (const Handle(BRepAdaptor_Surface)& S); - static gp_Ax1 AxeOfRevolution (const BRepAdaptor_Surface& S); + static gp_Ax1 AxeOfRevolution (const Handle(BRepAdaptor_Surface)& S); - static gp_Dir Direction (const BRepAdaptor_Surface& S); + static gp_Dir Direction (const Handle(BRepAdaptor_Surface)& S); - static Handle(Adaptor3d_Curve) BasisCurve (const BRepAdaptor_Surface& S); + static Handle(Adaptor3d_Curve) BasisCurve (const Handle(BRepAdaptor_Surface)& S); - static gp_Ax1 Axis (const BRepAdaptor_Surface& S); + static gp_Ax1 Axis (const Handle(BRepAdaptor_Surface)& S); - Standard_EXPORT static Standard_Integer NbSamplesU (const BRepAdaptor_Surface& S); + Standard_EXPORT static Standard_Integer NbSamplesU (const Handle(BRepAdaptor_Surface)& S); - Standard_EXPORT static Standard_Integer NbSamplesV (const BRepAdaptor_Surface& S); + Standard_EXPORT static Standard_Integer NbSamplesV (const Handle(BRepAdaptor_Surface)& S); - Standard_EXPORT static Standard_Integer NbSamplesU (const BRepAdaptor_Surface& S, const Standard_Real u1, const Standard_Real u2); + Standard_EXPORT static Standard_Integer NbSamplesU (const Handle(BRepAdaptor_Surface)& S, const Standard_Real u1, const Standard_Real u2); - Standard_EXPORT static Standard_Integer NbSamplesV (const BRepAdaptor_Surface& S, const Standard_Real v1, const Standard_Real v2); + Standard_EXPORT static Standard_Integer NbSamplesV (const Handle(BRepAdaptor_Surface)& S, const Standard_Real v1, const Standard_Real v2); diff --git a/src/HLRBRep/HLRBRep_BSurfaceTool.lxx b/src/HLRBRep/HLRBRep_BSurfaceTool.lxx index 65d4903dd8..179be840eb 100644 --- a/src/HLRBRep/HLRBRep_BSurfaceTool.lxx +++ b/src/HLRBRep/HLRBRep_BSurfaceTool.lxx @@ -34,8 +34,8 @@ //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::FirstUParameter(const BRepAdaptor_Surface& Surf) -{ return Surf.FirstUParameter(); } +HLRBRep_BSurfaceTool::FirstUParameter(const Handle(BRepAdaptor_Surface)& Surf) +{ return Surf->FirstUParameter(); } //======================================================================= //function : FirstVParameter @@ -43,8 +43,8 @@ HLRBRep_BSurfaceTool::FirstUParameter(const BRepAdaptor_Surface& Surf) //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::FirstVParameter(const BRepAdaptor_Surface& Surf) -{ return Surf.FirstVParameter(); } +HLRBRep_BSurfaceTool::FirstVParameter(const Handle(BRepAdaptor_Surface)& Surf) +{ return Surf->FirstVParameter(); } //======================================================================= //function : LastUParameter @@ -52,8 +52,8 @@ HLRBRep_BSurfaceTool::FirstVParameter(const BRepAdaptor_Surface& Surf) //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::LastUParameter(const BRepAdaptor_Surface& Surf) -{ return Surf.LastUParameter(); } +HLRBRep_BSurfaceTool::LastUParameter(const Handle(BRepAdaptor_Surface)& Surf) +{ return Surf->LastUParameter(); } //======================================================================= //function : LastVParameter @@ -61,8 +61,8 @@ HLRBRep_BSurfaceTool::LastUParameter(const BRepAdaptor_Surface& Surf) //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::LastVParameter(const BRepAdaptor_Surface& Surf) -{ return Surf.LastVParameter(); } +HLRBRep_BSurfaceTool::LastVParameter(const Handle(BRepAdaptor_Surface)& Surf) +{ return Surf->LastVParameter(); } //======================================================================= //function : NbUIntervals @@ -70,9 +70,9 @@ HLRBRep_BSurfaceTool::LastVParameter(const BRepAdaptor_Surface& Surf) //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::NbUIntervals(const BRepAdaptor_Surface& Surf, +HLRBRep_BSurfaceTool::NbUIntervals(const Handle(BRepAdaptor_Surface)& Surf, const GeomAbs_Shape S) -{ return Surf.NbUIntervals(S); } +{ return Surf->NbUIntervals(S); } //======================================================================= //function : NbVIntervals @@ -80,9 +80,9 @@ HLRBRep_BSurfaceTool::NbUIntervals(const BRepAdaptor_Surface& Surf, //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::NbVIntervals(const BRepAdaptor_Surface& Surf, +HLRBRep_BSurfaceTool::NbVIntervals(const Handle(BRepAdaptor_Surface)& Surf, const GeomAbs_Shape S) -{ return Surf.NbVIntervals(S); } +{ return Surf->NbVIntervals(S); } //======================================================================= //function : UIntervals @@ -90,10 +90,10 @@ HLRBRep_BSurfaceTool::NbVIntervals(const BRepAdaptor_Surface& Surf, //======================================================================= inline void -HLRBRep_BSurfaceTool::UIntervals(const BRepAdaptor_Surface& Surf, +HLRBRep_BSurfaceTool::UIntervals(const Handle(BRepAdaptor_Surface)& Surf, TColStd_Array1OfReal& Tab, const GeomAbs_Shape S) -{ Surf.UIntervals(Tab,S); } +{ Surf->UIntervals(Tab,S); } //======================================================================= //function : VIntervals @@ -101,10 +101,10 @@ HLRBRep_BSurfaceTool::UIntervals(const BRepAdaptor_Surface& Surf, //======================================================================= inline void -HLRBRep_BSurfaceTool::VIntervals(const BRepAdaptor_Surface& Surf, +HLRBRep_BSurfaceTool::VIntervals(const Handle(BRepAdaptor_Surface)& Surf, TColStd_Array1OfReal& Tab, const GeomAbs_Shape S) -{ Surf.VIntervals(Tab,S); } +{ Surf->VIntervals(Tab,S); } //======================================================================= @@ -113,11 +113,11 @@ HLRBRep_BSurfaceTool::VIntervals(const BRepAdaptor_Surface& Surf, //======================================================================= inline Handle(Adaptor3d_Surface) -HLRBRep_BSurfaceTool::UTrim(const BRepAdaptor_Surface& Surf, +HLRBRep_BSurfaceTool::UTrim(const Handle(BRepAdaptor_Surface)& Surf, const Standard_Real F, const Standard_Real L, const Standard_Real Tol) -{ return Surf.UTrim(F,L,Tol); } +{ return Surf->UTrim(F,L,Tol); } //======================================================================= //function : VTrim @@ -125,11 +125,11 @@ HLRBRep_BSurfaceTool::UTrim(const BRepAdaptor_Surface& Surf, //======================================================================= inline Handle(Adaptor3d_Surface) -HLRBRep_BSurfaceTool::VTrim(const BRepAdaptor_Surface& Surf, +HLRBRep_BSurfaceTool::VTrim(const Handle(BRepAdaptor_Surface)& Surf, const Standard_Real F, const Standard_Real L, const Standard_Real Tol) -{ return Surf.VTrim(F,L,Tol); } +{ return Surf->VTrim(F,L,Tol); } //======================================================================= //function : IsUClosed @@ -137,8 +137,8 @@ HLRBRep_BSurfaceTool::VTrim(const BRepAdaptor_Surface& Surf, //======================================================================= inline Standard_Boolean -HLRBRep_BSurfaceTool::IsUClosed(const BRepAdaptor_Surface& S) -{ return S.IsUClosed(); } +HLRBRep_BSurfaceTool::IsUClosed(const Handle(BRepAdaptor_Surface)& S) +{ return S->IsUClosed(); } //======================================================================= //function : IsVClosed @@ -146,8 +146,8 @@ HLRBRep_BSurfaceTool::IsUClosed(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Boolean -HLRBRep_BSurfaceTool::IsVClosed(const BRepAdaptor_Surface& S) -{ return S.IsVClosed(); } +HLRBRep_BSurfaceTool::IsVClosed(const Handle(BRepAdaptor_Surface)& S) +{ return S->IsVClosed(); } //======================================================================= //function : IsUPeriodic @@ -155,8 +155,8 @@ HLRBRep_BSurfaceTool::IsVClosed(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Boolean -HLRBRep_BSurfaceTool::IsUPeriodic(const BRepAdaptor_Surface& S) -{ return S.IsUPeriodic(); } +HLRBRep_BSurfaceTool::IsUPeriodic(const Handle(BRepAdaptor_Surface)& S) +{ return S->IsUPeriodic(); } //======================================================================= //function : UPeriod @@ -164,8 +164,8 @@ HLRBRep_BSurfaceTool::IsUPeriodic(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::UPeriod(const BRepAdaptor_Surface& S) -{ return S.UPeriod(); } +HLRBRep_BSurfaceTool::UPeriod(const Handle(BRepAdaptor_Surface)& S) +{ return S->UPeriod(); } //======================================================================= //function : IsVPeriodic @@ -173,8 +173,8 @@ HLRBRep_BSurfaceTool::UPeriod(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Boolean -HLRBRep_BSurfaceTool::IsVPeriodic(const BRepAdaptor_Surface& S) -{ return S.IsVPeriodic(); } +HLRBRep_BSurfaceTool::IsVPeriodic(const Handle(BRepAdaptor_Surface)& S) +{ return S->IsVPeriodic(); } //======================================================================= //function : VPeriod @@ -182,8 +182,8 @@ HLRBRep_BSurfaceTool::IsVPeriodic(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::VPeriod(const BRepAdaptor_Surface& S) -{ return S.VPeriod(); } +HLRBRep_BSurfaceTool::VPeriod(const Handle(BRepAdaptor_Surface)& S) +{ return S->VPeriod(); } //======================================================================= //function : Value @@ -191,10 +191,10 @@ HLRBRep_BSurfaceTool::VPeriod(const BRepAdaptor_Surface& S) //======================================================================= inline gp_Pnt -HLRBRep_BSurfaceTool::Value(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::Value(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V ) -{ return S.Value(U,V); } +{ return S->Value(U,V); } //======================================================================= //function : D0 @@ -202,11 +202,11 @@ HLRBRep_BSurfaceTool::Value(const BRepAdaptor_Surface& S, //======================================================================= inline void -HLRBRep_BSurfaceTool::D0(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::D0(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P) -{ S.D0(U,V,P); } +{ S->D0(U,V,P); } //======================================================================= //function : D1 @@ -214,13 +214,13 @@ HLRBRep_BSurfaceTool::D0(const BRepAdaptor_Surface& S, //======================================================================= inline void -HLRBRep_BSurfaceTool::D1(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::D1(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, gp_Vec& D1U, gp_Vec& D1V) -{ S.D1(U,V,P,D1U,D1V); } +{ S->D1(U,V,P,D1U,D1V); } //======================================================================= //function : D2 @@ -228,7 +228,7 @@ HLRBRep_BSurfaceTool::D1(const BRepAdaptor_Surface& S, //======================================================================= inline void -HLRBRep_BSurfaceTool::D2(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::D2(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, @@ -237,7 +237,7 @@ HLRBRep_BSurfaceTool::D2(const BRepAdaptor_Surface& S, gp_Vec& D2U, gp_Vec& D2V, gp_Vec& D2UV) -{ S.D2(U,V,P,D1U,D1V,D2U,D2V,D2UV); } +{ S->D2(U,V,P,D1U,D1V,D2U,D2V,D2UV); } //======================================================================= //function : D3 @@ -245,7 +245,7 @@ HLRBRep_BSurfaceTool::D2(const BRepAdaptor_Surface& S, //======================================================================= inline void -HLRBRep_BSurfaceTool::D3(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::D3(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, gp_Pnt& P, @@ -258,7 +258,7 @@ HLRBRep_BSurfaceTool::D3(const BRepAdaptor_Surface& S, gp_Vec& D3V, gp_Vec& D3UUV, gp_Vec& D3UVV) -{ S.D3(U,V,P,D1U,D1V,D2U,D2V,D2UV,D3U,D3V,D3UUV,D3UVV); } +{ S->D3(U,V,P,D1U,D1V,D2U,D2V,D2UV,D3U,D3V,D3UUV,D3UVV); } //======================================================================= //function : DN @@ -266,12 +266,12 @@ HLRBRep_BSurfaceTool::D3(const BRepAdaptor_Surface& S, //======================================================================= inline gp_Vec -HLRBRep_BSurfaceTool::DN(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::DN(const Handle(BRepAdaptor_Surface)& S, const Standard_Real U, const Standard_Real V, const Standard_Integer Nu, const Standard_Integer Nv) -{ return S.DN(U,V,Nu,Nv); } +{ return S->DN(U,V,Nu,Nv); } //======================================================================= //function : UResolution @@ -279,9 +279,9 @@ HLRBRep_BSurfaceTool::DN(const BRepAdaptor_Surface& S, //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::UResolution(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::UResolution(const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d) -{ return S.UResolution(R3d); } +{ return S->UResolution(R3d); } //======================================================================= //function : VResolution @@ -289,9 +289,9 @@ HLRBRep_BSurfaceTool::UResolution(const BRepAdaptor_Surface& S, //======================================================================= inline Standard_Real -HLRBRep_BSurfaceTool::VResolution(const BRepAdaptor_Surface& S, +HLRBRep_BSurfaceTool::VResolution(const Handle(BRepAdaptor_Surface)& S, const Standard_Real R3d) -{ return S.VResolution(R3d); } +{ return S->VResolution(R3d); } //======================================================================= //function : GetType @@ -299,8 +299,8 @@ HLRBRep_BSurfaceTool::VResolution(const BRepAdaptor_Surface& S, //======================================================================= inline GeomAbs_SurfaceType -HLRBRep_BSurfaceTool::GetType(const BRepAdaptor_Surface& S ) -{ return S.GetType(); } +HLRBRep_BSurfaceTool::GetType(const Handle(BRepAdaptor_Surface)& S ) +{ return S->GetType(); } //======================================================================= //function : Plane @@ -308,8 +308,8 @@ HLRBRep_BSurfaceTool::GetType(const BRepAdaptor_Surface& S ) //======================================================================= inline gp_Pln -HLRBRep_BSurfaceTool::Plane(const BRepAdaptor_Surface& S) -{ return S.Plane(); } +HLRBRep_BSurfaceTool::Plane(const Handle(BRepAdaptor_Surface)& S) +{ return S->Plane(); } //======================================================================= //function : Cylinder @@ -317,8 +317,8 @@ HLRBRep_BSurfaceTool::Plane(const BRepAdaptor_Surface& S) //======================================================================= inline gp_Cylinder -HLRBRep_BSurfaceTool::Cylinder(const BRepAdaptor_Surface& S) -{ return S.Cylinder(); } +HLRBRep_BSurfaceTool::Cylinder(const Handle(BRepAdaptor_Surface)& S) +{ return S->Cylinder(); } //======================================================================= //function : Cone @@ -326,8 +326,8 @@ HLRBRep_BSurfaceTool::Cylinder(const BRepAdaptor_Surface& S) //======================================================================= inline gp_Cone -HLRBRep_BSurfaceTool::Cone(const BRepAdaptor_Surface& S) -{ return S.Cone(); } +HLRBRep_BSurfaceTool::Cone(const Handle(BRepAdaptor_Surface)& S) +{ return S->Cone(); } //======================================================================= //function : Sphere @@ -335,8 +335,8 @@ HLRBRep_BSurfaceTool::Cone(const BRepAdaptor_Surface& S) //======================================================================= inline gp_Sphere -HLRBRep_BSurfaceTool::Sphere(const BRepAdaptor_Surface& S) -{ return S.Sphere(); } +HLRBRep_BSurfaceTool::Sphere(const Handle(BRepAdaptor_Surface)& S) +{ return S->Sphere(); } //======================================================================= //function : Torus @@ -344,8 +344,8 @@ HLRBRep_BSurfaceTool::Sphere(const BRepAdaptor_Surface& S) //======================================================================= inline gp_Torus -HLRBRep_BSurfaceTool::Torus(const BRepAdaptor_Surface& S) -{ return S.Torus(); } +HLRBRep_BSurfaceTool::Torus(const Handle(BRepAdaptor_Surface)& S) +{ return S->Torus(); } //======================================================================= //function : Bezier @@ -353,8 +353,8 @@ HLRBRep_BSurfaceTool::Torus(const BRepAdaptor_Surface& S) //======================================================================= inline Handle(Geom_BezierSurface) - HLRBRep_BSurfaceTool::Bezier(const BRepAdaptor_Surface& S) -{ return(S.Bezier()); } + HLRBRep_BSurfaceTool::Bezier(const Handle(BRepAdaptor_Surface)& S) +{ return(S->Bezier()); } //======================================================================= //function : BSpline @@ -362,8 +362,8 @@ inline Handle(Geom_BezierSurface) //======================================================================= inline Handle(Geom_BSplineSurface) - HLRBRep_BSurfaceTool::BSpline(const BRepAdaptor_Surface& S) -{ return(S.BSpline()); } + HLRBRep_BSurfaceTool::BSpline(const Handle(BRepAdaptor_Surface)& S) +{ return(S->BSpline()); } //======================================================================= //function : AxeOfRevolution @@ -371,8 +371,8 @@ inline Handle(Geom_BSplineSurface) //======================================================================= inline gp_Ax1 -HLRBRep_BSurfaceTool::AxeOfRevolution(const BRepAdaptor_Surface& S) -{ return(S.AxeOfRevolution()); } +HLRBRep_BSurfaceTool::AxeOfRevolution(const Handle(BRepAdaptor_Surface)& S) +{ return(S->AxeOfRevolution()); } //======================================================================= //function : Direction @@ -380,8 +380,8 @@ HLRBRep_BSurfaceTool::AxeOfRevolution(const BRepAdaptor_Surface& S) //======================================================================= inline gp_Dir -HLRBRep_BSurfaceTool::Direction(const BRepAdaptor_Surface& S) -{ return(S.Direction()); } +HLRBRep_BSurfaceTool::Direction(const Handle(BRepAdaptor_Surface)& S) +{ return(S->Direction()); } //======================================================================= //function : BasisCurve @@ -389,8 +389,8 @@ HLRBRep_BSurfaceTool::Direction(const BRepAdaptor_Surface& S) //======================================================================= inline Handle(Adaptor3d_Curve) - HLRBRep_BSurfaceTool::BasisCurve(const BRepAdaptor_Surface& S) -{ return(S.BasisCurve()); } + HLRBRep_BSurfaceTool::BasisCurve(const Handle(BRepAdaptor_Surface)& S) +{ return(S->BasisCurve()); } //======================================================================= //function : UContinuity @@ -398,8 +398,8 @@ inline Handle(Adaptor3d_Curve) //======================================================================= inline GeomAbs_Shape -HLRBRep_BSurfaceTool::UContinuity(const BRepAdaptor_Surface& S) -{ return(S.UContinuity()); } +HLRBRep_BSurfaceTool::UContinuity(const Handle(BRepAdaptor_Surface)& S) +{ return(S->UContinuity()); } //======================================================================= //function : VContinuity @@ -407,8 +407,8 @@ HLRBRep_BSurfaceTool::UContinuity(const BRepAdaptor_Surface& S) //======================================================================= inline GeomAbs_Shape -HLRBRep_BSurfaceTool::VContinuity(const BRepAdaptor_Surface& S) -{ return(S.VContinuity()); } +HLRBRep_BSurfaceTool::VContinuity(const Handle(BRepAdaptor_Surface)& S) +{ return(S->VContinuity()); } //======================================================================= //function : UDegree @@ -416,8 +416,8 @@ HLRBRep_BSurfaceTool::VContinuity(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::UDegree(const BRepAdaptor_Surface& S) -{ return(S.UDegree()); } +HLRBRep_BSurfaceTool::UDegree(const Handle(BRepAdaptor_Surface)& S) +{ return(S->UDegree()); } //======================================================================= //function : NbUPoles @@ -425,8 +425,8 @@ HLRBRep_BSurfaceTool::UDegree(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::NbUPoles(const BRepAdaptor_Surface& S) -{ return(S.NbUPoles()); } +HLRBRep_BSurfaceTool::NbUPoles(const Handle(BRepAdaptor_Surface)& S) +{ return(S->NbUPoles()); } //======================================================================= //function : NbUKnots @@ -434,8 +434,8 @@ HLRBRep_BSurfaceTool::NbUPoles(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::NbUKnots(const BRepAdaptor_Surface& S) -{ return(S.NbUKnots()); } +HLRBRep_BSurfaceTool::NbUKnots(const Handle(BRepAdaptor_Surface)& S) +{ return(S->NbUKnots()); } //======================================================================= //function : IsURational @@ -443,8 +443,8 @@ HLRBRep_BSurfaceTool::NbUKnots(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Boolean -HLRBRep_BSurfaceTool::IsURational(const BRepAdaptor_Surface& S) -{ return(S.IsURational()); } +HLRBRep_BSurfaceTool::IsURational(const Handle(BRepAdaptor_Surface)& S) +{ return(S->IsURational()); } //======================================================================= //function : VDegree @@ -452,8 +452,8 @@ HLRBRep_BSurfaceTool::IsURational(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::VDegree(const BRepAdaptor_Surface& S) -{ return(S.VDegree()); } +HLRBRep_BSurfaceTool::VDegree(const Handle(BRepAdaptor_Surface)& S) +{ return(S->VDegree()); } //======================================================================= //function : NbVPoles @@ -461,8 +461,8 @@ HLRBRep_BSurfaceTool::VDegree(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::NbVPoles(const BRepAdaptor_Surface& S) -{ return(S.NbVPoles()); } +HLRBRep_BSurfaceTool::NbVPoles(const Handle(BRepAdaptor_Surface)& S) +{ return(S->NbVPoles()); } //======================================================================= //function : NbVKnots @@ -470,8 +470,8 @@ HLRBRep_BSurfaceTool::NbVPoles(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Integer -HLRBRep_BSurfaceTool::NbVKnots(const BRepAdaptor_Surface& S) -{ return(S.NbVKnots()); } +HLRBRep_BSurfaceTool::NbVKnots(const Handle(BRepAdaptor_Surface)& S) +{ return(S->NbVKnots()); } //======================================================================= //function : IsVRational @@ -479,5 +479,5 @@ HLRBRep_BSurfaceTool::NbVKnots(const BRepAdaptor_Surface& S) //======================================================================= inline Standard_Boolean -HLRBRep_BSurfaceTool::IsVRational(const BRepAdaptor_Surface& S) -{ return(S.IsVRational()); } +HLRBRep_BSurfaceTool::IsVRational(const Handle(BRepAdaptor_Surface)& S) +{ return(S->IsVRational()); } diff --git a/src/HLRBRep/HLRBRep_Curve.cxx b/src/HLRBRep/HLRBRep_Curve.cxx index ab1869b36f..1b513a147b 100644 --- a/src/HLRBRep/HLRBRep_Curve.cxx +++ b/src/HLRBRep/HLRBRep_Curve.cxx @@ -40,7 +40,9 @@ //purpose : //======================================================================= HLRBRep_Curve::HLRBRep_Curve () -{} +{ + myCurve = new BRepAdaptor_Curve(); +} //======================================================================= //function : Curve @@ -48,7 +50,7 @@ HLRBRep_Curve::HLRBRep_Curve () //======================================================================= void HLRBRep_Curve::Curve (const TopoDS_Edge& E) -{ myCurve.Initialize(E); } +{ myCurve->Initialize(E); } //======================================================================= //function : Parameter2d diff --git a/src/HLRBRep/HLRBRep_Curve.hxx b/src/HLRBRep/HLRBRep_Curve.hxx index 81d7a19b22..48617f78bf 100644 --- a/src/HLRBRep/HLRBRep_Curve.hxx +++ b/src/HLRBRep/HLRBRep_Curve.hxx @@ -60,14 +60,11 @@ public: void Projector (const HLRAlgo_Projector* Proj) {myProj = Proj;} - //! Returns the 3D curve. - BRepAdaptor_Curve& Curve(); - //! Sets the 3D curve to be projected. Standard_EXPORT void Curve (const TopoDS_Edge& E); //! Returns the 3D curve. - const BRepAdaptor_Curve& GetCurve() const; + const Handle(BRepAdaptor_Curve)& Curve() const; //! Returns the parameter on the 2d curve from the //! parameter on the 3d curve. @@ -212,7 +209,7 @@ private: - BRepAdaptor_Curve myCurve; + Handle(BRepAdaptor_Curve) myCurve; GeomAbs_CurveType myType; const HLRAlgo_Projector* myProj; Standard_Real myOX; diff --git a/src/HLRBRep/HLRBRep_Curve.lxx b/src/HLRBRep/HLRBRep_Curve.lxx index dd20e204e3..439145f5c0 100644 --- a/src/HLRBRep/HLRBRep_Curve.lxx +++ b/src/HLRBRep/HLRBRep_Curve.lxx @@ -24,20 +24,12 @@ #include #include -//======================================================================= -//function : Curve -//purpose : -//======================================================================= - -inline BRepAdaptor_Curve& HLRBRep_Curve::Curve() -{ return myCurve; } - //======================================================================= //function : GetCurve //purpose : //======================================================================= -inline const BRepAdaptor_Curve& HLRBRep_Curve::GetCurve() const +inline const Handle(BRepAdaptor_Curve)& HLRBRep_Curve::Curve() const { return myCurve; } //======================================================================= diff --git a/src/HLRBRep/HLRBRep_CurveTool.cxx b/src/HLRBRep/HLRBRep_CurveTool.cxx index f3ead85f3e..c1909ef7ad 100644 --- a/src/HLRBRep/HLRBRep_CurveTool.cxx +++ b/src/HLRBRep/HLRBRep_CurveTool.cxx @@ -61,7 +61,7 @@ HLRBRep_CurveTool::NbSamples (const Standard_Address C, else if(typC == GeomAbs_BezierCurve) nbs = 3 + ((HLRBRep_Curve *)C)->NbPoles(); else if(typC == GeomAbs_BSplineCurve) { - Handle(Geom_Curve) aCurve = ((HLRBRep_Curve *)C)->Curve().Curve().Curve(); + Handle(Geom_Curve) aCurve = ((HLRBRep_Curve *)C)->Curve()->Curve()->Curve(); GeomAdaptor_Curve GAcurve(aCurve, u1, u2); nbs = GAcurve.NbIntervals(GeomAbs_CN) + 1; nbs*= ((HLRBRep_Curve *)C)->Degree(); diff --git a/src/HLRBRep/HLRBRep_Data.cxx b/src/HLRBRep/HLRBRep_Data.cxx index 2cebfec692..9424cedc57 100644 --- a/src/HLRBRep/HLRBRep_Data.cxx +++ b/src/HLRBRep/HLRBRep_Data.cxx @@ -856,10 +856,10 @@ void HLRBRep_Data::InitEdge (const Standard_Integer FI, HLRBRep_Surface *p1 = (HLRBRep_Surface*)iFaceGeom; - const BRepAdaptor_Surface& bras=p1->Surface(); + const Handle(BRepAdaptor_Surface)& bras=p1->Surface(); - const TopoDS_Face& topodsface=bras.Face(); + const TopoDS_Face& topodsface=bras->Face(); diff --git a/src/HLRBRep/HLRBRep_EdgeData.cxx b/src/HLRBRep/HLRBRep_EdgeData.cxx index 192fa61c1a..3269dbfa7d 100644 --- a/src/HLRBRep/HLRBRep_EdgeData.cxx +++ b/src/HLRBRep/HLRBRep_EdgeData.cxx @@ -50,8 +50,8 @@ void HLRBRep_EdgeData::Set (const Standard_Boolean Rg1L, CutAtSta(Cut1); CutAtEnd(Cut2); Status().Initialize - (Start,(Standard_ShortReal)(ChangeGeometry().Curve().Resolution + (Start,(Standard_ShortReal)(ChangeGeometry().Curve()->Resolution ((Standard_Real)TolStart)), - End ,(Standard_ShortReal)(ChangeGeometry().Curve().Resolution + End ,(Standard_ShortReal)(ChangeGeometry().Curve()->Resolution ((Standard_Real)TolEnd ))); } diff --git a/src/HLRBRep/HLRBRep_EdgeFaceTool.cxx b/src/HLRBRep/HLRBRep_EdgeFaceTool.cxx index a2984bcc3e..62635fe3c0 100644 --- a/src/HLRBRep/HLRBRep_EdgeFaceTool.cxx +++ b/src/HLRBRep/HLRBRep_EdgeFaceTool.cxx @@ -72,12 +72,12 @@ Standard_Boolean HLRBRep_EdgeFaceTool::UVPoint(const Standard_Real Par, { Standard_Real pfbid,plbid; if (BRep_Tool::CurveOnSurface - (((HLRBRep_Curve *)E)->Curve().Edge(), - ((HLRBRep_Surface*)F)->Surface().Face(),pfbid,plbid).IsNull()) + (((HLRBRep_Curve *)E)->Curve()->Edge(), + ((HLRBRep_Surface*)F)->Surface()->Face(),pfbid,plbid).IsNull()) { BRepExtrema_ExtPF proj (BRepLib_MakeVertex(((HLRBRep_Curve*)E)->Value3D(Par)), - ((HLRBRep_Surface*)F)->Surface().Face()); + ((HLRBRep_Surface*)F)->Surface()->Face()); Standard_Integer i, index = 0; Standard_Real dist2 = RealLast(); const Standard_Integer n = proj.NbExt(); @@ -95,8 +95,8 @@ Standard_Boolean HLRBRep_EdgeFaceTool::UVPoint(const Standard_Real Par, } else { BRepAdaptor_Curve2d PC - (((HLRBRep_Curve *)E)->Curve().Edge(), - ((HLRBRep_Surface*)F)->Surface().Face()); + (((HLRBRep_Curve *)E)->Curve()->Edge(), + ((HLRBRep_Surface*)F)->Surface()->Face()); gp_Pnt2d P2d; PC.D0(Par,P2d); U = P2d.X(); diff --git a/src/HLRBRep/HLRBRep_Intersector.cxx b/src/HLRBRep/HLRBRep_Intersector.cxx index e4a95f5037..be313bb57a 100644 --- a/src/HLRBRep/HLRBRep_Intersector.cxx +++ b/src/HLRBRep/HLRBRep_Intersector.cxx @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -446,28 +447,30 @@ void HLRBRep_Intersector::Perform (const gp_Lin& L, const Standard_Real P) { myTypePerform = 2; - GeomAbs_SurfaceType typ = HLRBRep_SurfaceTool::GetType(mySurface); + HLRBRep_Surface* aHLRSur = (HLRBRep_Surface*)mySurface; + Standard_Address anAdaptorAddress = aHLRSur->Surface().get(); + GeomAbs_SurfaceType typ = HLRBRep_SurfaceTool::GetType(anAdaptorAddress); switch (typ) { case GeomAbs_Plane : case GeomAbs_Cylinder : case GeomAbs_Cone : case GeomAbs_Sphere : case GeomAbs_Torus : - myCSIntersector.Perform(L,mySurface); + myCSIntersector.Perform(L, anAdaptorAddress); break; default : { if (myPolyhedron == NULL) { Standard_Integer nbsu,nbsv; Standard_Real u1,v1,u2,v2; - u1 = HLRBRep_SurfaceTool::FirstUParameter(mySurface); - v1 = HLRBRep_SurfaceTool::FirstVParameter(mySurface); - u2 = HLRBRep_SurfaceTool::LastUParameter(mySurface); - v2 = HLRBRep_SurfaceTool::LastVParameter(mySurface); - nbsu = HLRBRep_SurfaceTool::NbSamplesU(mySurface,u1,u2); - nbsv = HLRBRep_SurfaceTool::NbSamplesV(mySurface,v1,v2); + u1 = HLRBRep_SurfaceTool::FirstUParameter(anAdaptorAddress); + v1 = HLRBRep_SurfaceTool::FirstVParameter(anAdaptorAddress); + u2 = HLRBRep_SurfaceTool::LastUParameter(anAdaptorAddress); + v2 = HLRBRep_SurfaceTool::LastVParameter(anAdaptorAddress); + nbsu = HLRBRep_SurfaceTool::NbSamplesU(anAdaptorAddress,u1,u2); + nbsv = HLRBRep_SurfaceTool::NbSamplesV(anAdaptorAddress,v1,v2); myPolyhedron = - new HLRBRep_ThePolyhedronOfInterCSurf(mySurface,nbsu,nbsv,u1,v1,u2,v2); + new HLRBRep_ThePolyhedronOfInterCSurf(anAdaptorAddress,nbsu,nbsv,u1,v1,u2,v2); } Standard_Real x0,y0,z0,x1,y1,z1,pmin,pmax;//,pp; myPolyhedron->Bounding().Get(x0,y0,z0,x1,y1,z1); @@ -506,7 +509,7 @@ void HLRBRep_Intersector::Perform (const gp_Lin& L, if(pmax>P) pmax=P+0.0000001; } HLRBRep_ThePolygonOfInterCSurf Polygon(L,pmin,pmax,3); - myCSIntersector.Perform(L,Polygon,mySurface, + myCSIntersector.Perform(L,Polygon, anAdaptorAddress, *((HLRBRep_ThePolyhedronOfInterCSurf*) myPolyhedron)); diff --git a/src/HLRBRep/HLRBRep_Surface.cxx b/src/HLRBRep/HLRBRep_Surface.cxx index 7022dd87d0..f4de0f6506 100644 --- a/src/HLRBRep/HLRBRep_Surface.cxx +++ b/src/HLRBRep/HLRBRep_Surface.cxx @@ -28,7 +28,8 @@ //purpose : //======================================================================= HLRBRep_Surface::HLRBRep_Surface () -: myType(GeomAbs_OtherSurface), +: mySurf(new BRepAdaptor_Surface()), + myType(GeomAbs_OtherSurface), myProj(NULL) { } @@ -41,7 +42,7 @@ HLRBRep_Surface::HLRBRep_Surface () void HLRBRep_Surface::Surface (const TopoDS_Face& F) { //mySurf.Initialize(F,Standard_False); - mySurf.Initialize(F,Standard_True); + mySurf->Initialize(F,Standard_True); GeomAbs_SurfaceType typ = HLRBRep_BSurfaceTool::GetType(mySurf); switch (typ) { diff --git a/src/HLRBRep/HLRBRep_Surface.hxx b/src/HLRBRep/HLRBRep_Surface.hxx index 682092cde2..2616eb25dc 100644 --- a/src/HLRBRep/HLRBRep_Surface.hxx +++ b/src/HLRBRep/HLRBRep_Surface.hxx @@ -55,7 +55,7 @@ public: } //! Returns the 3D Surface. - BRepAdaptor_Surface& Surface(); + const Handle(BRepAdaptor_Surface)& Surface(); //! Sets the 3D Surface to be projected. Standard_EXPORT void Surface (const TopoDS_Face& F); @@ -181,7 +181,7 @@ private: Standard_EXPORT Standard_Boolean SideRowsOfPoles (const Standard_Real tol, const Standard_Integer nbuPoles, const Standard_Integer nbvPoles, TColgp_Array2OfPnt& Pnt) const; - BRepAdaptor_Surface mySurf; + Handle(BRepAdaptor_Surface) mySurf; GeomAbs_SurfaceType myType; const HLRAlgo_Projector* myProj; diff --git a/src/HLRBRep/HLRBRep_Surface.lxx b/src/HLRBRep/HLRBRep_Surface.lxx index 04941e4e68..62278e2fc7 100644 --- a/src/HLRBRep/HLRBRep_Surface.lxx +++ b/src/HLRBRep/HLRBRep_Surface.lxx @@ -22,7 +22,7 @@ //purpose : //======================================================================= -inline BRepAdaptor_Surface & HLRBRep_Surface::Surface() +inline const Handle(BRepAdaptor_Surface)& HLRBRep_Surface::Surface() { return mySurf; } //======================================================================= diff --git a/src/HLRTopoBRep/HLRTopoBRep_FaceIsoLiner.cxx b/src/HLRTopoBRep/HLRTopoBRep_FaceIsoLiner.cxx index 6151e40bc4..e2fc842ff5 100644 --- a/src/HLRTopoBRep/HLRTopoBRep_FaceIsoLiner.cxx +++ b/src/HLRTopoBRep/HLRTopoBRep_FaceIsoLiner.cxx @@ -129,7 +129,7 @@ void HLRTopoBRep_FaceIsoLiner::Perform (const Standard_Integer FI, else { Handle (Geom2d_TrimmedCurve) TPC = new Geom2d_TrimmedCurve (PC, U1, U2); - Geom2dAdaptor_Curve aGAC (TPC); + Handle(Geom2dAdaptor_Curve) aGAC = new Geom2dAdaptor_Curve(TPC); IndE = Hatcher.AddElement (aGAC, newE.Orientation()); } SH(IndE) = newE; @@ -153,7 +153,7 @@ void HLRTopoBRep_FaceIsoLiner::Perform (const Standard_Integer FI, else { Handle (Geom2d_TrimmedCurve) TPC = new Geom2d_TrimmedCurve (PC, U1, U2); - Geom2dAdaptor_Curve aGAC (TPC); + Handle(Geom2dAdaptor_Curve) aGAC = new Geom2dAdaptor_Curve(TPC); IndE = Hatcher.AddElement (aGAC, TopAbs_INTERNAL); } SH(IndE) = newE; @@ -187,7 +187,7 @@ void HLRTopoBRep_FaceIsoLiner::Perform (const Standard_Integer FI, gp_Pnt2d Ori (UPrm, 0.); Handle (Geom2d_Line) IsoLine = new Geom2d_Line (Ori, Dir); - Geom2dAdaptor_Curve aGAC (IsoLine); + Handle(Geom2dAdaptor_Curve) aGAC = new Geom2dAdaptor_Curve(IsoLine); Standard_Integer IndH = Hatcher.AddHatching (aGAC); Hatcher.Trim (IndH); if (Hatcher.TrimDone (IndH) && !Hatcher.TrimFailed (IndH)) @@ -281,7 +281,7 @@ void HLRTopoBRep_FaceIsoLiner::Perform (const Standard_Integer FI, gp_Pnt2d Ori (0., VPrm); Handle (Geom2d_Line) IsoLine = new Geom2d_Line (Ori, Dir); - Geom2dAdaptor_Curve aGAC (IsoLine); + Handle(Geom2dAdaptor_Curve) aGAC = new Geom2dAdaptor_Curve(IsoLine); Standard_Integer IndH = Hatcher.AddHatching (aGAC); Hatcher.Trim (IndH); if (Hatcher.TrimDone (IndH) && !Hatcher.TrimFailed (IndH)) diff --git a/src/HLRTopoBRep/HLRTopoBRep_OutLiner.cxx b/src/HLRTopoBRep/HLRTopoBRep_OutLiner.cxx index e6b0880098..eebf93ad19 100644 --- a/src/HLRTopoBRep/HLRTopoBRep_OutLiner.cxx +++ b/src/HLRTopoBRep/HLRTopoBRep_OutLiner.cxx @@ -181,9 +181,9 @@ void HLRTopoBRep_OutLiner::ProcessFace(const TopoDS_Face& F, TopExp::Vertices(aE, aV1, aV2); if((V1.IsSame(aV1) && V2.IsSame(aV2)) || (V1.IsSame(aV2) && V2.IsSame(aV1))) { - BRepAdaptor_Curve aC(aE); + Handle(BRepAdaptor_Curve) aC = new BRepAdaptor_Curve(aE); if((C.GetType() == GeomAbs_Line) && - (aC.GetType() == GeomAbs_Line)) { + (aC->GetType() == GeomAbs_Line)) { SameEdge = Standard_True; break; } diff --git a/src/IGESControl/IGESControl_Writer.cxx b/src/IGESControl/IGESControl_Writer.cxx index b22ec97e11..7a5f46fd4b 100644 --- a/src/IGESControl/IGESControl_Writer.cxx +++ b/src/IGESControl/IGESControl_Writer.cxx @@ -183,12 +183,12 @@ Standard_Boolean IGESControl_Writer::AddGeom (const Handle(Standard_Transient)& if (!Curve.IsNull()) { ent = GC.TransferCurve(Curve,Curve->FirstParameter(),Curve->LastParameter()); - BndLib_Add3dCurve::Add (GeomAdaptor_Curve (Curve), 0, box); } + BndLib_Add3dCurve::Add (new GeomAdaptor_Curve (Curve), 0, box); } else if (!Surf.IsNull()) { Standard_Real U1,U2,V1,V2; Surf->Bounds(U1,U2,V1,V2); ent = GS.TransferSurface(Surf,U1,U2,V1,V2); - BndLib_AddSurface::Add (GeomAdaptor_Surface (Surf), 0, box); + BndLib_AddSurface::Add (new GeomAdaptor_Surface (Surf), 0, box); } Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax; diff --git a/src/IntImp/IntImp_ZerImpFunc.gxx b/src/IntImp/IntImp_ZerImpFunc.gxx index e2c47d78aa..4e0d2b0e0f 100644 --- a/src/IntImp/IntImp_ZerImpFunc.gxx +++ b/src/IntImp/IntImp_ZerImpFunc.gxx @@ -21,7 +21,7 @@ #define No_Standard_OutOfRange #endif -#define SURF (*((ThePSurface *)(surf))) +#define SURF ((ThePSurface::element_type*)(surf)) #define FUNC (*((TheISurface *)(func))) @@ -52,7 +52,7 @@ IntImp_ZerImpFunc::IntImp_ZerImpFunc(const ThePSurface& PS , tgdv(0.0), derived(Standard_False) { - surf = (Standard_Address)(&PS); + surf = (Standard_Address)(PS.get()); func = (Standard_Address)(&IS); } diff --git a/src/IntImp/IntImp_ZerImpFunc.lxx b/src/IntImp/IntImp_ZerImpFunc.lxx index 353f8b47ab..22cc5e5339 100644 --- a/src/IntImp/IntImp_ZerImpFunc.lxx +++ b/src/IntImp/IntImp_ZerImpFunc.lxx @@ -16,7 +16,7 @@ inline void IntImp_ZerImpFunc::Set (const ThePSurface& PS) { - surf = (Standard_Address)(&PS); + surf = (Standard_Address)(PS.get()); } inline void IntImp_ZerImpFunc::SetImplicitSurface (const TheISurface& IS) @@ -56,9 +56,9 @@ inline const gp_Dir2d& IntImp_ZerImpFunc::Direction2d() return d2d; } -inline const ThePSurface& IntImp_ZerImpFunc::PSurface() const +inline const ThePSurface IntImp_ZerImpFunc::PSurface() const { - return (*((ThePSurface *)(surf))); + return (ThePSurface::element_type*)(surf); } inline const TheISurface& IntImp_ZerImpFunc::ISurface() const diff --git a/src/IntImp/IntImp_ZerParFunc.gxx b/src/IntImp/IntImp_ZerParFunc.gxx index 4dddfa94fd..588d2da2b6 100644 --- a/src/IntImp/IntImp_ZerParFunc.gxx +++ b/src/IntImp/IntImp_ZerParFunc.gxx @@ -22,8 +22,8 @@ #include #include -#define SURF1 (*((ThePSurface *)(surf1))) -#define SURF2 (*((ThePSurface *)(surf2))) +#define SURF1 ((ThePSurface::element_type*)(surf1)) +#define SURF2 ((ThePSurface::element_type*)(surf2)) IntImp_ZerParFunc::IntImp_ZerParFunc(const ThePSurface& S1 , @@ -32,8 +32,8 @@ IntImp_ZerParFunc::IntImp_ZerParFunc(const ThePSurface& S1 , tangent(Standard_False), paramConst(0.0) { - surf1 = (Standard_Address)(&S1); - surf2 = (Standard_Address)(&S2); + surf1 = (Standard_Address)(S1.get()); + surf2 = (Standard_Address)(S2.get()); ua0 = ThePSurfaceTool::FirstUParameter(SURF1); //-- ThePSurfaceTool::UIntervalFirst(surf1); va0 = ThePSurfaceTool::FirstVParameter(SURF1); //-- ThePSurfaceTool::VIntervalFirst(surf1); diff --git a/src/IntImp/IntImp_ZerParFunc.lxx b/src/IntImp/IntImp_ZerParFunc.lxx index eee599ccdb..b66be6f8d9 100644 --- a/src/IntImp/IntImp_ZerParFunc.lxx +++ b/src/IntImp/IntImp_ZerParFunc.lxx @@ -43,11 +43,11 @@ inline gp_Dir2d IntImp_ZerParFunc::DirectionOnS2() const { return gp_Dir2d(tgduv[2],tgduv[3]); } -inline const ThePSurface& IntImp_ZerParFunc::AuxillarSurface1() const { - return *((const ThePSurface* )surf1); +inline const ThePSurface IntImp_ZerParFunc::AuxillarSurface1() const { + return ((ThePSurface::element_type*)(surf1)); } -inline const ThePSurface& IntImp_ZerParFunc::AuxillarSurface2() const { - return *((const ThePSurface* )surf2); +inline const ThePSurface IntImp_ZerParFunc::AuxillarSurface2() const { + return ((ThePSurface::element_type*)(surf2)); } diff --git a/src/IntPatch/IntPatch_HInterTool.cxx b/src/IntPatch/IntPatch_HInterTool.cxx index 623febdf28..6bbe549d14 100644 --- a/src/IntPatch/IntPatch_HInterTool.cxx +++ b/src/IntPatch/IntPatch_HInterTool.cxx @@ -237,7 +237,7 @@ Standard_Boolean IntPatch_HInterTool::Project (const Handle(Adaptor2d_Curve2d)& Standard_Real Tol = 1.e-5; Standard_Real Dist2; - Extrema_EPCOfExtPC2d extrema(P,*C,Nbu,epsX,Tol); + Extrema_EPCOfExtPC2d extrema(P,C,Nbu,epsX,Tol); if (!extrema.IsDone()) { return Standard_False; } diff --git a/src/IntPatch/IntPatch_ImpImpIntersection_0.gxx b/src/IntPatch/IntPatch_ImpImpIntersection_0.gxx index f7ed7583f0..c243f22cb7 100644 --- a/src/IntPatch/IntPatch_ImpImpIntersection_0.gxx +++ b/src/IntPatch/IntPatch_ImpImpIntersection_0.gxx @@ -1736,7 +1736,7 @@ static Standard_Boolean IsRLineGood(const IntSurf_Quadric& Quad1, return Standard_False; Extrema_ExtPC anExtr; - GeomAdaptor_Curve anAC; + Handle(GeomAdaptor_Curve) anAC = new GeomAdaptor_Curve(); Handle(Geom_Curve) aCurv; if(aGType == IntPatch_Ellipse) @@ -1750,7 +1750,7 @@ static Standard_Boolean IsRLineGood(const IntSurf_Quadric& Quad1, { const Standard_Real anUinf = aCurv->FirstParameter(), anUsup = aCurv->LastParameter(); - anAC.Load(aCurv, anUinf, anUsup); + anAC->Load(aCurv, anUinf, anUsup); anExtr.Initialize(anAC, anUinf, anUsup); } diff --git a/src/IntPatch/IntPatch_Intersection.cxx b/src/IntPatch/IntPatch_Intersection.cxx index b06c8513d1..613f8c9596 100644 --- a/src/IntPatch/IntPatch_Intersection.cxx +++ b/src/IntPatch/IntPatch_Intersection.cxx @@ -171,9 +171,9 @@ void IntPatch_Intersection::Perform(const Handle(Adaptor3d_Surface)& S1, ProjLib_ProjectedCurve aProjectedCurve(aGAHsurf, aProjCurve); Handle(Geom2d_Curve) aPCurve; ProjLib::MakePCurveOfType(aProjectedCurve, aPCurve); - Geom2dAdaptor_Curve AC(aPCurve, - aProjectedCurve.FirstParameter(), - aProjectedCurve.LastParameter()); + Handle(Geom2dAdaptor_Curve) AC = new Geom2dAdaptor_Curve(aPCurve, + aProjectedCurve.FirstParameter(), + aProjectedCurve.LastParameter()); Geom2dInt_GInter Intersector(AC, Precision::Confusion(), Precision::Confusion()); @@ -256,8 +256,8 @@ static void FUN_TrimInfSurf(const gp_Pnt& Pmin, Handle(Adaptor3d_Surface)& TrimS) { Standard_Real TP = AlternativeTrimPrm; - Extrema_ExtPS ext1(Pmin, *InfSurf, 1.e-7, 1.e-7); - Extrema_ExtPS ext2(Pmax, *InfSurf, 1.e-7, 1.e-7); + Extrema_ExtPS ext1(Pmin, InfSurf, 1.e-7, 1.e-7); + Extrema_ExtPS ext2(Pmax, InfSurf, 1.e-7, 1.e-7); if(ext1.IsDone() || ext2.IsDone()) { Standard_Real Umax = -1.e+100, Umin = 1.e+100, Vmax = -1.e+100, Vmin = 1.e+100, cU, cV; @@ -1848,7 +1848,7 @@ Standard_Boolean IntPatch_Intersection::CheckSingularPoints( aPmid /= aNb; aPP1.SetXYZ(aPmid); Standard_Real aTolU = Precision::PConfusion(), aTolV = Precision::PConfusion(); - Extrema_ExtPS aProj(aPP1, *theS2.get(), aTolU, aTolV, Extrema_ExtFlag_MIN); + Extrema_ExtPS aProj(aPP1, theS2, aTolU, aTolV, Extrema_ExtFlag_MIN); if (aProj.IsDone()) { diff --git a/src/IntPatch/IntPatch_LineConstructor.cxx b/src/IntPatch/IntPatch_LineConstructor.cxx index 4274665023..82502f1644 100644 --- a/src/IntPatch/IntPatch_LineConstructor.cxx +++ b/src/IntPatch/IntPatch_LineConstructor.cxx @@ -839,10 +839,9 @@ static Standard_Boolean TestWLineIsARLine(const IntPatch_SequenceOfLine& slinref u = (u+u1)*0.5; v = (v+v1)*0.5; } - const Adaptor2d_Curve2d& C2d = *arc; gp_Pnt2d PObt,P2d(u,v); - Standard_Real par= Geom2dInt_TheProjPCurOfGInter::FindParameter(C2d,P2d,1e-7); - PObt=C2d.Value(par); + Standard_Real par= Geom2dInt_TheProjPCurOfGInter::FindParameter(arc,P2d,1e-7); + PObt=arc->Value(par); if(PObt.Distance(P2d) < tol2d) { return Standard_True; } @@ -923,10 +922,9 @@ static Standard_Boolean ProjectOnArc(const Standard_Real u, gp_Vec ad1u, ad1v; surf->D1(u,v,aPbid,ad1u,ad1v); Standard_Real tol2d = ComputeParametricTolerance(TolArc,ad1u,ad1v); - const Adaptor2d_Curve2d& C2d = *arc; gp_Pnt2d aP(u,v),aPprj; - par=Geom2dInt_TheProjPCurOfGInter::FindParameter(C2d,aP,1e-7); - aPprj=C2d.Value(par); + par=Geom2dInt_TheProjPCurOfGInter::FindParameter(arc,aP,1e-7); + aPprj=arc->Value(par); dist = aPprj.Distance(aP); return dist <= tol2d; } diff --git a/src/IntPatch/IntPatch_SpecialPoints.cxx b/src/IntPatch/IntPatch_SpecialPoints.cxx index d2fb94add0..604806d831 100644 --- a/src/IntPatch/IntPatch_SpecialPoints.cxx +++ b/src/IntPatch/IntPatch_SpecialPoints.cxx @@ -181,7 +181,7 @@ static Standard_Boolean IsPointOnSurface(const Handle(Adaptor3d_Surface)& theSur case GeomAbs_SurfaceOfExtrusion: case GeomAbs_SurfaceOfRevolution: { - Extrema_ExtPS anExtr(thePt, *theSurf, theSurf->UResolution(theTol), + Extrema_ExtPS anExtr(thePt, theSurf, theSurf->UResolution(theTol), theSurf->VResolution(theTol), Extrema_ExtFlag_MIN); if(!anExtr.IsDone() || (anExtr.NbExt() < 1)) { @@ -216,7 +216,7 @@ static Standard_Boolean IsPointOnSurface(const Handle(Adaptor3d_Surface)& theSur break; default: { - Extrema_GenLocateExtPS anExtr (*theSurf); + Extrema_GenLocateExtPS anExtr (theSurf); anExtr.Perform(thePt, theUpar, theVpar); if(!anExtr.IsDone() || (anExtr.SquareDistance() > theTol*theTol)) { @@ -266,7 +266,7 @@ Standard_Boolean IntPatch_SpecialPoints:: theQSurf->D0(aUquad, aVquad, aPQuad); - Extrema_GenLocateExtPS anExtr (*thePSurf); + Extrema_GenLocateExtPS anExtr (thePSurf); anExtr.Perform(aPQuad, aU0, aV0); if(!anExtr.IsDone()) diff --git a/src/IntPatch/IntPatch_TheSurfFunction.hxx b/src/IntPatch/IntPatch_TheSurfFunction.hxx index b76bee24af..40971e58c0 100644 --- a/src/IntPatch/IntPatch_TheSurfFunction.hxx +++ b/src/IntPatch/IntPatch_TheSurfFunction.hxx @@ -72,7 +72,7 @@ public: const gp_Dir2d& Direction2d(); - const Handle(Adaptor3d_Surface)& PSurface() const; + const Handle(Adaptor3d_Surface) PSurface() const; const IntSurf_Quadric& ISurface() const; diff --git a/src/IntStart/IntStart_SearchOnBoundaries.gxx b/src/IntStart/IntStart_SearchOnBoundaries.gxx index 8c013fbce1..86bff40df8 100644 --- a/src/IntStart/IntStart_SearchOnBoundaries.gxx +++ b/src/IntStart/IntStart_SearchOnBoundaries.gxx @@ -1016,11 +1016,8 @@ Standard_Integer TreatLC (const TheArc& A, U2f = aCEdge->FirstParameter(); U2l = aCEdge->LastParameter(); - - GeomAdaptor_Curve C1, C2; - - C1.Load(aCAxis); - C2.Load(aCEdge); + Handle(GeomAdaptor_Curve) C1 = new GeomAdaptor_Curve(aCAxis); + Handle(GeomAdaptor_Curve) C2 = new GeomAdaptor_Curve(aCEdge); Tol = Precision::PConfusion(); diff --git a/src/IntTools/IntTools.cxx b/src/IntTools/IntTools.cxx index fd16f03e57..8a54ba5f04 100644 --- a/src/IntTools/IntTools.cxx +++ b/src/IntTools/IntTools.cxx @@ -35,18 +35,18 @@ //function : IntTools::GetRadius //purpose : //======================================================================= - Standard_Integer IntTools::GetRadius(const BRepAdaptor_Curve& C, + Standard_Integer IntTools::GetRadius(const Handle(BRepAdaptor_Curve)& C, const Standard_Real t1, const Standard_Real t3, Standard_Real& aR) { - GeomAbs_CurveType aType=C.GetType(); + GeomAbs_CurveType aType=C->GetType(); if (aType==GeomAbs_Line) { return 1; } if (aType==GeomAbs_Circle) { - gp_Circ aCrc=C.Circle(); + gp_Circ aCrc=C->Circle(); aR=aCrc.Radius(); return 0; } @@ -56,9 +56,9 @@ t2=0.5*(t1+t3); - P1=C.Value(t1); - P2=C.Value(t2); - P3=C.Value(t3); + P1=C->Value(t1); + P2=C->Value(t2); + P3=C->Value(t3); // // gce_MakeCirc aMakeCirc(P1, P2, P3); @@ -87,7 +87,7 @@ //function : PrepareArgs //purpose : //======================================================================= -Standard_Integer IntTools::PrepareArgs (BRepAdaptor_Curve& C, +Standard_Integer IntTools::PrepareArgs (const Handle(BRepAdaptor_Curve)& C, const Standard_Real Tmax, const Standard_Real Tmin, const Standard_Integer Discret, @@ -101,7 +101,7 @@ Standard_Integer IntTools::PrepareArgs (BRepAdaptor_Curve& C, Standard_Boolean aRFlag; GeomAbs_CurveType aCurveType; - aCurveType=C.GetType(); + aCurveType=C->GetType(); dt=(Tmax-Tmin)/Discret; aRFlag=(dt > 1.e-5); diff --git a/src/IntTools/IntTools.hxx b/src/IntTools/IntTools.hxx index 697d608fe6..f6fa54417f 100644 --- a/src/IntTools/IntTools.hxx +++ b/src/IntTools/IntTools.hxx @@ -46,9 +46,9 @@ public: Standard_EXPORT static Standard_Integer Parameter (const gp_Pnt& P, const Handle(Geom_Curve)& Curve, Standard_Real& aParm); - Standard_EXPORT static Standard_Integer GetRadius (const BRepAdaptor_Curve& C, const Standard_Real t1, const Standard_Real t3, Standard_Real& R); + Standard_EXPORT static Standard_Integer GetRadius (const Handle(BRepAdaptor_Curve)& C, const Standard_Real t1, const Standard_Real t3, Standard_Real& R); - Standard_EXPORT static Standard_Integer PrepareArgs (BRepAdaptor_Curve& C, + Standard_EXPORT static Standard_Integer PrepareArgs (const Handle(BRepAdaptor_Curve)& C, const Standard_Real tMax, const Standard_Real tMin, const Standard_Integer Discret, const Standard_Real Deflect, TColStd_Array1OfReal& anArgs); diff --git a/src/IntTools/IntTools_BeanFaceIntersector.cxx b/src/IntTools/IntTools_BeanFaceIntersector.cxx index b5095096eb..8d8e7ec41d 100644 --- a/src/IntTools/IntTools_BeanFaceIntersector.cxx +++ b/src/IntTools/IntTools_BeanFaceIntersector.cxx @@ -146,8 +146,8 @@ IntTools_BeanFaceIntersector::IntTools_BeanFaceIntersector(const TopoDS_Edge& th // function: IntTools_BeanFaceIntersector // purpose: // ================================================================================== -IntTools_BeanFaceIntersector::IntTools_BeanFaceIntersector(const BRepAdaptor_Curve& theCurve, - const BRepAdaptor_Surface& theSurface, +IntTools_BeanFaceIntersector::IntTools_BeanFaceIntersector(const Handle(BRepAdaptor_Curve)& theCurve, + const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance) : myFirstParameter(0.), @@ -166,8 +166,8 @@ IntTools_BeanFaceIntersector::IntTools_BeanFaceIntersector(const BRepAdaptor_Cur // function: IntTools_BeanFaceIntersector // purpose: // ================================================================================== -IntTools_BeanFaceIntersector::IntTools_BeanFaceIntersector(const BRepAdaptor_Curve& theCurve, - const BRepAdaptor_Surface& theSurface, +IntTools_BeanFaceIntersector::IntTools_BeanFaceIntersector(const Handle(BRepAdaptor_Curve)& theCurve, + const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theFirstParOnCurve, const Standard_Real theLastParOnCurve, const Standard_Real theUMinParameter, @@ -190,10 +190,10 @@ IntTools_BeanFaceIntersector::IntTools_BeanFaceIntersector(const BRepAdaptor_Cur myCurve = theCurve; myCriteria = myBeanTolerance + myFaceTolerance; - myCurveResolution = myCurve.Resolution(myCriteria); + myCurveResolution = myCurve->Resolution(myCriteria); mySurface = theSurface; - myTrsfSurface = Handle(Geom_Surface)::DownCast(mySurface.Surface().Surface()->Transformed(mySurface.Trsf())); + myTrsfSurface = Handle(Geom_Surface)::DownCast(mySurface->Surface()->Surface()->Transformed(mySurface->Trsf())); } // ================================================================================== @@ -206,18 +206,25 @@ void IntTools_BeanFaceIntersector::Init(const TopoDS_Edge& theEdge, if (myContext.IsNull()) { myContext = new IntTools_Context; } + if (myCurve.IsNull()) { + myCurve = new BRepAdaptor_Curve; + } + if (mySurface.IsNull()) { + mySurface = new BRepAdaptor_Surface; + } + // - myCurve.Initialize(theEdge); + myCurve->Initialize(theEdge); mySurface = myContext->SurfaceAdaptor(theFace); - myTrsfSurface = Handle(Geom_Surface)::DownCast(mySurface.Surface().Surface()->Transformed(mySurface.Trsf())); + myTrsfSurface = Handle(Geom_Surface)::DownCast(mySurface->Surface()->Surface()->Transformed(mySurface->Trsf())); myBeanTolerance = BRep_Tool::Tolerance(theEdge); myFaceTolerance = BRep_Tool::Tolerance(theFace); myCriteria = myBeanTolerance + myFaceTolerance + Precision::Confusion(); - myCurveResolution = myCurve.Resolution(myCriteria); + myCurveResolution = myCurve->Resolution(myCriteria); - SetSurfaceParameters(mySurface.FirstUParameter(), mySurface.LastUParameter(), - mySurface.FirstVParameter(), mySurface.LastVParameter()); + SetSurfaceParameters(mySurface->FirstUParameter(), mySurface->LastUParameter(), + mySurface->FirstVParameter(), mySurface->LastVParameter()); myResults.Clear(); } @@ -225,22 +232,22 @@ void IntTools_BeanFaceIntersector::Init(const TopoDS_Edge& theEdge, // function: Init // purpose: // ================================================================================== -void IntTools_BeanFaceIntersector::Init(const BRepAdaptor_Curve& theCurve, - const BRepAdaptor_Surface& theSurface, +void IntTools_BeanFaceIntersector::Init(const Handle(BRepAdaptor_Curve)& theCurve, + const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance) { myCurve = theCurve; mySurface = theSurface; - myTrsfSurface = Handle(Geom_Surface)::DownCast(mySurface.Surface().Surface()->Transformed(mySurface.Trsf())); + myTrsfSurface = Handle(Geom_Surface)::DownCast(mySurface->Surface()->Surface()->Transformed(mySurface->Trsf())); myBeanTolerance = theBeanTolerance; myFaceTolerance = theFaceTolerance; myCriteria = myBeanTolerance + myFaceTolerance; - myCurveResolution = myCurve.Resolution(myCriteria); + myCurveResolution = myCurve->Resolution(myCriteria); - SetSurfaceParameters(mySurface.FirstUParameter(), mySurface.LastUParameter(), - mySurface.FirstVParameter(), mySurface.LastVParameter()); + SetSurfaceParameters(mySurface->FirstUParameter(), mySurface->LastUParameter(), + mySurface->FirstVParameter(), mySurface->LastVParameter()); myResults.Clear(); } @@ -248,8 +255,8 @@ void IntTools_BeanFaceIntersector::Init(const BRepAdaptor_Curve& theCurve, // function: Init // purpose: // ================================================================================== -void IntTools_BeanFaceIntersector::Init(const BRepAdaptor_Curve& theCurve, - const BRepAdaptor_Surface& theSurface, +void IntTools_BeanFaceIntersector::Init(const Handle(BRepAdaptor_Curve)& theCurve, + const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theFirstParOnCurve, const Standard_Real theLastParOnCurve, const Standard_Real theUMinParameter, @@ -322,8 +329,8 @@ void IntTools_BeanFaceIntersector::Perform() } // Fast computation of Line/Plane case - if (myCurve.GetType() == GeomAbs_Line && - mySurface.GetType() == GeomAbs_Plane) + if (myCurve->GetType() == GeomAbs_Line && + mySurface->GetType() == GeomAbs_Plane) { ComputeLinePlane(); return; @@ -356,11 +363,11 @@ void IntTools_BeanFaceIntersector::Perform() !Precision::IsInfinite(myUMaxParameter) && !Precision::IsInfinite(myVMinParameter) && !Precision::IsInfinite(myVMaxParameter)); - bLocalize = bLocalize && (mySurface.GetType() == GeomAbs_BezierSurface || - mySurface.GetType() == GeomAbs_OtherSurface || - (mySurface.GetType() == GeomAbs_BSplineSurface && - (mySurface.UDegree() > 2 || mySurface.VDegree() > 2) && - (mySurface.NbUKnots() > 2 && mySurface.NbVKnots() > 2))); + bLocalize = bLocalize && (mySurface->GetType() == GeomAbs_BezierSurface || + mySurface->GetType() == GeomAbs_OtherSurface || + (mySurface->GetType() == GeomAbs_BSplineSurface && + (mySurface->UDegree() > 2 || mySurface->VDegree() > 2) && + (mySurface->NbUKnots() > 2 && mySurface->NbVKnots() > 2))); Standard_Boolean isLocalized = bLocalize && ComputeLocalized(); @@ -425,9 +432,9 @@ void IntTools_BeanFaceIntersector::Result(IntTools_SequenceOfRanges& theResults) // ================================================================================== Standard_Real IntTools_BeanFaceIntersector::Distance(const Standard_Real theArg) { - gp_Pnt aPoint = myCurve.Value(theArg); + gp_Pnt aPoint = myCurve->Value(theArg); - GeomAPI_ProjectPointOnSurf& aProjector = myContext->ProjPS(mySurface.Face()); + GeomAPI_ProjectPointOnSurf& aProjector = myContext->ProjPS(mySurface->Face()); aProjector.Perform(aPoint); if(aProjector.IsDone() && aProjector.NbPoints() > 0) { @@ -441,9 +448,9 @@ Standard_Real IntTools_BeanFaceIntersector::Distance(const Standard_Real theArg) Standard_Real aMinParameter = (i < 2) ? myVMinParameter : myUMinParameter; Standard_Real aMaxParameter = (i < 2) ? myVMaxParameter : myUMaxParameter; Standard_Real aMidParameter = (aMinParameter + aMaxParameter) * 0.5; - gp_Pnt aPointMin = (i < 2) ? mySurface.Value(anIsoParameter, aMinParameter) : mySurface.Value(aMinParameter, anIsoParameter); - gp_Pnt aPointMax = (i < 2) ? mySurface.Value(anIsoParameter, aMaxParameter) : mySurface.Value(aMaxParameter, anIsoParameter); - gp_Pnt aPointMid = (i < 2) ? mySurface.Value(anIsoParameter, aMidParameter) : mySurface.Value(aMidParameter, anIsoParameter); + gp_Pnt aPointMin = (i < 2) ? mySurface->Value(anIsoParameter, aMinParameter) : mySurface->Value(aMinParameter, anIsoParameter); + gp_Pnt aPointMax = (i < 2) ? mySurface->Value(anIsoParameter, aMaxParameter) : mySurface->Value(aMaxParameter, anIsoParameter); + gp_Pnt aPointMid = (i < 2) ? mySurface->Value(anIsoParameter, aMidParameter) : mySurface->Value(aMidParameter, anIsoParameter); Standard_Boolean useMinMaxPoints = Standard_True; Standard_Boolean computeisoline = Standard_True; @@ -485,7 +492,7 @@ Standard_Real IntTools_BeanFaceIntersector::Distance(const Standard_Real theArg, Standard_Real& theUParameter, Standard_Real& theVParameter) { - gp_Pnt aPoint = myCurve.Value(theArg); + gp_Pnt aPoint = myCurve->Value(theArg); theUParameter = myUMinParameter; theVParameter = myVMinParameter; @@ -493,7 +500,7 @@ Standard_Real IntTools_BeanFaceIntersector::Distance(const Standard_Real theArg, Standard_Real aDistance = RealLast(); Standard_Boolean projectionfound = Standard_False; - GeomAPI_ProjectPointOnSurf& aProjector = myContext->ProjPS(mySurface.Face()); + GeomAPI_ProjectPointOnSurf& aProjector = myContext->ProjPS(mySurface->Face()); aProjector.Perform(aPoint); if(aProjector.IsDone() && aProjector.NbPoints() > 0) { @@ -509,9 +516,9 @@ Standard_Real IntTools_BeanFaceIntersector::Distance(const Standard_Real theArg, Standard_Real aMinParameter = (i < 2) ? myVMinParameter : myUMinParameter; Standard_Real aMaxParameter = (i < 2) ? myVMaxParameter : myUMaxParameter; Standard_Real aMidParameter = (aMinParameter + aMaxParameter) * 0.5; - gp_Pnt aPointMin = (i < 2) ? mySurface.Value(anIsoParameter, aMinParameter) : mySurface.Value(aMinParameter, anIsoParameter); - gp_Pnt aPointMax = (i < 2) ? mySurface.Value(anIsoParameter, aMaxParameter) : mySurface.Value(aMaxParameter, anIsoParameter); - gp_Pnt aPointMid = (i < 2) ? mySurface.Value(anIsoParameter, aMidParameter) : mySurface.Value(aMidParameter, anIsoParameter); + gp_Pnt aPointMin = (i < 2) ? mySurface->Value(anIsoParameter, aMinParameter) : mySurface->Value(aMinParameter, anIsoParameter); + gp_Pnt aPointMax = (i < 2) ? mySurface->Value(anIsoParameter, aMaxParameter) : mySurface->Value(aMaxParameter, anIsoParameter); + gp_Pnt aPointMid = (i < 2) ? mySurface->Value(anIsoParameter, aMidParameter) : mySurface->Value(aMidParameter, anIsoParameter); Standard_Boolean useMinMaxPoints = Standard_True; Standard_Boolean computeisoline = Standard_True; @@ -571,10 +578,7 @@ void IntTools_BeanFaceIntersector::ComputeAroundExactIntersection() { IntCurveSurface_HInter anExactIntersector; - Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve(myCurve); - Handle(BRepAdaptor_Surface) aSurface = new BRepAdaptor_Surface(mySurface); - - anExactIntersector.Perform(aCurve, aSurface); + anExactIntersector.Perform(myCurve, mySurface); if (anExactIntersector.IsDone()) { Standard_Integer i = 0; @@ -585,7 +589,7 @@ void IntTools_BeanFaceIntersector::ComputeAroundExactIntersection() // range, perform exact range search considering the lowest possible tolerance // for edge and face. myCriteria = 3 * Precision::Confusion(); - myCurveResolution = myCurve.Resolution (myCriteria); + myCurveResolution = myCurve->Resolution (myCriteria); } for(i = 1; i <= anExactIntersector.NbPoints(); i++) { @@ -605,10 +609,10 @@ void IntTools_BeanFaceIntersector::ComputeAroundExactIntersection() bUCorrected = Standard_False; solutionIsValid = Standard_False; // - if(mySurface.IsUPeriodic()) { + if(mySurface->IsUPeriodic()) { Standard_Real aNewU, aUPeriod, aEps, du; // - aUPeriod = mySurface.UPeriod(); + aUPeriod = mySurface->UPeriod(); aEps = Epsilon(aUPeriod); // GeomInt::AdjustPeriodic(U, myUMinParameter, myUMaxParameter, @@ -622,10 +626,10 @@ void IntTools_BeanFaceIntersector::ComputeAroundExactIntersection() if(bUCorrected && VIsNotValid) { solutionIsValid = Standard_False; // - if(mySurface.IsVPeriodic()) { + if(mySurface->IsVPeriodic()) { Standard_Real aNewV, aVPeriod, aEps, dv; // - aVPeriod = mySurface.VPeriod(); + aVPeriod = mySurface->VPeriod(); aEps = Epsilon(aVPeriod); // GeomInt::AdjustPeriodic(V, myVMinParameter, myVMaxParameter, @@ -678,7 +682,7 @@ void IntTools_BeanFaceIntersector::ComputeAroundExactIntersection() // ================================================================================== Standard_Boolean IntTools_BeanFaceIntersector::FastComputeAnalytic() { - GeomAbs_CurveType aCT = myCurve.GetType(); + GeomAbs_CurveType aCT = myCurve->GetType(); if (aCT == GeomAbs_BezierCurve || aCT == GeomAbs_BSplineCurve || aCT == GeomAbs_OffsetCurve || @@ -691,38 +695,38 @@ Standard_Boolean IntTools_BeanFaceIntersector::FastComputeAnalytic() Standard_Boolean isCoincide = Standard_False; Standard_Boolean hasIntersection = Standard_True; - GeomAbs_SurfaceType aST = mySurface.GetType(); + GeomAbs_SurfaceType aST = mySurface->GetType(); // Plane - Circle/Ellipse/Hyperbola/Parabola if (aST == GeomAbs_Plane) { - gp_Pln surfPlane = mySurface.Plane(); + gp_Pln surfPlane = mySurface->Plane(); gp_Dir aDir; gp_Pnt aPLoc; switch (aCT) { case GeomAbs_Circle: { - aDir = myCurve.Circle().Axis().Direction(); - aPLoc = myCurve.Circle().Location(); + aDir = myCurve->Circle().Axis().Direction(); + aPLoc = myCurve->Circle().Location(); break; } case GeomAbs_Ellipse: { - aDir = myCurve.Ellipse().Axis().Direction(); - aPLoc = myCurve.Ellipse().Location(); + aDir = myCurve->Ellipse().Axis().Direction(); + aPLoc = myCurve->Ellipse().Location(); break; } case GeomAbs_Hyperbola: { - aDir = myCurve.Hyperbola().Axis().Direction(); - aPLoc = myCurve.Hyperbola().Location(); + aDir = myCurve->Hyperbola().Axis().Direction(); + aPLoc = myCurve->Hyperbola().Location(); break; } case GeomAbs_Parabola: { - aDir = myCurve.Parabola().Axis().Direction(); - aPLoc = myCurve.Parabola().Location(); + aDir = myCurve->Parabola().Axis().Direction(); + aPLoc = myCurve->Parabola().Location(); break; } default: @@ -742,14 +746,14 @@ Standard_Boolean IntTools_BeanFaceIntersector::FastComputeAnalytic() // Cylinder - Line/Circle else if (aST == GeomAbs_Cylinder) { - gp_Cylinder aCylinder = mySurface.Cylinder(); + gp_Cylinder aCylinder = mySurface->Cylinder(); const gp_Ax1& aCylAxis = aCylinder.Axis(); const gp_Dir& aCylDir = aCylAxis.Direction(); Standard_Real aCylRadius = aCylinder.Radius(); if (aCT == GeomAbs_Line) { - gp_Lin aLin = myCurve.Line(); + gp_Lin aLin = myCurve->Line(); if (!aLin.Direction().IsParallel(aCylDir, Precision::Angular())) return Standard_False; @@ -761,7 +765,7 @@ Standard_Boolean IntTools_BeanFaceIntersector::FastComputeAnalytic() else if (aCT == GeomAbs_Circle) { - gp_Circ aCircle = myCurve.Circle(); + gp_Circ aCircle = myCurve->Circle(); Standard_Real anAngle = aCylDir.Angle(aCircle.Axis().Direction()); if (anAngle > Precision::Angular()) @@ -780,11 +784,11 @@ Standard_Boolean IntTools_BeanFaceIntersector::FastComputeAnalytic() // Sphere - Line else if (aST == GeomAbs_Sphere) { - gp_Sphere aSph = mySurface.Sphere(); + gp_Sphere aSph = mySurface->Sphere(); gp_Pnt aSphLoc = aSph.Location(); if (aCT == GeomAbs_Line) { - gp_Lin aLin = myCurve.Line(); + gp_Lin aLin = myCurve->Line(); Standard_Real aDist = aLin.Distance(aSphLoc) - aSph.Radius(); hasIntersection = aDist < myCriteria; } @@ -806,8 +810,8 @@ Standard_Boolean IntTools_BeanFaceIntersector::FastComputeAnalytic() void IntTools_BeanFaceIntersector::ComputeLinePlane() { Standard_Real Tolang = 1.e-9; - gp_Pln P = mySurface.Plane(); - gp_Lin L = myCurve.Line(); + gp_Pln P = mySurface->Plane(); + gp_Lin L = myCurve->Line(); myIsDone = Standard_True; @@ -895,12 +899,12 @@ void IntTools_BeanFaceIntersector::ComputeUsingExtremum() { Standard_Real Tol, af, al; Tol = Precision::PConfusion(); - Handle(Geom_Curve) aCurve = BRep_Tool::Curve (myCurve.Edge(), af, al); - GeomAdaptor_Surface aGASurface (myTrsfSurface, - myUMinParameter, - myUMaxParameter, - myVMinParameter, - myVMaxParameter); + Handle(Geom_Curve) aCurve = BRep_Tool::Curve (myCurve->Edge(), af, al); + Handle(GeomAdaptor_Surface) aGASurface = new GeomAdaptor_Surface (myTrsfSurface, + myUMinParameter, + myUMaxParameter, + myVMinParameter, + myVMaxParameter); for(Standard_Integer i = 1; i <= myRangeManager.Length(); i++) { @@ -920,7 +924,7 @@ void IntTools_BeanFaceIntersector::ComputeUsingExtremum() } } - GeomAdaptor_Curve aGACurve(aCurve, anarg1, anarg2); + Handle(GeomAdaptor_Curve) aGACurve = new GeomAdaptor_Curve(aCurve, anarg1, anarg2); Extrema_ExtCS anExtCS; anExtCS.Initialize(aGASurface, myUMinParameter, myUMaxParameter, myVMinParameter, myVMaxParameter, Tol, Tol); @@ -1159,7 +1163,7 @@ void IntTools_BeanFaceIntersector::ComputeRangeFromStartPoint(const Standard_Boo Standard_Boolean pointfound = Standard_False; // - gp_Pnt aPoint = myCurve.Value(aCurPar); + gp_Pnt aPoint = myCurve->Value(aCurPar); Extrema_GenLocateExtPS anExtrema(mySurface, 1.e-10, 1.e-10); anExtrema.Perform(aPoint, U, V); @@ -1298,8 +1302,8 @@ static Standard_Boolean SetEmptyResultRange(const Standard_Real theParamete // return close; // } -// Standard_Boolean TestCoinside(const BRepAdaptor_Curve& theCurve, -// const BRepAdaptor_Surface& theSurface) +// Standard_Boolean TestCoinside(const Handle(BRepAdaptor_Curve)& theCurve, +// const Handle(BRepAdaptor_Surface)& theSurface) // { // Standard_Real cfp = theCurve.FirstParameter(), clp = theCurve.LastParameter(); // Standard_Real cdp = fabs(clp - cfp) / 23.; @@ -1486,7 +1490,7 @@ Standard_Boolean IntTools_BeanFaceIntersector::LocalizeSolutions(const IntTools_ if(!theSurfaceData.FindBox(aNewRangeS, aBoxS)) { - if(mySurface.GetType() == GeomAbs_BSplineSurface) { + if(mySurface->GetType() == GeomAbs_BSplineSurface) { // if(Standard_False ) { Handle(Geom_BSplineSurface) aSurfBspl = Handle(Geom_BSplineSurface)::DownCast(myTrsfSurface); aBoxS = GetSurfaceBox(aSurfBspl, aPrevParU, aCurParU, aPrevParV, aCurParV, myCriteria, theSurfaceData); @@ -1727,14 +1731,14 @@ Standard_Boolean IntTools_BeanFaceIntersector::ComputeLocalized() { Standard_Real dMinU = 10. * Precision::PConfusion(); Standard_Real dMinV = dMinU; IntTools_SurfaceRangeLocalizeData aSurfaceDataInit(3, 3, dMinU, dMinV); - IntTools_SurfaceRangeLocalizeData& aSurfaceData = myContext->SurfaceData(mySurface.Face()); + IntTools_SurfaceRangeLocalizeData& aSurfaceData = myContext->SurfaceData(mySurface->Face()); aSurfaceData.RemoveRangeOutAll(); aSurfaceData.ClearGrid(); Bnd_Box FBox; Standard_Boolean bFBoxFound = aSurfaceData.FindBox(aSurfaceRange, FBox); - if(mySurface.GetType() == GeomAbs_BSplineSurface) { + if(mySurface->GetType() == GeomAbs_BSplineSurface) { Handle(Geom_BSplineSurface) aSurfBspl = Handle(Geom_BSplineSurface)::DownCast(myTrsfSurface); ComputeGridPoints(aSurfBspl, myUMinParameter, myUMaxParameter, @@ -1756,7 +1760,7 @@ Standard_Boolean IntTools_BeanFaceIntersector::ComputeLocalized() { Bnd_Box EBox; - BndLib_Add3dCurve::Add (*myCurve.Trim(myFirstParameter, myLastParameter, Precision::PConfusion()), myBeanTolerance, EBox); + BndLib_Add3dCurve::Add (myCurve->Trim(myFirstParameter, myLastParameter, Precision::PConfusion()), myBeanTolerance, EBox); if(EBox.IsOut(FBox)) { for(Standard_Integer i = 1; i <= myRangeManager.Length(); i++) { @@ -1900,12 +1904,12 @@ Standard_Boolean IntTools_BeanFaceIntersector::ComputeLocalized() { T = p1.Parameter(); p2.Parameter(U, V); - if (myCurve.IsPeriodic()) - T = ElCLib::InPeriod(T, anarg1, anarg1 + myCurve.Period()); - if (mySurface.IsUPeriodic()) - U = ElCLib::InPeriod(U, parUF, parUF + mySurface.UPeriod()); - if (mySurface.IsVPeriodic()) - V = ElCLib::InPeriod(V, parVF, parVF + mySurface.VPeriod()); + if (myCurve->IsPeriodic()) + T = ElCLib::InPeriod(T, anarg1, anarg1 + myCurve->Period()); + if (mySurface->IsUPeriodic()) + U = ElCLib::InPeriod(U, parUF, parUF + mySurface->UPeriod()); + if (mySurface->IsVPeriodic()) + V = ElCLib::InPeriod(V, parVF, parVF + mySurface->VPeriod()); //To avoid occasional going out of boundaries because of numerical //problem diff --git a/src/IntTools/IntTools_BeanFaceIntersector.hxx b/src/IntTools/IntTools_BeanFaceIntersector.hxx index 3660372f6b..bcece5f96b 100644 --- a/src/IntTools/IntTools_BeanFaceIntersector.hxx +++ b/src/IntTools/IntTools_BeanFaceIntersector.hxx @@ -69,13 +69,13 @@ public: //! Initializes the algorithm - Standard_EXPORT IntTools_BeanFaceIntersector(const BRepAdaptor_Curve& theCurve, const BRepAdaptor_Surface& theSurface, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); + Standard_EXPORT IntTools_BeanFaceIntersector(const Handle(BRepAdaptor_Curve)& theCurve, const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); //! Initializes the algorithm //! theUMinParameter, ... are used for //! optimization purposes - Standard_EXPORT IntTools_BeanFaceIntersector(const BRepAdaptor_Curve& theCurve, const BRepAdaptor_Surface& theSurface, const Standard_Real theFirstParOnCurve, const Standard_Real theLastParOnCurve, const Standard_Real theUMinParameter, const Standard_Real theUMaxParameter, const Standard_Real theVMinParameter, const Standard_Real theVMaxParameter, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); + Standard_EXPORT IntTools_BeanFaceIntersector(const Handle(BRepAdaptor_Curve)& theCurve, const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theFirstParOnCurve, const Standard_Real theLastParOnCurve, const Standard_Real theUMinParameter, const Standard_Real theUMaxParameter, const Standard_Real theVMinParameter, const Standard_Real theVMaxParameter, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); //! Initializes the algorithm @@ -89,13 +89,13 @@ public: //! Initializes the algorithm - Standard_EXPORT void Init (const BRepAdaptor_Curve& theCurve, const BRepAdaptor_Surface& theSurface, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); + Standard_EXPORT void Init (const Handle(BRepAdaptor_Curve)& theCurve, const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); //! Initializes the algorithm //! theUMinParameter, ... are used for //! optimization purposes - Standard_EXPORT void Init (const BRepAdaptor_Curve& theCurve, const BRepAdaptor_Surface& theSurface, const Standard_Real theFirstParOnCurve, const Standard_Real theLastParOnCurve, const Standard_Real theUMinParameter, const Standard_Real theUMaxParameter, const Standard_Real theVMinParameter, const Standard_Real theVMaxParameter, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); + Standard_EXPORT void Init (const Handle(BRepAdaptor_Curve)& theCurve, const Handle(BRepAdaptor_Surface)& theSurface, const Standard_Real theFirstParOnCurve, const Standard_Real theLastParOnCurve, const Standard_Real theUMinParameter, const Standard_Real theUMaxParameter, const Standard_Real theVMinParameter, const Standard_Real theVMaxParameter, const Standard_Real theBeanTolerance, const Standard_Real theFaceTolerance); //! Sets the intersection context @@ -166,8 +166,8 @@ private: Standard_EXPORT Standard_Boolean TestComputeCoinside(); - BRepAdaptor_Curve myCurve; - BRepAdaptor_Surface mySurface; + Handle(BRepAdaptor_Curve) myCurve; + Handle(BRepAdaptor_Surface) mySurface; Handle(Geom_Surface) myTrsfSurface; Standard_Real myFirstParameter; Standard_Real myLastParameter; diff --git a/src/IntTools/IntTools_Context.cxx b/src/IntTools/IntTools_Context.cxx index 286bac96fc..eb20a9cf85 100644 --- a/src/IntTools/IntTools_Context.cxx +++ b/src/IntTools/IntTools_Context.cxx @@ -161,13 +161,6 @@ IntTools_Context::~IntTools_Context() } myBndBoxDataMap.Clear(); - for (NCollection_DataMap::Iterator anIt (mySurfAdaptorMap); - anIt.More(); anIt.Next()) - { - BRepAdaptor_Surface* pSurfAdaptor = anIt.Value(); - (*pSurfAdaptor).~BRepAdaptor_Surface(); - myAllocator->Free (pSurfAdaptor); - } mySurfAdaptorMap.Clear(); for (NCollection_DataMap::Iterator anIt (myOBBMap); @@ -330,19 +323,16 @@ BRepClass3d_SolidClassifier& IntTools_Context::SolidClassifier //function : SurfaceAdaptor //purpose : //======================================================================= -BRepAdaptor_Surface& IntTools_Context::SurfaceAdaptor +Handle(BRepAdaptor_Surface) IntTools_Context::SurfaceAdaptor (const TopoDS_Face& theFace) { - BRepAdaptor_Surface* pBAS = NULL; + Handle(BRepAdaptor_Surface) pBAS; if (!mySurfAdaptorMap.Find (theFace, pBAS)) { - // - pBAS=(BRepAdaptor_Surface*)myAllocator->Allocate(sizeof(BRepAdaptor_Surface)); - new (pBAS) BRepAdaptor_Surface(theFace, Standard_True); - // + pBAS = new BRepAdaptor_Surface(theFace, Standard_True); mySurfAdaptorMap.Bind (theFace, pBAS); } - return *pBAS; + return pBAS; } //======================================================================= @@ -394,7 +384,7 @@ Geom2dHatch_Hatcher& IntTools_Context::Hatcher(const TopoDS_Face& aF) } // aCT2D=new Geom2d_TrimmedCurve(aC2D, aU1, aU2); - Geom2dAdaptor_Curve aGAC (aCT2D); + Handle(Geom2dAdaptor_Curve) aGAC = new Geom2dAdaptor_Curve(aCT2D); pHatcher->AddElement(aGAC, aOrE); }// for (; aExp.More() ; aExp.Next()) { // @@ -826,8 +816,8 @@ Standard_Boolean IntTools_Context::IsVertexOnLine aTolSum=aTolV+aTolC; // - GeomAdaptor_Curve aGAC(aC3D); - GeomAbs_CurveType aType=aGAC.GetType(); + Handle(GeomAdaptor_Curve) aGAC = new GeomAdaptor_Curve(aC3D); + GeomAbs_CurveType aType=aGAC->GetType(); if (aType==GeomAbs_BSplineCurve || aType==GeomAbs_BezierCurve) { aTolSum=2.*aTolSum; @@ -1055,9 +1045,9 @@ void IntTools_Context::UVBounds(const TopoDS_Face& theFace, Standard_Real& VMin, Standard_Real& VMax) { - const BRepAdaptor_Surface& aBAS = SurfaceAdaptor(theFace); - UMin = aBAS.FirstUParameter(); - UMax = aBAS.LastUParameter (); - VMin = aBAS.FirstVParameter(); - VMax = aBAS.LastVParameter (); + const Handle(BRepAdaptor_Surface)& aBAS = SurfaceAdaptor(theFace); + UMin = aBAS->FirstUParameter(); + UMax = aBAS->LastUParameter (); + VMin = aBAS->FirstVParameter(); + VMax = aBAS->LastVParameter (); } diff --git a/src/IntTools/IntTools_Context.hxx b/src/IntTools/IntTools_Context.hxx index eebffed2cb..d39b910fe7 100644 --- a/src/IntTools/IntTools_Context.hxx +++ b/src/IntTools/IntTools_Context.hxx @@ -94,7 +94,7 @@ Standard_EXPORT virtual ~IntTools_Context(); Standard_EXPORT Geom2dHatch_Hatcher& Hatcher (const TopoDS_Face& aF); //! Returns a reference to surface adaptor for given face - Standard_EXPORT BRepAdaptor_Surface& SurfaceAdaptor (const TopoDS_Face& theFace); + Standard_EXPORT Handle(BRepAdaptor_Surface) SurfaceAdaptor (const TopoDS_Face& theFace); //! Builds and stores an Oriented Bounding Box for the shape. //! Returns a reference to OBB. @@ -251,7 +251,7 @@ protected: NCollection_DataMap myHatcherMap; NCollection_DataMap myProjSDataMap; NCollection_DataMap myBndBoxDataMap; - NCollection_DataMap mySurfAdaptorMap; + NCollection_DataMap mySurfAdaptorMap; NCollection_DataMap myOBBMap; // Map of oriented bounding boxes Standard_Integer myCreateFlag; Standard_Real myPOnSTolerance; diff --git a/src/IntTools/IntTools_EdgeEdge.cxx b/src/IntTools/IntTools_EdgeEdge.cxx index f5aa29374f..a3d9061739 100644 --- a/src/IntTools/IntTools_EdgeEdge.cxx +++ b/src/IntTools/IntTools_EdgeEdge.cxx @@ -34,7 +34,7 @@ #include static - void BndBuildBox(const BRepAdaptor_Curve& theBAC, + void BndBuildBox(const Handle(BRepAdaptor_Curve)& theBAC, const Standard_Real aT1, const Standard_Real aT2, const Standard_Real theTol, @@ -79,7 +79,7 @@ static Standard_Real& aT2max, const Standard_Boolean bMaxDist = Standard_True); static - Standard_Real ResolutionCoeff(const BRepAdaptor_Curve& theBAC, + Standard_Real ResolutionCoeff(const Handle(BRepAdaptor_Curve)& theBAC, const IntTools_Range& theRange); static Standard_Real Resolution(const Handle(Geom_Curve)& theCurve, @@ -87,7 +87,7 @@ static const Standard_Real theResCoeff, const Standard_Real theR3D); static - Standard_Real CurveDeflection(const BRepAdaptor_Curve& theBAC, + Standard_Real CurveDeflection(const Handle(BRepAdaptor_Curve)& theBAC, const IntTools_Range& theRange); static Standard_Boolean IsClosed(const Handle(Geom_Curve)& theCurve, @@ -107,21 +107,21 @@ void IntTools_EdgeEdge::Prepare() GeomAbs_CurveType aCT1, aCT2; Standard_Integer iCT1, iCT2; // - myCurve1.Initialize(myEdge1); - myCurve2.Initialize(myEdge2); + myCurve1->Initialize(myEdge1); + myCurve2->Initialize(myEdge2); // if (myRange1.First() == 0. && myRange1.Last() == 0.) { - myRange1.SetFirst(myCurve1.FirstParameter()); - myRange1.SetLast (myCurve1.LastParameter()); + myRange1.SetFirst(myCurve1->FirstParameter()); + myRange1.SetLast (myCurve1->LastParameter()); } // if (myRange2.First() == 0. && myRange2.Last() == 0.) { - myRange2.SetFirst(myCurve2.FirstParameter()); - myRange2.SetLast (myCurve2.LastParameter()); + myRange2.SetFirst(myCurve2->FirstParameter()); + myRange2.SetLast (myCurve2->LastParameter()); } // - aCT1 = myCurve1.GetType(); - aCT2 = myCurve2.GetType(); + aCT1 = myCurve1->GetType(); + aCT2 = myCurve2->GetType(); // iCT1 = TypeToInteger(aCT1); iCT2 = TypeToInteger(aCT2); @@ -146,7 +146,7 @@ void IntTools_EdgeEdge::Prepare() myEdge1 = myEdge2; myEdge2 = tmpE; // - BRepAdaptor_Curve tmpC = myCurve1; + Handle(BRepAdaptor_Curve) tmpC = myCurve1; myCurve1 = myCurve2; myCurve2 = tmpC; // @@ -158,8 +158,8 @@ void IntTools_EdgeEdge::Prepare() } // Standard_Real aTolAdd = myFuzzyValue / 2.; - myTol1 = myCurve1.Tolerance() + aTolAdd; - myTol2 = myCurve2.Tolerance() + aTolAdd; + myTol1 = myCurve1->Tolerance() + aTolAdd; + myTol2 = myCurve2->Tolerance() + aTolAdd; myTol = myTol1 + myTol2; // if (iCT1 != 0 || iCT2 != 0) { @@ -171,8 +171,8 @@ void IntTools_EdgeEdge::Prepare() myResCoeff1 = ResolutionCoeff(myCurve1, myRange1); myResCoeff2 = ResolutionCoeff(myCurve2, myRange2); // - myRes1 = Resolution(myCurve1.Curve().Curve(), myCurve1.GetType(), myResCoeff1, myTol1); - myRes2 = Resolution(myCurve2.Curve().Curve(), myCurve2.GetType(), myResCoeff2, myTol2); + myRes1 = Resolution(myCurve1->Curve()->Curve(), myCurve1->GetType(), myResCoeff1, myTol1); + myRes2 = Resolution(myCurve2->Curve()->Curve(), myCurve2->GetType(), myResCoeff2, myTol2); // myPTol1 = 5.e-13; aTM = Max(fabs(myRange1.First()), fabs(myRange1.Last())); @@ -204,8 +204,8 @@ void IntTools_EdgeEdge::Perform() Prepare(); // //3.1. Check Line/Line case - if (myCurve1.GetType() == GeomAbs_Line && - myCurve2.GetType() == GeomAbs_Line) { + if (myCurve1->GetType() == GeomAbs_Line && + myCurve2->GetType() == GeomAbs_Line) { ComputeLineLine(); return; } @@ -221,8 +221,8 @@ void IntTools_EdgeEdge::Perform() } } // - if ((myCurve1.GetType() <= GeomAbs_Parabola && myCurve2.GetType() <= GeomAbs_Parabola) && - (myCurve1.GetType() == GeomAbs_Line || myCurve2.GetType() == GeomAbs_Line)) + if ((myCurve1->GetType() <= GeomAbs_Parabola && myCurve2->GetType() <= GeomAbs_Parabola) && + (myCurve1->GetType() == GeomAbs_Line || myCurve2->GetType() == GeomAbs_Line)) { //Improvement of performance for cases of searching common parts between line //and analytical curve. This code allows to define that edges have no @@ -518,7 +518,7 @@ void IntTools_EdgeEdge::FindSolutions(const IntTools_Range& theR1, //function : FindParameters //purpose : //======================================================================= -Standard_Boolean IntTools_EdgeEdge::FindParameters(const BRepAdaptor_Curve& theBAC, +Standard_Boolean IntTools_EdgeEdge::FindParameters(const Handle(BRepAdaptor_Curve)& theBAC, const Standard_Real aT1, const Standard_Real aT2, const Standard_Real theTol, @@ -541,8 +541,8 @@ Standard_Boolean IntTools_EdgeEdge::FindParameters(const BRepAdaptor_Curve& theB aCBx = theCBox; aCBx.SetGap(aCBx.GetGap() + theTol); // - const Handle(Geom_Curve)& aCurve = theBAC.Curve().Curve(); - const GeomAbs_CurveType aCurveType = theBAC.GetType(); + const Handle(Geom_Curve)& aCurve = theBAC->Curve()->Curve(); + const GeomAbs_CurveType aCurveType = theBAC->GetType(); Standard_Real aMaxDt = (aT2 - aT1) * 0.01; // for (i = 0; i < 2; ++i) { @@ -555,7 +555,7 @@ Standard_Boolean IntTools_EdgeEdge::FindParameters(const BRepAdaptor_Curve& theB Standard_Real k = 1; //looking for the point on the edge which is in the box; while (aC*(aT-aTB) >= 0) { - theBAC.D0(aTB, aP); + theBAC->D0(aTB, aP); aDist = PointBoxDistance(theCBox, aP); if (aDist > theTol) { if (aDistP > 0.) { @@ -600,7 +600,7 @@ Standard_Boolean IntTools_EdgeEdge::FindParameters(const BRepAdaptor_Curve& theB aDiff = aTIn - aTOut; while (fabs(aDiff) > thePTol) { aTB = aTOut + aDiff*aCf; - theBAC.D0(aTB, aP); + theBAC->D0(aTB, aP); if (aCBx.IsOut(aP)) { aTOut = aTB; } else { @@ -641,10 +641,10 @@ void IntTools_EdgeEdge::MergeSolutions(const IntTools_SequenceOfRanges& theRange Standard_Real aRes1, aRes2, dTR1, dTR2; TColStd_MapOfInteger aMI; // - aRes1 = Resolution(myCurve1.Curve().Curve(), - myCurve1.GetType(), myResCoeff1, myTol); - aRes2 = Resolution(myCurve2.Curve().Curve(), - myCurve2.GetType(), myResCoeff2, myTol); + aRes1 = Resolution(myCurve1->Curve()->Curve(), + myCurve1->GetType(), myResCoeff1, myTol); + aRes2 = Resolution(myCurve2->Curve()->Curve(), + myCurve2->GetType(), myResCoeff2, myTol); // myRange1.Range(aT11, aT12); myRange2.Range(aT21, aT22); @@ -782,8 +782,8 @@ void IntTools_EdgeEdge::FindBestSolution(const Standard_Real aT11, Standard_Boolean bTouch = Standard_False; Standard_Boolean bTouchConfirm = Standard_False; // - aRes1 = Resolution(myCurve1.Curve().Curve(), - myCurve1.GetType(), myResCoeff1, myTol); + aRes1 = Resolution(myCurve1->Curve()->Curve(), + myCurve1->GetType(), myResCoeff1, myTol); aNbS = 10; aNbS = SplitRangeOnSegments(aT11, aT12, 3*aRes1, aNbS, aRanges); // @@ -839,8 +839,8 @@ void IntTools_EdgeEdge::ComputeLineLine() { Standard_Real aTol = myTol * myTol; - gp_Lin aL1 = myCurve1.Line(); - gp_Lin aL2 = myCurve2.Line(); + gp_Lin aL1 = myCurve1->Line(); + gp_Lin aL2 = myCurve2->Line(); gp_Dir aD1 = aL1.Direction(); gp_Dir aD2 = aL2.Direction(); @@ -1314,7 +1314,7 @@ Standard_Integer SplitRangeOnSegments(const Standard_Real aT1, //function : BndBuildBox //purpose : //======================================================================= -void BndBuildBox(const BRepAdaptor_Curve& theBAC, +void BndBuildBox(const Handle(BRepAdaptor_Curve)& theBAC, const Standard_Real aT1, const Standard_Real aT2, const Standard_Real theTol, @@ -1394,13 +1394,13 @@ Standard_Integer TypeToInteger(const GeomAbs_CurveType theCType) //function : ResolutionCoeff //purpose : //======================================================================= -Standard_Real ResolutionCoeff(const BRepAdaptor_Curve& theBAC, +Standard_Real ResolutionCoeff(const Handle(BRepAdaptor_Curve)& theBAC, const IntTools_Range& theRange) { Standard_Real aResCoeff = 0.; // - const Handle(Geom_Curve)& aCurve = theBAC.Curve().Curve(); - const GeomAbs_CurveType aCurveType = theBAC.GetType(); + const Handle(Geom_Curve)& aCurve = theBAC->Curve()->Curve(); + const GeomAbs_CurveType aCurveType = theBAC->GetType(); // switch (aCurveType) { case GeomAbs_Circle : @@ -1440,10 +1440,10 @@ Standard_Real ResolutionCoeff(const BRepAdaptor_Curve& theBAC, aT = aT1; kMin = 10.; // - theBAC.D0(aT1, aP1); + theBAC->D0(aT1, aP1); for (i = 1; i <= aNbP; ++i) { aT += aDt; - theBAC.D0(aT, aP2); + theBAC->D0(aT, aP2); aDist = aP1.Distance(aP2); k = aDt / aDist; if (k < kMin) { @@ -1515,7 +1515,7 @@ Standard_Real Resolution(const Handle(Geom_Curve)& theCurve, //function : CurveDeflection //purpose : //======================================================================= -Standard_Real CurveDeflection(const BRepAdaptor_Curve& theBAC, +Standard_Real CurveDeflection(const Handle(BRepAdaptor_Curve)& theBAC, const IntTools_Range& theRange) { Standard_Real aDt, aT, aT1, aT2, aDefl; @@ -1529,10 +1529,10 @@ Standard_Real CurveDeflection(const BRepAdaptor_Curve& theBAC, aDt = (aT2 - aT1) / aNbP; aT = aT1; // - theBAC.D1(aT1, aP, aV1); + theBAC->D1(aT1, aP, aV1); for (i = 1; i <= aNbP; ++i) { aT += aDt; - theBAC.D1(aT, aP, aV2); + theBAC->D1(aT, aP, aV2); if (aV1.Magnitude() > gp::Resolution() && aV2.Magnitude() > gp::Resolution()) { gp_Dir aD1(aV1), aD2(aV2); diff --git a/src/IntTools/IntTools_EdgeEdge.hxx b/src/IntTools/IntTools_EdgeEdge.hxx index dc1e2edf96..f9a5b7d570 100644 --- a/src/IntTools/IntTools_EdgeEdge.hxx +++ b/src/IntTools/IntTools_EdgeEdge.hxx @@ -151,7 +151,7 @@ protected: //! Looking for the range of the edge which is in the box - Standard_EXPORT static Standard_Boolean FindParameters(const BRepAdaptor_Curve& theBAC, + Standard_EXPORT static Standard_Boolean FindParameters(const Handle(BRepAdaptor_Curve)& theBAC, const Standard_Real aT1, const Standard_Real aT2, const Standard_Real theTol, const Standard_Real theRes, const Standard_Real thePTol, const Standard_Real theResCoeff, const Bnd_Box& theCBox, @@ -187,8 +187,8 @@ protected: TopoDS_Edge myEdge2; Handle(Geom_Curve) myGeom1; Handle(Geom_Curve) myGeom2; - BRepAdaptor_Curve myCurve1; - BRepAdaptor_Curve myCurve2; + Handle(BRepAdaptor_Curve) myCurve1; + Handle(BRepAdaptor_Curve) myCurve2; Standard_Real myTol1; Standard_Real myTol2; Standard_Real myTol; diff --git a/src/IntTools/IntTools_EdgeEdge.lxx b/src/IntTools/IntTools_EdgeEdge.lxx index 24a76ecac5..344859416f 100644 --- a/src/IntTools/IntTools_EdgeEdge.lxx +++ b/src/IntTools/IntTools_EdgeEdge.lxx @@ -21,6 +21,8 @@ //======================================================================= inline IntTools_EdgeEdge::IntTools_EdgeEdge() : + myCurve1(new BRepAdaptor_Curve()), + myCurve2(new BRepAdaptor_Curve()), myTol1(0.), myTol2(0.), myTol(0.), @@ -47,6 +49,8 @@ inline IntTools_EdgeEdge::IntTools_EdgeEdge(const TopoDS_Edge& theEdge1, : myEdge1(theEdge1), myEdge2(theEdge2), + myCurve1(new BRepAdaptor_Curve()), + myCurve2(new BRepAdaptor_Curve()), myTol1(0.), myTol2(0.), myTol(0.), @@ -77,6 +81,8 @@ inline IntTools_EdgeEdge::IntTools_EdgeEdge(const TopoDS_Edge& theEdge1, : myEdge1(theEdge1), myEdge2(theEdge2), + myCurve1(new BRepAdaptor_Curve()), + myCurve2(new BRepAdaptor_Curve()), myTol1(0.), myTol2(0.), myTol(0.), diff --git a/src/IntTools/IntTools_EdgeFace.cxx b/src/IntTools/IntTools_EdgeFace.cxx index 7d4f236b6c..62bd2c929a 100644 --- a/src/IntTools/IntTools_EdgeFace.cxx +++ b/src/IntTools/IntTools_EdgeFace.cxx @@ -42,11 +42,11 @@ #include static - Standard_Boolean IsCoplanar (const BRepAdaptor_Curve& , - const BRepAdaptor_Surface& ); + Standard_Boolean IsCoplanar (const Handle(BRepAdaptor_Curve)& , + const Handle(BRepAdaptor_Surface)& ); static - Standard_Boolean IsRadius (const BRepAdaptor_Curve& aCurve , - const BRepAdaptor_Surface& aSurface, + Standard_Boolean IsRadius (const Handle(BRepAdaptor_Curve)& aCurve , + const Handle(BRepAdaptor_Surface)& aSurface, const Standard_Real aCriteria); //======================================================================= @@ -56,6 +56,8 @@ static IntTools_EdgeFace::IntTools_EdgeFace() { myFuzzyValue = Precision::Confusion(); + myC = new BRepAdaptor_Curve(); + myS = new BRepAdaptor_Surface(); myIsDone=Standard_False; myErrorStatus=1; myQuickCoincidenceCheck=Standard_False; @@ -77,8 +79,8 @@ Standard_Boolean IntTools_EdgeFace::IsCoincident() GeomAPI_ProjectPointOnSurf& aProjector=myContext->ProjPS(myFace); Standard_Integer aNbSeg=23; - if (myC.GetType() == GeomAbs_Line && - myS.GetType() == GeomAbs_Plane) + if (myC->GetType() == GeomAbs_Line && + myS->GetType() == GeomAbs_Plane) aNbSeg = 2; // Check only three points for Line/Plane intersection const Standard_Real aTresh = 0.5; @@ -99,7 +101,7 @@ Standard_Boolean IntTools_EdgeFace::IsCoincident() iCnt=0; for(i=0; i <= aNbSeg; ++i) { aT = aT1+i*dT; - aP=myC.Value(aT); + aP=myC->Value(aT); // aProjector.Perform(aP); if (!aProjector.IsDone()) { @@ -175,7 +177,7 @@ Standard_Boolean IntTools_EdgeFace::IsProjectable Standard_Boolean bFlag; gp_Pnt aPC; // - myC.D0(aT, aPC); + myC->D0(aT, aPC); bFlag=myContext->IsValidPointForFace(aPC, myFace, myCriteria); // return bFlag; @@ -191,7 +193,7 @@ Standard_Real IntTools_EdgeFace::DistanceFunction // gp_Pnt P; - myC.D0(t, P); + myC->D0(t, P); // Standard_Boolean bIsEqDistance; @@ -231,16 +233,16 @@ Standard_Real IntTools_EdgeFace::DistanceFunction //======================================================================= Standard_Boolean IntTools_EdgeFace::IsEqDistance (const gp_Pnt& aP, - const BRepAdaptor_Surface& aBAS, + const Handle(BRepAdaptor_Surface)& aBAS, const Standard_Real aTol, Standard_Real& aD) { Standard_Boolean bRetFlag=Standard_True; - GeomAbs_SurfaceType aSurfType=aBAS.GetType(); + GeomAbs_SurfaceType aSurfType=aBAS->GetType(); if (aSurfType==GeomAbs_Cylinder) { - gp_Cylinder aCyl=aBAS.Cylinder(); + gp_Cylinder aCyl=aBAS->Cylinder(); const gp_Ax1& anAx1 =aCyl.Axis(); gp_Lin aLinAxis(anAx1); Standard_Real aDC, aRadius=aCyl.Radius(); @@ -252,7 +254,7 @@ Standard_Boolean IntTools_EdgeFace::IsEqDistance } if (aSurfType==GeomAbs_Cone) { - gp_Cone aCone=aBAS.Cone(); + gp_Cone aCone=aBAS->Cone(); const gp_Ax1& anAx1 =aCone.Axis(); gp_Lin aLinAxis(anAx1); Standard_Real aDC, aRadius, aDS, aSemiAngle; @@ -271,7 +273,7 @@ Standard_Boolean IntTools_EdgeFace::IsEqDistance if (aSurfType==GeomAbs_Torus) { Standard_Real aMajorRadius, aMinorRadius, aDC; - gp_Torus aTorus=aBAS.Torus(); + gp_Torus aTorus=aBAS->Torus(); gp_Pnt aPLoc=aTorus.Location(); aMajorRadius=aTorus.MajorRadius(); @@ -306,13 +308,13 @@ Standard_Integer IntTools_EdgeFace::MakeType { gp_Pnt aPF, aPL; - myC.D0(af1, aPF); - myC.D0(al1, aPL); + myC->D0(af1, aPF); + myC->D0(al1, aPL); df1=aPF.Distance(aPL); Standard_Boolean isWholeRange = Standard_False; - if((Abs(af1 - myRange.First()) < myC.Resolution(myCriteria)) && - (Abs(al1 - myRange.Last()) < myC.Resolution(myCriteria))) + if((Abs(af1 - myRange.First()) < myC->Resolution(myCriteria)) && + (Abs(al1 - myRange.Last()) < myC->Resolution(myCriteria))) isWholeRange = Standard_True; @@ -323,7 +325,7 @@ Standard_Integer IntTools_EdgeFace::MakeType if(isWholeRange) { tm = (af1 + al1) * 0.5; - if(aPF.Distance(myC.Value(tm)) > myCriteria * 2.) { + if(aPF.Distance(myC->Value(tm)) > myCriteria * 2.) { aCommonPrt.SetType(TopAbs_EDGE); return 0; } @@ -357,7 +359,7 @@ Standard_Boolean IntTools_EdgeFace::CheckTouch // Standard_Real aCR; - aCR=myC.Resolution(myCriteria); + aCR=myC->Resolution(myCriteria); if((Abs(aTF - myRange.First()) < aCR) && (Abs(aTL - myRange.Last()) < aCR)) { return theflag; // EDGE @@ -366,16 +368,16 @@ Standard_Boolean IntTools_EdgeFace::CheckTouch Tol = Precision::PConfusion(); - const Handle(Geom_Curve)& Curve =BRep_Tool::Curve (myC.Edge(), af, al); - const Handle(Geom_Surface)& Surface=BRep_Tool::Surface(myS.Face()); + const Handle(Geom_Curve)& Curve =BRep_Tool::Curve (myC->Edge(), af, al); + const Handle(Geom_Surface)& Surface=BRep_Tool::Surface(myS->Face()); // Surface->Bounds(U1f,U1l,V1f,V1l); - U1f = myS.FirstUParameter(); - U1l = myS.LastUParameter(); - V1f = myS.FirstVParameter(); - V1l = myS.LastVParameter(); + U1f = myS->FirstUParameter(); + U1l = myS->LastUParameter(); + V1f = myS->FirstVParameter(); + V1l = myS->LastVParameter(); - GeomAdaptor_Curve TheCurve (Curve,aTF, aTL); - GeomAdaptor_Surface TheSurface (Surface, U1f, U1l, V1f, V1l); + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(Curve,aTF, aTL); + Handle(GeomAdaptor_Surface) TheSurface = new GeomAdaptor_Surface(Surface, U1f, U1l, V1f, V1l); Extrema_ExtCS anExtrema (TheCurve, TheSurface, Tol, Tol); @@ -406,10 +408,7 @@ Standard_Boolean IntTools_EdgeFace::CheckTouch // modified by NIZHNY-MKK Thu Jul 21 11:35:32 2005.BEGIN IntCurveSurface_HInter anExactIntersector; - Handle(GeomAdaptor_Curve) aCurve = new GeomAdaptor_Curve(TheCurve); - Handle(GeomAdaptor_Surface) aSurface = new GeomAdaptor_Surface(TheSurface); - - anExactIntersector.Perform(aCurve, aSurface); + anExactIntersector.Perform(TheCurve, TheSurface); if(anExactIntersector.IsDone()) { for(Standard_Integer i = 1; i <= anExactIntersector.NbPoints(); i++) { @@ -491,9 +490,9 @@ void IntTools_EdgeFace::Perform() } // myIsDone = Standard_False; - myC.Initialize(myEdge); + myC->Initialize(myEdge); GeomAbs_CurveType aCurveType; - aCurveType=myC.GetType(); + aCurveType=myC->GetType(); // // Prepare myCriteria Standard_Real aFuzz = myFuzzyValue / 2.; @@ -558,8 +557,8 @@ void IntTools_EdgeFace::Perform() gp_Pnt aPx1, aPx2; // aCP.Range1(aTx1, aTx2); - myC.D0(aTx1, aPx1); - myC.D0(aTx2, aPx2); + myC->D0(aTx1, aPx1); + myC->D0(aTx2, aPx2); aCP.SetBoundingPoints(aPx1, aPx2); // MakeType (aCP); @@ -572,8 +571,8 @@ void IntTools_EdgeFace::Perform() Standard_Boolean bIsTouch; Standard_Real aTx; - aCType=myC.GetType(); - aSType=myS.GetType(); + aCType=myC->GetType(); + aSType=myS->GetType(); if (aCType==GeomAbs_Line && aSType==GeomAbs_Cylinder) { for (i=1; i<=aNb; i++) { @@ -644,7 +643,7 @@ Standard_Boolean IntTools_EdgeFace::CheckTouchVertex GeomAbs_CurveType aType; // aCP.Range1(aTF, aTL); - aType=myC.GetType(); + aType=myC->GetType(); // aEpsT=8.e-5; if (aType==GeomAbs_Line) { @@ -657,13 +656,13 @@ Standard_Boolean IntTools_EdgeFace::CheckTouchVertex Tol = Precision::PConfusion(); - const Handle(Geom_Curve)& Curve =BRep_Tool::Curve (myC.Edge(), af, al); - const Handle(Geom_Surface)& Surface=BRep_Tool::Surface(myS.Face()); + const Handle(Geom_Curve)& Curve =BRep_Tool::Curve (myC->Edge(), af, al); + const Handle(Geom_Surface)& Surface=BRep_Tool::Surface(myS->Face()); Surface->Bounds(U1f,U1l,V1f,V1l); - GeomAdaptor_Curve TheCurve (Curve,aTF, aTL); - GeomAdaptor_Surface TheSurface (Surface, U1f, U1l, V1f, V1l); + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(Curve,aTF, aTL); + Handle(GeomAdaptor_Surface) TheSurface = new GeomAdaptor_Surface(Surface, U1f, U1l, V1f, V1l); Extrema_ExtCS anExtrema (TheCurve, TheSurface, Tol, Tol); @@ -727,23 +726,23 @@ Standard_Boolean IntTools_EdgeFace::CheckTouchVertex //function : IsCoplanar //purpose : //======================================================================= -Standard_Boolean IsCoplanar (const BRepAdaptor_Curve& aCurve , - const BRepAdaptor_Surface& aSurface) +Standard_Boolean IsCoplanar (const Handle(BRepAdaptor_Curve)& aCurve , + const Handle(BRepAdaptor_Surface)& aSurface) { Standard_Boolean bFlag=Standard_False; GeomAbs_CurveType aCType; GeomAbs_SurfaceType aSType; - aCType=aCurve.GetType(); - aSType=aSurface.GetType(); + aCType=aCurve->GetType(); + aSType=aSurface->GetType(); if (aCType==GeomAbs_Circle && aSType==GeomAbs_Plane) { - gp_Circ aCirc=aCurve.Circle(); + gp_Circ aCirc=aCurve->Circle(); const gp_Ax1& anAx1=aCirc.Axis(); const gp_Dir& aDirAx1=anAx1.Direction(); - gp_Pln aPln=aSurface.Plane(); + gp_Pln aPln=aSurface->Plane(); const gp_Ax1& anAx=aPln.Axis(); const gp_Dir& aDirPln=anAx.Direction(); @@ -755,8 +754,8 @@ Standard_Boolean IsCoplanar (const BRepAdaptor_Curve& aCurve , //function : IsRadius //purpose : //======================================================================= -Standard_Boolean IsRadius (const BRepAdaptor_Curve& aCurve, - const BRepAdaptor_Surface& aSurface, +Standard_Boolean IsRadius (const Handle(BRepAdaptor_Curve)& aCurve, + const Handle(BRepAdaptor_Surface)& aSurface, const Standard_Real aCriteria) { Standard_Boolean bFlag=Standard_False; @@ -764,14 +763,14 @@ Standard_Boolean IsRadius (const BRepAdaptor_Curve& aCurve, GeomAbs_CurveType aCType; GeomAbs_SurfaceType aSType; - aCType=aCurve.GetType(); - aSType=aSurface.GetType(); + aCType=aCurve->GetType(); + aSType=aSurface->GetType(); if (aCType==GeomAbs_Circle && aSType==GeomAbs_Plane) { - gp_Circ aCirc=aCurve.Circle(); + gp_Circ aCirc=aCurve->Circle(); const gp_Pnt aCenter=aCirc.Location(); Standard_Real aR=aCirc.Radius(); - gp_Pln aPln=aSurface.Plane(); + gp_Pln aPln=aSurface->Plane(); Standard_Real aD=aPln.Distance(aCenter); if (fabs (aD-aR) < aCriteria) { return !bFlag; @@ -785,8 +784,8 @@ Standard_Boolean IsRadius (const BRepAdaptor_Curve& aCurve, //purpose : //======================================================================= Standard_Integer AdaptiveDiscret (const Standard_Integer iDiscret, - const BRepAdaptor_Curve& aCurve , - const BRepAdaptor_Surface& aSurface) + const Handle(BRepAdaptor_Curve)& aCurve , + const Handle(BRepAdaptor_Surface)& aSurface) { Standard_Integer iDiscretNew; @@ -794,14 +793,14 @@ Standard_Integer AdaptiveDiscret (const Standard_Integer iDiscret, GeomAbs_SurfaceType aSType; - aSType=aSurface.GetType(); + aSType=aSurface->GetType(); if (aSType==GeomAbs_Cylinder) { Standard_Real aELength, aRadius, dLR; - aELength=IntTools::Length(aCurve.Edge()); + aELength=IntTools::Length(aCurve->Edge()); - gp_Cylinder aCylinder=aSurface.Cylinder(); + gp_Cylinder aCylinder=aSurface->Cylinder(); aRadius=aCylinder.Radius(); dLR=2*aRadius; diff --git a/src/IntTools/IntTools_EdgeFace.hxx b/src/IntTools/IntTools_EdgeFace.hxx index 8ecf4f9467..9503fc0300 100644 --- a/src/IntTools/IntTools_EdgeFace.hxx +++ b/src/IntTools/IntTools_EdgeFace.hxx @@ -179,7 +179,7 @@ public: //! @name Obtaining results protected: //! @name Protected methods performing the intersection - Standard_EXPORT static Standard_Boolean IsEqDistance (const gp_Pnt& aP, const BRepAdaptor_Surface& aS, const Standard_Real aT, Standard_Real& aD); + Standard_EXPORT static Standard_Boolean IsEqDistance (const gp_Pnt& aP, const Handle(BRepAdaptor_Surface)& aS, const Standard_Real aT, Standard_Real& aD); Standard_EXPORT void CheckData(); Standard_EXPORT Standard_Boolean IsProjectable (const Standard_Real t) const; @@ -200,8 +200,8 @@ protected: TopoDS_Edge myEdge; TopoDS_Face myFace; Standard_Real myFuzzyValue; - BRepAdaptor_Curve myC; - BRepAdaptor_Surface myS; + Handle(BRepAdaptor_Curve) myC; + Handle(BRepAdaptor_Surface) myS; Standard_Real myCriteria; Standard_Boolean myIsDone; Standard_Integer myErrorStatus; diff --git a/src/IntTools/IntTools_FClass2d.cxx b/src/IntTools/IntTools_FClass2d.cxx index ab6d700a72..f59a48f77c 100644 --- a/src/IntTools/IntTools_FClass2d.cxx +++ b/src/IntTools/IntTools_FClass2d.cxx @@ -163,7 +163,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, return; } // - BRepAdaptor_Curve2d C(edge,Face); + Handle(BRepAdaptor_Curve2d) C = new BRepAdaptor_Curve2d(edge,Face); BRepAdaptor_Curve C3d; //------------------------------------------ degenerated=Standard_False; @@ -272,7 +272,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, gp_Pnt P3d; // u=aPrms(iX); - P2d = C.Value(u); + P2d = C->Value(u); if(P2d.X()Umax) Umax = P2d.X(); if(P2d.Y()D1(aU, aP, aV); if(Or == TopAbs_REVERSED) aV.Reverse(); @@ -351,7 +351,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, // Append the derivative of the last parameter. aU = aPrms(aNbs1); - C.D1(aU, aP, aV); + C->D1(aU, aP, aV); if(Or == TopAbs_REVERSED) aV.Reverse(); @@ -428,7 +428,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, { BRep_Tool::Range(edge, Face, pfbid, plbid); if (Abs(plbid - pfbid) < 1.e-9) continue; - BRepAdaptor_Curve2d C(edge, Face); + Handle(BRepAdaptor_Curve2d) C = new BRepAdaptor_Curve2d(edge, Face); GCPnts_QuasiUniformDeflection aDiscr(C, aDiscrDefl); if (!aDiscr.IsDone()) break; @@ -444,7 +444,7 @@ void IntTools_FClass2d::Init(const TopoDS_Face& aFace, i += iStep; for (; i != iEnd; i += iStep) { - gp_Pnt2d aP2d = C.Value(aDiscr.Parameter(i)); + gp_Pnt2d aP2d = C->Value(aDiscr.Parameter(i)); SeqPnt2d.Append(aP2d); } if (nbp > 2) diff --git a/src/IntTools/IntTools_FaceFace.cxx b/src/IntTools/IntTools_FaceFace.cxx index 27f20299b2..04b5084478 100644 --- a/src/IntTools/IntTools_FaceFace.cxx +++ b/src/IntTools/IntTools_FaceFace.cxx @@ -281,25 +281,25 @@ void IntTools_FaceFace::SetList(IntSurf_ListOfPntOn2S& aListOfPnts) } -static Standard_Boolean isTreatAnalityc(const BRepAdaptor_Surface& theBAS1, - const BRepAdaptor_Surface& theBAS2, +static Standard_Boolean isTreatAnalityc(const Handle(BRepAdaptor_Surface)& theBAS1, + const Handle(BRepAdaptor_Surface)& theBAS2, const Standard_Real theTol) { const Standard_Real Tolang = 1.e-8; Standard_Real aHigh = 0.0; - const GeomAbs_SurfaceType aType1=theBAS1.GetType(); - const GeomAbs_SurfaceType aType2=theBAS2.GetType(); + const GeomAbs_SurfaceType aType1=theBAS1->GetType(); + const GeomAbs_SurfaceType aType2=theBAS2->GetType(); gp_Pln aS1; gp_Cylinder aS2; if(aType1 == GeomAbs_Plane) { - aS1=theBAS1.Plane(); + aS1=theBAS1->Plane(); } else if(aType2 == GeomAbs_Plane) { - aS1=theBAS2.Plane(); + aS1=theBAS2->Plane(); } else { @@ -308,9 +308,9 @@ static Standard_Boolean isTreatAnalityc(const BRepAdaptor_Surface& theBAS1, if(aType1 == GeomAbs_Cylinder) { - aS2=theBAS1.Cylinder(); - const Standard_Real VMin = theBAS1.FirstVParameter(); - const Standard_Real VMax = theBAS1.LastVParameter(); + aS2=theBAS1->Cylinder(); + const Standard_Real VMin = theBAS1->FirstVParameter(); + const Standard_Real VMax = theBAS1->LastVParameter(); if( Precision::IsNegativeInfinite(VMin) || Precision::IsPositiveInfinite(VMax)) @@ -320,10 +320,10 @@ static Standard_Boolean isTreatAnalityc(const BRepAdaptor_Surface& theBAS1, } else if(aType2 == GeomAbs_Cylinder) { - aS2=theBAS2.Cylinder(); + aS2=theBAS2->Cylinder(); - const Standard_Real VMin = theBAS2.FirstVParameter(); - const Standard_Real VMax = theBAS2.LastVParameter(); + const Standard_Real VMin = theBAS2->FirstVParameter(); + const Standard_Real VMax = theBAS2->LastVParameter(); if( Precision::IsNegativeInfinite(VMin) || Precision::IsPositiveInfinite(VMax)) @@ -370,18 +370,18 @@ void IntTools_FaceFace::Perform (const TopoDS_Face& aF1, myFace1=aF1; myFace2=aF2; - const BRepAdaptor_Surface& aBAS1 = myContext->SurfaceAdaptor(myFace1); - const BRepAdaptor_Surface& aBAS2 = myContext->SurfaceAdaptor(myFace2); - GeomAbs_SurfaceType aType1=aBAS1.GetType(); - GeomAbs_SurfaceType aType2=aBAS2.GetType(); + const Handle(BRepAdaptor_Surface)& aBAS1 = myContext->SurfaceAdaptor(myFace1); + const Handle(BRepAdaptor_Surface)& aBAS2 = myContext->SurfaceAdaptor(myFace2); + GeomAbs_SurfaceType aType1=aBAS1->GetType(); + GeomAbs_SurfaceType aType2=aBAS2->GetType(); const Standard_Boolean bReverse=SortTypes(aType1, aType2); if (bReverse) { myFace1=aF2; myFace2=aF1; - aType1=aBAS2.GetType(); - aType2=aBAS1.GetType(); + aType1=aBAS2->GetType(); + aType2=aBAS1->GetType(); if (myListOfPnts.Extent()) { @@ -2104,7 +2104,7 @@ Standard_Boolean IsCurveValid (const Handle(Geom2d_Curve)& thePCurve) return Standard_False; Standard_Real tolint = 1.e-10; - Geom2dAdaptor_Curve PCA; + Handle(Geom2dAdaptor_Curve) PCA = new Geom2dAdaptor_Curve(); IntRes2d_Domain PCD; Geom2dInt_GInter PCI; @@ -2116,10 +2116,10 @@ Standard_Boolean IsCurveValid (const Handle(Geom2d_Curve)& thePCurve) pl = thePCurve->LastParameter(); pntf = thePCurve->Value(pf); pntl = thePCurve->Value(pl); - PCA.Load(thePCurve); - if(!PCA.IsPeriodic()) { - if(PCA.FirstParameter() > pf) pf = PCA.FirstParameter(); - if(PCA.LastParameter() < pl) pl = PCA.LastParameter(); + PCA->Load(thePCurve); + if(!PCA->IsPeriodic()) { + if(PCA->FirstParameter() > pf) pf = PCA->FirstParameter(); + if(PCA->LastParameter() < pl) pl = PCA->LastParameter(); } PCD.SetValues(pntf,pf,tolint,pntl,pl,tolint); PCI.Perform(PCA,PCD,tolint,tolint); diff --git a/src/IntTools/IntTools_ShrunkRange.cxx b/src/IntTools/IntTools_ShrunkRange.cxx index 646a629395..1975322a23 100644 --- a/src/IntTools/IntTools_ShrunkRange.cxx +++ b/src/IntTools/IntTools_ShrunkRange.cxx @@ -113,7 +113,7 @@ void IntTools_ShrunkRange::SetShrunkRange(const Standard_Real aT1, myTS1=aT1; myTS2=aT2; // - BRepAdaptor_Curve aBAC(myEdge); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(myEdge); BndLib_Add3dCurve::Add(aBAC, aT1, aT2, 0., myBndBox); } @@ -157,7 +157,7 @@ void IntTools_ShrunkRange::Perform() // compute the shrunk range - part of the edge not covered // by the tolerance spheres of its vertices - BRepAdaptor_Curve aBAC(myEdge); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(myEdge); if (!BRepLib::FindValidRange(aBAC, aTolE, myT1, aP1, aTolV1, myT2, aP2, aTolV2, myTS1, myTS2)) { // no valid range @@ -172,7 +172,7 @@ void IntTools_ShrunkRange::Perform() // // parametric tolerance for the edge // to be used in AbscissaPoint computations - Standard_Real aPTolE = aBAC.Resolution(aTolE); + Standard_Real aPTolE = aBAC->Resolution(aTolE); // for the edges with big tolerance use // min parametric tolerance - 1% of its range Standard_Real aPTolEMin = (myT2 - myT1) / 100.; diff --git a/src/IntTools/IntTools_Tools.cxx b/src/IntTools/IntTools_Tools.cxx index 3c72ec9906..0972d03453 100644 --- a/src/IntTools/IntTools_Tools.cxx +++ b/src/IntTools/IntTools_Tools.cxx @@ -588,7 +588,7 @@ Standard_Boolean IntTools_Tools::CheckCurve(const IntTools_Curve& theCurve, } // // Build bounding box for the curve - BndLib_Add3dCurve::Add(GeomAdaptor_Curve(aC3D), + BndLib_Add3dCurve::Add(new GeomAdaptor_Curve(aC3D), Max(theCurve.Tolerance(), theCurve.TangentialTolerance()), theBox); // diff --git a/src/IntWalk/IntWalk_PWalking.cxx b/src/IntWalk/IntWalk_PWalking.cxx index 464e42f876..3c99221a43 100644 --- a/src/IntWalk/IntWalk_PWalking.cxx +++ b/src/IntWalk/IntWalk_PWalking.cxx @@ -553,7 +553,7 @@ void IntWalk_PWalking::Perform(const TColStd_Array1OfReal& ParDep) // (theU0, theV0) is initial point for extrema //======================================================================= static Standard_Real SQDistPointSurface(const gp_Pnt &thePnt, - const Adaptor3d_Surface& theSurf, + const Handle(Adaptor3d_Surface)& theSurf, const Standard_Real theU0, const Standard_Real theV0) { @@ -621,7 +621,7 @@ static Standard_Boolean IsTangentExtCheck(const Handle(Adaptor3d_Surface)& theSu for(Standard_Integer i = 0; i < aNbItems; i++) { gp_Pnt aP(theSurf1->Value(aParUS1[i], aParVS1[i])); - const Standard_Real aSqDist = SQDistPointSurface(aP, *theSurf2, theU20, theV20); + const Standard_Real aSqDist = SQDistPointSurface(aP, theSurf2, theU20, theV20); if(aSqDist > aSQToler) return Standard_False; } @@ -629,7 +629,7 @@ static Standard_Boolean IsTangentExtCheck(const Handle(Adaptor3d_Surface)& theSu for(Standard_Integer i = 0; i < aNbItems; i++) { gp_Pnt aP(theSurf2->Value(aParUS2[i], aParVS2[i])); - const Standard_Real aSqDist = SQDistPointSurface(aP, *theSurf1, theU10, theV10); + const Standard_Real aSqDist = SQDistPointSurface(aP, theSurf1, theU10, theV10); if(aSqDist > aSQToler) return Standard_False; } diff --git a/src/IntWalk/IntWalk_TheFunctionOfTheInt2S.hxx b/src/IntWalk/IntWalk_TheFunctionOfTheInt2S.hxx index c1bbc98356..d9ac291e14 100644 --- a/src/IntWalk/IntWalk_TheFunctionOfTheInt2S.hxx +++ b/src/IntWalk/IntWalk_TheFunctionOfTheInt2S.hxx @@ -64,9 +64,9 @@ public: gp_Dir2d DirectionOnS2() const; - const Handle(Adaptor3d_Surface)& AuxillarSurface1() const; + const Handle(Adaptor3d_Surface) AuxillarSurface1() const; - const Handle(Adaptor3d_Surface)& AuxillarSurface2() const; + const Handle(Adaptor3d_Surface) AuxillarSurface2() const; diff --git a/src/LProp3d/LProp3d_SurfaceTool.cxx b/src/LProp3d/LProp3d_SurfaceTool.cxx index 964afe225b..5aea37574c 100644 --- a/src/LProp3d/LProp3d_SurfaceTool.cxx +++ b/src/LProp3d/LProp3d_SurfaceTool.cxx @@ -28,6 +28,7 @@ void LProp3d_SurfaceTool::Value(const Handle(Adaptor3d_Surface)& S, const Standard_Real V, gp_Pnt& P) { + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); P = S->Value(U, V); } @@ -44,6 +45,7 @@ void LProp3d_SurfaceTool::D1(const Handle(Adaptor3d_Surface)& S, gp_Vec& D1U, gp_Vec& D1V) { + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); S->D1(U, V, P, D1U, D1V); } @@ -63,6 +65,7 @@ void LProp3d_SurfaceTool::D2(const Handle(Adaptor3d_Surface)& S, gp_Vec& D2V, gp_Vec& DUV) { + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); S->D2(U, V, P, D1U, D1V, D2U, D2V, DUV); } @@ -76,6 +79,7 @@ gp_Vec LProp3d_SurfaceTool::DN(const Handle(Adaptor3d_Surface)& S, const Standard_Integer IU, const Standard_Integer IV) { + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); return S->DN(U, V, IU, IV); } @@ -88,6 +92,7 @@ gp_Vec LProp3d_SurfaceTool::DN(const Handle(Adaptor3d_Surface)& S, Standard_Integer LProp3d_SurfaceTool::Continuity (const Handle(Adaptor3d_Surface)& S) { + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); GeomAbs_Shape s = (GeomAbs_Shape) Min(S->UContinuity(),S->VContinuity()); switch (s) { case GeomAbs_C0: @@ -120,6 +125,7 @@ void LProp3d_SurfaceTool::Bounds(const Handle(Adaptor3d_Surface)& S, Standard_Real& U2, Standard_Real& V2) { + Standard_ASSERT_RAISE(!S.IsNull(), "Surface Adaptor is not initialized"); U1 = S->FirstUParameter(); V1 = S->FirstVParameter(); U2 = S->LastUParameter(); diff --git a/src/Law/Law.cxx b/src/Law/Law.cxx index 0623d1792c..3c531c475d 100644 --- a/src/Law/Law.cxx +++ b/src/Law/Law.cxx @@ -143,7 +143,7 @@ Handle(TColStd_HArray1OfReal) Law::MixTgt return res; } -Handle(Law_BSpline) Law::Reparametrize(const Adaptor3d_Curve& Curve, +Handle(Law_BSpline) Law::Reparametrize(const Handle(Adaptor3d_Curve)& Curve, const Standard_Real First, const Standard_Real Last, const Standard_Boolean HasDF, @@ -162,21 +162,21 @@ Handle(Law_BSpline) Law::Reparametrize(const Adaptor3d_Curve& Curve, TColStd_Array1OfReal cumdist(1,2*NbPoints); TColStd_Array1OfReal ucourbe(1,2*NbPoints); gp_Pnt P1,P2; - Standard_Real U1 = Curve.FirstParameter(); - Standard_Real U2 = Curve.LastParameter(); + Standard_Real U1 = Curve->FirstParameter(); + Standard_Real U2 = Curve->LastParameter(); Standard_Real U, DU, Length = 0.; if(!Rev){ - P1 = Curve.Value(U1); + P1 = Curve->Value(U1); U = U1; DU = (U2 - U1) / ( 2*NbPoints - 1); } else{ - P1 = Curve.Value(U2); + P1 = Curve->Value(U2); U = U2; DU = (U1 - U2) / ( 2*NbPoints - 1); } for ( i = 1; i <= 2*NbPoints ; i ++) { - P2 = Curve.Value(U); + P2 = Curve->Value(U); Length += P2.Distance(P1); cumdist(i) = Length; ucourbe(i) = U; diff --git a/src/Law/Law.hxx b/src/Law/Law.hxx index 5f42e46b5c..38e3325e6e 100644 --- a/src/Law/Law.hxx +++ b/src/Law/Law.hxx @@ -68,7 +68,7 @@ public: //! Computes a 1 d curve to reparametrize a curve. Its an //! interpolation of NbPoints points calculated at quasi //! constant abscissa. - Standard_EXPORT static Handle(Law_BSpline) Reparametrize (const Adaptor3d_Curve& Curve, const Standard_Real First, const Standard_Real Last, const Standard_Boolean HasDF, const Standard_Boolean HasDL, const Standard_Real DFirst, const Standard_Real DLast, const Standard_Boolean Rev, const Standard_Integer NbPoints); + Standard_EXPORT static Handle(Law_BSpline) Reparametrize (const Handle(Adaptor3d_Curve)& Curve, const Standard_Real First, const Standard_Real Last, const Standard_Boolean HasDF, const Standard_Boolean HasDL, const Standard_Real DFirst, const Standard_Real DLast, const Standard_Boolean Rev, const Standard_Integer NbPoints); //! Computes a 1 d curve to scale a field of tangency. //! Value is 1. for t = (First+Last)/2 . diff --git a/src/LocOpe/LocOpe_Gluer.cxx b/src/LocOpe/LocOpe_Gluer.cxx index 570d72df4f..39be0e7827 100644 --- a/src/LocOpe/LocOpe_Gluer.cxx +++ b/src/LocOpe/LocOpe_Gluer.cxx @@ -383,9 +383,9 @@ static TopAbs_Orientation GetOrientation(const TopoDS_Face& Fn, } // Projection sur Sb - GeomAdaptor_Surface GAS(Sb); - Standard_Real TolU = GAS.UResolution(Precision::Confusion()); - Standard_Real TolV = GAS.VResolution(Precision::Confusion()); + Handle(GeomAdaptor_Surface) GAS = new GeomAdaptor_Surface(Sb); + Standard_Real TolU = GAS->UResolution(Precision::Confusion()); + Standard_Real TolV = GAS->VResolution(Precision::Confusion()); Extrema_ExtPS dist(pvt,GAS,TolU,TolV); if (dist.IsDone()) { Standard_Real dist2min = RealLast(); diff --git a/src/LocOpe/LocOpe_SplitDrafts.cxx b/src/LocOpe/LocOpe_SplitDrafts.cxx index 5ad7158714..183b321b3c 100644 --- a/src/LocOpe/LocOpe_SplitDrafts.cxx +++ b/src/LocOpe/LocOpe_SplitDrafts.cxx @@ -569,21 +569,21 @@ void LocOpe_SplitDrafts::Perform(const TopoDS_Face& F, } Standard_Real pmin=0, Dist2, Dist2Min, Glob2Min = RealLast(); - GeomAdaptor_Curve TheCurve; + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(); Standard_Integer i,imin,k; gp_Pnt pv = BRep_Tool::Pnt(vtx); imin = 0; for (i=1; i<= i2s.NbLines(); i++) { - TheCurve.Load(i2s.Line(i)); + TheCurve->Load(i2s.Line(i)); Extrema_ExtPC myExtPC(pv,TheCurve); if (myExtPC.IsDone()) { gp_Pnt p1b,p2b; - Standard_Real thepmin = TheCurve.FirstParameter(); + Standard_Real thepmin = TheCurve->FirstParameter(); myExtPC.TrimmedSquareDistances(Dist2Min,Dist2,p1b,p2b); if (Dist2 < Dist2Min) { - thepmin = TheCurve.LastParameter(); + thepmin = TheCurve->LastParameter(); } for (k=1; k<=myExtPC.NbExt(); k++) { Dist2 = myExtPC.SquareDistance(k); @@ -1588,22 +1588,22 @@ static TopoDS_Edge NewEdge(const TopoDS_Edge& edg, // Standard_Real pmin, Dist, DistMin; Standard_Real Dist2, Dist2Min; Standard_Real prmf=0,prml=0; - GeomAdaptor_Curve TheCurve; + Handle(GeomAdaptor_Curve) TheCurve = new GeomAdaptor_Curve(); Standard_Integer i,k; gp_Pnt pvf = BRep_Tool::Pnt(V1); gp_Pnt pvl = BRep_Tool::Pnt(V2); for (i=1; i<= i2s.NbLines(); i++) { - TheCurve.Load(i2s.Line(i)); + TheCurve->Load(i2s.Line(i)); Extrema_ExtPC myExtPC(pvf,TheCurve); if (myExtPC.IsDone()) { gp_Pnt p1b,p2b; - Standard_Real thepmin = TheCurve.FirstParameter(); + Standard_Real thepmin = TheCurve->FirstParameter(); myExtPC.TrimmedSquareDistances(Dist2Min,Dist2,p1b,p2b); - if (Dist2 < Dist2Min && !TheCurve.IsPeriodic()) { + if (Dist2 < Dist2Min && !TheCurve->IsPeriodic()) { Dist2Min = Dist2; - thepmin = TheCurve.LastParameter(); + thepmin = TheCurve->LastParameter(); } for (k=1; k<=myExtPC.NbExt(); k++) { Dist2 = myExtPC.SquareDistance(k); @@ -1617,11 +1617,11 @@ static TopoDS_Edge NewEdge(const TopoDS_Edge& edg, prmf = thepmin; myExtPC.Perform(pvl); if (myExtPC.IsDone()) { - thepmin = TheCurve.LastParameter(); + thepmin = TheCurve->LastParameter(); myExtPC.TrimmedSquareDistances(Dist2,Dist2Min,p1b,p2b); - if (Dist2 < Dist2Min && !TheCurve.IsClosed()) { + if (Dist2 < Dist2Min && !TheCurve->IsClosed()) { Dist2Min = Dist2; - thepmin = TheCurve.FirstParameter(); + thepmin = TheCurve->FirstParameter(); } for (k=1; k<=myExtPC.NbExt(); k++) { Dist2 = myExtPC.SquareDistance(k); diff --git a/src/LocOpe/LocOpe_SplitShape.cxx b/src/LocOpe/LocOpe_SplitShape.cxx index 00535b0078..66d6eff4e8 100644 --- a/src/LocOpe/LocOpe_SplitShape.cxx +++ b/src/LocOpe/LocOpe_SplitShape.cxx @@ -77,13 +77,13 @@ static TopoDS_Shape ChooseDirection(const TopoDS_Shape&, const TopTools_ListOfShape&); inline Standard_Boolean SameUV(const gp_Pnt2d& P1, const gp_Pnt2d& P2, - const BRepAdaptor_Surface& theBAS)//const Standard_Real tol) + const Handle(BRepAdaptor_Surface)& theBAS)//const Standard_Real tol) { Standard_Boolean isSame = Standard_True; - if(theBAS.IsUPeriodic()) - isSame = (fabs(P1.X() - P2.X()) < theBAS.UPeriod() *0.5); - if(theBAS.IsVPeriodic()) - isSame = (isSame && (fabs(P1.Y() - P2.Y()) < theBAS.VPeriod() *0.5)); + if(theBAS->IsUPeriodic()) + isSame = (fabs(P1.X() - P2.X()) < theBAS->UPeriod() *0.5); + if(theBAS->IsVPeriodic()) + isSame = (isSame && (fabs(P1.Y() - P2.Y()) < theBAS->VPeriod() *0.5)); return isSame; //return P1.SquareDistance(P2) < tol * tol; //IFV } @@ -786,11 +786,11 @@ Standard_Boolean LocOpe_SplitShape::AddOpenWire(const TopoDS_Wire& W, lf.Remove(itl); BRep_Builder B; - BRepAdaptor_Surface BAS(FaceRef, Standard_False); + Handle(BRepAdaptor_Surface) BAS = new BRepAdaptor_Surface(FaceRef, Standard_False); - Standard_Boolean IsPeriodic = BAS.IsUPeriodic() || BAS.IsVPeriodic(); + Standard_Boolean IsPeriodic = BAS->IsUPeriodic() || BAS->IsVPeriodic(); - tol1 = Max(BAS.UResolution(tol1), BAS.VResolution(tol1)); + tol1 = Max(BAS->UResolution(tol1), BAS->VResolution(tol1)); if (wfirst.IsSame(wlast)) { // on cree 2 faces en remplacement de itl.Value() @@ -956,7 +956,7 @@ Standard_Boolean LocOpe_SplitShape::AddOpenWire(const TopoDS_Wire& W, } //fin MODIF. - tol1 = Max(BAS.UResolution(tol1), BAS.VResolution(tol1)); + tol1 = Max(BAS->UResolution(tol1), BAS->VResolution(tol1)); } @@ -1499,8 +1499,8 @@ Standard_Boolean ChoixUV(const TopoDS_Edge& Last, gp_Vec2d v2d; gp_Pnt aPCur, aPlst; - BRepAdaptor_Surface surf(F,Standard_False); // no restriction - surf.D0 (plst.X(), plst.Y(), aPlst); + Handle(BRepAdaptor_Surface) surf = new BRepAdaptor_Surface(F,Standard_False); // no restriction + surf->D0 (plst.X(), plst.Y(), aPlst); gp_Dir2d ref2d(dlst); @@ -1517,7 +1517,7 @@ Standard_Boolean ChoixUV(const TopoDS_Edge& Last, if(!SameUV(plst,p2d,surf)) continue; - surf.D0 (p2d.X(), p2d.Y(), aPCur); + surf->D0 (p2d.X(), p2d.Y(), aPCur); if (!Last.IsSame(anEdge)) { ang = ref2d.Angle(gp_Dir2d(v2d)); diff --git a/src/LocOpe/LocOpe_WiresOnShape.cxx b/src/LocOpe/LocOpe_WiresOnShape.cxx index 22b57eeb3d..e6380229fb 100644 --- a/src/LocOpe/LocOpe_WiresOnShape.cxx +++ b/src/LocOpe/LocOpe_WiresOnShape.cxx @@ -1295,15 +1295,15 @@ void FindInternalIntersections(const TopoDS_Edge& theEdge, // algorithms, for example, Boolean Operations. Standard_Real aTolVExt[2] = { ext * aTolV[0] * aTolV[0], ext * aTolV[1] * aTolV[1] }; - BRepAdaptor_Curve2d thePCurve(theEdge, theFace); + Handle(BRepAdaptor_Curve2d) thePCurve = new BRepAdaptor_Curve2d(theEdge, theFace); Bnd_Box2d theBox; BndLib_Add2dCurve::Add(thePCurve, BRep_Tool::Tolerance(theEdge), theBox); Standard_Real thePar [2]; Standard_Real aFpar, aLpar; const Handle(Geom_Curve)& theCurve = BRep_Tool::Curve(theEdge, thePar[0], thePar[1]); - GeomAdaptor_Curve theGAcurve(theCurve, thePar[0], thePar[1]); - Standard_Real aTolV2d[2] = { theGAcurve.Resolution(aTolV[0]), theGAcurve.Resolution(aTolV[1]) }; + Handle(GeomAdaptor_Curve) theGAcurve = new GeomAdaptor_Curve(theCurve, thePar[0], thePar[1]); + Standard_Real aTolV2d[2] = { theGAcurve->Resolution(aTolV[0]), theGAcurve->Resolution(aTolV[1]) }; aTolV2d[0] = Max(aTolV2d[0], Precision::PConfusion()); aTolV2d[1] = Max(aTolV2d[1], Precision::PConfusion()); Standard_Real aDistMax = Precision::Confusion() * Precision::Confusion(); @@ -1311,14 +1311,14 @@ void FindInternalIntersections(const TopoDS_Edge& theEdge, for (; Explo.More(); Explo.Next()) { const TopoDS_Edge& anEdge = TopoDS::Edge(Explo.Current()); - BRepAdaptor_Curve2d aPCurve(anEdge, theFace); + Handle(BRepAdaptor_Curve2d) aPCurve = new BRepAdaptor_Curve2d(anEdge, theFace); Bnd_Box2d aBox; BndLib_Add2dCurve::Add(aPCurve, BRep_Tool::Tolerance(anEdge), aBox); if (theBox.IsOut(aBox)) continue; const Handle(Geom_Curve)& aCurve = BRep_Tool::Curve(anEdge, aFpar, aLpar); - GeomAdaptor_Curve aGAcurve(aCurve, aFpar, aLpar); + Handle(GeomAdaptor_Curve) aGAcurve = new GeomAdaptor_Curve(aCurve, aFpar, aLpar); Extrema_ExtCC anExtrema(theGAcurve, aGAcurve, TolExt, TolExt); if (!anExtrema.IsDone() || !anExtrema.NbExt()) @@ -1498,7 +1498,7 @@ Standard_Boolean LocOpe_WiresOnShape::Add(const TopTools_SequenceOfShape& theEdg BRepBndLib::Add(aCurF, aBoxF); if (aBoxF.IsVoid()) continue; - BRepAdaptor_Surface anAdF(aCurF, Standard_False); + Handle(BRepAdaptor_Surface) anAdF = new BRepAdaptor_Surface(aCurF, Standard_False); NCollection_Handle aCheckStateTool; i = 1; diff --git a/src/MAT2d/MAT2d_Circuit.cxx b/src/MAT2d/MAT2d_Circuit.cxx index 8434853f67..dfa2ec5f3e 100644 --- a/src/MAT2d/MAT2d_Circuit.cxx +++ b/src/MAT2d/MAT2d_Circuit.cxx @@ -269,8 +269,8 @@ Standard_Boolean MAT2d_Circuit::IsSharpCorner(const Handle(Geom2d_Geometry)& Geo Handle(Geom2dAdaptor_Curve) HC1 = new Geom2dAdaptor_Curve(C1); Handle(Geom2dAdaptor_Curve) HC2 = new Geom2dAdaptor_Curve(C2); - Adaptor2d_OffsetCurve OC1(HC1, D, MilC1, C1->LastParameter()); - Adaptor2d_OffsetCurve OC2(HC2, D, C2->FirstParameter(), MilC2); + Handle(Adaptor2d_OffsetCurve) OC1 = new Adaptor2d_OffsetCurve(HC1, D, MilC1, C1->LastParameter()); + Handle(Adaptor2d_OffsetCurve) OC2 = new Adaptor2d_OffsetCurve(HC2, D, C2->FirstParameter(), MilC2); Geom2dInt_GInter Intersect; Intersect.Perform(OC1,OC2,Tol,Tol); diff --git a/src/MAT2d/MAT2d_MiniPath.cxx b/src/MAT2d/MAT2d_MiniPath.cxx index 7015f32860..210936d671 100644 --- a/src/MAT2d/MAT2d_MiniPath.cxx +++ b/src/MAT2d/MAT2d_MiniPath.cxx @@ -337,7 +337,7 @@ Handle(MAT2d_Connexion) MAT2d_MiniPath::MinimumL1L2 } } else if (Type1 == STANDARD_TYPE(Geom2d_CartesianPoint)) { - Geom2dAdaptor_Curve C2(Item2); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(Item2); Extrema_ExtPC2d Extremas(P1,C2); if (Extremas.IsDone()){ for (i = 1; i <= Extremas.NbExt(); i++) { @@ -355,7 +355,7 @@ Handle(MAT2d_Connexion) MAT2d_MiniPath::MinimumL1L2 } } else if (Type2 == STANDARD_TYPE(Geom2d_CartesianPoint)) { - Geom2dAdaptor_Curve C1(Item1); + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(Item1); Extrema_ExtPC2d Extremas(P2,C1); if (Extremas.IsDone()){ for (i=1;i<=Extremas.NbExt();i++) { @@ -373,8 +373,8 @@ Handle(MAT2d_Connexion) MAT2d_MiniPath::MinimumL1L2 } } else { - Geom2dAdaptor_Curve C1(Item1); - Geom2dAdaptor_Curve C2(Item2); + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(Item1); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(Item2); Extrema_ExtCC2d Extremas(C1,C2); if (!Extremas.IsParallel() && Extremas.IsDone()){ for ( i=1; i <= Extremas.NbExt(); i++) { diff --git a/src/MAT2d/MAT2d_Tool2d.cxx b/src/MAT2d/MAT2d_Tool2d.cxx index c2b73d8441..11eef68104 100644 --- a/src/MAT2d/MAT2d_Tool2d.cxx +++ b/src/MAT2d/MAT2d_Tool2d.cxx @@ -590,10 +590,10 @@ Standard_Boolean MAT2d_Tool2d::Projection (const Standard_Integer IEdge , //--------------------------------------------------------------------- // Constuction de la courbe pour les extremas et ajustement des bornes. //--------------------------------------------------------------------- - Geom2dAdaptor_Curve C1(Curve); - GeomAbs_CurveType TypeC1 = C1.GetType(); + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(Curve); + GeomAbs_CurveType TypeC1 = C1->GetType(); if (TypeC1 == GeomAbs_Circle) { - Standard_Real R = C1.Circle().Radius(); + Standard_Real R = C1->Circle().Radius(); Standard_Real EpsCirc = 100.*Eps; if ( R < 1.) EpsCirc = Eps/R; if (((ParamMax - ParamMin + 2*EpsCirc) < 2*M_PI)) { @@ -622,7 +622,7 @@ Standard_Boolean MAT2d_Tool2d::Projection (const Standard_Integer IEdge , } else { if (TypeC1 == GeomAbs_Circle) { - Distance = C1.Circle().Radius(); + Distance = C1->Circle().Radius(); } } } @@ -1247,8 +1247,8 @@ static void SetTrim(Bisector_Bisec& Bis, const Handle(Geom2d_Curve)& Line1) gp_Pnt2d FirstPointBisector = Bisector->Value(UB1); Standard_Real UTrim = Precision::Infinite(); - Geom2dAdaptor_Curve AdapBisector(Bisector); - Geom2dAdaptor_Curve AdapLine1 (Line1); + Handle(Geom2dAdaptor_Curve) AdapBisector = new Geom2dAdaptor_Curve(Bisector); + Handle(Geom2dAdaptor_Curve) AdapLine1 = new Geom2dAdaptor_Curve(Line1); Intersect.Perform(AdapBisector, Domain1, AdapLine1, Tolerance, Tolerance); diff --git a/src/ProjLib/ProjLib_CompProjectedCurve.cxx b/src/ProjLib/ProjLib_CompProjectedCurve.cxx index af709f85e3..bfd0fb3fcd 100644 --- a/src/ProjLib/ProjLib_CompProjectedCurve.cxx +++ b/src/ProjLib/ProjLib_CompProjectedCurve.cxx @@ -102,7 +102,7 @@ struct SplitDS Standard_Real myPerMaxParam; Standard_Integer myPeriodicDir; - Adaptor3d_CurveOnSurface* myExtCCCurve1; + Handle(Adaptor3d_CurveOnSurface) myExtCCCurve1; Standard_Real myExtCCLast2DParam; Extrema_ExtPS *myExtPS; @@ -452,7 +452,7 @@ static Standard_Boolean ExactBound(gp_Pnt& Sol, gp_Pnt P; P = Seq.Last (); Seq.Remove (Seq.Length ()); - ProjLib_PrjResolve aPrjPS (*Curve, *Surface, Standard_Integer (P.Z ())); + ProjLib_PrjResolve aPrjPS (Curve, Surface, Standard_Integer (P.Z ())); if (Standard_Integer (P.Z ()) == 2) { aPrjPS.Perform (t, P.X (), V0, gp_Pnt2d (Tol, TolV), @@ -501,7 +501,7 @@ static void DichExactBound(gp_Pnt& Sol, gp_Pnt2d POnS; U0 = Sol.Y(); V0 = Sol.Z(); - ProjLib_PrjResolve aPrjPS (*Curve, *Surface, 1); + ProjLib_PrjResolve aPrjPS (Curve, Surface, 1); Standard_Real aNotSol = NotSol; while (fabs(Sol.X() - aNotSol) > Tol) @@ -543,10 +543,10 @@ static Standard_Boolean InitialPoint(const gp_Pnt& Point, Standard_Real theMaxDist) { - ProjLib_PrjResolve aPrjPS (*C, *S, 1); + ProjLib_PrjResolve aPrjPS (C, S, 1); Standard_Real ParU,ParV; Extrema_ExtPS aExtPS; - aExtPS.Initialize (*S, S->FirstUParameter(), + aExtPS.Initialize (S, S->FirstUParameter(), S->LastUParameter(), S->FirstVParameter(), S->LastVParameter(), TolU, TolV); @@ -730,7 +730,7 @@ void ProjLib_CompProjectedCurve::Init() isSplitsComputed = Standard_False; const Standard_Real aTolExt = Precision::PConfusion(); - Extrema_ExtCS CExt (*myCurve, *mySurface, aTolExt, aTolExt); + Extrema_ExtCS CExt (myCurve, mySurface, aTolExt, aTolExt); if (CExt.IsDone() && CExt.NbExt()) { // Search for the minimum solution. @@ -768,7 +768,7 @@ void ProjLib_CompProjectedCurve::Init() gp_Pnt2d aLowBorder(mySurface->FirstUParameter(),mySurface->FirstVParameter()); gp_Pnt2d aUppBorder(mySurface->LastUParameter(), mySurface->LastVParameter()); gp_Pnt2d aTol(myTolU, myTolV); - ProjLib_PrjResolve aPrjPS (*myCurve, *mySurface, 1); + ProjLib_PrjResolve aPrjPS (myCurve, mySurface, 1); t = FirstU; Standard_Boolean new_part; @@ -1661,7 +1661,7 @@ void ProjLib_CompProjectedCurve::D0(const Standard_Real U,gp_Pnt2d& P) const } //End of cubic interpolation - ProjLib_PrjResolve aPrjPS (*myCurve, *mySurface, 1); + ProjLib_PrjResolve aPrjPS (myCurve, mySurface, 1); aPrjPS.Perform(U, U0, V0, gp_Pnt2d(myTolU, myTolV), gp_Pnt2d(mySurface->FirstUParameter(), mySurface->FirstVParameter()), gp_Pnt2d(mySurface->LastUParameter(), mySurface->LastVParameter()), FuncTol); @@ -1670,7 +1670,7 @@ void ProjLib_CompProjectedCurve::D0(const Standard_Real U,gp_Pnt2d& P) const else { gp_Pnt thePoint = myCurve->Value(U); - Extrema_ExtPS aExtPS(thePoint, *mySurface, myTolU, myTolV); + Extrema_ExtPS aExtPS(thePoint, mySurface, myTolU, myTolV); if (aExtPS.IsDone() && aExtPS.NbExt()) { Standard_Integer k, Nend, imin = 1; @@ -1911,7 +1911,7 @@ void ProjLib_CompProjectedCurve::BuildIntervals(const GeomAbs_Shape S) const Standard_Real V; V = (mySequence->Value(i)->Value(j).Z() + mySequence->Value(i)->Value(j +1).Z())/2; - ProjLib_PrjResolve Solver (*myCurve, *mySurface, 2); + ProjLib_PrjResolve Solver (myCurve, mySurface, 2); gp_Vec2d D; gp_Pnt Triple; @@ -1977,7 +1977,7 @@ void ProjLib_CompProjectedCurve::BuildIntervals(const GeomAbs_Shape S) const Standard_Real U; U = (mySequence->Value(i)->Value(j).Y() + mySequence->Value(i)->Value(j +1).Y())/2; - ProjLib_PrjResolve Solver (*myCurve, *mySurface, 3); + ProjLib_PrjResolve Solver (myCurve, mySurface, 3); gp_Vec2d D; gp_Pnt Triple; @@ -2253,7 +2253,7 @@ void BuildCurveSplits(const Handle(Adaptor3d_Curve) &theCurve, SplitDS aDS(theCurve, theSurface, theSplits); Extrema_ExtPS anExtPS; - anExtPS.Initialize(*theSurface, + anExtPS.Initialize(theSurface, theSurface->FirstUParameter(), theSurface->LastUParameter(), theSurface->FirstVParameter(), theSurface->LastVParameter(), theTolU, theTolV); @@ -2300,8 +2300,8 @@ void SplitOnDirection(SplitDS & theSplitDS) // Create line which is represent periodic border. Handle(Geom2d_Curve) aC2GC = new Geom2d_Line(aStartPnt, aDir); Handle(Geom2dAdaptor_Curve) aC = new Geom2dAdaptor_Curve(aC2GC, 0, aLast2DParam); - Adaptor3d_CurveOnSurface aCOnS(aC, theSplitDS.mySurface); - theSplitDS.myExtCCCurve1 = &aCOnS; + Handle(Adaptor3d_CurveOnSurface) aCOnS = new Adaptor3d_CurveOnSurface(aC, theSplitDS.mySurface); + theSplitDS.myExtCCCurve1 = aCOnS; theSplitDS.myExtCCLast2DParam = aLast2DParam; FindSplitPoint(theSplitDS, @@ -2320,8 +2320,8 @@ void FindSplitPoint(SplitDS &theSplitDS, { // Make extrema copy to avoid dependencies between different levels of the recursion. Extrema_ExtCC anExtCC; - anExtCC.SetCurve(1, *theSplitDS.myExtCCCurve1); - anExtCC.SetCurve(2, *theSplitDS.myCurve); + anExtCC.SetCurve(1, theSplitDS.myExtCCCurve1); + anExtCC.SetCurve(2, theSplitDS.myCurve); anExtCC.SetSingleSolutionFlag (Standard_True); // Search only one solution since multiple invocations are needed. anExtCC.SetRange(1, 0, theSplitDS.myExtCCLast2DParam); anExtCC.SetRange(2, theMinParam, theMaxParam); diff --git a/src/ProjLib/ProjLib_ComputeApprox.cxx b/src/ProjLib/ProjLib_ComputeApprox.cxx index 74cf49ea38..762f5b205b 100644 --- a/src/ProjLib/ProjLib_ComputeApprox.cxx +++ b/src/ProjLib/ProjLib_ComputeApprox.cxx @@ -207,7 +207,7 @@ static Standard_Real Function_ComputeStep( Standard_Real W1, W2; W1 = myCurve->FirstParameter(); W2 = myCurve->LastParameter(); - Standard_Real L = GCPnts_AbscissaPoint::Length (*myCurve); + Standard_Real L = GCPnts_AbscissaPoint::Length (myCurve); Standard_Integer nbp = RealToInt(L / (R*M_PI_4)) + 1; nbp = Max(nbp, 3); Standard_Real Step = (W2 - W1) / (nbp - 1); diff --git a/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx b/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx index 3fe5728fcc..7f5ab6669b 100644 --- a/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx +++ b/src/ProjLib/ProjLib_ComputeApproxOnPolarSurface.cxx @@ -104,7 +104,7 @@ static void computePeriodicity(const Handle(Adaptor3d_Surface)& theSurf, // Param space may be reduced in case of rectangular trimmed surface, // in this case really trimmed bounds should be set as unperiodic. Standard_Real aTrimF, aTrimL, aBaseF, aBaseL, aDummyF, aDummyL; - Handle(Geom_Surface) aS = GeomAdaptor::MakeSurface (*theSurf, Standard_False); // Not trim. + Handle(Geom_Surface) aS = GeomAdaptor::MakeSurface (theSurf, Standard_False); // Not trim. // U param space. if (theSurf->IsUPeriodic()) { @@ -341,21 +341,21 @@ static gp_Pnt2d Function_Value(const Standard_Real theU, if((Usup - U0) > uLittle) uSupLi = U0 + uLittle; else uSupLi = Usup; if((Vsup - V0) > vLittle) vSupLi = V0 + vLittle; else vSupLi = Vsup; - GeomAdaptor_Surface SurfLittle; + Handle(GeomAdaptor_Surface) SurfLittle = new GeomAdaptor_Surface; if (Type == GeomAbs_BSplineSurface) { Handle(Geom_Surface) GBSS(theData.mySurf->BSpline()); - SurfLittle.Load(GBSS, uInfLi, uSupLi, vInfLi, vSupLi); + SurfLittle->Load(GBSS, uInfLi, uSupLi, vInfLi, vSupLi); } else if (Type == GeomAbs_BezierSurface) { Handle(Geom_Surface) GS(theData.mySurf->Bezier()); - SurfLittle.Load(GS, uInfLi, uSupLi, vInfLi, vSupLi); + SurfLittle->Load(GS, uInfLi, uSupLi, vInfLi, vSupLi); } else if (Type == GeomAbs_OffsetSurface) { - Handle(Geom_Surface) GS = GeomAdaptor::MakeSurface (*theData.mySurf); - SurfLittle.Load(GS, uInfLi, uSupLi, vInfLi, vSupLi); + Handle(Geom_Surface) GS = GeomAdaptor::MakeSurface (theData.mySurf); + SurfLittle->Load(GS, uInfLi, uSupLi, vInfLi, vSupLi); } else { @@ -924,7 +924,7 @@ Handle(Adaptor2d_Curve2d) //Standard_Real Tol3d = 100*myTolerance; // At random Balthazar. Standard_Integer NbOfPnts = 61; - GCPnts_QuasiUniformAbscissa QUA (*Curve,NbOfPnts); + GCPnts_QuasiUniformAbscissa QUA (Curve, NbOfPnts); NbOfPnts = QUA.NbPoints(); TColgp_Array1OfPnt Pts(1,NbOfPnts); TColStd_Array1OfReal Param(1,NbOfPnts); @@ -1085,7 +1085,7 @@ Handle(Adaptor2d_Curve2d) Standard_Boolean areManyZeros = Standard_False; pntproj = Pts(1); - Extrema_ExtPS aExtPS(pntproj, *Surf, TolU, TolV) ; + Extrema_ExtPS aExtPS(pntproj, Surf, TolU, TolV) ; Standard_Real aMinSqDist = RealLast(); if (aExtPS.IsDone()) { @@ -1100,7 +1100,7 @@ Handle(Adaptor2d_Curve2d) { TolU = Min(TolU, Precision::PConfusion()); TolV = Min(TolV, Precision::PConfusion()); - aExtPS.Initialize(*Surf, + aExtPS.Initialize(Surf, Surf->FirstUParameter(), Surf->LastUParameter(), Surf->FirstVParameter(), Surf->LastVParameter(), TolU, TolV); @@ -1160,7 +1160,7 @@ Handle(Adaptor2d_Curve2d) Standard_Integer indExt = 0; Standard_Integer iT = 1 + (NbOfPnts - 1)/5*i; pntproj = Pts(iT); - Extrema_ExtPS aTPS( pntproj, *Surf, TolU, TolV ); + Extrema_ExtPS aTPS( pntproj, Surf, TolU, TolV ); Dist2Min = 1.e+200; if( aTPS.IsDone() && aTPS.NbExt() >= 1 ) { for( j = 1 ; j <= aTPS.NbExt() ; j++ ) { @@ -1187,7 +1187,7 @@ Handle(Adaptor2d_Curve2d) for (j = tPp + 1; j <= NbOfPnts; ++j) { pntproj = Pts(j); - Extrema_ExtPS aTPS( pntproj, *Surf, TolU, TolV ); + Extrema_ExtPS aTPS( pntproj, Surf, TolU, TolV ); Dist2Min = RealLast(); if( aTPS.IsDone() && aTPS.NbExt() >= 1 ) { Standard_Integer indExt = 0; @@ -1261,7 +1261,7 @@ Handle(Adaptor2d_Curve2d) myProjIsDone = Standard_False; Dist2Min = RealLast(); pntproj = Pts(i); - Extrema_GenLocateExtPS aLocateExtPS (*Surf, TolU, TolV); + Extrema_GenLocateExtPS aLocateExtPS (Surf, TolU, TolV); aLocateExtPS.Perform(pntproj, U0, V0); if (aLocateExtPS.IsDone()) @@ -1281,7 +1281,7 @@ Handle(Adaptor2d_Curve2d) } else { - Extrema_ExtPS aGlobalExtr(pntproj, *Surf, TolU, TolV); + Extrema_ExtPS aGlobalExtr(pntproj, Surf, TolU, TolV); if (aGlobalExtr.IsDone()) { Standard_Real LocalMinSqDist = RealLast(); @@ -1367,7 +1367,7 @@ Handle(Adaptor2d_Curve2d) else Uaux = 2*aUsup - U0 - uperiod; - Extrema_GenLocateExtPS locext (*Surf, TolU, TolV); + Extrema_GenLocateExtPS locext (Surf, TolU, TolV); locext.Perform(pntproj, Uaux, V0); if (locext.IsDone()) @@ -1398,7 +1398,7 @@ Handle(Adaptor2d_Curve2d) else Vaux = 2*aVsup - V0 - vperiod; - Extrema_GenLocateExtPS locext (*Surf, TolU, TolV); + Extrema_GenLocateExtPS locext (Surf, TolU, TolV); locext.Perform(pntproj, U0, Vaux); if (locext.IsDone()) @@ -1431,7 +1431,7 @@ Handle(Adaptor2d_Curve2d) else Vaux = 2*Vsup - V0 - vperiod; - Extrema_GenLocateExtPS locext (*Surf, TolU, TolV); + Extrema_GenLocateExtPS locext (Surf, TolU, TolV); locext.Perform(pntproj, Uaux, Vaux); if (locext.IsDone()) @@ -1458,7 +1458,7 @@ Handle(Adaptor2d_Curve2d) } } if(!myProjIsDone) { - Extrema_ExtPS ext(pntproj, *Surf, TolU, TolV) ; + Extrema_ExtPS ext(pntproj, Surf, TolU, TolV) ; if (ext.IsDone()) { Dist2Min = ext.SquareDistance(1); Standard_Integer aGoodValue = 1; @@ -1650,7 +1650,7 @@ Handle(Geom2d_BSplineCurve) myProjIsDone = Standard_False; Dist2Min = IntegerLast(); - Extrema_GenLocateExtPS extrloc (*Surf, TolU, TolV); + Extrema_GenLocateExtPS extrloc (Surf, TolU, TolV); extrloc.Perform(BSC->Pole(i), (p11.X()+p22.X())/2, (p11.Y()+p22.Y())/2); if (extrloc.IsDone()) { @@ -1690,7 +1690,7 @@ Handle(Geom2d_BSplineCurve) for(i = 1;i <= Curve->NbPoles();i++) { Dist2Min = IntegerLast(); - Extrema_GenLocateExtPS extrloc (*Surf, TolU, TolV); + Extrema_GenLocateExtPS extrloc (Surf, TolU, TolV); extrloc.Perform(BC->Pole(i), 0.5, 0.5); if (extrloc.IsDone()) { @@ -1750,7 +1750,7 @@ Handle(Geom2d_BSplineCurve) myProjIsDone = Standard_False; Dist2Min = IntegerLast(); - Extrema_GenLocateExtPS extrloc (*Surf, TolU, TolV); + Extrema_GenLocateExtPS extrloc (Surf, TolU, TolV); extrloc.Perform(BSC->Pole(i), (p11.X()+p22.X())/2, (p11.Y()+p22.Y())/2); if (extrloc.IsDone()) { @@ -1790,7 +1790,7 @@ Handle(Geom2d_BSplineCurve) for(i = 1;i <= Curve->NbPoles();i++) { Dist2Min = IntegerLast(); - Extrema_GenLocateExtPS extrloc (*Surf, TolU, TolV); + Extrema_GenLocateExtPS extrloc (Surf, TolU, TolV); extrloc.Perform(BC->Pole(i), 0.5, 0.5); if (extrloc.IsDone()) { diff --git a/src/ProjLib/ProjLib_PrjFunc.cxx b/src/ProjLib/ProjLib_PrjFunc.cxx index 7daac35f73..a11808adde 100644 --- a/src/ProjLib/ProjLib_PrjFunc.cxx +++ b/src/ProjLib/ProjLib_PrjFunc.cxx @@ -23,7 +23,7 @@ #include #include -ProjLib_PrjFunc::ProjLib_PrjFunc (const Adaptor3d_Curve* C, const Standard_Real FixVal, const Adaptor3d_Surface* S, const Standard_Integer Fix) +ProjLib_PrjFunc::ProjLib_PrjFunc (const Handle(Adaptor3d_Curve) C, const Standard_Real FixVal, const Handle(Adaptor3d_Surface) S, const Standard_Integer Fix) : myCurve(C), mySurface(S), myt(0), myU(0), myV(0), myFix(Fix) { myNorm=Min(1.,Min(mySurface->UResolution(1.),mySurface->VResolution(1.))); diff --git a/src/ProjLib/ProjLib_PrjFunc.hxx b/src/ProjLib/ProjLib_PrjFunc.hxx index 81f0b54ea7..5a58115839 100644 --- a/src/ProjLib/ProjLib_PrjFunc.hxx +++ b/src/ProjLib/ProjLib_PrjFunc.hxx @@ -33,7 +33,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT ProjLib_PrjFunc(const Adaptor3d_Curve* C, const Standard_Real FixVal, const Adaptor3d_Surface* S, const Standard_Integer Fix); + Standard_EXPORT ProjLib_PrjFunc(const Handle(Adaptor3d_Curve) C, const Standard_Real FixVal, const Handle(Adaptor3d_Surface) S, const Standard_Integer Fix); //! returns the number of variables of the function. Standard_EXPORT Standard_Integer NbVariables() const; @@ -64,8 +64,8 @@ public: private: - const Adaptor3d_Curve* myCurve; - const Adaptor3d_Surface* mySurface; + const Handle(Adaptor3d_Curve) myCurve; + const Handle(Adaptor3d_Surface) mySurface; Standard_Real myt; Standard_Real myU; Standard_Real myV; diff --git a/src/ProjLib/ProjLib_PrjResolve.cxx b/src/ProjLib/ProjLib_PrjResolve.cxx index 26e133be41..35f559f509 100644 --- a/src/ProjLib/ProjLib_PrjResolve.cxx +++ b/src/ProjLib/ProjLib_PrjResolve.cxx @@ -24,14 +24,14 @@ #include #include -ProjLib_PrjResolve::ProjLib_PrjResolve(const Adaptor3d_Curve& C,const Adaptor3d_Surface& S,const Standard_Integer Fix) -: myDone(Standard_False), +ProjLib_PrjResolve::ProjLib_PrjResolve(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Integer Fix) +: myCurve(C), + mySurface(S), + myDone(Standard_False), myFix(Fix) { if (myFix > 3 || myFix < 1) throw Standard_ConstructionError(); mySolution = gp_Pnt2d(0.,0.); - myCurve = &C; - mySurface = &S; } // void ProjLib_PrjResolve::Perform(const Standard_Real t, const Standard_Real U, const Standard_Real V, const gp_Pnt2d& Tol2d, const gp_Pnt2d& Inf, const gp_Pnt2d& Sup, const Standard_Real FuncTol, const Standard_Boolean StrictInside) diff --git a/src/ProjLib/ProjLib_PrjResolve.hxx b/src/ProjLib/ProjLib_PrjResolve.hxx index aea21f1603..ef96e8ac20 100644 --- a/src/ProjLib/ProjLib_PrjResolve.hxx +++ b/src/ProjLib/ProjLib_PrjResolve.hxx @@ -33,7 +33,7 @@ public: DEFINE_STANDARD_ALLOC - Standard_EXPORT ProjLib_PrjResolve(const Adaptor3d_Curve& C, const Adaptor3d_Surface& S, const Standard_Integer Fix); + Standard_EXPORT ProjLib_PrjResolve(const Handle(Adaptor3d_Curve)& C, const Handle(Adaptor3d_Surface)& S, const Standard_Integer Fix); //! Calculates the ort from C(t) to S with a close point. //! The close point is defined by the parameter values U0 and V0. @@ -49,8 +49,8 @@ public: private: - const Adaptor3d_Curve* myCurve; - const Adaptor3d_Surface* mySurface; + const Handle(Adaptor3d_Curve) myCurve; + const Handle(Adaptor3d_Surface) mySurface; Standard_Boolean myDone; gp_Pnt2d mySolution; Standard_Integer myFix; diff --git a/src/ProjLib/ProjLib_ProjectOnSurface.cxx b/src/ProjLib/ProjLib_ProjectOnSurface.cxx index de4cf1f20a..5df1c98bd8 100644 --- a/src/ProjLib/ProjLib_ProjectOnSurface.cxx +++ b/src/ProjLib/ProjLib_ProjectOnSurface.cxx @@ -83,8 +83,8 @@ class ProjLib_OnSurface : public AppCont_Function { public: - ProjLib_OnSurface(const Handle(Adaptor3d_Curve) & C, - const Handle(Adaptor3d_Surface) & S) + ProjLib_OnSurface(const Handle(Adaptor3d_Curve) &C, + const Handle(Adaptor3d_Surface) &S) : myCurve(C) { myNbPnt = 1; @@ -92,7 +92,7 @@ public: Standard_Real U = myCurve->FirstParameter(); gp_Pnt P = myCurve->Value(U); Standard_Real Tol = Precision::PConfusion(); - myExtPS = new Extrema_ExtPS (P, *S, Tol, Tol); + myExtPS = new Extrema_ExtPS (P, S, Tol, Tol); } ~ProjLib_OnSurface() { delete myExtPS; } diff --git a/src/ProjLib/ProjLib_ProjectedCurve.cxx b/src/ProjLib/ProjLib_ProjectedCurve.cxx index f31bc78d57..a957572581 100644 --- a/src/ProjLib/ProjLib_ProjectedCurve.cxx +++ b/src/ProjLib/ProjLib_ProjectedCurve.cxx @@ -88,7 +88,7 @@ static Standard_Real ComputeTolV(const Handle(Adaptor3d_Surface)& theSurf, //purpose : //======================================================================= -static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, +static Standard_Boolean IsoIsDeg (const Handle(Adaptor3d_Surface)& S, const Standard_Real Param, const GeomAbs_IsoType IT, const Standard_Real TolMin, @@ -96,10 +96,10 @@ static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, { Standard_Real U1=0.,U2=0.,V1=0.,V2=0.,T; Standard_Boolean Along = Standard_True; - U1 = S.FirstUParameter(); - U2 = S.LastUParameter(); - V1 = S.FirstVParameter(); - V2 = S.LastVParameter(); + U1 = S->FirstUParameter(); + U2 = S->LastUParameter(); + V1 = S->FirstVParameter(); + V2 = S->LastVParameter(); gp_Vec D1U,D1V; gp_Pnt P; Standard_Real Step,D1NormMax; @@ -109,7 +109,7 @@ static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, D1NormMax=0.; for (T=U1;T<=U2;T=T+Step) { - S.D1(T,Param,P,D1U,D1V); + S->D1(T,Param,P,D1U,D1V); D1NormMax=Max(D1NormMax,D1U.Magnitude()); } @@ -122,7 +122,7 @@ static Standard_Boolean IsoIsDeg (const Adaptor3d_Surface& S, D1NormMax=0.; for (T=V1;T<=V2;T=T+Step) { - S.D1(Param,T,P,D1U,D1V); + S->D1(Param,T,P,D1U,D1V); D1NormMax=Max(D1NormMax,D1V.Magnitude()); } @@ -512,34 +512,33 @@ void ProjLib_ProjectedCurve::Perform(const Handle(Adaptor3d_Curve)& C) l = myCurve->LastParameter(); dt = (l - f) * eps; - const Adaptor3d_Surface& S = *mySurface; - U1 = S.FirstUParameter(); - U2 = S.LastUParameter(); - V1 = S.FirstVParameter(); - V2 = S.LastVParameter(); + U1 = mySurface->FirstUParameter(); + U2 = mySurface->LastUParameter(); + V1 = mySurface->FirstVParameter(); + V2 = mySurface->LastVParameter(); - if(IsoIsDeg(S, U1, GeomAbs_IsoU, 0., myTolerance)) + if(IsoIsDeg(mySurface, U1, GeomAbs_IsoU, 0., myTolerance)) { //Surface has pole at U = Umin gp_Pnt Pole = mySurface->Value(U1, V1); TrimC3d(myCurve, IsTrimmed, dt, Pole, SingularCase, 1, TolConf); } - if(IsoIsDeg(S, U2, GeomAbs_IsoU, 0., myTolerance)) + if(IsoIsDeg(mySurface, U2, GeomAbs_IsoU, 0., myTolerance)) { //Surface has pole at U = Umax gp_Pnt Pole = mySurface->Value(U2, V1); TrimC3d(myCurve, IsTrimmed, dt, Pole, SingularCase, 2, TolConf); } - if(IsoIsDeg(S, V1, GeomAbs_IsoV, 0., myTolerance)) + if(IsoIsDeg(mySurface, V1, GeomAbs_IsoV, 0., myTolerance)) { //Surface has pole at V = Vmin gp_Pnt Pole = mySurface->Value(U1, V1); TrimC3d(myCurve, IsTrimmed, dt, Pole, SingularCase, 3, TolConf); } - if(IsoIsDeg(S, V2, GeomAbs_IsoV, 0., myTolerance)) + if(IsoIsDeg(mySurface, V2, GeomAbs_IsoV, 0., myTolerance)) { //Surface has pole at V = Vmax gp_Pnt Pole = mySurface->Value(U1, V2); @@ -613,7 +612,7 @@ void ProjLib_ProjectedCurve::Perform(const Handle(Adaptor3d_Curve)& C) f = f + dt; myCurve = myCurve->Trim(f, l, Precision::Confusion()); // Searching the parameter on the basis curve for surface of revolution - Extrema_ExtPC anExtr(P, *mySurface->BasisCurve(), myTolerance); + Extrema_ExtPC anExtr(P, mySurface->BasisCurve(), myTolerance); if (anExtr.IsDone()) { Standard_Real aMinDist = RealLast(); @@ -639,7 +638,7 @@ void ProjLib_ProjectedCurve::Perform(const Handle(Adaptor3d_Curve)& C) l = l - dt; myCurve = myCurve->Trim(f, l, Precision::Confusion()); // Searching the parameter on the basis curve for surface of revolution - Extrema_ExtPC anExtr(P, *mySurface->BasisCurve(), myTolerance); + Extrema_ExtPC anExtr(P, mySurface->BasisCurve(), myTolerance); if (anExtr.IsDone()) { Standard_Real aMinDist = RealLast(); diff --git a/src/PrsDim/PrsDim.cxx b/src/PrsDim/PrsDim.cxx index b103684ade..f511cabb37 100644 --- a/src/PrsDim/PrsDim.cxx +++ b/src/PrsDim/PrsDim.cxx @@ -227,7 +227,7 @@ Standard_Boolean PrsDim::ComputeGeometry (const TopoDS_Edge& theEdge, Standard_Boolean& theIsInfinite) { BRepAdaptor_Curve anAdaptor (theEdge); - theCurve = Handle(Geom_Curve)::DownCast (anAdaptor.Curve().Curve()->Transformed (anAdaptor.Trsf())); + theCurve = Handle(Geom_Curve)::DownCast (anAdaptor.Curve()->Curve()->Transformed (anAdaptor.Trsf())); if (theCurve.IsNull()) { return Standard_False; @@ -276,7 +276,7 @@ Standard_Boolean PrsDim::ComputeGeometry (const TopoDS_Edge& theEdge, } BRepAdaptor_Curve aCurveAdaptor (theEdge); - theCurve = Handle(Geom_Curve)::DownCast (aCurveAdaptor.Curve().Curve()->Transformed (aCurveAdaptor.Trsf())); + theCurve = Handle(Geom_Curve)::DownCast (aCurveAdaptor.Curve()->Curve()->Transformed (aCurveAdaptor.Trsf())); if (theCurve.IsNull()) { return Standard_False; @@ -549,9 +549,9 @@ Standard_Boolean PrsDim::ComputeGeometry (const TopoDS_Edge& theFirstEdge, BRepAdaptor_Curve aSecondAdaptor (theSecondEdge); theFirstCurve = Handle(Geom_Curve)::DownCast - (aFirstAdaptor.Curve().Curve()->Transformed (aFirstAdaptor.Trsf())); + (aFirstAdaptor.Curve()->Curve()->Transformed (aFirstAdaptor.Trsf())); theSecondCurve = Handle(Geom_Curve)::DownCast - (aSecondAdaptor.Curve().Curve()->Transformed (aSecondAdaptor.Trsf())); + (aSecondAdaptor.Curve()->Curve()->Transformed (aSecondAdaptor.Trsf())); if (theFirstCurve->IsInstance (STANDARD_TYPE (Geom_TrimmedCurve))) { @@ -752,7 +752,7 @@ Standard_Boolean PrsDim::GetPlaneFromFace (const TopoDS_Face& aFace, else surf2 = new BRepAdaptor_Surface( surf1 ); - aSurf = surf1.Surface().Surface(); + aSurf = surf1.Surface()->Surface(); // aSurf->Transform(surf1.Trsf()) ; aSurf = Handle( Geom_Surface )::DownCast( aSurf->Transformed( surf1.Trsf() ) ); diff --git a/src/PrsDim/PrsDim_AngleDimension.cxx b/src/PrsDim/PrsDim_AngleDimension.cxx index 8d480a9686..027e651ac6 100644 --- a/src/PrsDim/PrsDim_AngleDimension.cxx +++ b/src/PrsDim/PrsDim_AngleDimension.cxx @@ -396,7 +396,7 @@ void PrsDim_AngleDimension::DrawArc (const Handle(Prs3d_Presentation)& thePresen // generate points with specified deflection const Handle(Geom_TrimmedCurve)& anArcCurve = aConstructArc.Value(); - GeomAdaptor_Curve anArcAdaptor (anArcCurve, anArcCurve->FirstParameter(), anArcCurve->LastParameter()); + Handle(GeomAdaptor_Curve) anArcAdaptor = new GeomAdaptor_Curve(anArcCurve, anArcCurve->FirstParameter(), anArcCurve->LastParameter()); // compute number of discretization elements in old-fanshioned way gp_Vec aCenterToFirstVec (theCenter, theFirstAttach); @@ -421,7 +421,7 @@ void PrsDim_AngleDimension::DrawArc (const Handle(Prs3d_Presentation)& thePresen // load data into arrays for (Standard_Integer aPntIt = 1; aPntIt <= aMakePnts.NbPoints(); ++aPntIt) { - gp_Pnt aPnt = anArcAdaptor.Value (aMakePnts.Parameter (aPntIt)); + gp_Pnt aPnt = anArcAdaptor->Value (aMakePnts.Parameter (aPntIt)); aPrimSegments->AddVertex (aPnt); diff --git a/src/PrsDim/PrsDim_EqualDistanceRelation.cxx b/src/PrsDim/PrsDim_EqualDistanceRelation.cxx index cea28b70a9..75cbfd4414 100644 --- a/src/PrsDim/PrsDim_EqualDistanceRelation.cxx +++ b/src/PrsDim/PrsDim_EqualDistanceRelation.cxx @@ -245,7 +245,7 @@ void PrsDim_EqualDistanceRelation::ComputeSelection (const Handle( SelectMgr_Sel } else if (aCurve.GetType() == GeomAbs_Circle) { - Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve().Curve()); + Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve()->Curve()); Standard_Real FirstPar = ElCLib::Parameter(aCircle->Circ(), myAttachPoint1), LastPar = ElCLib::Parameter(aCircle->Circ(), myPoint1); if (LastPar < FirstPar ) LastPar += M_PI * 2; @@ -270,7 +270,7 @@ void PrsDim_EqualDistanceRelation::ComputeSelection (const Handle( SelectMgr_Sel } else if (aCurve.GetType() == GeomAbs_Circle) { - Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve().Curve()); + Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve()->Curve()); Standard_Real FirstPar = ElCLib::Parameter(aCircle->Circ(), myAttachPoint2), LastPar = ElCLib::Parameter(aCircle->Circ(), myPoint2); if (LastPar < FirstPar) LastPar += M_PI * 2; @@ -295,7 +295,7 @@ void PrsDim_EqualDistanceRelation::ComputeSelection (const Handle( SelectMgr_Sel } else if (aCurve.GetType() == GeomAbs_Circle) { - Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve().Curve()); + Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve()->Curve()); Standard_Real FirstPar = ElCLib::Parameter(aCircle->Circ(), myAttachPoint3), LastPar = ElCLib::Parameter(aCircle->Circ(), myPoint3); if (LastPar < FirstPar) LastPar += M_PI * 2; @@ -325,7 +325,7 @@ void PrsDim_EqualDistanceRelation::ComputeSelection (const Handle( SelectMgr_Sel } else if (aCurve.GetType() == GeomAbs_Circle) { - Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve().Curve()); + Handle(Geom_Circle) aCircle = Handle(Geom_Circle)::DownCast(aCurve.Curve()->Curve()); Standard_Real FirstPar = ElCLib::Parameter(aCircle->Circ(), myAttachPoint4), LastPar = ElCLib::Parameter(aCircle->Circ(), myPoint4); if (LastPar < FirstPar) LastPar += M_PI * 2; diff --git a/src/PrsDim/PrsDim_EqualRadiusRelation.cxx b/src/PrsDim/PrsDim_EqualRadiusRelation.cxx index cd3d32c0eb..c6b2a445e7 100644 --- a/src/PrsDim/PrsDim_EqualRadiusRelation.cxx +++ b/src/PrsDim/PrsDim_EqualRadiusRelation.cxx @@ -65,8 +65,8 @@ void PrsDim_EqualRadiusRelation::Compute (const Handle(PrsMgr_PresentationManage Standard_Real FirstPar1 = FirstCurve.FirstParameter(), LastPar1 = FirstCurve.LastParameter(), FirstPar2 = SecondCurve.FirstParameter(), LastPar2 = SecondCurve.LastParameter(); - Handle( Geom_Curve ) FirstProjCurve = FirstCurve.Curve().Curve(), - SecondProjCurve = SecondCurve.Curve().Curve(); + Handle( Geom_Curve ) FirstProjCurve = FirstCurve.Curve()->Curve(), + SecondProjCurve = SecondCurve.Curve()->Curve(); gp_Pnt FirstPoint1, LastPoint1, FirstPoint2, LastPoint2; Standard_Boolean isFirstOnPlane, isSecondOnPlane; diff --git a/src/QABugs/QABugs_10.cxx b/src/QABugs/QABugs_10.cxx index 524ef59741..053eb88044 100644 --- a/src/QABugs/QABugs_10.cxx +++ b/src/QABugs/QABugs_10.cxx @@ -221,7 +221,7 @@ static Standard_Integer OCC486(Draw_Interpretor& di, Standard_Integer argc, cons Standard_Real uf, ul, vf, vl; GS->Bounds(uf, ul, vf, vl); - GeomAdaptor_Surface aSurf(GS); + Handle(GeomAdaptor_Surface) aSurf = new GeomAdaptor_Surface(GS); myExtPS.Initialize (aSurf, uf-du, ul+du, vf-dv, vl+dv, Tol, Tol ); myExtPS.Perform ( P3D ); Standard_Integer nPSurf = ( myExtPS.IsDone() ? myExtPS.NbExt() : 0 ); @@ -244,7 +244,7 @@ static Standard_Integer OCC486(Draw_Interpretor& di, Standard_Integer argc, cons distMin = sqrt(distMin); Standard_Real S, T; myExtPS.Point(indMin).Parameter ( S, T ); - gp_Pnt aCheckPnt = aSurf.Value( S, T ); + gp_Pnt aCheckPnt = aSurf->Value( S, T ); Standard_Real aCheckDist = P3D.Distance(aCheckPnt); di << "Solution is : U = "<< S << "\t V = "<< T << "\n"; di << "Solution is : X = "<< aCheckPnt.X() << "\t Y = "<< aCheckPnt.Y() << "\t Z = "<< aCheckPnt.Z() << "\n"; diff --git a/src/QABugs/QABugs_11.cxx b/src/QABugs/QABugs_11.cxx index 81e94fb874..f3d01477bd 100644 --- a/src/QABugs/QABugs_11.cxx +++ b/src/QABugs/QABugs_11.cxx @@ -215,7 +215,7 @@ static int BUC60610(Draw_Interpretor& di, Standard_Integer argc, const char ** a Standard_Integer i=0; for( ; ex.More(); ex.Next()){ const TopoDS_Edge &E = TopoDS::Edge(ex.Current()); - BRepAdaptor_Curve aCurve(E); + Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve(E); GCPnts_UniformDeflection plin(aCurve, 0.1); di << "Num points = " << plin.NbPoints() << "\n"; if(argc > 2) { @@ -302,15 +302,14 @@ static int OCC105(Draw_Interpretor& di, Standard_Integer argc, const char ** arg vlast = ve1; } - GeomAdaptor_Curve curve; + Handle(GeomAdaptor_Curve) curve = new GeomAdaptor_Curve(acurve); GCPnts_UniformAbscissa algo; - curve.Load(acurve); algo.Initialize( curve, l, newufirst, newulast ); if (!algo.IsDone()) di << "Not Done!!!" << "\n"; for (Standard_Integer Index = 1; Index<=algo.NbPoints();Index++) { Standard_Real t = algo.Parameter(Index); - gp_Pnt pt3 = curve.Value(t); + gp_Pnt pt3 = curve->Value(t); di << "Parameter t = " << t << "\n"; di << "Value Pnt = " << pt3.X()<<" " <D0(check_par,check_pnt); // check that points are coinciding Standard_Real error_dist = pnt.Distance(check_pnt); if (error_dist > Precision::Confusion()) { @@ -2968,7 +2966,7 @@ static Standard_Integer OCC8797 (Draw_Interpretor& di, Standard_Integer argc, co //length!! 1. Standard_Real l_abcissa,l_gprop; - GeomAdaptor_Curve adaptor_spline(spline); + Handle(GeomAdaptor_Curve) adaptor_spline = new GeomAdaptor_Curve(spline); GCPnts_AbscissaPoint temp; l_abcissa=temp.Length(adaptor_spline); std::cout<<"Length Spline(abcissa_Pnt): "<Display (aisp, Standard_False); } - Geom2dAdaptor_Curve acur (curve2d), afromcur (fromcurve2d); + Handle(Geom2dAdaptor_Curve) acur = new Geom2dAdaptor_Curve(curve2d); + Handle(Geom2dAdaptor_Curve) afromcur = new Geom2dAdaptor_Curve(fromcurve2d); Geom2dGcc_QualifiedCurve qcur (acur, GccEnt_outside); Geom2dGcc_QualifiedCurve qfromcur (afromcur, GccEnt_outside); Geom2dGcc_Lin2d2Tan lintan (qcur, qfromcur, 0.1, 0.0, 0.0); @@ -138,7 +139,7 @@ static Standard_Integer BUC60843 (Draw_Interpretor& di, Standard_Integer argc,co if (argc == 6) tol = Draw::Atof(argv[5]); } if(c1IsCircle) { - Geom2dAdaptor_Curve acur(aCur2d2); + Handle(Geom2dAdaptor_Curve) acur = new Geom2dAdaptor_Curve(aCur2d2); Geom2dGcc_QCurve qcur(acur, GccEnt_unqualified); GccEnt_QualifiedCirc qfromcur(aCir2d->Circ2d(), GccEnt_unqualified); Geom2dGcc_Lin2d2TanIter lintan(qfromcur, qcur , par1, tol); @@ -151,8 +152,8 @@ static Standard_Integer BUC60843 (Draw_Interpretor& di, Standard_Integer argc,co } } else { - Geom2dAdaptor_Curve acur1(aCur2d1); - Geom2dAdaptor_Curve acur2(aCur2d2); + Handle(Geom2dAdaptor_Curve) acur1 = new Geom2dAdaptor_Curve(aCur2d1); + Handle(Geom2dAdaptor_Curve) acur2 = new Geom2dAdaptor_Curve(aCur2d2); Geom2dGcc_QCurve qcur1(acur1, GccEnt_unqualified); Geom2dGcc_QCurve qcur2(acur2, GccEnt_unqualified); Geom2dGcc_Lin2d2TanIter lintan(qcur1, qcur2 , par1, par2, tol); @@ -365,7 +366,7 @@ static int geom_get_2Dpt_from_3Dpt(const gp_Pnt& pnt3d, const gp_Pln& pln, gp_Pn { int ret = 0; Handle(Geom_Plane) gpln = new Geom_Plane(pln); - GeomAdaptor_Surface adsur(gpln); + Handle(GeomAdaptor_Surface) adsur = new GeomAdaptor_Surface(gpln); Extrema_ExtPS extps(pnt3d, adsur, 0.001, 0.001); if( extps.IsDone() ) { @@ -394,8 +395,8 @@ static Standard_Integer OCC353 (Draw_Interpretor& di, Standard_Integer , const c Handle(Geom2d_Curve) cir2d1 = GeomAPI::To2d(h_cir1, refpln); Handle(Geom2d_Curve) cir2d2 = GeomAPI::To2d(h_cir2, refpln); - Geom2dAdaptor_Curve adop1(cir2d1); - Geom2dAdaptor_Curve adop2(cir2d2); + Handle(Geom2dAdaptor_Curve) adop1 = new Geom2dAdaptor_Curve(cir2d1); + Handle(Geom2dAdaptor_Curve) adop2 = new Geom2dAdaptor_Curve(cir2d2); Geom2dGcc_QualifiedCurve qcur1(adop1, GccEnt_enclosing); Geom2dGcc_QualifiedCurve qcur2(adop2, GccEnt_enclosing); @@ -771,7 +772,7 @@ static Standard_Integer OCC813 (Draw_Interpretor& di, Standard_Integer argc,cons str = "OCC813_pnt"; DrawTrSurf::Set(str,pt2d); Handle(Geom2d_Curve) curve2d = GeomAPI::To2d(ell,pln); - Geom2dAdaptor_Curve acur(curve2d); + Handle(Geom2dAdaptor_Curve) acur = new Geom2dAdaptor_Curve(curve2d); Geom2dGcc_QualifiedCurve qcur(acur, GccEnt_outside); str = "OCC813_ell"; DrawTrSurf::Set(str,curve2d); @@ -853,7 +854,8 @@ static Standard_Integer OCC814 (Draw_Interpretor& di, Standard_Integer argc,cons aContext->Display (aisp, Standard_False); } - Geom2dAdaptor_Curve acur(curve2d), afromcur(fromcurve2d); + Handle(Geom2dAdaptor_Curve) acur = new Geom2dAdaptor_Curve(curve2d); + Handle(Geom2dAdaptor_Curve) afromcur = new Geom2dAdaptor_Curve(fromcurve2d); Geom2dGcc_QualifiedCurve qcur(acur, GccEnt_outside) ; Geom2dGcc_QualifiedCurve qfromcur(afromcur, GccEnt_outside) ; diff --git a/src/QABugs/QABugs_18.cxx b/src/QABugs/QABugs_18.cxx index 3898fac925..8c6df2ef91 100644 --- a/src/QABugs/QABugs_18.cxx +++ b/src/QABugs/QABugs_18.cxx @@ -197,16 +197,15 @@ static Standard_Integer OCC367 (Draw_Interpretor& di, Standard_Integer argc, con vlast = ve1; } - GeomAdaptor_Curve curve; + Handle(GeomAdaptor_Curve) curve = new GeomAdaptor_Curve(acurve); GCPnts_UniformAbscissa algo; - curve.Load(acurve); algo.Initialize( curve, l, newufirst, newulast ); if (!algo.IsDone()) di << "Not Done!!!" << "\n"; Standard_Integer maxIndex =algo.NbPoints(); for (Standard_Integer Index = 1; Index<=maxIndex;Index++) { Standard_Real t = algo.Parameter(Index); - gp_Pnt pt3 = curve.Value(t); + gp_Pnt pt3 = curve->Value(t); di << "Parameter t = " << t << "\n"; di << "Value Pnt = " << pt3.X()<<" " <D0 (aRoot.Root()(1), aRoot.Root()(2), aRes); DBRep::Set ("result", BRepBuilderAPI_MakeVertex (aRes)); return 0; } @@ -3127,7 +3127,7 @@ static Standard_Integer OCC25547( Handle(Geom_Circle) aCircle = new Geom_Circle(gp_Ax2(gp::Origin(), gp::DZ()), 10); Handle(Geom_TrimmedCurve) aHalf = new Geom_TrimmedCurve(aCircle, aFirstP, aLastP); TopoDS_Edge aEdge = BRepBuilderAPI_MakeEdge(aHalf); - BRepAdaptor_Curve aAdaptor(aEdge); + Handle(BRepAdaptor_Curve) aAdaptor = new BRepAdaptor_Curve(aEdge); BRepMesh_GeomTool aGeomTool(aAdaptor, aFirstP, aLastP, 0.1, 0.5); if (aGeomTool.NbPoints() == 0) diff --git a/src/QABugs/QABugs_20.cxx b/src/QABugs/QABugs_20.cxx index 8a5443f139..cc16cb9cff 100644 --- a/src/QABugs/QABugs_20.cxx +++ b/src/QABugs/QABugs_20.cxx @@ -1611,7 +1611,7 @@ static Standard_Integer OCC27466(Draw_Interpretor& theDI, gp_Pnt2d aUV; if (!DrawTrSurf::GetPoint2d(theArgVal[3], aUV)) return 1; - BRepAdaptor_Surface aSurf(aFace); + Handle(BRepAdaptor_Surface) aSurf = new BRepAdaptor_Surface(aFace); Standard_Real aTolU = Precision::PConfusion(); Standard_Real aTolV = Precision::PConfusion(); @@ -1933,8 +1933,8 @@ static Standard_Integer OCC27357(Draw_Interpretor& theDI, aCurve1->D1(u,aP1,aTangent); gp_Vec2d aNormal(-aTangent.Y(),aTangent.X()); Handle(Geom2d_Line) normalLine=new Geom2d_Line(aP1, gp_Dir2d(aNormal)); - Geom2dGcc_QualifiedCurve qualifiedC1(Geom2dAdaptor_Curve(aCurve1),GccEnt_unqualified); - Geom2dGcc_QualifiedCurve qualifiedC2(Geom2dAdaptor_Curve(aCurve2),GccEnt_unqualified); + Geom2dGcc_QualifiedCurve qualifiedC1(new Geom2dAdaptor_Curve(aCurve1),GccEnt_unqualified); + Geom2dGcc_QualifiedCurve qualifiedC2(new Geom2dAdaptor_Curve(aCurve2),GccEnt_unqualified); try { @@ -1943,7 +1943,7 @@ static Standard_Integer OCC27357(Draw_Interpretor& theDI, Geom2dAPI_ProjectPointOnCurve projPc3(aP1, normalLine); double g3 = projPc3.LowerDistanceParameter(); Geom2dGcc_Circ2d2TanOn aCircleBuilder(qualifiedC1,qualifiedC2, - Geom2dAdaptor_Curve(normalLine),1e-9,g1,g1,g3); + new Geom2dAdaptor_Curve(normalLine),1e-9,g1,g1,g3); aDuumyList.Append(aCircleBuilder.NbSolutions()); } catch(Standard_Failure const&) @@ -4238,7 +4238,7 @@ static Standard_Integer OCC32744(Draw_Interpretor& theDi, Standard_Integer theNb { Standard_Real firstParam = 0., lastParam = 0.; Handle(Geom_Curve) pCurve = BRep_Tool::Curve(anEdge, firstParam, lastParam); - GeomAdaptor_Curve curveAdaptor(pCurve, firstParam, lastParam); + Handle(GeomAdaptor_Curve) curveAdaptor = new GeomAdaptor_Curve(pCurve, firstParam, lastParam); GCPnts_UniformDeflection uniformAbs(curveAdaptor, 0.001, firstParam, lastParam); } diff --git a/src/QABugs/QABugs_3.cxx b/src/QABugs/QABugs_3.cxx index 4475f851a3..23c6fc83dc 100644 --- a/src/QABugs/QABugs_3.cxx +++ b/src/QABugs/QABugs_3.cxx @@ -216,7 +216,7 @@ static Standard_Integer BUC60792(Draw_Interpretor& di, Standard_Integer /*argc*/ // local_get_2Dpointfrom3Dpoint(pt3d, pln->Pln(), thepoint); thepoint = ProjLib::Project(pln->Pln(),pt3d); Handle(Geom2d_CartesianPoint) ThePoint = new Geom2d_CartesianPoint(thepoint); - Geom2dAdaptor_Curve acur1(gcir1) ; + Handle(Geom2dAdaptor_Curve) acur1 = new Geom2dAdaptor_Curve(gcir1) ; Geom2dGcc_QualifiedCurve qcur1(acur1, GccEnt_outside) ; Geom2dGcc_Circ2d2TanRad cirtanrad(qcur1, ThePoint, 200.0, 0.0001); printf("\n No. of solutions = %d\n", cirtanrad.NbSolutions()); diff --git a/src/QABugs/QABugs_9.cxx b/src/QABugs/QABugs_9.cxx index 7de27b11c9..e0d2e651bf 100644 --- a/src/QABugs/QABugs_9.cxx +++ b/src/QABugs/QABugs_9.cxx @@ -98,8 +98,8 @@ static Standard_Integer OCC24303(Draw_Interpretor& di, Standard_Integer n, const //Calculate the tangent with Geom2dGcc_Circ2dTanRan - const Geom2dAdaptor_Curve AdaptedCurve1 ( curve1 ); - const Geom2dAdaptor_Curve AdaptedCurve2 ( curve2 ); + const Handle(Geom2dAdaptor_Curve) AdaptedCurve1 = new Geom2dAdaptor_Curve( curve1 ); + const Handle(Geom2dAdaptor_Curve) AdaptedCurve2 = new Geom2dAdaptor_Curve( curve2 ); GccEnt_Position curveQualif1 = GccEnt_unqualified; GccEnt_Position curveQualif2 = GccEnt_unqualified; diff --git a/src/RWMesh/RWMesh_FaceIterator.cxx b/src/RWMesh/RWMesh_FaceIterator.cxx index a7f6d58ae5..facc995f46 100644 --- a/src/RWMesh/RWMesh_FaceIterator.cxx +++ b/src/RWMesh/RWMesh_FaceIterator.cxx @@ -221,7 +221,7 @@ void RWMesh_FaceIterator::initFace() TopLoc_Location aLoc; if (!BRep_Tool::Surface (aFaceFwd, aLoc).IsNull()) { - myFaceAdaptor.Initialize (aFaceFwd, false); + myFaceAdaptor = new BRepAdaptor_Surface(aFaceFwd, false); mySLTool.SetSurface (myFaceAdaptor); myHasNormals = true; } diff --git a/src/RWMesh/RWMesh_FaceIterator.hxx b/src/RWMesh/RWMesh_FaceIterator.hxx index 6439b4b926..264278100a 100644 --- a/src/RWMesh/RWMesh_FaceIterator.hxx +++ b/src/RWMesh/RWMesh_FaceIterator.hxx @@ -171,6 +171,7 @@ private: { myPolyTriang.Nullify(); myFace.Nullify(); + myFaceAdaptor.Nullify(); myHasNormals = false; myHasFaceColor = false; myFaceColor = Quantity_ColorRGBA(); @@ -192,7 +193,7 @@ private: Handle(Poly_Triangulation) myPolyTriang; //!< triangulation of current face TopLoc_Location myFaceLocation; //!< current face location mutable BRepLProp_SLProps mySLTool; //!< auxiliary tool for fetching normals from surface - BRepAdaptor_Surface myFaceAdaptor; //!< surface adaptor for fetching normals from surface + Handle(BRepAdaptor_Surface) myFaceAdaptor; //!< surface adaptor for fetching normals from surface Standard_Boolean myHasNormals; //!< flag indicating that current face has normals gp_Trsf myTrsf; //!< current face transformation Standard_Boolean myIsMirrored; //!< flag indicating that face triangles should be mirrored diff --git a/src/SWDRAW/SWDRAW_ShapeAnalysis.cxx b/src/SWDRAW/SWDRAW_ShapeAnalysis.cxx index d1045f3e0a..c005ecab0b 100644 --- a/src/SWDRAW/SWDRAW_ShapeAnalysis.cxx +++ b/src/SWDRAW/SWDRAW_ShapeAnalysis.cxx @@ -303,8 +303,8 @@ static Standard_Integer projpcurve IsStartPoint = Standard_True; } - Adaptor3d_CurveOnSurface aCOnS = - Adaptor3d_CurveOnSurface(new BRepAdaptor_Curve2d(BRepAdaptor_Curve2d(aEdge, aFace)), + Handle(Adaptor3d_CurveOnSurface) aCOnS = + new Adaptor3d_CurveOnSurface(new BRepAdaptor_Curve2d(BRepAdaptor_Curve2d(aEdge, aFace)), new BRepAdaptor_Surface(BRepAdaptor_Surface(aFace, Standard_False))); gp_Pnt aPnt; diff --git a/src/ShapeAnalysis/ShapeAnalysis_CanonicalRecognition.cxx b/src/ShapeAnalysis/ShapeAnalysis_CanonicalRecognition.cxx index 9fa226eb37..9612ff7a70 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_CanonicalRecognition.cxx +++ b/src/ShapeAnalysis/ShapeAnalysis_CanonicalRecognition.cxx @@ -1223,7 +1223,7 @@ Standard_Boolean GetSamplePoints(const TopoDS_Wire& theWire, Handle(TColgp_HArray1OfXYZ)& thePoints) { NCollection_Vector aLengths; - NCollection_Vector aCurves; + NCollection_Vector aCurves; NCollection_Vector aPoints; Standard_Real aTol = Max(1.e-3, theTol/10.); Standard_Real aTotalLength = 0.; @@ -1233,7 +1233,7 @@ Standard_Boolean GetSamplePoints(const TopoDS_Wire& theWire, const TopoDS_Edge& anE = TopoDS::Edge(anEIter.Value()); if (BRep_Tool::Degenerated(anE)) continue; - BRepAdaptor_Curve aBAC(anE); + Handle(BRepAdaptor_Curve) aBAC = new BRepAdaptor_Curve(anE); Standard_Real aClength = GCPnts_AbscissaPoint::Length(aBAC, aTol); aTotalLength += aClength; aCurves.Append(aBAC); @@ -1246,7 +1246,7 @@ Standard_Boolean GetSamplePoints(const TopoDS_Wire& theWire, Standard_Integer i, aNb = aLengths.Length(); for (i = 0; i < aNb; ++i) { - const BRepAdaptor_Curve& aC = aCurves(i); + const Handle(BRepAdaptor_Curve)& aC = aCurves(i); Standard_Real aClength = GCPnts_AbscissaPoint::Length(aC, aTol); Standard_Integer aNbPoints = RealToInt(aClength / aTotalLength * theMaxNbInt + 1); aNbPoints = Max(2, aNbPoints); @@ -1258,7 +1258,7 @@ Standard_Boolean GetSamplePoints(const TopoDS_Wire& theWire, for (j = 1; j <= aNbPoints; ++j) { Standard_Real t = aPointGen.Parameter(j); - gp_Pnt aP = aC.Value(t); + gp_Pnt aP = aC->Value(t); aPoints.Append(aP.XYZ()); } } diff --git a/src/ShapeAnalysis/ShapeAnalysis_CheckSmallFace.cxx b/src/ShapeAnalysis/ShapeAnalysis_CheckSmallFace.cxx index 97528b8911..8f7e3a32cf 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_CheckSmallFace.cxx +++ b/src/ShapeAnalysis/ShapeAnalysis_CheckSmallFace.cxx @@ -308,7 +308,7 @@ static Standard_Boolean MinMaxSmall gp_Pnt p2, p1 = C1T->Value (u); Standard_Real para; //pdn Adaptor curve is used to avoid of enhancing of domain. - GeomAdaptor_Curve GAC(C2T); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C2T); Standard_Real dist = SAC.Project (GAC,p1,toler,p2,para); //pdn check if parameter of projection is in the domain of the edge. if (para < f || para > l) return Standard_False; @@ -897,7 +897,7 @@ Standard_Boolean ShapeAnalysis_CheckSmallFace::CheckTwisted (const TopoDS_Face& //else proj = C2->Value(paramc2 -d2); } Standard_Real param; - GeomAdaptor_Curve GAC(C3); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C3); Standard_Real f = C3->FirstParameter(); Standard_Real l = C3->LastParameter(); gp_Pnt result; diff --git a/src/ShapeAnalysis/ShapeAnalysis_Curve.cxx b/src/ShapeAnalysis/ShapeAnalysis_Curve.cxx index 26ae1e8286..f62f3953d8 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_Curve.cxx +++ b/src/ShapeAnalysis/ShapeAnalysis_Curve.cxx @@ -59,7 +59,7 @@ //function : ProjectOnSegments //purpose : //======================================================================= -static void ProjectOnSegments (const Adaptor3d_Curve& AC, const gp_Pnt& P3D, +static void ProjectOnSegments (const Handle(Adaptor3d_Curve)& AC, const gp_Pnt& P3D, const Standard_Integer nbseg, Standard_Real& uMin, Standard_Real& uMax, Standard_Real& distmin, gp_Pnt& proj, Standard_Real& param) @@ -72,7 +72,7 @@ static void ProjectOnSegments (const Adaptor3d_Curve& AC, const gp_Pnt& P3D, Standard_Boolean aHasChanged = Standard_False; for (Standard_Integer i = 0; i <= nbseg; i ++) { u = uMin + (delta * i); - gp_Pnt PU = AC.Value (u); + gp_Pnt PU = AC->Value (u); dist2 = PU.SquareDistance (P3D); if (dist2 < distmin2) { distmin2 = dist2; proj = PU; param = u; aHasChanged = Standard_True; } } @@ -123,11 +123,11 @@ Standard_Real ShapeAnalysis_Curve::Project(const Handle(Geom_Curve)& C3D, Standard_Real uMin = (cf < cl ? cf : cl); Standard_Real uMax = (cf < cl ? cl : cf); - GeomAdaptor_Curve GAC(C3D, uMin, uMax); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C3D, uMin, uMax); if (C3D->IsKind(STANDARD_TYPE(Geom_BoundedCurve))) { Standard_Real prec = ( AdjustToEnds ? preci : Precision::Confusion() ); //:j8 abv 10 Dec 98: tr10_r0501_db.stp #9423: protection against densing of points near one end - gp_Pnt LowBound = GAC.Value(uMin); - gp_Pnt HigBound = GAC.Value(uMax); + gp_Pnt LowBound = GAC->Value(uMin); + gp_Pnt HigBound = GAC->Value(uMax); distmin = LowBound.Distance(P3D); if (distmin <= prec) { param = uMin; @@ -151,10 +151,10 @@ Standard_Real ShapeAnalysis_Curve::Project(const Handle(Geom_Curve)& C3D, //uMin = uMin - 0.1; //uMax = uMax + 0.1; // modified by pdn on 01.07.98 after BUC60195 entity 1952 (Min() added) - Standard_Real delta = Min (GAC.Resolution (preci), (uMax - uMin) * 0.1); + Standard_Real delta = Min (GAC->Resolution (preci), (uMax - uMin) * 0.1); uMin -= delta; uMax += delta; - GAC.Load(C3D, uMin, uMax); + GAC->Load(C3D, uMin, uMax); } return ProjectAct(GAC, P3D, preci, proj, param); @@ -165,7 +165,7 @@ Standard_Real ShapeAnalysis_Curve::Project(const Handle(Geom_Curve)& C3D, //purpose : //======================================================================= -Standard_Real ShapeAnalysis_Curve::Project(const Adaptor3d_Curve& C3D, +Standard_Real ShapeAnalysis_Curve::Project(const Handle(Adaptor3d_Curve)& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, @@ -174,16 +174,16 @@ Standard_Real ShapeAnalysis_Curve::Project(const Adaptor3d_Curve& C3D, { - Standard_Real uMin = C3D.FirstParameter(); - Standard_Real uMax = C3D.LastParameter(); + Standard_Real uMin = C3D->FirstParameter(); + Standard_Real uMax = C3D->LastParameter(); if (Precision::IsInfinite(uMin) && Precision::IsInfinite(uMax)) return ProjectAct(C3D, P3D, preci, proj, param); Standard_Real distmin_L = Precision::Infinite(), distmin_H = Precision::Infinite(); Standard_Real prec = ( AdjustToEnds ? preci : Precision::Confusion() ); //:j8 abv 10 Dec 98: tr10_r0501_db.stp #9423: protection against densing of points near one end - gp_Pnt LowBound = C3D.Value(uMin); - gp_Pnt HigBound = C3D.Value(uMax); + gp_Pnt LowBound = C3D->Value(uMin); + gp_Pnt HigBound = C3D->Value(uMax); distmin_L = LowBound.Distance(P3D); distmin_H = HigBound.Distance(P3D); @@ -220,7 +220,7 @@ Standard_Real ShapeAnalysis_Curve::Project(const Adaptor3d_Curve& C3D, //purpose : //======================================================================= -Standard_Real ShapeAnalysis_Curve::ProjectAct(const Adaptor3d_Curve& C3D, +Standard_Real ShapeAnalysis_Curve::ProjectAct(const Handle(Adaptor3d_Curve)& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, @@ -267,7 +267,7 @@ Standard_Real ShapeAnalysis_Curve::ProjectAct(const Adaptor3d_Curve& C3D, } //szv#4:S4163:12Mar99 moved - Standard_Real uMin = C3D.FirstParameter(), uMax = C3D.LastParameter(); + Standard_Real uMin = C3D->FirstParameter(), uMax = C3D->LastParameter(); Standard_Boolean closed = Standard_False; // si on franchit les bornes ... Standard_Real distmin = Precision::Infinite(), valclosed = 0.; Standard_Real aModParam = param; @@ -286,7 +286,7 @@ Standard_Real ShapeAnalysis_Curve::ProjectAct(const Adaptor3d_Curve& C3D, if (distmin > preci) OK = Standard_False; // Cas TrimmedCurve a cheval. Voir la courbe de base. // Si fermee, passer une periode - if (C3D.IsClosed()) { + if (C3D->IsClosed()) { closed = Standard_True; valclosed = uMax - uMin; //szv#4:S4163:12Mar99 optimized } @@ -300,14 +300,14 @@ Standard_Real ShapeAnalysis_Curve::ProjectAct(const Adaptor3d_Curve& C3D, // MEME PAS BIEN BON. L appelant pourra decider alors quoi faire param = 0.; - switch(C3D.GetType()) { + switch(C3D->GetType()) { case GeomAbs_Circle: { - const gp_Circ& aCirc = C3D.Circle(); + const gp_Circ& aCirc = C3D->Circle(); proj = aCirc.Position().Location(); if(aCirc.Radius() <= gp::Resolution() || P3D.SquareDistance(proj) <= gp::Resolution() ) { - param = C3D.FirstParameter(); + param = C3D->FirstParameter(); proj = proj.XYZ() + aCirc.XAxis().Direction().XYZ() * aCirc.Radius(); } else { @@ -320,26 +320,26 @@ Standard_Real ShapeAnalysis_Curve::ProjectAct(const Adaptor3d_Curve& C3D, break; case GeomAbs_Hyperbola: { - param = ElCLib::Parameter(C3D.Hyperbola(), P3D); - proj = ElCLib::Value(param, C3D.Hyperbola()); + param = ElCLib::Parameter(C3D->Hyperbola(), P3D); + proj = ElCLib::Value(param, C3D->Hyperbola()); } break; case GeomAbs_Parabola: { - param = ElCLib::Parameter(C3D.Parabola(), P3D); - proj = ElCLib::Value(param, C3D.Parabola()); + param = ElCLib::Parameter(C3D->Parabola(), P3D); + proj = ElCLib::Value(param, C3D->Parabola()); } break; case GeomAbs_Line: { - param = ElCLib::Parameter(C3D.Line(), P3D); - proj = ElCLib::Value(param, C3D.Line()); + param = ElCLib::Parameter(C3D->Line(), P3D); + proj = ElCLib::Value(param, C3D->Line()); } break; case GeomAbs_Ellipse: { - param = ElCLib::Parameter(C3D.Ellipse(), P3D); - proj = ElCLib::Value(param, C3D.Ellipse()); + param = ElCLib::Parameter(C3D->Ellipse(), P3D); + proj = ElCLib::Value(param, C3D->Ellipse()); closed = Standard_True; valclosed = 2.*M_PI; @@ -418,11 +418,11 @@ Standard_Real ShapeAnalysis_Curve::NextProject(const Standard_Real paramPrev, Standard_Real uMin = (cf < cl ? cf : cl); Standard_Real uMax = (cf < cl ? cl : cf); Standard_Real distmin = Precision::Infinite(); - GeomAdaptor_Curve GAC(C3D, uMin, uMax); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C3D, uMin, uMax); if (C3D->IsKind(STANDARD_TYPE(Geom_BoundedCurve))) { Standard_Real prec = ( AdjustToEnds ? preci : Precision::Confusion() ); //:j8 abv 10 Dec 98: tr10_r0501_db.stp #9423: protection against densing of points near one end - gp_Pnt LowBound = GAC.Value(uMin); - gp_Pnt HigBound = GAC.Value(uMax); + gp_Pnt LowBound = GAC->Value(uMin); + gp_Pnt HigBound = GAC->Value(uMax); distmin = LowBound.Distance(P3D); if (distmin <= prec) { param = uMin; @@ -446,10 +446,10 @@ Standard_Real ShapeAnalysis_Curve::NextProject(const Standard_Real paramPrev, //uMin = uMin - 0.1; //uMax = uMax + 0.1; // modified by pdn on 01.07.98 after BUC60195 entity 1952 (Min() added) - Standard_Real delta = Min (GAC.Resolution (preci), (uMax - uMin) * 0.1); + Standard_Real delta = Min (GAC->Resolution (preci), (uMax - uMin) * 0.1); uMin -= delta; uMax += delta; - GAC.Load(C3D, uMin, uMax); + GAC->Load(C3D, uMin, uMax); } return NextProject ( paramPrev, GAC, P3D, preci, proj, param ); } @@ -460,14 +460,14 @@ Standard_Real ShapeAnalysis_Curve::NextProject(const Standard_Real paramPrev, //======================================================================= Standard_Real ShapeAnalysis_Curve::NextProject(const Standard_Real paramPrev, - const Adaptor3d_Curve& C3D, + const Handle(Adaptor3d_Curve)& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param) const { - Standard_Real uMin = C3D.FirstParameter(); - Standard_Real uMax = C3D.LastParameter(); + Standard_Real uMin = C3D->FirstParameter(); + Standard_Real uMax = C3D->LastParameter(); Extrema_LocateExtPC aProjector (P3D, C3D, paramPrev/*U0*/, uMin, uMax, preci/*TolU*/); if (aProjector.IsDone()){ @@ -1087,14 +1087,14 @@ Standard_Boolean ShapeAnalysis_Curve::GetSamplePoints (const Handle(Geom2d_Curve { //:abv 05.06.02: TUBE.stp // Use the same distribution of points as BRepTopAdaptor_FClass2d for consistency - Geom2dAdaptor_Curve C ( curve, first, last ); + Handle(Geom2dAdaptor_Curve) C = new Geom2dAdaptor_Curve( curve, first, last ); Standard_Integer nbs = Geom2dInt_Geom2dCurveTool::NbSamples(C); //-- Attention aux bsplines rationnelles de degree 3. (bouts de cercles entre autres) if (nbs > 2) nbs*=4; Standard_Real step = ( last - first ) / (Standard_Real)( nbs - 1 ); for (Standard_Integer i = 0; i < nbs - 1; ++i) - seq.Append(C.Value(first + step * i)); - seq.Append(C.Value(last)); + seq.Append(C->Value(first + step * i)); + seq.Append(C->Value(last)); return Standard_True; /* Standard_Integer i; diff --git a/src/ShapeAnalysis/ShapeAnalysis_Curve.hxx b/src/ShapeAnalysis/ShapeAnalysis_Curve.hxx index 4b4a633ea2..2bd1236168 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_Curve.hxx +++ b/src/ShapeAnalysis/ShapeAnalysis_Curve.hxx @@ -62,7 +62,7 @@ public: //! //! Returned value is the distance between the given point and //! computed one. - Standard_EXPORT Standard_Real Project (const Adaptor3d_Curve& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param, const Standard_Boolean AdjustToEnds = Standard_True) const; + Standard_EXPORT Standard_Real Project (const Handle(Adaptor3d_Curve)& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param, const Standard_Boolean AdjustToEnds = Standard_True) const; //! Projects a Point on a Curve, but parameters are limited //! between and . @@ -72,7 +72,7 @@ public: //! of the curve if distance is less than Standard_EXPORT Standard_Real Project (const Handle(Geom_Curve)& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param, const Standard_Real cf, const Standard_Real cl, const Standard_Boolean AdjustToEnds = Standard_True) const; - Standard_EXPORT Standard_Real ProjectAct (const Adaptor3d_Curve& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param) const; + Standard_EXPORT Standard_Real ProjectAct (const Handle(Adaptor3d_Curve)& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param) const; //! Projects a Point on a Curve using Newton method. //! is taken as the first approximation of solution. @@ -84,7 +84,7 @@ public: //! Projects a Point on a Curve using Newton method. //! is taken as the first approximation of solution. //! If Newton algorithm fails the method Project() is used. - Standard_EXPORT Standard_Real NextProject (const Standard_Real paramPrev, const Adaptor3d_Curve& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param) const; + Standard_EXPORT Standard_Real NextProject (const Standard_Real paramPrev, const Handle(Adaptor3d_Curve)& C3D, const gp_Pnt& P3D, const Standard_Real preci, gp_Pnt& proj, Standard_Real& param) const; //! Validate parameters First and Last for the given curve //! in order to make them valid for creation of edge. diff --git a/src/ShapeAnalysis/ShapeAnalysis_Edge.cxx b/src/ShapeAnalysis/ShapeAnalysis_Edge.cxx index 3a77d8d02f..523daa519c 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_Edge.cxx +++ b/src/ShapeAnalysis/ShapeAnalysis_Edge.cxx @@ -859,7 +859,7 @@ static Standard_Boolean IsOverlapPartEdges(const TopoDS_Edge& theFirstEdge, const Standard_Real& theEndLength) { TColStd_SequenceOfInteger aSeqIntervals; - BRepAdaptor_Curve aAdCurve1(theFirstEdge); + Handle(BRepAdaptor_Curve) aAdCurve1 = new BRepAdaptor_Curve(theFirstEdge); BRepExtrema_DistShapeShape aMinDist; aMinDist.LoadS1(theSecEdge); @@ -872,9 +872,9 @@ static Standard_Boolean IsOverlapPartEdges(const TopoDS_Edge& theFirstEdge, aPoint = BRep_Tool::Pnt(V1); } else { - GCPnts_AbscissaPoint aAbsPoint(Precision::Confusion(),aAdCurve1,aS,aAdCurve1.FirstParameter()); + GCPnts_AbscissaPoint aAbsPoint(Precision::Confusion(),aAdCurve1,aS,aAdCurve1->FirstParameter()); if(aAbsPoint.IsDone()) - aAdCurve1.D0(aAbsPoint.Parameter(),aPoint); + aAdCurve1->D0(aAbsPoint.Parameter(),aPoint); else continue; } BRep_Builder aB; @@ -900,9 +900,9 @@ Standard_Boolean ShapeAnalysis_Edge::CheckOverlapping(const TopoDS_Edge& theEdge const Standard_Real theDomainDist) { Standard_Boolean isOverlap = Standard_False; - BRepAdaptor_Curve aAdCurve1(theEdge1); + Handle(BRepAdaptor_Curve) aAdCurve1 = new BRepAdaptor_Curve(theEdge1); Standard_Real aLength1 = GCPnts_AbscissaPoint::Length (aAdCurve1); - BRepAdaptor_Curve aAdCurve2(theEdge2); + Handle(BRepAdaptor_Curve) aAdCurve2 = new BRepAdaptor_Curve(theEdge2); Standard_Real aLength2 = GCPnts_AbscissaPoint::Length (aAdCurve2); TopoDS_Edge aFirstEdge = (aLength1 >= aLength2 ? theEdge2: theEdge1); TopoDS_Edge aSecEdge = (aLength1 >= aLength2 ? theEdge1: theEdge2); @@ -944,7 +944,7 @@ Standard_Boolean ShapeAnalysis_Edge::CheckOverlapping(const TopoDS_Edge& theEdge Standard_Real aParam1, aFirst, aLast; aMinDist.ParOnEdgeS1 ( i, aParam1 ); BRep_Tool::Range(aFirstEdge,aFirst,aLast); - BRepAdaptor_Curve anAdaptor(aFirstEdge); + Handle(BRepAdaptor_Curve) anAdaptor = new BRepAdaptor_Curve(aFirstEdge); aLengthP = GCPnts_AbscissaPoint::Length(anAdaptor,aFirst,aParam1); } else continue; diff --git a/src/ShapeAnalysis/ShapeAnalysis_Surface.cxx b/src/ShapeAnalysis/ShapeAnalysis_Surface.cxx index 63fbb24801..71bfcc5bc7 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_Surface.cxx +++ b/src/ShapeAnalysis/ShapeAnalysis_Surface.cxx @@ -1132,7 +1132,7 @@ gp_Pnt2d ShapeAnalysis_Surface::NextValueOfUV(const gp_Pnt2d &p2dPrev, gp_Pnt2d ShapeAnalysis_Surface::ValueOfUV(const gp_Pnt& P3D, const Standard_Real preci) { - GeomAdaptor_Surface& SurfAdapt = *Adaptor3d(); + Handle(GeomAdaptor_Surface) SurfAdapt = Adaptor3d(); Standard_Real S = 0., T = 0.; myGap = -1.; // devra etre calcule Standard_Boolean computed = Standard_True; // a priori @@ -1143,39 +1143,39 @@ gp_Pnt2d ShapeAnalysis_Surface::ValueOfUV(const gp_Pnt& P3D, const Standard_Real { //:c9 abv 3 Mar 98: UKI60107-1 #350: to prevent 'catch' from catching exception raising below it try { // ajout CKY 30-DEC-1997 (cf ProStep TR6 r_89-ug) OCC_CATCH_SIGNALS - GeomAbs_SurfaceType surftype = SurfAdapt.GetType(); + GeomAbs_SurfaceType surftype = SurfAdapt->GetType(); switch (surftype) { case GeomAbs_Plane: { - gp_Pln Plane = SurfAdapt.Plane(); + gp_Pln Plane = SurfAdapt->Plane(); ElSLib::Parameters(Plane, P3D, S, T); break; } case GeomAbs_Cylinder: { - gp_Cylinder Cylinder = SurfAdapt.Cylinder(); + gp_Cylinder Cylinder = SurfAdapt->Cylinder(); ElSLib::Parameters(Cylinder, P3D, S, T); S += ShapeAnalysis::AdjustByPeriod(S, 0.5*(uf + ul), 2 * M_PI); break; } case GeomAbs_Cone: { - gp_Cone Cone = SurfAdapt.Cone(); + gp_Cone Cone = SurfAdapt->Cone(); ElSLib::Parameters(Cone, P3D, S, T); S += ShapeAnalysis::AdjustByPeriod(S, 0.5*(uf + ul), 2 * M_PI); break; } case GeomAbs_Sphere: { - gp_Sphere Sphere = SurfAdapt.Sphere(); + gp_Sphere Sphere = SurfAdapt->Sphere(); ElSLib::Parameters(Sphere, P3D, S, T); S += ShapeAnalysis::AdjustByPeriod(S, 0.5*(uf + ul), 2 * M_PI); break; } case GeomAbs_Torus: { - gp_Torus Torus = SurfAdapt.Torus(); + gp_Torus Torus = SurfAdapt->Torus(); ElSLib::Parameters(Torus, P3D, S, T); S += ShapeAnalysis::AdjustByPeriod(S, 0.5*(uf + ul), 2 * M_PI); T += ShapeAnalysis::AdjustByPeriod(T, 0.5*(vf + vl), 2 * M_PI); @@ -1222,8 +1222,8 @@ gp_Pnt2d ShapeAnalysis_Surface::ValueOfUV(const gp_Pnt& P3D, const Standard_Real //can throw exception (e.g. Geom_UndefinedValue) when computing value - see id23943 if (!mySurf->IsKind(STANDARD_TYPE(Geom_OffsetSurface))) { //modified by rln during fixing CSR # BUC60035 entity #D231 - du = Min(myUDelt, SurfAdapt.UResolution(preci)); - dv = Min(myVDelt, SurfAdapt.VResolution(preci)); + du = Min(myUDelt, SurfAdapt->UResolution(preci)); + dv = Min(myVDelt, SurfAdapt->VResolution(preci)); } Standard_Real Tol = Precision::PConfusion(); myExtPS.SetFlag(Extrema_ExtFlag_MIN); @@ -1248,7 +1248,7 @@ gp_Pnt2d ShapeAnalysis_Surface::ValueOfUV(const gp_Pnt& P3D, const Standard_Real // file CEA_cuve-V5.igs Entityes 244, 259, 847, 925 // if project point3D on SurfaceOfRevolution Extreme recompute 2d point, but // returns an old distance from 3d to solution :-( - gp_Pnt aCheckPnt = SurfAdapt.Value(S, T); + gp_Pnt aCheckPnt = SurfAdapt->Value(S, T); dist2Min = P3D.SquareDistance(aCheckPnt); // end of WORKAROUND Standard_Real disSurf = sqrt(dist2Min);//, disCurv =1.e10; @@ -1276,7 +1276,7 @@ gp_Pnt2d ShapeAnalysis_Surface::ValueOfUV(const gp_Pnt& P3D, const Standard_Real Standard_Real Tol = Precision::Confusion(); gp_Vec D1U, D1V; gp_Pnt pnt; - SurfAdapt.D1(UU, VV, pnt, D1U, D1V); + SurfAdapt->D1(UU, VV, pnt, D1U, D1V); gp_Vec b = D1U.Crossed(D1V); gp_Vec a(pnt, P3D); Standard_Real ab = a.Dot(b); @@ -1361,7 +1361,7 @@ gp_Pnt2d ShapeAnalysis_Surface::ValueOfUV(const gp_Pnt& P3D, const Standard_Real } //:c9 //szv#4:S4163:12Mar99 waste raise //if (!computed) throw Standard_NoSuchObject("PCurveLib_ProjectPointOnSurf::ValueOfUV untreated surface type"); - if (computed) { if (myGap <= 0) myGap = P3D.Distance(SurfAdapt.Value(S, T)); } + if (computed) { if (myGap <= 0) myGap = P3D.Distance(SurfAdapt->Value(S, T)); } else { myGap = -1.; S = 0.; T = 0.; } return gp_Pnt2d(S, T); } @@ -1405,7 +1405,7 @@ Standard_Real ShapeAnalysis_Surface::UVFromIso(const gp_Pnt& P3d, const Standard Standard_Boolean UV = Standard_True; Standard_Real par = 0., other = 0., dist = 0.; Handle(Geom_Curve) iso; - Adaptor3d_IsoCurve anIsoCurve(Adaptor3d()); + Handle(Adaptor3d_IsoCurve) anIsoCurve = new Adaptor3d_IsoCurve(Adaptor3d()); for (Standard_Integer num = 0; num < 6; num++) { UV = (num < 3); // 0-1-2 : iso-U 3-4-5 : iso-V @@ -1441,22 +1441,22 @@ Standard_Real ShapeAnalysis_Surface::UVFromIso(const gp_Pnt& P3d, const Standard } else { - Adaptor3d_Curve *anAdaptor = NULL; - GeomAdaptor_Curve aGeomCurve; + Handle(Adaptor3d_Curve) anAdaptor; + Handle(GeomAdaptor_Curve) aGeomCurve = new GeomAdaptor_Curve(); const Bnd_Box *anIsoBox = 0; switch (num) { - case 0: par = myUF; aGeomCurve.Load(myIsoUF); anAdaptor = &aGeomCurve; anIsoBox = &myBndUF; break; - case 1: par = myUL; aGeomCurve.Load(myIsoUL); anAdaptor = &aGeomCurve; anIsoBox = &myBndUL; break; - case 2: par = U; anIsoCurve.Load(GeomAbs_IsoU, U); anAdaptor = &anIsoCurve; break; - case 3: par = myVF; aGeomCurve.Load(myIsoVF); anAdaptor = &aGeomCurve; anIsoBox = &myBndVF; break; - case 4: par = myVL; aGeomCurve.Load(myIsoVL); anAdaptor = &aGeomCurve; anIsoBox = &myBndVL; break; - case 5: par = V; anIsoCurve.Load(GeomAbs_IsoV, V); anAdaptor = &anIsoCurve; break; + case 0: par = myUF; aGeomCurve->Load(myIsoUF); anAdaptor = aGeomCurve; anIsoBox = &myBndUF; break; + case 1: par = myUL; aGeomCurve->Load(myIsoUL); anAdaptor = aGeomCurve; anIsoBox = &myBndUL; break; + case 2: par = U; anIsoCurve->Load(GeomAbs_IsoU, U); anAdaptor = anIsoCurve; break; + case 3: par = myVF; aGeomCurve->Load(myIsoVF); anAdaptor = aGeomCurve; anIsoBox = &myBndVF; break; + case 4: par = myVL; aGeomCurve->Load(myIsoVL); anAdaptor = aGeomCurve; anIsoBox = &myBndVL; break; + case 5: par = V; anIsoCurve->Load(GeomAbs_IsoV, V); anAdaptor = anIsoCurve; break; default: break; } if (anIsoBox && anIsoBox->Distance(aPBox) > theMin) continue; - dist = ShapeAnalysis_Curve().Project(*anAdaptor, P3d, preci, pntres, other); + dist = ShapeAnalysis_Curve().Project(anAdaptor, P3d, preci, pntres, other); if (dist < theMin) { theMin = dist; UU = (UV ? par : other); VV = (UV ? other : par); //:q6: uncommented @@ -1505,14 +1505,14 @@ Standard_Real ShapeAnalysis_Surface::UVFromIso(const gp_Pnt& P3d, const Standard PrevU = UU; PrevV = VV; if (UV) { par = UU; - anIsoCurve.Load(GeomAbs_IsoU, UU); + anIsoCurve->Load(GeomAbs_IsoU, UU); } else { par = VV; - anIsoCurve.Load(GeomAbs_IsoV, VV); + anIsoCurve->Load(GeomAbs_IsoV, VV); } - Cf = anIsoCurve.FirstParameter(); - Cl = anIsoCurve.LastParameter(); + Cf = anIsoCurve->FirstParameter(); + Cl = anIsoCurve->LastParameter(); RestrictBounds (Cf, Cl); dist = ShapeAnalysis_Curve().Project(anIsoCurve, P3d, preci, pntres, other); if (dist < theMin) { @@ -1522,14 +1522,14 @@ Standard_Real ShapeAnalysis_Surface::UVFromIso(const gp_Pnt& P3d, const Standard UV = !UV; if (UV) { par = UU; - anIsoCurve.Load(GeomAbs_IsoU, UU); + anIsoCurve->Load(GeomAbs_IsoU, UU); } else { par = VV; - anIsoCurve.Load(GeomAbs_IsoV, VV); + anIsoCurve->Load(GeomAbs_IsoV, VV); } - Cf = anIsoCurve.FirstParameter(); - Cl = anIsoCurve.LastParameter(); + Cf = anIsoCurve->FirstParameter(); + Cl = anIsoCurve->LastParameter(); RestrictBounds (Cf, Cl); dist = ShapeAnalysis_Curve().ProjectAct(anIsoCurve, P3d, preci, pntres, other); if (dist < theMin) { @@ -1609,13 +1609,13 @@ void ShapeAnalysis_Surface::ComputeBoxes() myIsoBoxes = Standard_True; ComputeBoundIsos(); if (!myIsoUF.IsNull()) - BndLib_Add3dCurve::Add(GeomAdaptor_Curve(myIsoUF), Precision::Confusion(), myBndUF); + BndLib_Add3dCurve::Add(new GeomAdaptor_Curve(myIsoUF), Precision::Confusion(), myBndUF); if (!myIsoUL.IsNull()) - BndLib_Add3dCurve::Add(GeomAdaptor_Curve(myIsoUL), Precision::Confusion(), myBndUL); + BndLib_Add3dCurve::Add(new GeomAdaptor_Curve(myIsoUL), Precision::Confusion(), myBndUL); if (!myIsoVF.IsNull()) - BndLib_Add3dCurve::Add(GeomAdaptor_Curve(myIsoVF), Precision::Confusion(), myBndVF); + BndLib_Add3dCurve::Add(new GeomAdaptor_Curve(myIsoVF), Precision::Confusion(), myBndVF); if (!myIsoVL.IsNull()) - BndLib_Add3dCurve::Add(GeomAdaptor_Curve(myIsoVL), Precision::Confusion(), myBndVL); + BndLib_Add3dCurve::Add(new GeomAdaptor_Curve(myIsoVL), Precision::Confusion(), myBndVL); } const Bnd_Box& ShapeAnalysis_Surface::GetBoxUF() diff --git a/src/ShapeAnalysis/ShapeAnalysis_TransferParametersProj.cxx b/src/ShapeAnalysis/ShapeAnalysis_TransferParametersProj.cxx index 326c062a1e..68ccac02f2 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_TransferParametersProj.cxx +++ b/src/ShapeAnalysis/ShapeAnalysis_TransferParametersProj.cxx @@ -184,9 +184,9 @@ Standard_Real ShapeAnalysis_TransferParametersProj::PreformSegment(const Standar gp_Pnt p1 = myCurve->Value(Param).Transformed(myLocation.Inverted()); Handle(Adaptor3d_Surface) AdS = myAC3d.GetSurface(); Handle(Geom2dAdaptor_Curve) AC2d = new Geom2dAdaptor_Curve(myCurve2d,First,Last); - Adaptor3d_CurveOnSurface Ad1(AC2d,AdS); + Handle(Adaptor3d_CurveOnSurface) Ad1 = new Adaptor3d_CurveOnSurface(AC2d,AdS); projDev = sac.Project(Ad1,p1,myPrecision,pproj,ppar);//pdn - linDev = p1.Distance(Ad1.Value(linPar)); + linDev = p1.Distance(Ad1->Value(linPar)); } else { gp_Pnt p1 = myAC3d.Value(Param).Transformed(myLocation); @@ -354,7 +354,7 @@ void ShapeAnalysis_TransferParametersProj::TransferRange(TopoDS_Edge& newEdge, Standard_Real len = last -first; gp_Pnt ploc1 = p1.Transformed(loc); gp_Pnt ploc2 = p2.Transformed(loc); - GeomAdaptor_Curve GAC(C3d,first,last); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C3d,first,last); // CATIA bplseitli.model FAC1155 - Copy: protection for degenerated edges(3d case for symmetry) Standard_Real linFirst = first+alpha*len; Standard_Real linLast = first+beta*len; @@ -401,7 +401,7 @@ void ShapeAnalysis_TransferParametersProj::TransferRange(TopoDS_Edge& newEdge, Standard_Real len = last -first; Handle(Geom2dAdaptor_Curve) AC2d = new Geom2dAdaptor_Curve(toGC->PCurve(),first,last); Handle(GeomAdaptor_Surface) AdS = new GeomAdaptor_Surface( toGC->Surface()); - Adaptor3d_CurveOnSurface Ad1(AC2d,AdS); + Handle(Adaptor3d_CurveOnSurface) Ad1 = new Adaptor3d_CurveOnSurface(AC2d,AdS); ShapeAnalysis_Curve sac1; //gp_Pnt p1 = Ad1.Value(prevPar); @@ -422,8 +422,8 @@ void ShapeAnalysis_TransferParametersProj::TransferRange(TopoDS_Edge& newEdge, if(isLastOnEnd && ! localLinearLast) localLinearLast = Standard_True; - gp_Pnt pos1 = Ad1.Value ( linFirst ); - gp_Pnt pos2 = Ad1.Value ( linLast ); + gp_Pnt pos1 = Ad1->Value ( linFirst ); + gp_Pnt pos2 = Ad1->Value ( linLast ); Standard_Real d01 = pos1.Distance ( ploc1 ); Standard_Real d02 = pos2.Distance ( ploc2 ); if ( localLinearFirst || useLinear || d01 <= dist1 || ( d01 < myPrecision && d01 <= 2 * dist1 ) ) diff --git a/src/ShapeAnalysis/ShapeAnalysis_Wire.cxx b/src/ShapeAnalysis/ShapeAnalysis_Wire.cxx index 633917eb4b..7ffe72051b 100644 --- a/src/ShapeAnalysis/ShapeAnalysis_Wire.cxx +++ b/src/ShapeAnalysis/ShapeAnalysis_Wire.cxx @@ -400,7 +400,7 @@ void ShapeAnalysis_Wire::SetSurface (const Handle(Geom_Surface)& surface, TopoDS_Edge E = sbwd->Edge (i); if(sae.PCurve (E,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac(c2d,cf,cl); + Handle(Geom2dAdaptor_Curve) gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes(i) = box; } @@ -1108,7 +1108,7 @@ Standard_Boolean ShapeAnalysis_Wire::CheckDegenerated (const Standard_Integer nu // from 3d curve (but only if edge is SameParameter) static gp_Pnt GetPointOnEdge ( const TopoDS_Edge &edge, const Handle(ShapeAnalysis_Surface) &surf, - const Geom2dAdaptor_Curve &Crv2d, + const Handle(Geom2dAdaptor_Curve) &Crv2d, const Standard_Real param ) { if ( BRep_Tool::SameParameter ( edge ) ) { @@ -1118,7 +1118,7 @@ static gp_Pnt GetPointOnEdge ( const TopoDS_Edge &edge, if ( ! ConS.IsNull() ) return ConS->Value ( param ).Transformed ( L.Transformation() ); } - gp_Pnt2d aP2d = Crv2d.Value(param); + gp_Pnt2d aP2d = Crv2d->Value(param); return surf->Adaptor3d()->Value(aP2d.X(), aP2d.Y()); } @@ -1150,7 +1150,7 @@ Standard_Boolean ShapeAnalysis_Wire::CheckSelfIntersectingEdge (const Standard_I Standard_Real tolint = 1.0e-10; //szv#4:S4163:12Mar99 warning IntRes2d_Domain domain ( Crv->Value ( a ), a, tolint, Crv->Value ( b ), b, tolint ); - Geom2dAdaptor_Curve AC ( Crv ); + Handle(Geom2dAdaptor_Curve) AC = new Geom2dAdaptor_Curve( Crv ); Geom2dInt_GInter Inter ( AC, domain, tolint, tolint ); if ( ! Inter.IsDone() ) return Standard_False; @@ -1263,11 +1263,12 @@ Standard_Boolean ShapeAnalysis_Wire::CheckIntersectingEdges (const Standard_Inte Standard_Real tolint = 1.0e-10; //szv#4:S4163:12Mar99 warning - Geom2dAdaptor_Curve C1 ( Crv1 ), C2 ( Crv2 ); - IntRes2d_Domain d1 ( C1.Value ( a1 ), a1, tolint, - C1.Value ( b1 ), b1, tolint ); - IntRes2d_Domain d2 ( C2.Value ( a2 ), a2, tolint, - C2.Value ( b2 ), b2, tolint ); + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(Crv1); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(Crv2); + IntRes2d_Domain d1 ( C1->Value ( a1 ), a1, tolint, + C1->Value ( b1 ), b1, tolint ); + IntRes2d_Domain d2 ( C2->Value ( a2 ), a2, tolint, + C2->Value ( b2 ), b2, tolint ); //:64 abv 25 Dec 97: Attention! // Since Intersection algorithm is not symmetrical, for consistency with BRepCheck @@ -1425,7 +1426,8 @@ Standard_Boolean ShapeAnalysis_Wire::CheckIntersectingEdges(const Standard_Integ Crv1->Value ( b1 ), b1, tolint ); IntRes2d_Domain d2 ( Crv2->Value ( a2 ), a2, tolint, Crv2->Value ( b2 ), b2, tolint ); - Geom2dAdaptor_Curve C1 ( Crv1 ), C2 ( Crv2 ); + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(Crv1); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(Crv2); Geom2dInt_GInter Inter; Inter.Perform ( C1, d1, C2, d2, tolint, tolint ); @@ -1608,7 +1610,7 @@ Standard_Boolean ShapeAnalysis_Wire::CheckLacking (const Standard_Integer num, //purpose : //======================================================================= -static Standard_Real ProjectInside(const Adaptor3d_CurveOnSurface& AD, +static Standard_Real ProjectInside(const Handle(Adaptor3d_CurveOnSurface)& AD, const gp_Pnt& pnt, const Standard_Real preci, gp_Pnt& proj, @@ -1617,17 +1619,17 @@ static Standard_Real ProjectInside(const Adaptor3d_CurveOnSurface& AD, { ShapeAnalysis_Curve sac; Standard_Real dist = sac.Project(AD,pnt,preci,proj,param,adjustToEnds); - Standard_Real uFirst = AD.FirstParameter(); - Standard_Real uLast = AD.LastParameter(); + Standard_Real uFirst = AD->FirstParameter(); + Standard_Real uLast = AD->LastParameter(); if(paramValue(uFirst); return proj.Distance(pnt); } if(param>uLast) { param = uLast; - proj = AD.Value(uLast); + proj = AD->Value(uLast); return proj.Distance(pnt); } return dist; @@ -1697,13 +1699,13 @@ Standard_Boolean ShapeAnalysis_Wire::CheckNotchedEdges(const Standard_Integer nu Handle(Geom2dAdaptor_Curve) AC2d1 = new Geom2dAdaptor_Curve(c2d1,a1,b1); Handle(GeomAdaptor_Surface) AdS1 = new GeomAdaptor_Surface(new Geom_Plane(gp_Pln())); - Adaptor3d_CurveOnSurface Ad1(AC2d1,AdS1); + Handle(Adaptor3d_CurveOnSurface) Ad1 = new Adaptor3d_CurveOnSurface(AC2d1,AdS1); Handle(Geom2dAdaptor_Curve) AC2d2 = new Geom2dAdaptor_Curve(c2d2,a2,b2); Handle(GeomAdaptor_Surface) AdS2 = new GeomAdaptor_Surface(new Geom_Plane(gp_Pln())); - Adaptor3d_CurveOnSurface Ad2(AC2d2,AdS2); + Handle(Adaptor3d_CurveOnSurface) Ad2 = new Adaptor3d_CurveOnSurface(AC2d2,AdS2); - Adaptor3d_CurveOnSurface longAD, shortAD; + Handle(Adaptor3d_CurveOnSurface) longAD, shortAD; Standard_Real lenP, firstP; ShapeAnalysis_Curve sac; @@ -1738,7 +1740,7 @@ Standard_Boolean ShapeAnalysis_Wire::CheckNotchedEdges(const Standard_Integer nu Standard_Real step = lenP/23; for (Standard_Integer i = 1; i < 23; i++,firstP+=step) { - Standard_Real d1 = sac.Project(longAD,shortAD.Value(firstP),Tolerance,Proj1,param1); + Standard_Real d1 = sac.Project(longAD,shortAD->Value(firstP),Tolerance,Proj1,param1); if (d1 > Tolerance) { return Standard_False; } @@ -2091,7 +2093,7 @@ Standard_Boolean ShapeAnalysis_Wire::CheckTail( Standard_Integer aReverse = 0; for (Standard_Integer aEI = 0; aEI < 2; ++aEI) { - GeomAdaptor_Curve aCA(aCs[aEI]); + Handle(GeomAdaptor_Curve) aCA = new GeomAdaptor_Curve(aCs[aEI]); if (GCPnts_AbscissaPoint::Length(aCA, aLs[aEI][0], aLs[aEI][1], 0.25 * Precision::Confusion()) < 0.5 * Precision::Confusion()) { diff --git a/src/ShapeConstruct/ShapeConstruct_ProjectCurveOnSurface.cxx b/src/ShapeConstruct/ShapeConstruct_ProjectCurveOnSurface.cxx index d37d601ac7..9e0be14c7f 100644 --- a/src/ShapeConstruct/ShapeConstruct_ProjectCurveOnSurface.cxx +++ b/src/ShapeConstruct/ShapeConstruct_ProjectCurveOnSurface.cxx @@ -516,7 +516,7 @@ Standard_Boolean ShapeConstruct_ProjectCurveOnSurface::PerformByProjLib(Handle(G GeomProjLib::ProjectOnPlane (c3d, Plane, Plane->Position().Direction(), Standard_True); Handle(GeomAdaptor_Curve) HC = new GeomAdaptor_Curve ( ProjOnPlane ); - ProjLib_ProjectedCurve Proj ( mySurf->Adaptor3d(), HC ); + Handle(ProjLib_ProjectedCurve) Proj = new ProjLib_ProjectedCurve( mySurf->Adaptor3d(), HC ); result = Geom2dAdaptor::MakeCurve(Proj); if ( result.IsNull() ) return result; diff --git a/src/ShapeFix/ShapeFix_ComposeShell.cxx b/src/ShapeFix/ShapeFix_ComposeShell.cxx index af2f722c34..202f863c1a 100644 --- a/src/ShapeFix/ShapeFix_ComposeShell.cxx +++ b/src/ShapeFix/ShapeFix_ComposeShell.cxx @@ -890,7 +890,7 @@ ShapeFix_WireSegment ShapeFix_ComposeShell::SplitWire (ShapeFix_WireSegment &wir Standard_Integer nbNMVert = aNMVertices.Length(); TColStd_SequenceOfReal aNMVertParams; if( nbNMVert) { - Geom2dAdaptor_Curve adc(C2d); + Handle(Geom2dAdaptor_Curve) adc = new Geom2dAdaptor_Curve(C2d); Standard_Integer n =1; for( ; n<= nbNMVert; n++) { gp_Pnt apV = BRep_Tool::Pnt(TopoDS::Vertex(aNMVertices.Value(n))); @@ -1196,7 +1196,7 @@ Standard_Boolean ShapeFix_ComposeShell::SplitByLine (ShapeFix_WireSegment &wire, ShapeAnalysis_Edge sae; // prepare data on cutting line Handle(Geom2d_Line) jC2d = new Geom2d_Line ( line ); - Geom2dAdaptor_Curve jGAC(jC2d); + Handle(Geom2dAdaptor_Curve) jGAC = new Geom2dAdaptor_Curve(jC2d); TColStd_SequenceOfInteger IntEdgeInd; // index of intersecting edge TColStd_SequenceOfReal IntEdgePar; // parameter of intersection point on edge @@ -1333,7 +1333,7 @@ Standard_Boolean ShapeFix_ComposeShell::SplitByLine (ShapeFix_WireSegment &wire, for ( Standard_Integer iter=1; iter <= nbIter; iter++ ) { // data for intersection IntRes2d_Domain iDom ( pppf, f, TOLINT, pppl, l, TOLINT ); - Geom2dAdaptor_Curve iGAC(c2d); + Handle(Geom2dAdaptor_Curve) iGAC = new Geom2dAdaptor_Curve(c2d); // intersection Geom2dInt_GInter Inter; diff --git a/src/ShapeFix/ShapeFix_EdgeProjAux.cxx b/src/ShapeFix/ShapeFix_EdgeProjAux.cxx index 1afc7a1a69..d26438166b 100644 --- a/src/ShapeFix/ShapeFix_EdgeProjAux.cxx +++ b/src/ShapeFix/ShapeFix_EdgeProjAux.cxx @@ -183,7 +183,7 @@ Standard_Boolean ShapeFix_EdgeProjAux::IsIso (const Handle(Geom2d_Curve)& /*theC // ---------------------------------------------------------------------------- static Standard_Boolean FindParameterWithExt (const gp_Pnt& Pt1, - const Adaptor3d_CurveOnSurface& COnS, + const Handle(Adaptor3d_CurveOnSurface)& COnS, const Standard_Real Uinf, const Standard_Real Usup, const Standard_Real preci, @@ -384,13 +384,13 @@ void ShapeFix_EdgeProjAux::Init2d (const Standard_Real preci) Geom2dAdaptor_Curve CA = Geom2dAdaptor_Curve(theCurve2d,cf,cl); Handle(Geom2dAdaptor_Curve) myHCur = new Geom2dAdaptor_Curve(CA); - Adaptor3d_CurveOnSurface COnS = Adaptor3d_CurveOnSurface(myHCur, myHSur); + Handle(Adaptor3d_CurveOnSurface) COnS = new Adaptor3d_CurveOnSurface(myHCur, myHSur); // ---------------------------------------------- // --- topological limit == geometric limit ? --- // ---------------------------------------------- - Standard_Real Uinf = COnS.FirstParameter(); - Standard_Real Usup = COnS.LastParameter(); + Standard_Real Uinf = COnS->FirstParameter(); + Standard_Real Usup = COnS->LastParameter(); Standard_Real w1 = 0., w2 = 0.; ShapeAnalysis_Curve sac; @@ -428,7 +428,7 @@ void ShapeFix_EdgeProjAux::Init2d (const Standard_Real preci) return; } //:abv 29.08.01: SAT: fix for closed case - if ( COnS.Value(Uinf).Distance ( COnS.Value(Usup) ) < Precision::Confusion() ) { + if ( COnS->Value(Uinf).Distance ( COnS->Value(Usup) ) < Precision::Confusion() ) { // 18.11.2002 SKL OCC630 compare values with tolerance Precision::PConfusion() instead of "==" if ( Abs(myFirstParam-Uinf) < ::Precision::PConfusion() && Abs(myLastParam-Uinf) < ::Precision::PConfusion() ) @@ -512,7 +512,7 @@ void ShapeFix_EdgeProjAux::Init3d (const Standard_Real preci) Geom2dAdaptor_Curve CA = Geom2dAdaptor_Curve(theCurve2d); Handle(Geom2dAdaptor_Curve) myHCur = new Geom2dAdaptor_Curve(CA); - Adaptor3d_CurveOnSurface COnS = Adaptor3d_CurveOnSurface(myHCur, myHSur); + Handle(Adaptor3d_CurveOnSurface) COnS = new Adaptor3d_CurveOnSurface(myHCur, myHSur); //:S4136 Standard_Real preci = BRepAPI::Precision(); Standard_Real Uinf = theCurve2d->FirstParameter(); @@ -524,8 +524,8 @@ void ShapeFix_EdgeProjAux::Init3d (const Standard_Real preci) if (theCurve2d->IsKind(STANDARD_TYPE(Geom2d_BoundedCurve))) { - gp_Pnt Pdeb = COnS.Value(Uinf); - gp_Pnt Pfin = COnS.Value(Usup); + gp_Pnt Pdeb = COnS->Value(Uinf); + gp_Pnt Pfin = COnS->Value(Usup); //szv#4:S4163:12Mar99 optimized if ( Pdeb.IsEqual(Pt1, preci) && Pfin.IsEqual(Pt2, preci) ) { @@ -541,8 +541,8 @@ void ShapeFix_EdgeProjAux::Init3d (const Standard_Real preci) // --- Try with Extrema --- // ------------------------------------------ - Standard_Real w1 = COnS.FirstParameter(); - Standard_Real w2 = COnS.LastParameter(); + Standard_Real w1 = COnS->FirstParameter(); + Standard_Real w2 = COnS->LastParameter(); if ((!Precision::IsInfinite(w1) && !Precision::IsInfinite(w2) && diff --git a/src/ShapeFix/ShapeFix_Face.cxx b/src/ShapeFix/ShapeFix_Face.cxx index 23c3ff338f..09c4b31da1 100644 --- a/src/ShapeFix/ShapeFix_Face.cxx +++ b/src/ShapeFix/ShapeFix_Face.cxx @@ -1145,15 +1145,15 @@ Standard_Boolean ShapeFix_Face::FixOrientation(TopTools_DataMapOfShapeListOfShap { continue; } - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = cw->FirstParameter(); Standard_Real aLast = cw->LastParameter(); if(cw->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //avoiding problems with segment in Bnd_Box - gac.Load(cw); + gac = new Geom2dAdaptor_Curve(cw); } - else - gac.Load(cw,cf,cl); + else + gac = new Geom2dAdaptor_Curve(cw,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),aBox); } @@ -2237,31 +2237,31 @@ Standard_Boolean ShapeFix_Face::SplitEdge(const Handle(ShapeExtend_WireData)& se ShapeAnalysis_Edge sae; if(sae.PCurve(newE1,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE1,box); } if(sae.PCurve(newE2,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE2,box); } @@ -2313,31 +2313,31 @@ Standard_Boolean ShapeFix_Face::SplitEdge(const Handle(ShapeExtend_WireData)& se ShapeAnalysis_Edge sae; if(sae.PCurve(newE1,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE1,box); } if(sae.PCurve(newE2,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE2,box); } diff --git a/src/ShapeFix/ShapeFix_IntersectionTool.cxx b/src/ShapeFix/ShapeFix_IntersectionTool.cxx index b98d4bb2c5..afa98f0cda 100644 --- a/src/ShapeFix/ShapeFix_IntersectionTool.cxx +++ b/src/ShapeFix/ShapeFix_IntersectionTool.cxx @@ -69,7 +69,7 @@ ShapeFix_IntersectionTool::ShapeFix_IntersectionTool(const Handle(ShapeBuild_ReS //======================================================================= static gp_Pnt GetPointOnEdge(const TopoDS_Edge &edge, const Handle(ShapeAnalysis_Surface) &surf, - const Geom2dAdaptor_Curve &Crv2d, + const Handle(Geom2dAdaptor_Curve) &Crv2d, const Standard_Real param ) { if( BRep_Tool::SameParameter(edge) ) { @@ -79,7 +79,7 @@ static gp_Pnt GetPointOnEdge(const TopoDS_Edge &edge, if( !ConS.IsNull() ) return ConS->Value(param).Transformed(L.Transformation()); } - gp_Pnt2d aP2d = Crv2d.Value(param); + gp_Pnt2d aP2d = Crv2d->Value(param); return surf->Adaptor3d()->Value(aP2d.X(), aP2d.Y()); } @@ -280,31 +280,31 @@ Standard_Boolean ShapeFix_IntersectionTool::SplitEdge1(const Handle(ShapeExtend_ ShapeAnalysis_Edge sae; if(sae.PCurve(newE1,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE1,box); } if(sae.PCurve(newE2,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE2,box); } @@ -388,31 +388,31 @@ Standard_Boolean ShapeFix_IntersectionTool::SplitEdge2(const Handle(ShapeExtend_ Standard_Real cf,cl; if(sae.PCurve(newE1,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE1,box); } if(sae.PCurve(newE2,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(newE2,box); } @@ -728,16 +728,16 @@ static Bnd_Box2d CreateBoxes2d(const Handle(ShapeExtend_WireData)& sewd, TopoDS_Edge E = sewd->Edge(i); if(sae.PCurve(E,S,L,c2d,cf,cl,Standard_False)) { Bnd_Box2d box; - Geom2dAdaptor_Curve gac; + Handle(Geom2dAdaptor_Curve) gac; Standard_Real aFirst = c2d->FirstParameter(); Standard_Real aLast = c2d->LastParameter(); if(c2d->IsKind(STANDARD_TYPE(Geom2d_BSplineCurve)) && (cf < aFirst || cl > aLast)) { //pdn avoiding problems with segment in Bnd_Box - gac.Load(c2d); + gac = new Geom2dAdaptor_Curve(c2d); } else - gac.Load(c2d,cf,cl); + gac = new Geom2dAdaptor_Curve(c2d,cf,cl); BndLib_Add2dCurve::Add(gac,::Precision::Confusion(),box); boxes.Bind(E,box); aTotalBox.Add (box); @@ -796,7 +796,8 @@ Standard_Boolean ShapeFix_IntersectionTool::FindVertAndSplitEdge // find needed vertex from edge2 and split edge1 using it ShapeAnalysis_Edge sae; Handle(ShapeAnalysis_Surface) sas = new ShapeAnalysis_Surface(BRep_Tool::Surface(face)); - gp_Pnt pi1 = GetPointOnEdge(edge1,sas,Crv1,param1); + Handle(Geom2dAdaptor_Curve) gac = new Geom2dAdaptor_Curve(Crv1); + gp_Pnt pi1 = GetPointOnEdge(edge1,sas,gac,param1); BRep_Builder B; TopoDS_Vertex V; Standard_Real tolV; @@ -889,9 +890,10 @@ Standard_Boolean ShapeFix_IntersectionTool::FixSelfIntersectWire if( !sae.PCurve(edge1, face, Crv1, a1, b1, Standard_False) ) return Standard_False; if( !sae.PCurve(edge2, face, Crv2, a2, b2, Standard_False) ) return Standard_False; Standard_Real tolint = 1.0e-10; - Geom2dAdaptor_Curve C1(Crv1), C2(Crv2); - IntRes2d_Domain d1(C1.Value(a1),a1,tolint,C1.Value(b1),b1,tolint); - IntRes2d_Domain d2(C2.Value(a2),a2,tolint,C2.Value(b2),b2,tolint); + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(Crv1); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(Crv2); + IntRes2d_Domain d1(C1->Value(a1),a1,tolint,C1->Value(b1),b1,tolint); + IntRes2d_Domain d2(C2->Value(a2),a2,tolint,C2->Value(b2),b2,tolint); Geom2dInt_GInter Inter; Inter.Perform( C1, d1, C2, d2, tolint, tolint ); if(!Inter.IsDone()) continue; @@ -1537,9 +1539,10 @@ Standard_Boolean ShapeFix_IntersectionTool::FixIntersectingWires if( !sae.PCurve(edge2, face, Crv2, a2, b2, Standard_False) ) continue; //return Standard_False;gka 06.09.04 Standard_Real tolint = 1.0e-10; - Geom2dAdaptor_Curve C1(Crv1), C2(Crv2); - IntRes2d_Domain d1(C1.Value(a1),a1,tolint,C1.Value(b1),b1,tolint); - IntRes2d_Domain d2(C2.Value(a2),a2,tolint,C2.Value(b2),b2,tolint); + Handle(Geom2dAdaptor_Curve) C1 = new Geom2dAdaptor_Curve(Crv1); + Handle(Geom2dAdaptor_Curve) C2 = new Geom2dAdaptor_Curve(Crv2); + IntRes2d_Domain d1(C1->Value(a1),a1,tolint,C1->Value(b1),b1,tolint); + IntRes2d_Domain d2(C2->Value(a2),a2,tolint,C2->Value(b2),b2,tolint); Geom2dInt_GInter Inter; Inter.Perform( C1, d1, C2, d2, tolint, tolint ); if(!Inter.IsDone()) continue; diff --git a/src/ShapeFix/ShapeFix_Wire.cxx b/src/ShapeFix/ShapeFix_Wire.cxx index f03fd76f01..d2e5c864af 100644 --- a/src/ShapeFix/ShapeFix_Wire.cxx +++ b/src/ShapeFix/ShapeFix_Wire.cxx @@ -573,7 +573,7 @@ Standard_Boolean ShapeFix_Wire::FixEdgeCurves() Handle(Geom_Curve) C = BRep_Tool::Curve ( E, a, b ); Handle(ShapeAnalysis_Surface) S = myAnalyzer->Surface(); Standard_Integer nbs = S->NbSingularities(MinTolerance()); - GeomAdaptor_Curve GAC ( C, a, b ); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve( C, a, b ); TColStd_SequenceOfReal seq; for (Standard_Integer j=1; j <= nbs; j++) { Standard_Real Preci; diff --git a/src/ShapeFix/ShapeFix_Wire_1.cxx b/src/ShapeFix/ShapeFix_Wire_1.cxx index 901cbad65d..4bd020a8f7 100644 --- a/src/ShapeFix/ShapeFix_Wire_1.cxx +++ b/src/ShapeFix/ShapeFix_Wire_1.cxx @@ -1026,7 +1026,8 @@ static Standard_Real AdjustOnPeriodic2d (const Handle(Geom2d_Curve)& pc, Geom2dInt_GInter Inter; Standard_Real tolint = ::Precision::PConfusion(); - Geom2dAdaptor_Curve AC1(pc1), AC2(pc2); + Handle(Geom2dAdaptor_Curve) AC1 = new Geom2dAdaptor_Curve(pc1); + Handle(Geom2dAdaptor_Curve) AC2 = new Geom2dAdaptor_Curve(pc2); // Try to find intersection points IntRes2d_Domain dom1(pc1->Value(domfirst1),domfirst1,tolint, @@ -1346,7 +1347,7 @@ static Standard_Real AdjustOnPeriodic2d (const Handle(Geom2d_Curve)& pc, { // Intersect pcurve with bounding line Handle(Geom2d_Line) lin = new Geom2d_Line(P1,gp_Dir2d(gp_Vec2d(P1,P2))); - Geom2dAdaptor_Curve ACL(lin); + Handle(Geom2dAdaptor_Curve) ACL = new Geom2dAdaptor_Curve(lin); IntRes2d_Domain dlin(P1,0.,tolint,P2,P1.Distance(P2),tolint); Handle(Geom2d_Curve) pc; @@ -1375,7 +1376,7 @@ static Standard_Real AdjustOnPeriodic2d (const Handle(Geom2d_Curve)& pc, } pc = pc2; } - Geom2dAdaptor_Curve ACC(pc); + Handle(Geom2dAdaptor_Curve) ACC = new Geom2dAdaptor_Curve(pc); IntRes2d_Domain domc(pc->Value(fpar),fpar,tolint, pc->Value(lpar),lpar,tolint); diff --git a/src/ShapeUpgrade/ShapeUpgrade_WireDivide.cxx b/src/ShapeUpgrade/ShapeUpgrade_WireDivide.cxx index 0bd2850378..cad5097305 100644 --- a/src/ShapeUpgrade/ShapeUpgrade_WireDivide.cxx +++ b/src/ShapeUpgrade/ShapeUpgrade_WireDivide.cxx @@ -415,7 +415,7 @@ void ShapeUpgrade_WireDivide::Perform () Standard_Real af = 0.,al = 0.; Handle(Geom_Curve) c3d; - Adaptor3d_CurveOnSurface AdCS; + Handle(Adaptor3d_CurveOnSurface) AdCS = new Adaptor3d_CurveOnSurface(); if(myEdgeDivide->HasCurve3d()) sae.Curve3d(E,c3d,af,al,Standard_False); else if(myEdgeDivide->HasCurve2d() && !Surf.IsNull()) { @@ -423,8 +423,8 @@ void ShapeUpgrade_WireDivide::Perform () sae.PCurve ( E, myFace, c2d, af, al, Standard_False); Handle(Adaptor3d_Surface) AdS = new GeomAdaptor_Surface(Surf); Handle(Adaptor2d_Curve2d) AC2d = new Geom2dAdaptor_Curve(c2d,af,al); - AdCS.Load(AC2d); - AdCS.Load(AdS); + AdCS->Load(AC2d); + AdCS->Load(AdS); } TopTools_SequenceOfShape aSeqNMVertices; TColStd_SequenceOfReal aSeqParNM; diff --git a/src/StdPrs/StdPrs_BRepFont.cxx b/src/StdPrs/StdPrs_BRepFont.cxx index ab2d9b3c9f..7b2a5c255c 100644 --- a/src/StdPrs/StdPrs_BRepFont.cxx +++ b/src/StdPrs/StdPrs_BRepFont.cxx @@ -126,6 +126,7 @@ StdPrs_BRepFont::StdPrs_BRepFont () my4Poles (1, 4) { myFTFont = new Font_FTFont(); + myCurvOnSurf = new Adaptor3d_CurveOnSurface(); init(); } @@ -138,7 +139,7 @@ void StdPrs_BRepFont::init() mySurface = new Geom_Plane (gp_Pln (gp::XOY())); myCurve2dAdaptor = new Geom2dAdaptor_Curve(); Handle(Adaptor3d_Surface) aSurfAdaptor = new GeomAdaptor_Surface (mySurface); - myCurvOnSurf.Load (aSurfAdaptor); + myCurvOnSurf->Load (aSurfAdaptor); } // ======================================================================= @@ -154,6 +155,7 @@ StdPrs_BRepFont::StdPrs_BRepFont (const NCollection_String& theFontPath, my3Poles (1, 3), my4Poles (1, 4) { + myCurvOnSurf = new Adaptor3d_CurveOnSurface(); init(); if (theSize <= myPrecision * 100.0) { @@ -179,6 +181,7 @@ StdPrs_BRepFont::StdPrs_BRepFont (const NCollection_String& theFontName, my3Poles (1, 3), my4Poles (1, 4) { + myCurvOnSurf = new Adaptor3d_CurveOnSurface(); init(); if (theSize <= myPrecision * 100.0) { @@ -291,7 +294,7 @@ bool StdPrs_BRepFont::to3d (const Handle(Geom2d_Curve)& theCurve2d, Standard_Real anAverDeviation = 0.0; myCurve2dAdaptor->Load (theCurve2d); const Handle(Adaptor2d_Curve2d)& aCurve = myCurve2dAdaptor; // to avoid ambiguity - myCurvOnSurf.Load (aCurve); + myCurvOnSurf->Load (aCurve); GeomLib::BuildCurve3d (myPrecision, myCurvOnSurf, myCurve2dAdaptor->FirstParameter(), myCurve2dAdaptor->LastParameter(), theCurve3d, aMaxDeviation, anAverDeviation, theContinuity); diff --git a/src/StdPrs/StdPrs_BRepFont.hxx b/src/StdPrs/StdPrs_BRepFont.hxx index 8f1f6abac3..58b788ef5a 100644 --- a/src/StdPrs/StdPrs_BRepFont.hxx +++ b/src/StdPrs/StdPrs_BRepFont.hxx @@ -240,7 +240,7 @@ protected: //! @name Protected fields protected: //! @name Shared temporary variables for glyph construction - Adaptor3d_CurveOnSurface myCurvOnSurf; + Handle(Adaptor3d_CurveOnSurface) myCurvOnSurf; Handle(Geom2dAdaptor_Curve) myCurve2dAdaptor; Geom2dConvert_CompCurveToBSplineCurve myConcatMaker; TColgp_Array1OfPnt2d my3Poles; diff --git a/src/StdPrs/StdPrs_Curve.cxx b/src/StdPrs/StdPrs_Curve.cxx index cde1d4ec4d..c31909f5a0 100644 --- a/src/StdPrs/StdPrs_Curve.cxx +++ b/src/StdPrs/StdPrs_Curve.cxx @@ -37,13 +37,13 @@ // function: FindLimits // purpose: //================================================================== -static void FindLimits(const Adaptor3d_Curve& aCurve, +static void FindLimits(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aLimit, Standard_Real& First, Standard_Real& Last) { - First = aCurve.FirstParameter(); - Last = aCurve.LastParameter(); + First = aCurve->FirstParameter(); + Last = aCurve->LastParameter(); Standard_Boolean firstInf = Precision::IsNegativeInfinite(First); Standard_Boolean lastInf = Precision::IsPositiveInfinite(Last); @@ -55,24 +55,24 @@ static void FindLimits(const Adaptor3d_Curve& aCurve, delta *= 2; First = - delta; Last = delta; - aCurve.D0(First,P1); - aCurve.D0(Last,P2); + aCurve->D0(First,P1); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } else if (firstInf) { - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); do { delta *= 2; First = Last - delta; - aCurve.D0(First,P1); + aCurve->D0(First,P1); } while (P1.Distance(P2) < aLimit); } else if (lastInf) { - aCurve.D0(First,P1); + aCurve->D0(First,P1); do { delta *= 2; Last = First + delta; - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } } @@ -83,7 +83,7 @@ static void FindLimits(const Adaptor3d_Curve& aCurve, // function: DrawCurve // purpose: //================================================================== -static void DrawCurve (const Adaptor3d_Curve& aCurve, +static void DrawCurve (const Handle(Adaptor3d_Curve)& aCurve, const Handle(Graphic3d_Group) aGroup, const Standard_Integer NbP, const Standard_Real U1, @@ -93,17 +93,17 @@ static void DrawCurve (const Adaptor3d_Curve& aCurve, { Standard_Integer nbintervals = 1; - if (aCurve.GetType() == GeomAbs_BSplineCurve) { - nbintervals = aCurve.NbKnots() - 1; + if (aCurve->GetType() == GeomAbs_BSplineCurve) { + nbintervals = aCurve->NbKnots() - 1; nbintervals = Max(1, nbintervals/3); } - switch (aCurve.GetType()) + switch (aCurve->GetType()) { case GeomAbs_Line: { - gp_Pnt p1 = aCurve.Value(U1); - gp_Pnt p2 = aCurve.Value(U2); + gp_Pnt p1 = aCurve->Value(U1); + gp_Pnt p2 = aCurve->Value(U2); Points.Append(p1); Points.Append(p2); if(drawCurve) @@ -126,7 +126,7 @@ static void DrawCurve (const Adaptor3d_Curve& aCurve, aPrims = new Graphic3d_ArrayOfPolylines(N); for (Standard_Integer i = 1; i <= N;i++) { - p = aCurve.Value(U1 + (i-1)*DU); + p = aCurve->Value(U1 + (i-1)*DU); Points.Append(p); if(drawCurve) aPrims->AddVertex(p); @@ -147,35 +147,35 @@ static Standard_Boolean MatchCurve ( const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real TheDeflection, const Standard_Integer NbP, const Standard_Real U1, const Standard_Real U2) { Standard_Real retdist; - switch (aCurve.GetType()) + switch (aCurve->GetType()) { case GeomAbs_Line: { - gp_Pnt p1 = aCurve.Value(U1); + gp_Pnt p1 = aCurve->Value(U1); if ( Abs(X-p1.X()) + Abs(Y-p1.Y()) + Abs(Z-p1.Z()) <= aDistance) return Standard_True; - gp_Pnt p2 = aCurve.Value(U2); + gp_Pnt p2 = aCurve->Value(U2); if ( Abs(X-p2.X()) + Abs(Y-p2.Y()) + Abs(Z-p2.Z()) <= aDistance) return Standard_True; return Prs3d::MatchSegment(X,Y,Z,aDistance,p1,p2,retdist); } case GeomAbs_Circle: { - const Standard_Real Radius = aCurve.Circle().Radius(); + const Standard_Real Radius = aCurve->Circle().Radius(); const Standard_Real DU = Sqrt(8.0 * TheDeflection / Radius); const Standard_Real Er = Abs( U2 - U1) / DU; const Standard_Integer N = Max(2, (Standard_Integer)IntegerPart(Er)); if ( N > 0) { gp_Pnt p1,p2; for (Standard_Integer Index = 1; Index <= N+1; Index++) { - p2 = aCurve.Value(U1 + (Index - 1) * DU); + p2 = aCurve->Value(U1 + (Index - 1) * DU); if ( Abs(X-p2.X()) + Abs(Y-p2.Y()) + Abs(Z-p2.Z()) <= aDistance) return Standard_True; @@ -193,7 +193,7 @@ static Standard_Boolean MatchCurve ( const Standard_Real DU = (U2-U1) / (NbP-1); gp_Pnt p1,p2; for (Standard_Integer i=1;i<=NbP;i++) { - p2 = aCurve.Value(U1 + (i-1)*DU); + p2 = aCurve->Value(U1 + (i-1)*DU); if ( Abs(X-p2.X()) + Abs(Y-p2.Y()) + Abs(Z-p2.Z()) <= aDistance) return Standard_True; if (i>1) { @@ -213,7 +213,7 @@ static Standard_Boolean MatchCurve ( // purpose: //================================================================== void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle (Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve) { @@ -229,7 +229,7 @@ void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, if (aDrawer->LineArrowDraw()) { gp_Pnt Location; gp_Vec Direction; - aCurve.D1(aCurve.LastParameter(),Location,Direction); + aCurve->D1(aCurve->LastParameter(),Location,Direction); Prs3d_Arrow::Draw (aPresentation->CurrentGroup(), Location, gp_Dir(Direction), aDrawer->ArrowAspect()->Angle(), aDrawer->ArrowAspect()->Length()); @@ -242,7 +242,7 @@ void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, // purpose: //================================================================== void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer, TColgp_SequenceOfPnt& Points, const Standard_Boolean drawCurve) @@ -259,7 +259,7 @@ void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, // purpose: //================================================================== void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, TColgp_SequenceOfPnt& Points, @@ -274,7 +274,7 @@ void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, // purpose: //================================================================== void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle (Prs3d_Drawer)& aDrawer, @@ -295,7 +295,7 @@ void StdPrs_Curve::Add (const Handle (Prs3d_Presentation)& aPresentation, if (aDrawer->LineArrowDraw()) { gp_Pnt Location; gp_Vec Direction; - aCurve.D1(aCurve.LastParameter(),Location,Direction); + aCurve->D1(aCurve->LastParameter(),Location,Direction); Prs3d_Arrow::Draw (aPresentation->CurrentGroup(), Location, gp_Dir(Direction), aDrawer->ArrowAspect()->Angle(), aDrawer->ArrowAspect()->Length()); @@ -312,7 +312,7 @@ Standard_Boolean StdPrs_Curve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle (Prs3d_Drawer)& aDrawer) { Standard_Real V1, V2; @@ -334,7 +334,7 @@ Standard_Boolean StdPrs_Curve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit, const Standard_Integer NbPoints) @@ -356,7 +356,7 @@ Standard_Boolean StdPrs_Curve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle (Prs3d_Drawer)& aDrawer) @@ -382,7 +382,7 @@ Standard_Boolean StdPrs_Curve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection, diff --git a/src/StdPrs/StdPrs_Curve.hxx b/src/StdPrs/StdPrs_Curve.hxx index 5fced62612..caa1c539ac 100644 --- a/src/StdPrs/StdPrs_Curve.hxx +++ b/src/StdPrs/StdPrs_Curve.hxx @@ -38,7 +38,7 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); //! Adds to the presentation aPresentation the drawing of the curve aCurve. //! The aspect is defined by LineAspect in aDrawer. @@ -46,7 +46,7 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); //! adds to the presentation aPresentation the drawing of the curve aCurve. //! The aspect is the current aspect. @@ -55,7 +55,7 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer, TColgp_SequenceOfPnt& Points, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer, TColgp_SequenceOfPnt& Points, const Standard_Boolean drawCurve = Standard_True); //! adds to the presentation aPresentation the drawing of the curve //! aCurve. @@ -67,27 +67,27 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, TColgp_SequenceOfPnt& Points, const Standard_Integer aNbPoints = 30, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, TColgp_SequenceOfPnt& Points, const Standard_Integer aNbPoints = 30, const Standard_Boolean drawCurve = Standard_True); //! returns true if the distance between the point (X,Y,Z) and the //! drawing of the curve is less than aDistance. - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer); //! returns true if the distance between the point (X,Y,Z) and the //! drawing of the curve is less than aDistance. - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit, const Standard_Integer aNbPoints); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit, const Standard_Integer aNbPoints); //! returns true if the distance between the point (X,Y,Z) and the //! drawing of the curve aCurve is less than aDistance. //! The drawing is considered between the points //! of parameter U1 and U2; - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer); //! returns true if the distance between the point (X,Y,Z) and the //! drawing of the curve aCurve is less than aDistance. //! The drawing is considered between the points //! of parameter U1 and U2; - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection, const Standard_Integer aNbPoints); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection, const Standard_Integer aNbPoints); }; diff --git a/src/StdPrs/StdPrs_DeflectionCurve.cxx b/src/StdPrs/StdPrs_DeflectionCurve.cxx index 4b16d010a4..c121a1d047 100644 --- a/src/StdPrs/StdPrs_DeflectionCurve.cxx +++ b/src/StdPrs/StdPrs_DeflectionCurve.cxx @@ -37,7 +37,7 @@ // function: GetDeflection // purpose: //================================================================== -static Standard_Real GetDeflection(const Adaptor3d_Curve& aCurve, +static Standard_Real GetDeflection(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer) @@ -74,13 +74,13 @@ static Standard_Real GetDeflection(const Adaptor3d_Curve& aCurve, // function: FindLimits // purpose: //================================================================== -static Standard_Boolean FindLimits(const Adaptor3d_Curve& aCurve, +static Standard_Boolean FindLimits(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aLimit, Standard_Real& First, Standard_Real& Last) { - First = aCurve.FirstParameter(); - Last = aCurve.LastParameter(); + First = aCurve->FirstParameter(); + Last = aCurve->LastParameter(); Standard_Boolean firstInf = Precision::IsNegativeInfinite(First); Standard_Boolean lastInf = Precision::IsPositiveInfinite(Last); @@ -94,26 +94,26 @@ static Standard_Boolean FindLimits(const Adaptor3d_Curve& aCurve, delta *= 2; First = - delta; Last = delta; - aCurve.D0(First,P1); - aCurve.D0(Last,P2); + aCurve->D0(First,P1); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } else if (firstInf) { - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); do { if (count++ == 100000) return Standard_False; delta *= 2; First = Last - delta; - aCurve.D0(First,P1); + aCurve->D0(First,P1); } while (P1.Distance(P2) < aLimit); } else if (lastInf) { - aCurve.D0(First,P1); + aCurve->D0(First,P1); do { if (count++ == 100000) return Standard_False; delta *= 2; Last = First + delta; - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } } @@ -125,7 +125,7 @@ static Standard_Boolean FindLimits(const Adaptor3d_Curve& aCurve, // function: drawCurve // purpose: //================================================================== -static void drawCurve (Adaptor3d_Curve& aCurve, +static void drawCurve (const Handle(Adaptor3d_Curve)& aCurve, const Handle(Graphic3d_Group)& aGroup, const Standard_Real TheDeflection, const Standard_Real anAngle, @@ -133,12 +133,12 @@ static void drawCurve (Adaptor3d_Curve& aCurve, const Standard_Real U2, TColgp_SequenceOfPnt& Points) { - switch (aCurve.GetType()) + switch (aCurve->GetType()) { case GeomAbs_Line: { - gp_Pnt p1 = aCurve.Value(U1); - gp_Pnt p2 = aCurve.Value(U2); + gp_Pnt p1 = aCurve->Value(U1); + gp_Pnt p2 = aCurve->Value(U2); Points.Append(p1); Points.Append(p2); if (!aGroup.IsNull()) @@ -152,9 +152,9 @@ static void drawCurve (Adaptor3d_Curve& aCurve, } default: { - const Standard_Integer nbinter = aCurve.NbIntervals(GeomAbs_C1); + const Standard_Integer nbinter = aCurve->NbIntervals(GeomAbs_C1); TColStd_Array1OfReal T(1, nbinter+1); - aCurve.Intervals(T, GeomAbs_C1); + aCurve->Intervals(T, GeomAbs_C1); Standard_Real theU1, theU2; Standard_Integer NumberOfPoints, i, j; @@ -206,28 +206,28 @@ static Standard_Boolean MatchCurve ( const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real TheDeflection, const Standard_Real anAngle, const Standard_Real U1, const Standard_Real U2) { Standard_Real retdist; - switch (aCurve.GetType()) + switch (aCurve->GetType()) { case GeomAbs_Line: { - gp_Pnt p1 = aCurve.Value(U1); + gp_Pnt p1 = aCurve->Value(U1); if ( Abs(X-p1.X()) + Abs(Y-p1.Y()) + Abs(Z-p1.Z()) <= aDistance) return Standard_True; - gp_Pnt p2 = aCurve.Value(U2); + gp_Pnt p2 = aCurve->Value(U2); if ( Abs(X-p2.X()) + Abs(Y-p2.Y()) + Abs(Z-p2.Z()) <= aDistance) return Standard_True; return Prs3d::MatchSegment(X,Y,Z,aDistance,p1,p2,retdist); } case GeomAbs_Circle: { - const Standard_Real Radius = aCurve.Circle().Radius(); + const Standard_Real Radius = aCurve->Circle().Radius(); if (!Precision::IsInfinite(Radius)) { const Standard_Real DU = Sqrt(8.0 * TheDeflection / Radius); const Standard_Real Er = Abs( U2 - U1) / DU; @@ -235,7 +235,7 @@ static Standard_Boolean MatchCurve ( if ( N > 0) { gp_Pnt p1,p2; for (Standard_Integer Index = 1; Index <= N+1; Index++) { - p2 = aCurve.Value(U1 + (Index - 1) * DU); + p2 = aCurve->Value(U1 + (Index - 1) * DU); if ( Abs(X-p2.X()) + Abs(Y-p2.Y()) + Abs(Z-p2.Z()) <= aDistance) return Standard_True; @@ -277,7 +277,7 @@ static Standard_Boolean MatchCurve ( // purpose: //================================================================== void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle (Prs3d_Drawer)& aDrawer, const Standard_Boolean theToDrawCurve) { @@ -303,7 +303,7 @@ void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentati { gp_Pnt Location; gp_Vec Direction; - aCurve.D1(V2, Location,Direction); + aCurve->D1(V2, Location,Direction); Prs3d_Arrow::Draw (aGroup, Location, gp_Dir(Direction), @@ -319,7 +319,7 @@ void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentati // purpose: //================================================================== void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle (Prs3d_Drawer)& aDrawer, @@ -350,7 +350,7 @@ void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentati { gp_Pnt Location; gp_Vec Direction; - aCurve.D1(V2, Location,Direction); + aCurve->D1(V2, Location,Direction); Prs3d_Arrow::Draw (aGroup, Location, gp_Dir(Direction), @@ -364,7 +364,7 @@ void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentati // purpose: //================================================================== void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection, @@ -386,7 +386,7 @@ void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentati // purpose: //================================================================== void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit, const Standard_Real anAngle, @@ -414,7 +414,7 @@ void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentati // purpose: //================================================================================ void StdPrs_DeflectionCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Handle(Prs3d_Drawer)& aDrawer, TColgp_SequenceOfPnt& Points, @@ -444,7 +444,7 @@ Standard_Boolean StdPrs_DeflectionCurve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle (Prs3d_Drawer)& aDrawer) { Standard_Real V1, V2; @@ -467,7 +467,7 @@ Standard_Boolean StdPrs_DeflectionCurve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle (Prs3d_Drawer)& aDrawer) @@ -492,7 +492,7 @@ Standard_Boolean StdPrs_DeflectionCurve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection, @@ -510,7 +510,7 @@ Standard_Boolean StdPrs_DeflectionCurve::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit, const Standard_Real anAngle) diff --git a/src/StdPrs/StdPrs_DeflectionCurve.hxx b/src/StdPrs/StdPrs_DeflectionCurve.hxx index 5f26d89b1a..733376543b 100644 --- a/src/StdPrs/StdPrs_DeflectionCurve.hxx +++ b/src/StdPrs/StdPrs_DeflectionCurve.hxx @@ -40,7 +40,7 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); //! adds to the presentation aPresentation the drawing of the curve //! aCurve with respect to the maximal chordial deviation defined @@ -50,7 +50,7 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer, const Standard_Boolean drawCurve = Standard_True); //! adds to the presentation aPresentation the drawing of the curve //! aCurve with respect to the maximal chordial deviation aDeflection. @@ -58,7 +58,7 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, Adaptor3d_Curve& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit, const Standard_Real anAngle = 0.2, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit, const Standard_Real anAngle = 0.2, const Standard_Boolean drawCurve = Standard_True); //! adds to the presentation aPresentation the drawing of the curve //! aCurve with respect to the maximal chordial deviation aDeflection. @@ -67,7 +67,7 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, Adaptor3d_Curve& aCurve, const Standard_Real aDeflection, const Handle(Prs3d_Drawer)& aDrawer, TColgp_SequenceOfPnt& Points, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Handle(Prs3d_Drawer)& aDrawer, TColgp_SequenceOfPnt& Points, const Standard_Boolean drawCurve = Standard_True); //! adds to the presentation aPresentation the drawing of the curve //! aCurve with respect to the maximal chordial deviation aDeflection. @@ -77,31 +77,31 @@ public: //! If drawCurve equals Standard_False the curve will not be displayed, //! it is used if the curve is a part of some shape and PrimitiveArray //! visualization approach is activated (it is activated by default). - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection, TColgp_SequenceOfPnt& Points, const Standard_Real anAngle = 0.2, const Standard_Boolean drawCurve = Standard_True); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection, TColgp_SequenceOfPnt& Points, const Standard_Real anAngle = 0.2, const Standard_Boolean drawCurve = Standard_True); //! returns true if the distance between the point (X,Y,Z) and the //! drawing of the curve aCurve with respect of the maximal //! chordial deviation defined by the drawer aDrawer is less then aDistance. - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer); //! returns true if the distance between the point (X,Y,Z) and the //! drawing of the curve aCurve with respect of the maximal //! chordial deviation defined by the drawer aDrawer is less //! then aDistance. The drawing is considered between the points //! of parameter U1 and U2; - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(Prs3d_Drawer)& aDrawer); //! Returns true if the distance between the point (theX, theY, theZ) //! and the drawing with respect of the maximal chordial deviation theDeflection is less then theDistance. Standard_EXPORT static Standard_Boolean Match (const Standard_Real theX, const Standard_Real theY, const Standard_Real theZ, const Standard_Real theDistance, - const Adaptor3d_Curve& theCurve, + const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real theDeflection, const Standard_Real theLimit, const Standard_Real theAngle); //! Returns true if the distance between the point (theX, theY, theZ) //! and the drawing with respect of the maximal chordial deviation theDeflection is less then theDistance. //! The drawing is considered between the points of parameter theU1 and theU2. Standard_EXPORT static Standard_Boolean Match (const Standard_Real theX, const Standard_Real theY, const Standard_Real theZ, const Standard_Real theDistance, - const Adaptor3d_Curve& theCurve, const Standard_Real theU1, const Standard_Real theU2, + const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real theU1, const Standard_Real theU2, const Standard_Real theDeflection, const Standard_Real theAngle); }; diff --git a/src/StdPrs/StdPrs_HLRShape.cxx b/src/StdPrs/StdPrs_HLRShape.cxx index 8c10e81bcc..fad726cabc 100755 --- a/src/StdPrs/StdPrs_HLRShape.cxx +++ b/src/StdPrs/StdPrs_HLRShape.cxx @@ -45,7 +45,7 @@ void StdPrs_HLRShape::ComputeHLR (const Handle(Prs3d_Presentation)& thePresentat Standard_Integer aNbEdges = aTool.NbEdges(); Standard_Integer anI; Standard_Real anU1, anU2; - BRepAdaptor_Curve aCurve; + Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve(); Standard_Real aDeviation = theDrawer->MaximalChordialDeviation(); Handle(Graphic3d_Group) aGroup = thePresentation->CurrentGroup(); diff --git a/src/StdPrs/StdPrs_HLRToolShape.cxx b/src/StdPrs/StdPrs_HLRToolShape.cxx index be3b1a47d0..617467f58a 100644 --- a/src/StdPrs/StdPrs_HLRToolShape.cxx +++ b/src/StdPrs/StdPrs_HLRToolShape.cxx @@ -46,7 +46,7 @@ Standard_Boolean StdPrs_HLRToolShape::MoreVisible() const { void StdPrs_HLRToolShape::NextVisible() { myEdgeIterator.NextVisible(); } -void StdPrs_HLRToolShape::Visible(BRepAdaptor_Curve& TheEdge, +void StdPrs_HLRToolShape::Visible(Handle(BRepAdaptor_Curve)& TheEdge, Standard_Real& U1, Standard_Real& U2) { @@ -68,7 +68,7 @@ Standard_Boolean StdPrs_HLRToolShape::MoreHidden() const { void StdPrs_HLRToolShape::NextHidden() { myEdgeIterator.NextHidden(); } -void StdPrs_HLRToolShape::Hidden (BRepAdaptor_Curve& TheEdge, +void StdPrs_HLRToolShape::Hidden (Handle(BRepAdaptor_Curve)& TheEdge, Standard_Real& U1, Standard_Real& U2) { diff --git a/src/StdPrs/StdPrs_HLRToolShape.hxx b/src/StdPrs/StdPrs_HLRToolShape.hxx index 726bb5353a..5da09f628c 100644 --- a/src/StdPrs/StdPrs_HLRToolShape.hxx +++ b/src/StdPrs/StdPrs_HLRToolShape.hxx @@ -47,7 +47,7 @@ public: Standard_EXPORT void NextVisible(); - Standard_EXPORT void Visible (BRepAdaptor_Curve& TheEdge, Standard_Real& U1, Standard_Real& U2); + Standard_EXPORT void Visible (Handle(BRepAdaptor_Curve)& TheEdge, Standard_Real& U1, Standard_Real& U2); Standard_EXPORT void InitHidden (const Standard_Integer EdgeNumber); @@ -55,7 +55,7 @@ public: Standard_EXPORT void NextHidden(); - Standard_EXPORT void Hidden (BRepAdaptor_Curve& TheEdge, Standard_Real& U1, Standard_Real& U2); + Standard_EXPORT void Hidden (Handle(BRepAdaptor_Curve)& TheEdge, Standard_Real& U1, Standard_Real& U2); diff --git a/src/StdPrs/StdPrs_Isolines.cxx b/src/StdPrs/StdPrs_Isolines.cxx index ca64927abd..184e1c8724 100644 --- a/src/StdPrs/StdPrs_Isolines.cxx +++ b/src/StdPrs/StdPrs_Isolines.cxx @@ -80,13 +80,13 @@ namespace //! @param theLimit [in] the parameter limit value. //! @param theFirst [in/out] the first parameter value. //! @param theLast [in/out] the last parameter value. - static void findLimits (const Adaptor3d_Curve& theCurve, + static void findLimits (const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real theLimit, Standard_Real& theFirst, Standard_Real& theLast) { - theFirst = Max (theCurve.FirstParameter(), theFirst); - theLast = Min (theCurve.LastParameter(), theLast); + theFirst = Max (theCurve->FirstParameter(), theFirst); + theLast = Min (theCurve->LastParameter(), theLast); Standard_Boolean isFirstInf = Precision::IsNegativeInfinite (theFirst); Standard_Boolean isLastInf = Precision::IsPositiveInfinite (theLast); @@ -105,30 +105,30 @@ namespace aDelta *= 2.0; theFirst = -aDelta; theLast = aDelta; - theCurve.D0 (theFirst, aP1); - theCurve.D0 (theLast, aP2); + theCurve->D0 (theFirst, aP1); + theCurve->D0 (theLast, aP2); } while (aP1.Distance (aP2) < theLimit); } else if (isFirstInf) { - theCurve.D0 (theLast, aP2); + theCurve->D0 (theLast, aP2); do { aDelta *= 2.0; theFirst = theLast - aDelta; - theCurve.D0 (theFirst, aP1); + theCurve->D0 (theFirst, aP1); } while (aP1.Distance (aP2) < theLimit); } else if (isLastInf) { - theCurve.D0 (theFirst, aP1); + theCurve->D0 (theFirst, aP1); do { aDelta *= 2.0; theLast = theFirst + aDelta; - theCurve.D0 (theLast, aP2); + theCurve->D0 (theLast, aP2); } while (aP1.Distance (aP2) < theLimit); } @@ -402,10 +402,10 @@ void StdPrs_Isolines::addOnSurface (const Handle(BRepAdaptor_Surface)& theSurfac for (anEdgeTool.Init(); anEdgeTool.More(); anEdgeTool.Next()) { TopAbs_Orientation anOrientation = anEdgeTool.Orientation(); - const Adaptor2d_Curve2d* anEdgeCurve = &anEdgeTool.Value(); + const Handle(Adaptor2d_Curve2d) anEdgeCurve = anEdgeTool.Value(); if (anEdgeCurve->GetType() != GeomAbs_Line) { - GCPnts_QuasiUniformDeflection aSampler (*anEdgeCurve, aSamplerDeflection); + GCPnts_QuasiUniformDeflection aSampler (anEdgeCurve, aSamplerDeflection); if (!aSampler.IsDone()) { #ifdef OCCT_DEBUG @@ -526,8 +526,8 @@ void StdPrs_Isolines::addOnSurface (const Handle(BRepAdaptor_Surface)& theSurfac // Use isoline adapter for other types of surfaces. GeomAbs_SurfaceType aSurfType = theSurface->GetType(); Handle(Geom_Surface) aBSurface; - GeomAdaptor_Curve aBSurfaceCurve; - Adaptor3d_IsoCurve aCanonicalCurve; + Handle(GeomAdaptor_Curve) aBSurfaceCurve = new GeomAdaptor_Curve(); + Handle(Adaptor3d_IsoCurve) aCanonicalCurve = new Adaptor3d_IsoCurve(); if (aSurfType == GeomAbs_BezierSurface) { aBSurface = theSurface->Bezier(); @@ -538,7 +538,7 @@ void StdPrs_Isolines::addOnSurface (const Handle(BRepAdaptor_Surface)& theSurfac } else { - aCanonicalCurve.Load (theSurface); + aCanonicalCurve->Load (theSurface); } // For each isoline: compute its segments. @@ -555,7 +555,7 @@ void StdPrs_Isolines::addOnSurface (const Handle(BRepAdaptor_Surface)& theSurfac if (!aBSurface.IsNull()) { - aBSurfaceCurve.Load (isIsoU ? aBSurface->UIso (anIsoParam) : aBSurface->VIso (anIsoParam)); + aBSurfaceCurve->Load (isIsoU ? aBSurface->UIso (anIsoParam) : aBSurface->VIso (anIsoParam)); findLimits (aBSurfaceCurve, aUVLimit, aSegmentP1, aSegmentP2); @@ -566,7 +566,7 @@ void StdPrs_Isolines::addOnSurface (const Handle(BRepAdaptor_Surface)& theSurfac } else { - aCanonicalCurve.Load (isIsoU ? GeomAbs_IsoU : GeomAbs_IsoV, anIsoParam, aSegmentP1, aSegmentP2); + aCanonicalCurve->Load (isIsoU ? GeomAbs_IsoU : GeomAbs_IsoV, anIsoParam, aSegmentP1, aSegmentP2); findLimits (aCanonicalCurve, aUVLimit, aSegmentP1, aSegmentP2); @@ -575,12 +575,16 @@ void StdPrs_Isolines::addOnSurface (const Handle(BRepAdaptor_Surface)& theSurfac continue; } } - Adaptor3d_Curve* aCurve = aBSurface.IsNull() ? (Adaptor3d_Curve*) &aCanonicalCurve - : (Adaptor3d_Curve*) &aBSurfaceCurve; + + Handle(Adaptor3d_Curve) aCurve; + if (aBSurface.IsNull()) + aCurve = aCanonicalCurve; + else + aCurve = aBSurfaceCurve; Handle(TColgp_HSequenceOfPnt) aPoints = new TColgp_HSequenceOfPnt(); StdPrs_DeflectionCurve::Add (Handle(Prs3d_Presentation)(), - *aCurve, + aCurve, aSegmentP1, aSegmentP2, theDeflection, @@ -789,8 +793,8 @@ Standard_Boolean StdPrs_Isolines::findSegmentOnTriangulation (const Handle(Geom_ anIso2 = theSurface->UIso (aNodeUV2.X()); } - GeomAdaptor_Curve aCurveAdaptor1 (anIso1); - GeomAdaptor_Curve aCurveAdaptor2 (anIso2); + Handle(GeomAdaptor_Curve) aCurveAdaptor1 = new GeomAdaptor_Curve(anIso1); + Handle(GeomAdaptor_Curve) aCurveAdaptor2 = new GeomAdaptor_Curve(anIso2); Standard_Real aLength1 = GCPnts_AbscissaPoint::Length (aCurveAdaptor1, aPntOnNode1Iso, aPntOnNode3Iso, 1e-2); Standard_Real aLength2 = GCPnts_AbscissaPoint::Length (aCurveAdaptor2, aPntOnNode2Iso, aPntOnNode3Iso, 1e-2); if (Abs (aLength1) < Precision::Confusion() || Abs (aLength2) < Precision::Confusion()) diff --git a/src/StdPrs/StdPrs_Plane.cxx b/src/StdPrs/StdPrs_Plane.cxx index 40d1bcc7a5..b399420d25 100644 --- a/src/StdPrs/StdPrs_Plane.cxx +++ b/src/StdPrs/StdPrs_Plane.cxx @@ -29,13 +29,13 @@ #include void StdPrs_Plane::Add (const Handle (Prs3d_Presentation)& aPresentation, - const Adaptor3d_Surface& aPlane, + const Handle(Adaptor3d_Surface)& aPlane, const Handle (Prs3d_Drawer)& aDrawer) { // aPresentation->NewGroup(); Handle(Graphic3d_Group) TheGroup = aPresentation->CurrentGroup(); - if (aPlane.GetType() != GeomAbs_Plane) return; - Handle(Geom_Plane) thegeom = new Geom_Plane(aPlane.Plane()); + if (aPlane->GetType() != GeomAbs_Plane) return; + Handle(Geom_Plane) thegeom = new Geom_Plane(aPlane->Plane()); Handle(Prs3d_PlaneAspect) theaspect = aDrawer->PlaneAspect(); @@ -129,11 +129,11 @@ Standard_Boolean StdPrs_Plane::Match const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Surface& aPlane, + const Handle(Adaptor3d_Surface)& aPlane, const Handle (Prs3d_Drawer)&) { - if (aPlane.GetType() == GeomAbs_Plane) { - gp_Pln theplane = aPlane.Plane(); + if (aPlane->GetType() == GeomAbs_Plane) { + gp_Pln theplane = aPlane->Plane(); gp_Pnt thepoint (X,Y,Z); return (Abs(theplane.Distance(thepoint)) <= aDistance); diff --git a/src/StdPrs/StdPrs_Plane.hxx b/src/StdPrs/StdPrs_Plane.hxx index 4d29fa18c6..1620d337e6 100644 --- a/src/StdPrs/StdPrs_Plane.hxx +++ b/src/StdPrs/StdPrs_Plane.hxx @@ -34,11 +34,11 @@ public: //! The infinite plane aPlane is added to the display //! aPresentation, and the attributes of the display are //! defined by the attribute manager aDrawer. - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Surface& aPlane, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Surface)& aPlane, const Handle(Prs3d_Drawer)& aDrawer); //! returns true if the distance between the point (X,Y,Z) and the //! plane is less than aDistance. - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Surface& aPlane, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Surface)& aPlane, const Handle(Prs3d_Drawer)& aDrawer); }; diff --git a/src/StdPrs/StdPrs_PoleCurve.cxx b/src/StdPrs/StdPrs_PoleCurve.cxx index 787ef66dd5..e9834b9fe7 100644 --- a/src/StdPrs/StdPrs_PoleCurve.cxx +++ b/src/StdPrs/StdPrs_PoleCurve.cxx @@ -35,16 +35,16 @@ //purpose : //======================================================================= void StdPrs_PoleCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle (Prs3d_Drawer)& aDrawer) { aPresentation->CurrentGroup()->SetPrimitivesAspect(aDrawer->LineAspect()->Aspect()); - GeomAbs_CurveType CType = aCurve.GetType(); + GeomAbs_CurveType CType = aCurve->GetType(); if (CType == GeomAbs_BezierCurve || CType == GeomAbs_BSplineCurve) { Standard_Integer i, Nb; if (CType == GeomAbs_BezierCurve) { - Handle(Geom_BezierCurve) Bz = aCurve.Bezier(); + Handle(Geom_BezierCurve) Bz = aCurve->Bezier(); Nb = Bz->NbPoles(); Handle(Graphic3d_ArrayOfPolylines) aPrims = new Graphic3d_ArrayOfPolylines(Nb); for (i = 1; i <= Nb; i++) @@ -52,7 +52,7 @@ void StdPrs_PoleCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, aPresentation->CurrentGroup()->AddPrimitiveArray(aPrims); } else if (CType == GeomAbs_BSplineCurve) { - Handle(Geom_BSplineCurve) Bs = aCurve.BSpline(); + Handle(Geom_BSplineCurve) Bs = aCurve->BSpline(); Nb = Bs->NbPoles(); Handle(Graphic3d_ArrayOfPolylines) aPrims = new Graphic3d_ArrayOfPolylines(Nb); for (i = 1; i <= Nb; i++) @@ -64,7 +64,7 @@ void StdPrs_PoleCurve::Add (const Handle (Prs3d_Presentation)& aPresentation, if (aDrawer->LineArrowDraw()) { gp_Pnt Location; gp_Vec Direction; - aCurve.D1(aCurve.LastParameter(),Location,Direction); + aCurve->D1(aCurve->LastParameter(),Location,Direction); Prs3d_Arrow::Draw (aPresentation->CurrentGroup(), Location, gp_Dir(Direction), @@ -83,14 +83,14 @@ Standard_Boolean StdPrs_PoleCurve::Match(const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle (Prs3d_Drawer)& /*aDrawer*/) { - GeomAbs_CurveType CType = aCurve.GetType(); + GeomAbs_CurveType CType = aCurve->GetType(); Standard_Integer i, Nb = 0; Standard_Real x,y,z; if (CType == GeomAbs_BezierCurve) { - Handle(Geom_BezierCurve) Bz = aCurve.Bezier(); + Handle(Geom_BezierCurve) Bz = aCurve->Bezier(); Nb = Bz->NbPoles(); for (i = 1; i <= Nb; i++) { Bz->Pole(i).Coord(x,y,z); @@ -99,7 +99,7 @@ Standard_Boolean StdPrs_PoleCurve::Match(const Standard_Real X, return Standard_False; } else if (CType == GeomAbs_BSplineCurve) { - Handle(Geom_BSplineCurve) Bs = aCurve.BSpline(); + Handle(Geom_BSplineCurve) Bs = aCurve->BSpline(); Nb = Bs->NbPoles(); for (i = 1; i <= Nb; i++) { Bs->Pole(i).Coord(x,y,z); @@ -120,16 +120,16 @@ Standard_Integer StdPrs_PoleCurve::Pick const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& /*aDrawer*/) { Standard_Real x, y, z, DistMin = RealLast(); Standard_Integer num = 0, i, Nb = 0; Standard_Real dist; - GeomAbs_CurveType CType = aCurve.GetType(); + GeomAbs_CurveType CType = aCurve->GetType(); if (CType == GeomAbs_BezierCurve) { - Handle(Geom_BezierCurve) Bz = aCurve.Bezier(); + Handle(Geom_BezierCurve) Bz = aCurve->Bezier(); Nb = Bz->NbPoles(); for (i = 1; i <= Nb; i++) { Bz->Pole(i).Coord(x,y,z); @@ -143,7 +143,7 @@ Standard_Integer StdPrs_PoleCurve::Pick } } else if (CType == GeomAbs_BSplineCurve) { - Handle(Geom_BSplineCurve) Bs = aCurve.BSpline(); + Handle(Geom_BSplineCurve) Bs = aCurve->BSpline(); Nb = Bs->NbPoles(); for (i = 1; i <= Nb; i++) { Bs->Pole(i).Coord(x,y,z); diff --git a/src/StdPrs/StdPrs_PoleCurve.hxx b/src/StdPrs/StdPrs_PoleCurve.hxx index a42562aa77..e129f30638 100644 --- a/src/StdPrs/StdPrs_PoleCurve.hxx +++ b/src/StdPrs/StdPrs_PoleCurve.hxx @@ -39,16 +39,16 @@ public: //! The curve object from Adaptor3d provides data from //! a Geom curve. This makes it possible to use the //! surface in a geometric algorithm. - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer); //! returns true if the distance between the point (X,Y,Z) and the //! broken line made of the poles is less then aDistance. - Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static Standard_Boolean Match (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer); //! returns the pole the most near of the point (X,Y,Z) and //! returns its range. The distance between the pole and //! (X,Y,Z) must be less then aDistance. If no pole corresponds, 0 is returned. - Standard_EXPORT static Standard_Integer Pick (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Adaptor3d_Curve& aCurve, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static Standard_Integer Pick (const Standard_Real X, const Standard_Real Y, const Standard_Real Z, const Standard_Real aDistance, const Handle(Adaptor3d_Curve)& aCurve, const Handle(Prs3d_Drawer)& aDrawer); }; diff --git a/src/StdPrs/StdPrs_ShadedSurface.cxx b/src/StdPrs/StdPrs_ShadedSurface.cxx index ab0e9dddcb..5381e9eca8 100644 --- a/src/StdPrs/StdPrs_ShadedSurface.cxx +++ b/src/StdPrs/StdPrs_ShadedSurface.cxx @@ -31,7 +31,7 @@ //purpose : //======================================================================= void StdPrs_ShadedSurface::Add (const Handle(Prs3d_Presentation)& thePrs, - const Adaptor3d_Surface& theSurface, + const Handle(Adaptor3d_Surface)& theSurface, const Handle(Prs3d_Drawer)& theDrawer) { Standard_Integer N1 = theDrawer->UIsoAspect()->Number(); @@ -42,15 +42,15 @@ void StdPrs_ShadedSurface::Add (const Handle(Prs3d_Presentation)& thePrs, // If the surface is closed, the faces from back-side are not traced: Handle(Graphic3d_Group) aGroup = thePrs->CurrentGroup(); aGroup->SetGroupPrimitivesAspect (theDrawer->ShadingAspect()->Aspect()); - aGroup->SetClosed (theSurface.IsUClosed() && theSurface.IsVClosed()); + aGroup->SetClosed (theSurface->IsUClosed() && theSurface->IsVClosed()); - Standard_Integer aNBUintv = theSurface.NbUIntervals (GeomAbs_C1); - Standard_Integer aNBVintv = theSurface.NbVIntervals (GeomAbs_C1); + Standard_Integer aNBUintv = theSurface->NbUIntervals (GeomAbs_C1); + Standard_Integer aNBVintv = theSurface->NbVIntervals (GeomAbs_C1); TColStd_Array1OfReal anInterU (1, aNBUintv + 1); TColStd_Array1OfReal anInterV (1, aNBVintv + 1); - theSurface.UIntervals (anInterU, GeomAbs_C1); - theSurface.VIntervals (anInterV, GeomAbs_C1); + theSurface->UIntervals (anInterU, GeomAbs_C1); + theSurface->VIntervals (anInterV, GeomAbs_C1); Standard_Real U1, U2, V1, V2, DU, DV; @@ -81,10 +81,10 @@ void StdPrs_ShadedSurface::Add (const Handle(Prs3d_Presentation)& thePrs, aPArray->AddBound (N2 + 1); for (Standard_Integer j = 1; j <= N2 + 1; ++j) { - theSurface.D1 (U1 + DU * (i - 1), V1 + DV * (j - 1), P2, D1U, D1V); + theSurface->D1 (U1 + DU * (i - 1), V1 + DV * (j - 1), P2, D1U, D1V); D1 = D1U ^ D1V; D1.Normalize(); - theSurface.D1 (U1 + DU * i, V1 + DV * (j - 1), P2, D1U, D1V); + theSurface->D1 (U1 + DU * i, V1 + DV * (j - 1), P2, D1U, D1V); D2 = D1U ^ D1V; D2.Normalize(); aPArray->AddVertex (P1, D1); diff --git a/src/StdPrs/StdPrs_ShadedSurface.hxx b/src/StdPrs/StdPrs_ShadedSurface.hxx index 3bb48cb5ff..691bc01ad3 100644 --- a/src/StdPrs/StdPrs_ShadedSurface.hxx +++ b/src/StdPrs/StdPrs_ShadedSurface.hxx @@ -38,7 +38,7 @@ public: //! The surface's display attributes are set in the attribute manager aDrawer. //! The surface object from Adaptor3d provides data //! from a Geom surface in order to use the surface in an algorithm. - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Surface& aSurface, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Surface)& aSurface, const Handle(Prs3d_Drawer)& aDrawer); diff --git a/src/StdPrs/StdPrs_ToolRFace.cxx b/src/StdPrs/StdPrs_ToolRFace.cxx index 4f40be4844..180d5c8167 100644 --- a/src/StdPrs/StdPrs_ToolRFace.cxx +++ b/src/StdPrs/StdPrs_ToolRFace.cxx @@ -23,7 +23,8 @@ //purpose : //======================================================================= StdPrs_ToolRFace::StdPrs_ToolRFace() -: myHasNullCurves (Standard_False) +: myCurve(new Geom2dAdaptor_Curve()), + myHasNullCurves (Standard_False) { } @@ -33,6 +34,7 @@ StdPrs_ToolRFace::StdPrs_ToolRFace() //======================================================================= StdPrs_ToolRFace::StdPrs_ToolRFace (const Handle(BRepAdaptor_Surface)& theSurface) : myFace (theSurface->Face()), + myCurve(new Geom2dAdaptor_Curve()), myHasNullCurves (Standard_False) { myFace.Orientation(TopAbs_FORWARD); @@ -65,7 +67,7 @@ void StdPrs_ToolRFace::next() if (Handle(Geom2d_Curve) aCurve = BRep_Tool::CurveOnSurface (TopoDS::Edge (myExplorer.Current()), myFace, aParamU1, aParamU2)) { - myCurve.Load (aCurve, aParamU1, aParamU2); + myCurve->Load (aCurve, aParamU1, aParamU2); return; } else @@ -74,5 +76,5 @@ void StdPrs_ToolRFace::next() } } - myCurve.Reset(); + myCurve->Reset(); } diff --git a/src/StdPrs/StdPrs_ToolRFace.hxx b/src/StdPrs/StdPrs_ToolRFace.hxx index 26361f92f9..5034b68931 100644 --- a/src/StdPrs/StdPrs_ToolRFace.hxx +++ b/src/StdPrs/StdPrs_ToolRFace.hxx @@ -60,7 +60,7 @@ public: } //! Return current curve. - const Adaptor2d_Curve2d& Value() const { return myCurve; } + const Handle(Adaptor2d_Curve2d)& Value() const { return myCurve; } //! Return current edge. Standard_EXPORT const TopoDS_Edge& Edge() const; @@ -80,7 +80,7 @@ private: TopoDS_Face myFace; TopExp_Explorer myExplorer; - Geom2dAdaptor_Curve myCurve; + Handle(Geom2dAdaptor_Curve) myCurve; Standard_Boolean myHasNullCurves; }; diff --git a/src/StdPrs/StdPrs_WFDeflectionRestrictedFace.cxx b/src/StdPrs/StdPrs_WFDeflectionRestrictedFace.cxx index 4cbe46d26c..2642251519 100644 --- a/src/StdPrs/StdPrs_WFDeflectionRestrictedFace.cxx +++ b/src/StdPrs/StdPrs_WFDeflectionRestrictedFace.cxx @@ -43,13 +43,13 @@ extern OSD_Chronometer FFaceTimer1,FFaceTimer2,FFaceTimer3,FFaceTimer4; // function: FindLimits // purpose: //================================================================== -static void FindLimits(const Adaptor3d_Curve& aCurve, +static void FindLimits(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aLimit, Standard_Real& First, Standard_Real& Last) { - First = Max(aCurve.FirstParameter(), First); - Last = Min(aCurve.LastParameter(), Last); + First = Max(aCurve->FirstParameter(), First); + Last = Min(aCurve->LastParameter(), Last); Standard_Boolean firstInf = Precision::IsNegativeInfinite(First); Standard_Boolean lastInf = Precision::IsPositiveInfinite(Last); @@ -61,24 +61,24 @@ static void FindLimits(const Adaptor3d_Curve& aCurve, delta *= 2; First = - delta; Last = delta; - aCurve.D0(First,P1); - aCurve.D0(Last,P2); + aCurve->D0(First,P1); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } else if (firstInf) { - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); do { delta *= 2; First = Last - delta; - aCurve.D0(First,P1); + aCurve->D0(First,P1); } while (P1.Distance(P2) < aLimit); } else if (lastInf) { - aCurve.D0(First,P1); + aCurve->D0(First,P1); do { delta *= 2; Last = First + delta; - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } } @@ -135,10 +135,10 @@ void StdPrs_WFDeflectionRestrictedFace::Add for (ToolRst.Init(); ToolRst.More(); ToolRst.Next()) { const TopAbs_Orientation anOrient = ToolRst.Orientation(); - const Adaptor2d_Curve2d* TheRCurve = &ToolRst.Value(); + const Handle(Adaptor2d_Curve2d) TheRCurve = ToolRst.Value(); if (TheRCurve->GetType() != GeomAbs_Line) { - GCPnts_QuasiUniformDeflection UDP (*TheRCurve, ddefle); + GCPnts_QuasiUniformDeflection UDP (TheRCurve, ddefle); if (UDP.IsDone()) { const Standard_Integer aNumberOfPoints = UDP.NbPoints(); @@ -305,20 +305,18 @@ void StdPrs_WFDeflectionRestrictedFace::Add // draw the isos - Adaptor3d_IsoCurve anIso; - anIso.Load(aFace); + Handle(Adaptor3d_IsoCurve) anIso = new Adaptor3d_IsoCurve(aFace); Handle(Geom_Curve) BC; - const BRepAdaptor_Surface& BS = *aFace; GeomAbs_SurfaceType thetype = aFace->GetType(); Handle(Geom_Surface) GB; if (thetype == GeomAbs_BezierSurface) { - GB = BS.Bezier(); + GB = aFace->Bezier(); } else if (thetype == GeomAbs_BSplineSurface) { - GB = BS.BSpline(); + GB = aFace->BSpline(); } const Standard_Real anAngle = aDrawer->DeviationAngle(); @@ -341,7 +339,7 @@ void StdPrs_WFDeflectionRestrictedFace::Add BC = GB->VIso (Coord); } - GeomAdaptor_Curve GC (BC); + Handle(GeomAdaptor_Curve) GC = new GeomAdaptor_Curve(BC); FindLimits (GC, aLimit,b1, b2); if (b2 - b1 > Precision::Confusion()) { @@ -355,11 +353,11 @@ void StdPrs_WFDeflectionRestrictedFace::Add { if (isobuild.IsXLine (i)) { - anIso.Load (GeomAbs_IsoU,Coord,b1,b2); + anIso->Load (GeomAbs_IsoU,Coord,b1,b2); } else { - anIso.Load (GeomAbs_IsoV,Coord,b1,b2); + anIso->Load (GeomAbs_IsoV,Coord,b1,b2); } FindLimits (anIso, aLimit, b1, b2); @@ -408,7 +406,7 @@ Standard_Boolean StdPrs_WFDeflectionRestrictedFace::Match UMax = VMax = RealFirst(); for (ToolRst.Init(); ToolRst.More(); ToolRst.Next()) { - const Adaptor2d_Curve2d* TheRCurve = &ToolRst.Value(); + const Handle(Adaptor2d_Curve2d) TheRCurve = ToolRst.Value(); u = TheRCurve->FirstParameter(); v = TheRCurve->LastParameter(); step = ( v - u) / nbPoints; @@ -461,7 +459,7 @@ Standard_Boolean StdPrs_WFDeflectionRestrictedFace::Match gp_Pnt dummypnt; for (ToolRst.Init(); ToolRst.More(); ToolRst.Next()) { TopAbs_Orientation Orient = ToolRst.Orientation(); - const Adaptor2d_Curve2d* TheRCurve = &ToolRst.Value(); + const Handle(Adaptor2d_Curve2d)* TheRCurve = &ToolRst.Value(); GCPnts_QuasiUniformDeflection UDP(*TheRCurve, Deflection); if (UDP.IsDone()) { Standard_Integer NumberOfPoints = UDP.NbPoints(); @@ -488,8 +486,7 @@ Standard_Boolean StdPrs_WFDeflectionRestrictedFace::Match // draw the isos - Adaptor3d_IsoCurve anIso; - anIso.Load(aFace); + Handle(Adaptor3d_IsoCurve) anIso = new Adaptor3d_IsoCurve(aFace); Standard_Integer NumberOfLines = isobuild.NbLines(); Standard_Real anAngle = aDrawer->DeviationAngle(); @@ -503,9 +500,9 @@ Standard_Boolean StdPrs_WFDeflectionRestrictedFace::Match b2 = b2 == RealLast() ? aLimit : b2; if (isobuild.IsXLine(i)) - anIso.Load(GeomAbs_IsoU,Coord,b1,b2); + anIso->Load(GeomAbs_IsoU,Coord,b1,b2); else - anIso.Load(GeomAbs_IsoV,Coord,b1,b2); + anIso->Load(GeomAbs_IsoV,Coord,b1,b2); if (StdPrs_DeflectionCurve::Match(X,Y,Z,aDistance,anIso, b1, b2, Deflection, anAngle)) return Standard_True; diff --git a/src/StdPrs/StdPrs_WFDeflectionSurface.cxx b/src/StdPrs/StdPrs_WFDeflectionSurface.cxx index e063112371..29edc92eee 100644 --- a/src/StdPrs/StdPrs_WFDeflectionSurface.cxx +++ b/src/StdPrs/StdPrs_WFDeflectionSurface.cxx @@ -142,7 +142,7 @@ void StdPrs_WFDeflectionSurface::Add ( if (TOD == Aspect_TOD_RELATIVE) { // On calcule la fleche en fonction des min max globaux de la piece: Bnd_Box Total; - BndLib_AddSurface::Add (*aSurface, U1, U2, V1, V2, 0., Total); + BndLib_AddSurface::Add (aSurface, U1, U2, V1, V2, 0., Total); Standard_Real m = aDrawer->MaximalChordialDeviation()/ aDrawer->DeviationCoefficient(); Standard_Real aXmin, aYmin, aZmin, aXmax, aYmax, aZmax; @@ -159,8 +159,7 @@ void StdPrs_WFDeflectionSurface::Add ( else TheDeflection = aDrawer->MaximalChordialDeviation(); - Adaptor3d_IsoCurve anIso; - anIso.Load(aSurface); + Handle(Adaptor3d_IsoCurve) anIso = new Adaptor3d_IsoCurve(aSurface); // Trace des frontieres. // ********************* @@ -169,16 +168,16 @@ void StdPrs_WFDeflectionSurface::Add ( aPresentation->CurrentGroup()->SetPrimitivesAspect (aDrawer->FreeBoundaryAspect()->Aspect()); if ( !UClosed ) { - anIso.Load(GeomAbs_IsoU,U1,V1,V2); + anIso->Load(GeomAbs_IsoU,U1,V1,V2); StdPrs_DeflectionCurve::Add(aPresentation,anIso,TheDeflection, MaxP); - anIso.Load(GeomAbs_IsoU,U2,V1,V2); + anIso->Load(GeomAbs_IsoU,U2,V1,V2); StdPrs_DeflectionCurve::Add(aPresentation,anIso,TheDeflection, MaxP); } if ( !VClosed ) { - anIso.Load(GeomAbs_IsoV,V1,U1,U2); + anIso->Load(GeomAbs_IsoV,V1,U1,U2); StdPrs_DeflectionCurve::Add(aPresentation,anIso,TheDeflection, MaxP); - anIso.Load(GeomAbs_IsoV,V2,U1,U2); + anIso->Load(GeomAbs_IsoV,V2,U1,U2); StdPrs_DeflectionCurve::Add(aPresentation,anIso,TheDeflection, MaxP); } } @@ -192,7 +191,7 @@ void StdPrs_WFDeflectionSurface::Add ( Standard_Real du= UClosed ? (U2-U1)/fin : (U2-U1)/(1+fin); for (Standard_Integer i=1; i<=fin;i++){ - anIso.Load(GeomAbs_IsoU,U1+du*i,V1,V2); + anIso->Load(GeomAbs_IsoU,U1+du*i,V1,V2); StdPrs_DeflectionCurve::Add(aPresentation,anIso,TheDeflection, MaxP); } } @@ -202,7 +201,7 @@ void StdPrs_WFDeflectionSurface::Add ( Standard_Real dv= VClosed ?(V2-V1)/fin : (V2-V1)/(1+fin); for (Standard_Integer i=1; i<=fin;i++){ - anIso.Load(GeomAbs_IsoV,V1+dv*i,U1,U2); + anIso->Load(GeomAbs_IsoV,V1+dv*i,U1,U2); StdPrs_DeflectionCurve::Add(aPresentation,anIso,TheDeflection, MaxP); } } diff --git a/src/StdPrs/StdPrs_WFPoleSurface.cxx b/src/StdPrs/StdPrs_WFPoleSurface.cxx index 1a180a26d1..c88145b875 100644 --- a/src/StdPrs/StdPrs_WFPoleSurface.cxx +++ b/src/StdPrs/StdPrs_WFPoleSurface.cxx @@ -58,27 +58,27 @@ static void AddPoles(const Handle (Prs3d_Presentation)& aPresentation, //======================================================================= void StdPrs_WFPoleSurface::Add (const Handle (Prs3d_Presentation)& aPresentation, - const Adaptor3d_Surface& aSurface, + const Handle(Adaptor3d_Surface)& aSurface, const Handle (Prs3d_Drawer)& aDrawer) { - GeomAbs_SurfaceType SType = aSurface.GetType(); + GeomAbs_SurfaceType SType = aSurface->GetType(); if (SType == GeomAbs_BezierSurface || SType == GeomAbs_BSplineSurface) { Standard_Integer n , m; if (SType == GeomAbs_BezierSurface) { - Handle(Geom_BezierSurface) B = aSurface.Bezier(); - n = aSurface.NbUPoles(); - m = aSurface.NbVPoles(); + Handle(Geom_BezierSurface) B = aSurface->Bezier(); + n = aSurface->NbUPoles(); + m = aSurface->NbVPoles(); TColgp_Array2OfPnt A(1,n,1,m); - (aSurface.Bezier())->Poles(A); + (aSurface->Bezier())->Poles(A); AddPoles(aPresentation, A, aDrawer); } else if (SType == GeomAbs_BSplineSurface) { - Handle(Geom_BSplineSurface) B = aSurface.BSpline(); - n = (aSurface.BSpline())->NbUPoles(); - m = (aSurface.BSpline())->NbVPoles(); + Handle(Geom_BSplineSurface) B = aSurface->BSpline(); + n = (aSurface->BSpline())->NbUPoles(); + m = (aSurface->BSpline())->NbVPoles(); TColgp_Array2OfPnt A(1,n,1,m); - (aSurface.BSpline())->Poles(A); + (aSurface->BSpline())->Poles(A); AddPoles(aPresentation, A, aDrawer); } diff --git a/src/StdPrs/StdPrs_WFPoleSurface.hxx b/src/StdPrs/StdPrs_WFPoleSurface.hxx index f0ffaeb550..b91688a52e 100644 --- a/src/StdPrs/StdPrs_WFPoleSurface.hxx +++ b/src/StdPrs/StdPrs_WFPoleSurface.hxx @@ -39,7 +39,7 @@ public: //! The surface aSurface is a surface object from //! Adaptor3d, and provides data from a Geom surface. //! This makes it possible to use the surface in a geometric algorithm. - Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Adaptor3d_Surface& aSurface, const Handle(Prs3d_Drawer)& aDrawer); + Standard_EXPORT static void Add (const Handle(Prs3d_Presentation)& aPresentation, const Handle(Adaptor3d_Surface)& aSurface, const Handle(Prs3d_Drawer)& aDrawer); diff --git a/src/StdPrs/StdPrs_WFRestrictedFace.cxx b/src/StdPrs/StdPrs_WFRestrictedFace.cxx index 52f176cf91..664e03c391 100755 --- a/src/StdPrs/StdPrs_WFRestrictedFace.cxx +++ b/src/StdPrs/StdPrs_WFRestrictedFace.cxx @@ -53,17 +53,17 @@ void StdPrs_WFRestrictedFace::Add for (aToolRst.Init(); aToolRst.More(); aToolRst.Next()) { - const Adaptor2d_Curve2d& aRCurve = aToolRst.Value(); + const Handle(Adaptor2d_Curve2d)& aRCurve = aToolRst.Value(); BndLib_Add2dCurve::Add(aRCurve, Precision::PConfusion(), aBndBox); } if (!aBndBox.IsVoid()) aBndBox.Get(aUMin, aVMin, aUMax, aVMax); else { // No pcurves -- take natural bounds - aUMin = theFace->Surface().FirstUParameter(); - aVMin = theFace->Surface().FirstVParameter(); - aUMax = theFace->Surface().LastUParameter(); - aVMax = theFace->Surface().LastVParameter(); + aUMin = theFace->Surface()->FirstUParameter(); + aVMin = theFace->Surface()->FirstVParameter(); + aUMax = theFace->Surface()->LastUParameter(); + aVMax = theFace->Surface()->LastVParameter(); } // Load the isos @@ -114,7 +114,7 @@ void StdPrs_WFRestrictedFace::Add for (aToolRst.Init(); aToolRst.More(); aToolRst.Next()) { TopAbs_Orientation anOrientation = aToolRst.Orientation(); - const Adaptor2d_Curve2d* aRCurve = &aToolRst.Value(); + const Handle(Adaptor2d_Curve2d) aRCurve = aToolRst.Value(); anU1 = aRCurve->FirstParameter(); anU2 = aRCurve->LastParameter(); if (aRCurve->GetType() != GeomAbs_Line) @@ -143,21 +143,19 @@ void StdPrs_WFRestrictedFace::Add } // Draw the isos - Adaptor3d_IsoCurve anIsoCurve; - anIsoCurve.Load(theFace); + Handle(Adaptor3d_IsoCurve) anIsoCurve = new Adaptor3d_IsoCurve(theFace); Handle(Geom_Curve) aBCurve; - const BRepAdaptor_Surface& aBSurface = *theFace; GeomAbs_SurfaceType aFaceType = theFace->GetType(); Standard_Integer aNbLines = anIsoBuild.NbLines(); Handle(Geom_Surface) aGeomBSurface; if (aFaceType == GeomAbs_BezierSurface) { - aGeomBSurface = aBSurface.Bezier(); + aGeomBSurface = theFace->Bezier(); } else if (aFaceType == GeomAbs_BSplineSurface) { - aGeomBSurface = aBSurface.BSpline(); + aGeomBSurface = theFace->BSpline(); } for (anI = 1; anI <= aNbLines; ++anI) @@ -185,18 +183,18 @@ void StdPrs_WFRestrictedFace::Add //Note that the isos are the part of the shape, it will be displayed after a computation the whole shape //NbPoints = 30 - default parameter for computation of such curves - StdPrs_Curve::Add (thePresentation, GeomAdaptor_Curve (aBCurve), b1, b2, aPoints->ChangeSequence(), 30, Standard_False); + StdPrs_Curve::Add (thePresentation, new GeomAdaptor_Curve (aBCurve), b1, b2, aPoints->ChangeSequence(), 30, Standard_False); theCurves.Append (aPoints); } else { if (anIsoBuild.IsXLine (anI)) { - anIsoCurve.Load (GeomAbs_IsoU, anIsoCoord, b1, b2); + anIsoCurve->Load (GeomAbs_IsoU, anIsoCoord, b1, b2); } else { - anIsoCurve.Load(GeomAbs_IsoV, anIsoCoord, b1, b2); + anIsoCurve->Load(GeomAbs_IsoV, anIsoCoord, b1, b2); } StdPrs_Curve::Add (thePresentation, anIsoCurve, theDrawer, aPoints->ChangeSequence(), Standard_False); theCurves.Append (aPoints); @@ -238,7 +236,7 @@ Standard_Boolean StdPrs_WFRestrictedFace::Match for (aToolRst.Init(); aToolRst.More(); aToolRst.Next()) { - const Adaptor2d_Curve2d* aRCurve = &aToolRst.Value(); + const Handle(Adaptor2d_Curve2d) aRCurve = aToolRst.Value(); anU = aRCurve->FirstParameter(); aV = aRCurve->LastParameter(); if (aRCurve->GetType() != GeomAbs_Line) @@ -314,7 +312,7 @@ Standard_Boolean StdPrs_WFRestrictedFace::Match for (aToolRst.Init(); aToolRst.More(); aToolRst.Next()) { TopAbs_Orientation Orient = aToolRst.Orientation(); - const Adaptor2d_Curve2d* aRCurve = &aToolRst.Value(); + const Handle(Adaptor2d_Curve2d) aRCurve = aToolRst.Value(); anU1 = aRCurve->FirstParameter(); anU2 = aRCurve->LastParameter(); if (aRCurve->GetType() != GeomAbs_Line) { @@ -342,8 +340,7 @@ Standard_Boolean StdPrs_WFRestrictedFace::Match // Draw the isos - Adaptor3d_IsoCurve anIso; - anIso.Load(theFace); + Handle(Adaptor3d_IsoCurve) anIso = new Adaptor3d_IsoCurve(theFace); Standard_Integer aNbLines = anIsoBuild.NbLines(); for (anI = 1; anI <= aNbLines; anI++) @@ -359,9 +356,9 @@ Standard_Boolean StdPrs_WFRestrictedFace::Match if (anIsoBuild.IsXLine(anI)) - anIso.Load(GeomAbs_IsoU,aCoord,anIsoStart,anIsoEnd); + anIso->Load(GeomAbs_IsoU,aCoord,anIsoStart,anIsoEnd); else - anIso.Load(GeomAbs_IsoV,aCoord,anIsoStart,anIsoEnd); + anIso->Load(GeomAbs_IsoV,aCoord,anIsoStart,anIsoEnd); if (StdPrs_Curve::Match(theX,theY,theZ,theDistance,anIso, theDeflection, aLimit, aNbPoints)) diff --git a/src/StdPrs/StdPrs_WFShape.cxx b/src/StdPrs/StdPrs_WFShape.cxx index 9f281e102c..ff5cf15ce1 100644 --- a/src/StdPrs/StdPrs_WFShape.cxx +++ b/src/StdPrs/StdPrs_WFShape.cxx @@ -368,7 +368,7 @@ void StdPrs_WFShape::addEdges (const TopTools_ListOfShape& theEdges, else if (BRep_Tool::IsGeometric (anEdge)) { // Default presentation for edges without triangulation. - BRepAdaptor_Curve aCurve (anEdge); + Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve(anEdge); StdPrs_DeflectionCurve::Add (Handle(Prs3d_Presentation)(), aCurve, theShapeDeflection, diff --git a/src/StdPrs/StdPrs_WFSurface.cxx b/src/StdPrs/StdPrs_WFSurface.cxx index d69d2fcfb0..dd3d58a059 100644 --- a/src/StdPrs/StdPrs_WFSurface.cxx +++ b/src/StdPrs/StdPrs_WFSurface.cxx @@ -141,8 +141,7 @@ void StdPrs_WFSurface::Add (const Handle(Prs3d_Presentation)& aPresentation, Standard_Boolean UClosed = aSurface->IsUClosed(); Standard_Boolean VClosed = aSurface->IsVClosed(); - Adaptor3d_IsoCurve anIso; - anIso.Load(aSurface); + Handle(Adaptor3d_IsoCurve) anIso = new Adaptor3d_IsoCurve(aSurface); // Trace des frontieres. // ********************* @@ -152,24 +151,24 @@ void StdPrs_WFSurface::Add (const Handle(Prs3d_Presentation)& aPresentation, aPresentation->CurrentGroup()->SetPrimitivesAspect (aDrawer->FreeBoundaryAspect()->Aspect()); if (!UClosed) { - anIso.Load (GeomAbs_IsoU, U1, V1, V2); + anIso->Load (GeomAbs_IsoU, U1, V1, V2); Handle(TColgp_HSequenceOfPnt) aPntsU1 = new TColgp_HSequenceOfPnt; StdPrs_Curve::Add (aPresentation, anIso, aDrawer, aPntsU1->ChangeSequence(), Standard_False); freeCurves.Append (aPntsU1); - anIso.Load (GeomAbs_IsoU,U2,V1,V2); + anIso->Load (GeomAbs_IsoU,U2,V1,V2); Handle(TColgp_HSequenceOfPnt) aPntsU2 = new TColgp_HSequenceOfPnt; StdPrs_Curve::Add (aPresentation, anIso, aDrawer, aPntsU2->ChangeSequence(), Standard_False); freeCurves.Append(aPntsU2); } if (!VClosed) { - anIso.Load (GeomAbs_IsoV, V1, U1, U2); + anIso->Load (GeomAbs_IsoV, V1, U1, U2); Handle(TColgp_HSequenceOfPnt) aPntsV1 = new TColgp_HSequenceOfPnt; StdPrs_Curve::Add (aPresentation, anIso, aDrawer, aPntsV1->ChangeSequence(), Standard_False); freeCurves.Append (aPntsV1); - anIso.Load (GeomAbs_IsoV, V2, U1, U2); + anIso->Load (GeomAbs_IsoV, V2, U1, U2); Handle(TColgp_HSequenceOfPnt) aPntsV2 = new TColgp_HSequenceOfPnt; StdPrs_Curve::Add (aPresentation, anIso, aDrawer, aPntsV2->ChangeSequence(), Standard_False); freeCurves.Append(aPntsV2); @@ -187,7 +186,7 @@ void StdPrs_WFSurface::Add (const Handle(Prs3d_Presentation)& aPresentation, Standard_Real du= UClosed ? (U2-U1) / fin : (U2-U1) / (1 + fin); for (Standard_Integer i = 1; i <= fin; i++) { - anIso.Load (GeomAbs_IsoU, U1 + du * i, V1, V2); + anIso->Load (GeomAbs_IsoU, U1 + du * i, V1, V2); Handle(TColgp_HSequenceOfPnt) Pnts = new TColgp_HSequenceOfPnt; StdPrs_Curve::Add (aPresentation, anIso, aDrawer, Pnts->ChangeSequence(), Standard_False); UIsoCurves.Append (Pnts); @@ -201,7 +200,7 @@ void StdPrs_WFSurface::Add (const Handle(Prs3d_Presentation)& aPresentation, Standard_Real dv = VClosed ? (V2 - V1) / fin : (V2 - V1) / (1 + fin); for (Standard_Integer i = 1; i <= fin; i++) { - anIso.Load (GeomAbs_IsoV, V1 + dv * i, U1, U2); + anIso->Load (GeomAbs_IsoV, V1 + dv * i, U1, U2); Handle(TColgp_HSequenceOfPnt) Pnts = new TColgp_HSequenceOfPnt; StdPrs_Curve::Add (aPresentation, anIso, aDrawer, Pnts->ChangeSequence(), Standard_False); VIsoCurves.Append (Pnts); diff --git a/src/StdSelect/StdSelect_BRepSelectionTool.cxx b/src/StdSelect/StdSelect_BRepSelectionTool.cxx index 07b5a96543..a755a56d8b 100644 --- a/src/StdSelect/StdSelect_BRepSelectionTool.cxx +++ b/src/StdSelect/StdSelect_BRepSelectionTool.cxx @@ -381,13 +381,13 @@ static Handle(TColgp_HArray1OfPnt) GetPointsFromPolygon (const TopoDS_Edge& theE // Function: FindLimits // Purpose : //================================================== -static Standard_Boolean FindLimits (const Adaptor3d_Curve& theCurve, +static Standard_Boolean FindLimits (const Handle(Adaptor3d_Curve)& theCurve, const Standard_Real theLimit, Standard_Real& theFirst, Standard_Real& theLast) { - theFirst = theCurve.FirstParameter(); - theLast = theCurve.LastParameter(); + theFirst = theCurve->FirstParameter(); + theLast = theCurve->LastParameter(); Standard_Boolean isFirstInf = Precision::IsNegativeInfinite (theFirst); Standard_Boolean isLastInf = Precision::IsPositiveInfinite (theLast); if (isFirstInf || isLastInf) @@ -402,28 +402,28 @@ static Standard_Boolean FindLimits (const Adaptor3d_Curve& theCurve, aDelta *= 2.0; theFirst = - aDelta; theLast = aDelta; - theCurve.D0 (theFirst, aPnt1); - theCurve.D0 (theLast, aPnt2); + theCurve->D0 (theFirst, aPnt1); + theCurve->D0 (theLast, aPnt2); } while (aPnt1.Distance (aPnt2) < theLimit); } else if (isFirstInf) { - theCurve.D0 (theLast, aPnt2); + theCurve->D0 (theLast, aPnt2); do { if (anIterCount++ >= 100000) return Standard_False; aDelta *= 2.0; theFirst = theLast - aDelta; - theCurve.D0 (theFirst, aPnt1); + theCurve->D0 (theFirst, aPnt1); } while (aPnt1.Distance (aPnt2) < theLimit); } else if (isLastInf) { - theCurve.D0 (theFirst, aPnt1); + theCurve->D0 (theFirst, aPnt1); do { if (anIterCount++ >= 100000) return Standard_False; aDelta *= 2.0; theLast = theFirst + aDelta; - theCurve.D0 (theLast, aPnt2); + theCurve->D0 (theLast, aPnt2); } while (aPnt1.Distance (aPnt2) < theLimit); } } @@ -461,29 +461,29 @@ void StdSelect_BRepSelectionTool::GetEdgeSensitive (const TopoDS_Shape& theShape return; } - BRepAdaptor_Curve cu3d; + Handle(BRepAdaptor_Curve) cu3d = new BRepAdaptor_Curve(); try { OCC_CATCH_SIGNALS - cu3d.Initialize (anEdge); + cu3d->Initialize (anEdge); } catch (Standard_NullObject const&) { return; } - Standard_Real aParamFirst = cu3d.FirstParameter(); - Standard_Real aParamLast = cu3d.LastParameter(); - switch (cu3d.GetType()) + Standard_Real aParamFirst = cu3d->FirstParameter(); + Standard_Real aParamLast = cu3d->LastParameter(); + switch (cu3d->GetType()) { case GeomAbs_Line: { BRep_Tool::Range (anEdge, aParamFirst, aParamLast); theSensitive = new Select3D_SensitiveSegment (theOwner, - cu3d.Value (aParamFirst), - cu3d.Value (aParamLast)); + cu3d->Value (aParamFirst), + cu3d->Value (aParamLast)); break; } case GeomAbs_Circle: { - const gp_Circ aCircle = cu3d.Circle(); + const gp_Circ aCircle = cu3d->Circle(); if (aCircle.Radius() <= Precision::Confusion()) { theSelection->Add (new Select3D_SensitivePoint (theOwner, aCircle.Location())); @@ -500,9 +500,9 @@ void StdSelect_BRepSelectionTool::GetEdgeSensitive (const TopoDS_Shape& theShape // TODO: remove copy-paste from StdPrs_Curve and some others... if (FindLimits (cu3d, theMaxParam, aParamFirst, aParamLast)) { - Standard_Integer aNbIntervals = cu3d.NbIntervals (GeomAbs_C1); + Standard_Integer aNbIntervals = cu3d->NbIntervals (GeomAbs_C1); TColStd_Array1OfReal anIntervals (1, aNbIntervals + 1); - cu3d.Intervals (anIntervals, GeomAbs_C1); + cu3d->Intervals (anIntervals, GeomAbs_C1); Standard_Real aV1, aV2; Standard_Integer aNumberOfPoints; TColgp_SequenceOfPnt aPointsSeq; @@ -540,9 +540,9 @@ void StdSelect_BRepSelectionTool::GetEdgeSensitive (const TopoDS_Shape& theShape // simple subdivisions Standard_Integer nbintervals = 1; - if (cu3d.GetType() == GeomAbs_BSplineCurve) + if (cu3d->GetType() == GeomAbs_BSplineCurve) { - nbintervals = cu3d.NbKnots() - 1; + nbintervals = cu3d->NbKnots() - 1; nbintervals = Max (1, nbintervals / 3); } @@ -553,7 +553,7 @@ void StdSelect_BRepSelectionTool::GetEdgeSensitive (const TopoDS_Shape& theShape for (Standard_Integer aPntId = 1; aPntId <= aPntNb; ++aPntId) { aParam = aParamFirst + aParamDelta * (aPntId - 1); - aPointArray->SetValue (aPntId, cu3d.Value (aParam)); + aPointArray->SetValue (aPntId, cu3d->Value (aParam)); } theSensitive = new Select3D_SensitiveCurve (theOwner, aPointArray); } diff --git a/src/TPrsStd/TPrsStd_ConstraintTools.cxx b/src/TPrsStd/TPrsStd_ConstraintTools.cxx index 9445d0da43..1283991296 100644 --- a/src/TPrsStd/TPrsStd_ConstraintTools.cxx +++ b/src/TPrsStd/TPrsStd_ConstraintTools.cxx @@ -1578,14 +1578,14 @@ void TPrsStd_ConstraintTools::ComputeEqualRadius(const Handle(TDataXtd_Constrain if (!IsPlanar || aplane.IsNull()) { // check are the planes of edge1 and edge2 coincident BRepAdaptor_Curve aCurve( edge1 ); - Handle( Geom_Curve ) aProjCurve = aCurve.Curve().Curve(); + Handle( Geom_Curve ) aProjCurve = aCurve.Curve()->Curve(); gp_Circ aCircle = (Handle( Geom_Circle )::DownCast( aProjCurve ))->Circ(); gp_Ax3 anAx31(aCircle.Position()); //get the circle axis // get the circle plane Handle(Geom_Plane) aPlane1 = new Geom_Plane (anAx31); aCurve.Initialize(edge2); - aProjCurve = aCurve.Curve().Curve(); + aProjCurve = aCurve.Curve()->Curve(); aCircle = (Handle( Geom_Circle )::DownCast( aProjCurve ))->Circ(); gp_Ax3 anAx32(aCircle.Position()); //get the circle axis // get the circle plane @@ -1841,11 +1841,11 @@ void TPrsStd_ConstraintTools::ComputeOffset (const Handle(TDataXtd_Constraint)& BRepAdaptor_Curve CURVE(OE); if (CURVE.GetType() == GeomAbs_Line) { // Works only with line !! - Handle(Geom_Geometry) aGeomGeometry = CURVE.Curve().Curve()->Transformed(CURVE.Trsf()) ; + Handle(Geom_Geometry) aGeomGeometry = CURVE.Curve()->Curve()->Transformed(CURVE.Trsf()) ; gp_Lin OLin = Handle(Geom_Line)::DownCast (aGeomGeometry)->Lin(); TopoDS_Edge NE = TopoDS::Edge(S2); CURVE.Initialize (NE); - aGeomGeometry = CURVE.Curve().Curve()->Transformed(CURVE.Trsf()) ; + aGeomGeometry = CURVE.Curve()->Curve()->Transformed(CURVE.Trsf()) ; gp_Lin NLin = Handle(Geom_Line)::DownCast (aGeomGeometry)->Lin(); gp_Dir TDir (NLin.Location().XYZ() - OLin.Location().XYZ()); aplane = new Geom_Plane (NLin.Location(),NLin.Direction()^TDir); @@ -1864,7 +1864,7 @@ void TPrsStd_ConstraintTools::ComputeOffset (const Handle(TDataXtd_Constraint)& } else if (CURVE.GetType() == GeomAbs_Circle) { - Handle(Geom_Geometry) aGeomGeometry = CURVE.Curve().Curve()->Transformed(CURVE.Trsf()) ; + Handle(Geom_Geometry) aGeomGeometry = CURVE.Curve()->Curve()->Transformed(CURVE.Trsf()) ; gp_Ax1 ax = Handle(Geom_Circle)::DownCast (aGeomGeometry)->Circ().Axis(); aplane = new Geom_Plane (ax.Location(),ax.Direction()); is_planar = Standard_True; diff --git a/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.cxx b/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.cxx index 6cebc0ab1e..4a16a2a062 100644 --- a/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.cxx +++ b/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.cxx @@ -91,6 +91,8 @@ TopOpeBRep_EdgesIntersector::TopOpeBRep_EdgesIntersector() mySurface2 = new BRepAdaptor_Surface(); mySurfacesSameOriented = Standard_False; myFacesSameOriented = Standard_False; + myCurve1 = new Geom2dAdaptor_Curve(); + myCurve2 = new Geom2dAdaptor_Curve(); myTol1 = 0.; // Precision::PConfusion(); myTol2 = 0.; // Precision::PIntersection(); myDimension = 2; @@ -138,12 +140,12 @@ void TopOpeBRep_EdgesIntersector::SetFaces(const TopoDS_Shape& F1,const TopoDS_S myFacesSameOriented = Standard_True; myFace1 = TopoDS::Face(F1); - BRepAdaptor_Surface& S1 = *mySurface1; S1.Initialize(myFace1,computerestriction); - mySurfaceType1 = S1.GetType(); + mySurface1->Initialize(myFace1,computerestriction); + mySurfaceType1 = mySurface1->GetType(); myFace2 = TopoDS::Face(F2); - BRepAdaptor_Surface& S2 = *mySurface2; S2.Initialize(myFace2,computerestriction); - mySurfaceType2 = S2.GetType(); + mySurface2->Initialize(myFace2,computerestriction); + mySurfaceType2 = mySurface2->GetType(); TopoDS_Face face1forward = myFace1; face1forward.Orientation(TopAbs_FORWARD); @@ -154,11 +156,11 @@ void TopOpeBRep_EdgesIntersector::SetFaces(const TopoDS_Shape& F1,const TopoDS_S so21 = TopOpeBRepTool_ShapeTool::FacesSameOriented(face1forward,myFace2); myf2surf1F_sameoriented = so21; - mySurfacesSameOriented = TopOpeBRepTool_ShapeTool::SurfacesSameOriented(S1,S2); + mySurfacesSameOriented = TopOpeBRepTool_ShapeTool::SurfacesSameOriented(mySurface1, mySurface2); myFacesSameOriented = TopOpeBRepTool_ShapeTool::FacesSameOriented(myFace1,myFace2); if ( !myTolForced ) { - FTOL_FaceTolerances2d(B1,B2,myFace1,myFace2,S1,S2,myTol1,myTol2); + FTOL_FaceTolerances2d(B1,B2,myFace1,myFace2, mySurface1, mySurface2,myTol1,myTol2); myTol1 = (myTol1 > 1.e-4)? 1.e-4: myTol1; myTol2 = (myTol2 > 1.e-4)? 1.e-4: myTol2; } @@ -217,8 +219,8 @@ static Standard_Boolean TransitionEqualAndExtremity( const IntRes2d_Transition& // Modified by Sergey KHROMOV - Fri Jan 11 14:49:48 2002 Begin static Standard_Boolean IsTangentSegment(const IntRes2d_IntersectionPoint &P1, const IntRes2d_IntersectionPoint &P2, - const Geom2dAdaptor_Curve &aC1, - const Geom2dAdaptor_Curve &aC2, + const Handle(Geom2dAdaptor_Curve) &aC1, + const Handle(Geom2dAdaptor_Curve) &aC2, const Standard_Real aTolConf) { const gp_Pnt2d &aP2d1 = P1.Value(); const gp_Pnt2d &aP2d2 = P2.Value(); @@ -232,8 +234,8 @@ static Standard_Boolean IsTangentSegment(const IntRes2d_IntersectionPoint &P1, if (aSqrDistPP <= aTolConf) { Standard_Real aParDist1 = Abs(P1.ParamOnFirst() - P2.ParamOnFirst()); Standard_Real aParDist2 = Abs(P1.ParamOnSecond() - P2.ParamOnSecond()); - Standard_Real aResol1 = aC1.Resolution(aTolConf); - Standard_Real aResol2 = aC2.Resolution(aTolConf); + Standard_Real aResol1 = aC1->Resolution(aTolConf); + Standard_Real aResol2 = aC2->Resolution(aTolConf); if (aParDist1*aParDist1 <= aResol1 && aParDist2*aParDist2 <= aResol2) @@ -323,7 +325,7 @@ Standard_Boolean EdgesIntersector_checkT1D(const TopoDS_Edge& E1,const TopoDS_Ed if (PC1.IsNull()) throw Standard_Failure("EdgesIntersector::Perform : no 2d curve"); - myCurve1.Load(PC1); + myCurve1->Load(PC1); BRep_Tool::UVPoints(myEdge1,myFace1,pfirst,plast); tole = BRep_Tool::Tolerance(myEdge1); myDomain1.SetValues(pfirst,first,tole,plast,last,tole); @@ -344,7 +346,7 @@ Standard_Boolean EdgesIntersector_checkT1D(const TopoDS_Edge& E1,const TopoDS_Ed if ( mySurfaceType1 == GeomAbs_Plane || memesfaces || memesupport) { Handle(Geom2d_Curve) PC2 = FC2D_CurveOnSurface(myEdge2,myFace1,first,last,tolpc); - myCurve2.Load(PC2); + myCurve2->Load(PC2); BRep_Tool::UVPoints(myEdge2,myFace1,pfirst,plast); tole = BRep_Tool::Tolerance(myEdge2); myDomain2.SetValues(pfirst,first,tole,plast,last,tole); @@ -411,7 +413,7 @@ Standard_Boolean EdgesIntersector_checkT1D(const TopoDS_Edge& E1,const TopoDS_Ed } if (!PC2on1.IsNull()) { - myCurve2.Load(PC2on1); + myCurve2->Load(PC2on1); tole = BRep_Tool::Tolerance(myEdge2); PC2on1->D0(first,pfirst); PC2on1->D0(last,plast); @@ -612,10 +614,10 @@ Standard_Integer TopOpeBRep_EdgesIntersector::Dimension() const //======================================================================= Standard_Boolean TopOpeBRep_EdgesIntersector::ComputeSameDomain() { - const Geom2dAdaptor_Curve& C1 = Curve(1); - const Geom2dAdaptor_Curve& C2 = Curve(2); - GeomAbs_CurveType t1 = C1.GetType(); - GeomAbs_CurveType t2 = C2.GetType(); + const Handle(Geom2dAdaptor_Curve)& C1 = Curve(1); + const Handle(Geom2dAdaptor_Curve)& C2 = Curve(2); + GeomAbs_CurveType t1 = C1->GetType(); + GeomAbs_CurveType t2 = C2->GetType(); if (!myHasSegment) return SetSameDomain(Standard_False); @@ -635,8 +637,8 @@ Standard_Boolean TopOpeBRep_EdgesIntersector::ComputeSameDomain() return SetSameDomain(Standard_False); } - gp_Circ2d c1 = C1.Circle(); - gp_Circ2d c2 = C2.Circle(); + gp_Circ2d c1 = C1->Circle(); + gp_Circ2d c2 = C2->Circle(); Standard_Real r1 = c1.Radius(); Standard_Real r2 = c2.Radius(); // Standard_Boolean rr = (r1 == r2); @@ -646,9 +648,9 @@ Standard_Boolean TopOpeBRep_EdgesIntersector::ComputeSameDomain() const gp_Pnt2d& p1 = c1.Location(); const gp_Pnt2d& p2 = c2.Location(); - const BRepAdaptor_Surface& BAS1 = Surface(1); - Standard_Real u1,v1; p1.Coord(u1,v1); gp_Pnt P1 = BAS1.Value(u1,v1); - Standard_Real u2,v2; p2.Coord(u2,v2); gp_Pnt P2 = BAS1.Value(u2,v2);// recall myCurve2=C2d(myEdge2,myFace1); + const Handle(BRepAdaptor_Surface)& BAS1 = Surface(1); + Standard_Real u1,v1; p1.Coord(u1,v1); gp_Pnt P1 = BAS1->Value(u1,v1); + Standard_Real u2,v2; p2.Coord(u2,v2); gp_Pnt P2 = BAS1->Value(u2,v2);// recall myCurve2=C2d(myEdge2,myFace1); Standard_Real dpp = P1.Distance(P2); Standard_Real tol1 = BRep_Tool::Tolerance(TopoDS::Edge(Edge(1))); Standard_Real tol2 = BRep_Tool::Tolerance(TopoDS::Edge(Edge(2))); @@ -855,7 +857,7 @@ const TopoDS_Shape& TopOpeBRep_EdgesIntersector::Edge(const Standard_Integer Ind //function : Curve //purpose : //======================================================================= -const Geom2dAdaptor_Curve& TopOpeBRep_EdgesIntersector::Curve(const Standard_Integer Index) const +const Handle(Geom2dAdaptor_Curve)& TopOpeBRep_EdgesIntersector::Curve(const Standard_Integer Index) const { if ( Index == 1 ) return myCurve1; else if ( Index == 2 ) return myCurve2; @@ -877,10 +879,10 @@ const TopoDS_Shape& TopOpeBRep_EdgesIntersector::Face(const Standard_Integer Ind //function : Surface //purpose : //======================================================================= -const BRepAdaptor_Surface& TopOpeBRep_EdgesIntersector::Surface(const Standard_Integer Index) const +const Handle(BRepAdaptor_Surface)& TopOpeBRep_EdgesIntersector::Surface(const Standard_Integer Index) const { - if ( Index == 1 ) return *mySurface1; - else if ( Index == 2 ) return *mySurface2; + if ( Index == 1 ) return mySurface1; + else if ( Index == 2 ) return mySurface2; else throw Standard_Failure("TopOpeBRep_EdgesIntersector::Surface"); } diff --git a/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.hxx b/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.hxx index ece4ab26c3..61f972c8cc 100644 --- a/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.hxx +++ b/src/TopOpeBRep/TopOpeBRep_EdgesIntersector.hxx @@ -74,11 +74,11 @@ public: Standard_EXPORT const TopoDS_Shape& Edge (const Standard_Integer Index) const; - Standard_EXPORT const Geom2dAdaptor_Curve& Curve (const Standard_Integer Index) const; + Standard_EXPORT const Handle(Geom2dAdaptor_Curve)& Curve (const Standard_Integer Index) const; Standard_EXPORT const TopoDS_Shape& Face (const Standard_Integer Index) const; - Standard_EXPORT const BRepAdaptor_Surface& Surface (const Standard_Integer Index) const; + Standard_EXPORT const Handle(BRepAdaptor_Surface)& Surface (const Standard_Integer Index) const; Standard_EXPORT Standard_Boolean SurfacesSameOriented() const; @@ -179,8 +179,8 @@ private: IntRes2d_Domain myDomain2; TopoDS_Edge myEdge1; TopoDS_Edge myEdge2; - Geom2dAdaptor_Curve myCurve1; - Geom2dAdaptor_Curve myCurve2; + Handle(Geom2dAdaptor_Curve) myCurve1; + Handle(Geom2dAdaptor_Curve) myCurve2; Standard_Real myTol1; Standard_Real myTol2; Standard_Boolean myTolForced; diff --git a/src/TopOpeBRep/TopOpeBRep_EdgesIntersector_1.cxx b/src/TopOpeBRep/TopOpeBRep_EdgesIntersector_1.cxx index 0b81e48acc..c72cfb1837 100644 --- a/src/TopOpeBRep/TopOpeBRep_EdgesIntersector_1.cxx +++ b/src/TopOpeBRep/TopOpeBRep_EdgesIntersector_1.cxx @@ -415,6 +415,6 @@ gp_Pnt TopOpeBRep_EdgesIntersector::Value1() const p.SetCoord (inf, inf, inf); } else - mySurface1->Surface().D0(p2.X(),p2.Y(), p); + mySurface1->Surface()->D0(p2.X(),p2.Y(), p); return p; } diff --git a/src/TopOpeBRep/TopOpeBRep_FacesFiller.cxx b/src/TopOpeBRep/TopOpeBRep_FacesFiller.cxx index d0d60bfddd..5a4d4c1a79 100644 --- a/src/TopOpeBRep/TopOpeBRep_FacesFiller.cxx +++ b/src/TopOpeBRep/TopOpeBRep_FacesFiller.cxx @@ -48,13 +48,13 @@ Standard_EXPORT Standard_Boolean FUN_projPonL(const gp_Pnt& P,const TopOpeBRep_L Standard_Boolean hasC3D = FC2D_HasC3D(E); Standard_Real dist; if (hasC3D) { - BRepAdaptor_Curve BAC(E); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(E); paramLdef = FUN_tool_projPonC(P,BAC,paramL,dist); } else { - BRepAdaptor_Curve2d BAC2D; - if (Esi == 1) BAC2D.Initialize(E,FF.Face(1)); - else if (Esi == 2) BAC2D.Initialize(E,FF.Face(2)); + Handle(BRepAdaptor_Curve2d) BAC2D = new BRepAdaptor_Curve2d(); + if (Esi == 1) BAC2D->Initialize(E,FF.Face(1)); + else if (Esi == 2) BAC2D->Initialize(E,FF.Face(2)); paramLdef = FUN_tool_projPonC2D(P,BAC2D,paramL,dist); } return paramLdef; diff --git a/src/TopOpeBRep/TopOpeBRep_FacesFiller_1.cxx b/src/TopOpeBRep/TopOpeBRep_FacesFiller_1.cxx index d29dc21e2d..ab5101e181 100644 --- a/src/TopOpeBRep/TopOpeBRep_FacesFiller_1.cxx +++ b/src/TopOpeBRep/TopOpeBRep_FacesFiller_1.cxx @@ -1027,7 +1027,7 @@ void TopOpeBRep_FacesFiller::AddShapesLine() //Patch: avoid making too small edges. Made for the bug buc60926 by jgv, 14.06.01. Standard_Real fpar, lpar; DSC.Range(fpar, lpar); - GeomAdaptor_Curve theCurve( DSC.Curve(), fpar, lpar ); + Handle(GeomAdaptor_Curve) theCurve = new GeomAdaptor_Curve( DSC.Curve(), fpar, lpar ); Bnd_Box theBox; BndLib_Add3dCurve::Add( theCurve, 0., theBox ); Standard_Real Xmin, Ymin, Zmin, Xmax, Ymax, Zmax, MaxSide; diff --git a/src/TopOpeBRep/TopOpeBRep_FacesIntersector.cxx b/src/TopOpeBRep/TopOpeBRep_FacesIntersector.cxx index 351a175c68..ef339f25df 100644 --- a/src/TopOpeBRep/TopOpeBRep_FacesIntersector.cxx +++ b/src/TopOpeBRep/TopOpeBRep_FacesIntersector.cxx @@ -133,11 +133,11 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, Standard_Real& theLast); //------------------------------------------------------------------------------------------------ static Standard_Boolean IsPointOK(const gp_Pnt& theTestPnt, - const Adaptor3d_Surface& theTestSurface, + const Handle(Adaptor3d_Surface)& theTestSurface, const Standard_Real& theTol); //------------------------------------------------------------------------------------------------- static Standard_Boolean GetPointOn2S(const gp_Pnt& theTestPnt, - const Adaptor3d_Surface& theTestSurface, + const Handle(Adaptor3d_Surface)& theTestSurface, const Standard_Real& theTol, Extrema_POnSurf& theResultPoint); //------------------------------------------------------------------------------------------------------------------------- @@ -178,10 +178,10 @@ void TopOpeBRep_FacesIntersector::Perform(const TopoDS_Shape& F1,const TopoDS_Sh myFace1 = TopoDS::Face(F1); myFace1.Orientation(TopAbs_FORWARD); myFace2 = TopoDS::Face(F2); myFace2.Orientation(TopAbs_FORWARD); - BRepAdaptor_Surface& S1 = *mySurface1; S1.Initialize(myFace1); - BRepAdaptor_Surface& S2 = *mySurface2; S2.Initialize(myFace2); - mySurfaceType1 = S1.GetType(); - mySurfaceType2 = S2.GetType(); + mySurface1->Initialize(myFace1); + mySurface2->Initialize(myFace2); + mySurfaceType1 = mySurface1->GetType(); + mySurfaceType2 = mySurface2->GetType(); const Handle(Adaptor3d_Surface)& aSurf1 = mySurface1; // to avoid ambiguity myDomain1->Initialize(aSurf1); const Handle(Adaptor3d_Surface)& aSurf2 = mySurface2; // to avoid ambiguity @@ -193,7 +193,7 @@ void TopOpeBRep_FacesIntersector::Perform(const TopoDS_Shape& F1,const TopoDS_Sh Standard_Real Deflection=0.01,MaxUV=0.01; if (!myForceTolerances) { - FTOL_FaceTolerances3d(B1,B2,myFace1,myFace2,S1,S2, + FTOL_FaceTolerances3d(B1,B2,myFace1,myFace2, mySurface1, mySurface2, myTol1,myTol2,Deflection,MaxUV); myTol1 = (myTol1 > 1.e-4)? 1.e-4: myTol1; myTol2 = (myTol2 > 1.e-4)? 1.e-4: myTol2; @@ -229,7 +229,7 @@ void TopOpeBRep_FacesIntersector::Perform(const TopoDS_Shape& F1,const TopoDS_Sh // mySurfacesSameOriented : a mettre dans IntPatch NYI if ( SameDomain() ) { - mySurfacesSameOriented = TopOpeBRepTool_ShapeTool::SurfacesSameOriented(S1,S2); + mySurfacesSameOriented = TopOpeBRepTool_ShapeTool::SurfacesSameOriented(mySurface1, mySurface2); } // build the map of edges found as RESTRICTION @@ -370,8 +370,6 @@ void TopOpeBRep_FacesIntersector::PrepareLines() myLineNb = 0; Standard_Integer n = myIntersector.NbLines(); myHAL = new TopOpeBRep_HArray1OfLineInter(0,n); - BRepAdaptor_Surface& S1 = *mySurface1; - BRepAdaptor_Surface& S2 = *mySurface2; // modified by NIZHNY-MKK Mon Apr 2 12:14:58 2001.BEGIN if(n==0) @@ -436,7 +434,7 @@ void TopOpeBRep_FacesIntersector::PrepareLines() for(Standard_Integer index = 1; index <= myLineNb; index++) { TopOpeBRep_LineInter& LI = myHAL->ChangeValue(index); const Handle(IntPatch_Line)& L = aSeqOfResultLines.Value(index); - LI.SetLine(L,S1,S2); + LI.SetLine(L, mySurface1, mySurface2); LI.Index(index); } } @@ -723,7 +721,7 @@ Handle(IntPatch_RLine) BuildRLineBasedOnWLine(const Handle(IntPatch_WLine)& theW } aPOnLine = gp_Pnt2d(u, v); - Standard_Real par1 = Geom2dInt_TheProjPCurOfGInter::FindParameter (*theArc, aPOnLine, 1.e-7); + Standard_Real par1 = Geom2dInt_TheProjPCurOfGInter::FindParameter (theArc, aPOnLine, 1.e-7); if(theRank == 1) { Vtx2.ParametersOnS1(u, v); @@ -732,7 +730,7 @@ Handle(IntPatch_RLine) BuildRLineBasedOnWLine(const Handle(IntPatch_WLine)& theW Vtx2.ParametersOnS2(u, v); } aPOnLine = gp_Pnt2d(u, v); - Standard_Real par2 = Geom2dInt_TheProjPCurOfGInter::FindParameter (*theArc, aPOnLine, 1.e-7); + Standard_Real par2 = Geom2dInt_TheProjPCurOfGInter::FindParameter (theArc, aPOnLine, 1.e-7); Standard_Real tol = (Vtx1.Tolerance() > Vtx2.Tolerance()) ? Vtx1.Tolerance() : Vtx2.Tolerance(); @@ -780,7 +778,7 @@ Handle(IntPatch_RLine) BuildRLineBasedOnWLine(const Handle(IntPatch_WLine)& theW Vtx.ParametersOnS2(u, v); } gp_Pnt2d atmpPoint(u, v); - Standard_Real apar = Geom2dInt_TheProjPCurOfGInter::FindParameter (*theArc, atmpPoint, 1.e-7); + Standard_Real apar = Geom2dInt_TheProjPCurOfGInter::FindParameter (theArc, atmpPoint, 1.e-7); Vtx.SetParameter(apar); anRLine->AddVertex(Vtx); } @@ -823,7 +821,7 @@ Handle(IntPatch_RLine) BuildRLineBasedOnWLine(const Handle(IntPatch_WLine)& theW Vtx.ParametersOnS2(u, v); } gp_Pnt2d atmpPoint(u, v); - Standard_Real apar = Geom2dInt_TheProjPCurOfGInter::FindParameter (*theArc, atmpPoint, 1.e-7); + Standard_Real apar = Geom2dInt_TheProjPCurOfGInter::FindParameter (theArc, atmpPoint, 1.e-7); Vtx.SetParameter(apar); anRLine->AddVertex(Vtx); } @@ -899,7 +897,7 @@ Handle(IntPatch_RLine) BuildRLine(const IntPatch_SequenceOfLine& theSeqOfWLi POn2S.ParametersOnS2(u, v); } gp_Pnt2d aPOnArc, aPOnLine(u, v); - Standard_Real par = Geom2dInt_TheProjPCurOfGInter::FindParameter (*theDomain->Value(), aPOnLine, 1e-7); + Standard_Real par = Geom2dInt_TheProjPCurOfGInter::FindParameter (theDomain->Value(), aPOnLine, 1e-7); aPOnArc = theDomain->Value()->Value(par); gp_Pnt ap; gp_Vec ad1u, ad1v; @@ -1229,8 +1227,7 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, Handle(Geom_Curve) aCEdge=BRep_Tool::Curve(*anE, firstES1, lastES1); if ( aCEdge.IsNull() ) // e.g. degenerated edge, see OCC21770 continue; - GeomAdaptor_Curve CE; - CE.Load(aCEdge); + Handle(GeomAdaptor_Curve) CE = new GeomAdaptor_Curve(aCEdge); Extrema_ExtPC epc(theTestPoint, CE, 1.e-7); if( epc.IsDone() ) @@ -1293,8 +1290,8 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, gp_Pnt2d aPOnLine_F(Upf, Vpf); gp_Pnt2d aPOnLine_L(Upl, Vpl); - Standard_Real par_F = Geom2dInt_TheProjPCurOfGInter::FindParameter (*arc, aPOnLine_F, tol); - Standard_Real par_L = Geom2dInt_TheProjPCurOfGInter::FindParameter (*arc, aPOnLine_L, tol); + Standard_Real par_F = Geom2dInt_TheProjPCurOfGInter::FindParameter (arc, aPOnLine_F, tol); + Standard_Real par_L = Geom2dInt_TheProjPCurOfGInter::FindParameter (arc, aPOnLine_L, tol); WLVertexParameters.Append(par_F); WLVertexParameters.Append(par_L); @@ -1332,7 +1329,7 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, Standard_Real param = (firstES1 + WLVertexParameters.Value(1)) / 2.; gp_Pnt point; aCEdge->D0(param, point); - if( !IsPointOK(point, *theSurfaceTool, CheckTol) ) + if( !IsPointOK(point, theSurfaceTool, CheckTol) ) { classifyOK = Standard_False; break; @@ -1344,7 +1341,7 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, Standard_Real param = (lastES1 + WLVertexParameters.Value(WLVertexParameters.Length())) / 2.; gp_Pnt point; aCEdge->D0(param, point); - if( !IsPointOK(point, *theSurfaceTool, CheckTol) ) + if( !IsPointOK(point, theSurfaceTool, CheckTol) ) { classifyOK = Standard_False; break; @@ -1359,7 +1356,7 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, Standard_Real param = (WLVertexParameters.Value(i*2) + WLVertexParameters.Value(i*2+1)) / 2.; gp_Pnt point; aCEdge->D0(param, point); - if( !IsPointOK(point, *theSurfaceTool, CheckTol) ) + if( !IsPointOK(point, theSurfaceTool, CheckTol) ) { classifyOK = Standard_False; break; @@ -1399,8 +1396,8 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, Extrema_POnSurf pOnS1; Extrema_POnSurf pOnS2; gp_Pnt arcpoint = PointsFromArc.Value( i ); - Standard_Boolean isOnS1 = GetPointOn2S( arcpoint, *theSurfaceObj, CheckTol, pOnS1 ); - Standard_Boolean isOnS2 = GetPointOn2S( arcpoint, *theSurfaceTool, CheckTol, pOnS2 ); + Standard_Boolean isOnS1 = GetPointOn2S( arcpoint, theSurfaceObj, CheckTol, pOnS1 ); + Standard_Boolean isOnS2 = GetPointOn2S( arcpoint, theSurfaceTool, CheckTol, pOnS2 ); if( isOnS1 && isOnS2 ) { Standard_Real u1 = 0., v1 = 0., u2 = 0., v2 = 0.; @@ -1421,7 +1418,7 @@ static Standard_Integer GetArc(IntPatch_SequenceOfLine& theSlin, // purpose: returns the state of testPoint on OTHER face. //======================================================================================== static Standard_Boolean IsPointOK(const gp_Pnt& theTestPnt, - const Adaptor3d_Surface& theTestSurface, + const Handle(Adaptor3d_Surface)& theTestSurface, const Standard_Real& theTol) { Standard_Boolean result = Standard_False; @@ -1450,7 +1447,7 @@ static Standard_Boolean IsPointOK(const gp_Pnt& theTestPnt, // purpose: check state of testPoint and returns result point if state is OK. //======================================================================================== static Standard_Boolean GetPointOn2S(const gp_Pnt& theTestPnt, - const Adaptor3d_Surface& theTestSurface, + const Handle(Adaptor3d_Surface)& theTestSurface, const Standard_Real& theTol, Extrema_POnSurf& theResultPoint) { diff --git a/src/TopOpeBRep/TopOpeBRep_Hctxee2d.cxx b/src/TopOpeBRep/TopOpeBRep_Hctxee2d.cxx index 2f7a0e57e6..7c29f320fb 100644 --- a/src/TopOpeBRep/TopOpeBRep_Hctxee2d.cxx +++ b/src/TopOpeBRep/TopOpeBRep_Hctxee2d.cxx @@ -52,12 +52,12 @@ TopOpeBRep_Hctxee2d::TopOpeBRep_Hctxee2d() //purpose : //======================================================================= void TopOpeBRep_Hctxee2d::SetEdges(const TopoDS_Edge& E1,const TopoDS_Edge& E2, - const BRepAdaptor_Surface& BAS1, - const BRepAdaptor_Surface& BAS2) + const Handle(BRepAdaptor_Surface)& BAS1, + const Handle(BRepAdaptor_Surface)& BAS2) { - const TopoDS_Face& F1 = BAS1.Face(); - GeomAbs_SurfaceType ST1 = BAS1.GetType(); - const TopoDS_Face& F2 = BAS2.Face(); + const TopoDS_Face& F1 = BAS1->Face(); + GeomAbs_SurfaceType ST1 = BAS1->GetType(); + const TopoDS_Face& F2 = BAS2->Face(); myEdge1 = TopoDS::Edge(E1); myEdge2 = TopoDS::Edge(E2); @@ -68,7 +68,7 @@ void TopOpeBRep_Hctxee2d::SetEdges(const TopoDS_Edge& E1,const TopoDS_Edge& E2, Handle(Geom2d_Curve) PC1; PC1 = FC2D_CurveOnSurface(myEdge1,F1,first,last,tolpc); if (PC1.IsNull()) throw Standard_Failure("TopOpeBRep_Hctxee2d::SetEdges : no 2d curve"); - myCurve1.Load(PC1); + myCurve1 = new Geom2dAdaptor_Curve(PC1); BRep_Tool::UVPoints(myEdge1,F1,pfirst,plast); tole = BRep_Tool::Tolerance(myEdge1); myDomain1.SetValues(pfirst,first,tole,plast,last,tole); @@ -89,7 +89,7 @@ void TopOpeBRep_Hctxee2d::SetEdges(const TopoDS_Edge& E1,const TopoDS_Edge& E2, if ( ST1 == GeomAbs_Plane || memesfaces || memesupport) { Handle(Geom2d_Curve) PC2 = FC2D_CurveOnSurface(myEdge2,F1,first,last,tolpc); - myCurve2.Load(PC2); + myCurve2 = new Geom2dAdaptor_Curve(PC2); BRep_Tool::UVPoints(myEdge2,F1,pfirst,plast); tole = BRep_Tool::Tolerance(myEdge2); myDomain2.SetValues(pfirst,first,tole,plast,last,tole); @@ -141,7 +141,7 @@ void TopOpeBRep_Hctxee2d::SetEdges(const TopoDS_Edge& E1,const TopoDS_Edge& E2, } if (!PC2on1.IsNull()) { - myCurve2.Load(PC2on1); + myCurve2 = new Geom2dAdaptor_Curve(PC2on1); tole = BRep_Tool::Tolerance(myEdge2); PC2on1->D0(first,pfirst); PC2on1->D0(last,plast); @@ -176,7 +176,7 @@ const TopoDS_Shape& TopOpeBRep_Hctxee2d::Edge(const Standard_Integer Index) cons //function : Curve //purpose : //======================================================================= -const Geom2dAdaptor_Curve& TopOpeBRep_Hctxee2d::Curve(const Standard_Integer Index) const +const Handle(Geom2dAdaptor_Curve)& TopOpeBRep_Hctxee2d::Curve(const Standard_Integer Index) const { if ( Index == 1 ) return myCurve1; else if ( Index == 2 ) return myCurve2; diff --git a/src/TopOpeBRep/TopOpeBRep_Hctxee2d.hxx b/src/TopOpeBRep/TopOpeBRep_Hctxee2d.hxx index 5cb663fa04..abacace7dc 100644 --- a/src/TopOpeBRep/TopOpeBRep_Hctxee2d.hxx +++ b/src/TopOpeBRep/TopOpeBRep_Hctxee2d.hxx @@ -41,11 +41,11 @@ public: Standard_EXPORT TopOpeBRep_Hctxee2d(); - Standard_EXPORT void SetEdges (const TopoDS_Edge& E1, const TopoDS_Edge& E2, const BRepAdaptor_Surface& BAS1, const BRepAdaptor_Surface& BAS2); + Standard_EXPORT void SetEdges (const TopoDS_Edge& E1, const TopoDS_Edge& E2, const Handle(BRepAdaptor_Surface)& BAS1, const Handle(BRepAdaptor_Surface)& BAS2); Standard_EXPORT const TopoDS_Shape& Edge (const Standard_Integer I) const; - Standard_EXPORT const Geom2dAdaptor_Curve& Curve (const Standard_Integer I) const; + Standard_EXPORT const Handle(Geom2dAdaptor_Curve)& Curve (const Standard_Integer I) const; Standard_EXPORT const IntRes2d_Domain& Domain (const Standard_Integer I) const; @@ -63,10 +63,10 @@ private: TopoDS_Edge myEdge1; - Geom2dAdaptor_Curve myCurve1; + Handle(Geom2dAdaptor_Curve) myCurve1; IntRes2d_Domain myDomain1; TopoDS_Edge myEdge2; - Geom2dAdaptor_Curve myCurve2; + Handle(Geom2dAdaptor_Curve) myCurve2; IntRes2d_Domain myDomain2; diff --git a/src/TopOpeBRep/TopOpeBRep_Hctxff2d.cxx b/src/TopOpeBRep/TopOpeBRep_Hctxff2d.cxx index 4d1b5c4fee..40774c54b6 100644 --- a/src/TopOpeBRep/TopOpeBRep_Hctxff2d.cxx +++ b/src/TopOpeBRep/TopOpeBRep_Hctxff2d.cxx @@ -85,13 +85,11 @@ void TopOpeBRep_Hctxff2d::SetHSurfaces(const Handle(BRepAdaptor_Surface)& HS1, //======================================================================= void TopOpeBRep_Hctxff2d::SetHSurfacesPrivate() { - BRepAdaptor_Surface& S1 = *mySurface1; - myFace1 = S1.Face(); - mySurfaceType1 = S1.GetType(); + myFace1 = mySurface1->Face(); + mySurfaceType1 = mySurface1->GetType(); - BRepAdaptor_Surface& S2 = *mySurface2; - myFace2 = S2.Face(); - mySurfaceType2 = S2.GetType(); + myFace2 = mySurface2->Face(); + mySurfaceType2 = mySurface2->GetType(); mySurfacesSameOriented = Standard_True; myFacesSameOriented = Standard_True; @@ -104,7 +102,7 @@ void TopOpeBRep_Hctxff2d::SetHSurfacesPrivate() so21 = TopOpeBRepTool_ShapeTool::FacesSameOriented(face1forward,myFace2); myf2surf1F_sameoriented = so21; - mySurfacesSameOriented = TopOpeBRepTool_ShapeTool::SurfacesSameOriented(S1,S2); + mySurfacesSameOriented = TopOpeBRepTool_ShapeTool::SurfacesSameOriented(mySurface1, mySurface2); myFacesSameOriented = TopOpeBRepTool_ShapeTool::FacesSameOriented(myFace1,myFace2); #ifdef OCCT_DEBUG diff --git a/src/TopOpeBRep/TopOpeBRep_LineInter.cxx b/src/TopOpeBRep/TopOpeBRep_LineInter.cxx index 7f6768cdaa..dbdcbacc3d 100644 --- a/src/TopOpeBRep/TopOpeBRep_LineInter.cxx +++ b/src/TopOpeBRep/TopOpeBRep_LineInter.cxx @@ -76,8 +76,8 @@ static void FUN_ALINETOWLINE (const Handle(IntPatch_ALine)& AL, //======================================================================= void TopOpeBRep_LineInter::SetLine(const Handle(IntPatch_Line)& L, - const BRepAdaptor_Surface& S1, - const BRepAdaptor_Surface& S2) + const Handle(BRepAdaptor_Surface)& S1, + const Handle(BRepAdaptor_Surface)& S2) { // load line according to its type myIL = L; @@ -111,8 +111,7 @@ void TopOpeBRep_LineInter::SetLine(const Handle(IntPatch_Line)& L, // transform an analytic line to a walking line if (myTypeLineCurve == TopOpeBRep_ANALYTIC) { IntPatch_SequenceOfLine aSLin; - FUN_ALINETOWLINE(myILA,new BRepAdaptor_Surface(S1), - new BRepAdaptor_Surface(S2), aSLin); + FUN_ALINETOWLINE(myILA, S1, S2, aSLin); if(aSLin.Length() > 0) myILW = Handle(IntPatch_WLine)::DownCast(aSLin.Value(1)); diff --git a/src/TopOpeBRep/TopOpeBRep_LineInter.hxx b/src/TopOpeBRep/TopOpeBRep_LineInter.hxx index 701105af7f..e6d1b65edf 100644 --- a/src/TopOpeBRep/TopOpeBRep_LineInter.hxx +++ b/src/TopOpeBRep/TopOpeBRep_LineInter.hxx @@ -55,7 +55,7 @@ public: TopOpeBRep_LineInter(); - Standard_EXPORT void SetLine (const Handle(IntPatch_Line)& L, const BRepAdaptor_Surface& S1, const BRepAdaptor_Surface& S2); + Standard_EXPORT void SetLine (const Handle(IntPatch_Line)& L, const Handle(BRepAdaptor_Surface)& S1, const Handle(BRepAdaptor_Surface)& S2); void SetFaces (const TopoDS_Face& F1, const TopoDS_Face& F2); diff --git a/src/TopOpeBRep/TopOpeBRep_ProcessGR.cxx b/src/TopOpeBRep/TopOpeBRep_ProcessGR.cxx index 40856d81b7..af58a9835c 100644 --- a/src/TopOpeBRep/TopOpeBRep_ProcessGR.cxx +++ b/src/TopOpeBRep/TopOpeBRep_ProcessGR.cxx @@ -243,8 +243,8 @@ Standard_Boolean TopOpeBRep_FacesFiller::LSameDomainERL(const TopOpeBRep_LineInt const TopoDS_Edge& E = TopoDS::Edge(it.Value()); Standard_Real tolE = BRep_Tool::Tolerance(E); Standard_Real maxtol = Max(tolE,GLOBAL_tolFF); - BRepAdaptor_Curve BAC(E); - f = BAC.FirstParameter(); l = BAC.LastParameter(); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(E); + f = BAC->FirstParameter(); l = BAC->LastParameter(); Standard_Boolean pinc = FUN_tool_PinC(Pm,BAC,f,l,maxtol); if (pinc) {isone = Standard_True; break;} } diff --git a/src/TopOpeBRep/TopOpeBRep_ProcessSectionEdges.cxx b/src/TopOpeBRep/TopOpeBRep_ProcessSectionEdges.cxx index bbec44f579..fd12cdcae9 100644 --- a/src/TopOpeBRep/TopOpeBRep_ProcessSectionEdges.cxx +++ b/src/TopOpeBRep/TopOpeBRep_ProcessSectionEdges.cxx @@ -224,11 +224,11 @@ Standard_EXPORT Standard_Boolean FUN_brep_sdmRE(const TopoDS_Edge& E1, const Top { // prequesitory : E1, E2 are restriction edges of opposite rank // found in the same FacesFiller Standard_Boolean ok = Standard_False; - BRepAdaptor_Curve BAC; + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(); TopoDS_Vertex v1,v2;TopExp::Vertices(E1,v1,v2); TopoDS_Vertex v3,v4;TopExp::Vertices(E2,v3,v4); if (!ok) { - BAC.Initialize(E1); + BAC->Initialize(E1); Standard_Real tol1 = BRep_Tool::Tolerance(E1); Standard_Real tol2 = BRep_Tool::Tolerance(v3); Standard_Real tol3 = BRep_Tool::Tolerance(v4); @@ -243,7 +243,7 @@ Standard_EXPORT Standard_Boolean FUN_brep_sdmRE(const TopoDS_Edge& E1, const Top } } if (!ok) { - BAC.Initialize(E2); + BAC->Initialize(E2); Standard_Real tol1 = BRep_Tool::Tolerance(E2); Standard_Real tol2 = BRep_Tool::Tolerance(v1); Standard_Real tol3 = BRep_Tool::Tolerance(v2); diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_BuilderON.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_BuilderON.cxx index 3b16f0bb09..eb801eb6ff 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_BuilderON.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_BuilderON.cxx @@ -371,7 +371,7 @@ static Standard_Boolean ComputeFaceCrvtInSec(const TopoDS_Face& aFace, const gp_Dir& aSecDir, Standard_Real& aCrvt) { - BRepAdaptor_Surface aSurf(aFace); + Handle(BRepAdaptor_Surface) aSurf = new BRepAdaptor_Surface(aFace); Standard_Integer cn = BRepLProp_SurfaceTool::Continuity(aSurf); if (cn < 2) return Standard_False; BRepLProp_SLProps aProp(aSurf, aP2d.X(), aP2d.Y(), 2, Precision::Confusion()); diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_CorrectFace2d.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_CorrectFace2d.cxx index 9c1054aa0f..a0c5a6300c 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_CorrectFace2d.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_CorrectFace2d.cxx @@ -823,7 +823,7 @@ TopOpeBRepBuild_CorrectFace2d::TopOpeBRepBuild_CorrectFace2d() for (; aWEx.More(); aWEx.Next()) { const TopoDS_Edge& anEdge = TopoDS::Edge(aWEx.Current()); Standard_Real aTolE = BRep_Tool::Tolerance(anEdge); - BRepAdaptor_Curve2d aBAC2d (anEdge,myCorrectedFace); + Handle(BRepAdaptor_Curve2d) aBAC2d = new BRepAdaptor_Curve2d(anEdge, myCorrectedFace); BndLib_Add2dCurve::Add(aBAC2d, aTolE, aB2d); } B2d=aB2d; diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools.cxx index 30bda5260c..50c2dfea1b 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools.cxx @@ -517,7 +517,7 @@ Standard_Boolean TopOpeBRepBuild_Tools::GetTangentToEdgeEdge (const TopoDS_Face& gp_Pnt aPOri; gp_Vec aTgOri; ///// - Handle (Geom_Curve) GCOri=aCAOri.Curve().Curve(); + Handle (Geom_Curve) GCOri=aCAOri.Curve()->Curve(); Handle (Geom_Curve) aCopyCurve = Handle(Geom_Curve)::DownCast(GCOri -> Copy()); const TopLoc_Location& aLoc = aEOri.Location(); diff --git a/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools_1.cxx b/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools_1.cxx index d51c363ae4..785260b403 100644 --- a/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools_1.cxx +++ b/src/TopOpeBRepBuild/TopOpeBRepBuild_Tools_1.cxx @@ -49,8 +49,8 @@ static const TopoDS_Face& S, const Standard_Real aMaxTol); static - Standard_Boolean Validate(const Adaptor3d_Curve& CRef, - const Adaptor3d_Curve& Other, + Standard_Boolean Validate(const Handle(Adaptor3d_Curve)& CRef, + const Handle(Adaptor3d_Curve)& Other, const Standard_Real Tol, const Standard_Boolean SameParameter, Standard_Real& aNewTolerance); @@ -235,8 +235,8 @@ void CorrectEdgeTolerance (const TopoDS_Edge& myShape, Handle(Geom2d_Curve) PC = cr->PCurve(); Handle(GeomAdaptor_Surface) GAHS = new GeomAdaptor_Surface(Sb); Handle(Geom2dAdaptor_Curve) GHPC = new Geom2dAdaptor_Curve(PC,f,l); - Adaptor3d_CurveOnSurface ACS(GHPC,GAHS); - ok = Validate (*myHCurve, ACS, Tol, SameParameter, aNewTol); + Handle(Adaptor3d_CurveOnSurface) ACS = new Adaptor3d_CurveOnSurface(GHPC,GAHS); + ok = Validate (myHCurve, ACS, Tol, SameParameter, aNewTol); if (ok) { // printf("(Edge,1) Tolerance=%15.10lg\n", aNewTol); if (aNewTolIsCurveOnClosedSurface()) { // checkclosed = Standard_True; GHPC->Load(cr->PCurve2(),f,l); // same bounds - ACS.Load(GHPC, GAHS); // sans doute inutile - ok = Validate (*myHCurve, ACS, Tol, SameParameter, aNewTol); + ACS->Load(GHPC, GAHS); // sans doute inutile + ok = Validate (myHCurve, ACS, Tol, SameParameter, aNewTol); if (ok) { if (aNewTolUpdateTolerance(aNewTol); @@ -283,14 +283,14 @@ void CorrectEdgeTolerance (const TopoDS_Edge& myShape, Handle(GeomAdaptor_Curve) aHCurve = new GeomAdaptor_Curve(ProjOnPlane); - ProjLib_ProjectedCurve proj(GAHS,aHCurve); + Handle(ProjLib_ProjectedCurve) proj = new ProjLib_ProjectedCurve(GAHS,aHCurve); Handle(Geom2d_Curve) PC = Geom2dAdaptor::MakeCurve(proj); Handle(Geom2dAdaptor_Curve) GHPC = new Geom2dAdaptor_Curve(PC, myHCurve->FirstParameter(), myHCurve->LastParameter()); - Adaptor3d_CurveOnSurface ACS(GHPC,GAHS); + Handle(Adaptor3d_CurveOnSurface) ACS = new Adaptor3d_CurveOnSurface(GHPC,GAHS); - ok = Validate (*myHCurve, ACS, + ok = Validate (myHCurve, ACS, Tol,Standard_True, aNewTol); // voir dub... if (ok) { @@ -308,31 +308,31 @@ void CorrectEdgeTolerance (const TopoDS_Edge& myShape, //function : Validate //purpose : //======================================================================= -Standard_Boolean Validate(const Adaptor3d_Curve& CRef, - const Adaptor3d_Curve& Other, +Standard_Boolean Validate(const Handle(Adaptor3d_Curve)& CRef, + const Handle(Adaptor3d_Curve)& Other, const Standard_Real Tol, const Standard_Boolean SameParameter, Standard_Real& aNewTolerance) { Standard_Real First, Last, MaxDistance, aD; - First = CRef.FirstParameter(); - Last = CRef.LastParameter(); + First = CRef->FirstParameter(); + Last = CRef->LastParameter(); MaxDistance = Tol*Tol; Standard_Integer i, aNC1=NCONTROL-1; Standard_Boolean aFlag=Standard_False; Standard_Boolean proj = (!SameParameter || - First != Other.FirstParameter() || - Last != Other.LastParameter()); + First != Other->FirstParameter() || + Last != Other->LastParameter()); // // 1. if (!proj) { for (i = 0; i < NCONTROL; i++) { Standard_Real prm = ((aNC1-i)*First + i*Last)/aNC1; - gp_Pnt pref = CRef.Value(prm); - gp_Pnt pother = Other.Value(prm); + gp_Pnt pref = CRef->Value(prm); + gp_Pnt pother = Other->Value(prm); aD=pref.SquareDistance(pother); @@ -348,11 +348,11 @@ Standard_Boolean Validate(const Adaptor3d_Curve& CRef, else { Extrema_LocateExtPC refd,otherd; Standard_Real OFirst, OLast; - OFirst = Other.FirstParameter(); - OLast = Other.LastParameter(); + OFirst = Other->FirstParameter(); + OLast = Other->LastParameter(); - gp_Pnt pd = CRef.Value(First); - gp_Pnt pdo = Other.Value(OFirst); + gp_Pnt pd = CRef->Value(First); + gp_Pnt pdo = Other->Value(OFirst); aD = pd.SquareDistance(pdo); if (aD > MaxDistance) { @@ -360,23 +360,23 @@ Standard_Boolean Validate(const Adaptor3d_Curve& CRef, aFlag=Standard_True; } - pd = CRef.Value(Last); - pdo = Other.Value(OLast); + pd = CRef->Value(Last); + pdo = Other->Value(OLast); aD = pd.SquareDistance(pdo); if (aD > MaxDistance) { MaxDistance=aD; aFlag=Standard_True; } - refd.Initialize(CRef, First, Last, CRef.Resolution(Tol)); - otherd.Initialize(Other, OFirst, OLast, Other.Resolution(Tol)); + refd.Initialize(CRef, First, Last, CRef->Resolution(Tol)); + otherd.Initialize(Other, OFirst, OLast, Other->Resolution(Tol)); for (i = 2; i< aNC1; i++) { Standard_Real rprm = ((aNC1-i)*First + i*Last)/aNC1; - gp_Pnt pref = CRef.Value(rprm); + gp_Pnt pref = CRef->Value(rprm); Standard_Real oprm = ((aNC1-i)*OFirst + i*OLast)/aNC1; - gp_Pnt pother = Other.Value(oprm); + gp_Pnt pother = Other->Value(oprm); refd.Perform(pother,rprm); if (!refd.IsDone() || refd.SquareDistance() > Tol * Tol) { diff --git a/src/TopOpeBRepDS/TopOpeBRepDS_BuildTool.cxx b/src/TopOpeBRepDS/TopOpeBRepDS_BuildTool.cxx index 9675131b9d..7f7cdc865a 100644 --- a/src/TopOpeBRepDS/TopOpeBRepDS_BuildTool.cxx +++ b/src/TopOpeBRepDS/TopOpeBRepDS_BuildTool.cxx @@ -993,7 +993,7 @@ static Standard_Boolean Project(const Handle(Geom_Curve)& C, { gp_Pnt P = BRep_Tool::Pnt(V); Standard_Real tol = BRep_Tool::Tolerance(V); - GeomAdaptor_Curve GAC(C); + Handle(GeomAdaptor_Curve) GAC = new GeomAdaptor_Curve(C); Extrema_ExtPC extrema(P,GAC); if (extrema.IsDone()) { Standard_Integer i,n = extrema.NbExt(); diff --git a/src/TopOpeBRepDS/TopOpeBRepDS_FIR.cxx b/src/TopOpeBRepDS/TopOpeBRepDS_FIR.cxx index f3e7f76686..8987197109 100644 --- a/src/TopOpeBRepDS/TopOpeBRepDS_FIR.cxx +++ b/src/TopOpeBRepDS/TopOpeBRepDS_FIR.cxx @@ -56,7 +56,7 @@ Standard_Boolean FUN_isPonF(const TopOpeBRepDS_ListOfInterference& LIF,const gp_ Standard_Boolean FUN_findPonF(const TopoDS_Edge& E,const TopOpeBRepDS_DataStructure& BDS, const TopOpeBRepDS_ListOfInterference& LIF,gp_Pnt& P,Standard_Real& par) { Standard_Boolean Pok = Standard_False; - BRepAdaptor_Curve BAC(E); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(E); const TopOpeBRepDS_ListOfInterference& LIE = BDS.ShapeInterferences(E); TopOpeBRepDS_ListIteratorOfListOfInterference itI; itI.Initialize(LIE); @@ -99,7 +99,7 @@ Standard_Boolean FUN_findPonF(const TopoDS_Edge& E,const TopOpeBRepDS_DataStruct continue; } - BAC.D0(par,P); + BAC->D0(par,P); Pok = FUN_isPonF(LIF,P,BDS,E); // P est OK pour toutes les faces de LIF : on arrete de chercher if (Pok) { diff --git a/src/TopOpeBRepDS/TopOpeBRepDS_FaceInterferenceTool.cxx b/src/TopOpeBRepDS/TopOpeBRepDS_FaceInterferenceTool.cxx index 28c40191e4..984c8de60f 100644 --- a/src/TopOpeBRepDS/TopOpeBRepDS_FaceInterferenceTool.cxx +++ b/src/TopOpeBRepDS/TopOpeBRepDS_FaceInterferenceTool.cxx @@ -42,11 +42,11 @@ static void FUN_RaiseError(){throw Standard_ProgramError("TopOpeBRepDS_FaceInter Standard_EXPORT Standard_Boolean FUN_Parameters (const gp_Pnt& Pnt,const TopoDS_Shape& F,Standard_Real& u,Standard_Real& v) { - BRepAdaptor_Surface Surf(TopoDS::Face(F)); + Handle(BRepAdaptor_Surface) Surf = new BRepAdaptor_Surface(TopoDS::Face(F)); // Get 2d coord of the projection of on surface of . - Standard_Real uvtol = Surf.Tolerance(); - Standard_Real fu=Surf.FirstUParameter(),lu=Surf.LastUParameter(); - Standard_Real fv=Surf.FirstVParameter(),lv=Surf.LastVParameter(); + Standard_Real uvtol = Surf->Tolerance(); + Standard_Real fu=Surf->FirstUParameter(),lu=Surf->LastUParameter(); + Standard_Real fv=Surf->FirstVParameter(),lv=Surf->LastVParameter(); Extrema_ExtPS extps(Pnt,Surf,fu,lu,fv,lv,uvtol,uvtol); if (!extps.IsDone()) { return Standard_False; @@ -84,7 +84,7 @@ Standard_EXPORT void FUN_ComputeGeomData (const TopoDS_Shape& F,const gp_Pnt2d& uv, gp_Dir& Norm,gp_Dir& D1,gp_Dir& D2,Standard_Real& Cur1,Standard_Real& Cur2) { - BRepAdaptor_Surface surf(TopoDS::Face(F)); + Handle(BRepAdaptor_Surface) surf = new BRepAdaptor_Surface(TopoDS::Face(F)); Standard_Real uu = uv.X(),vv = uv.Y(); Standard_Boolean sphere = FUN_sphere(F); @@ -106,8 +106,8 @@ Standard_EXPORT void FUN_ComputeGeomData if (plane) Norm = FUN_tool_nggeomF(uv, TopoDS::Face(F)); else if (sphere) { - gp_Pnt center = surf.Sphere().Location(); - gp_Pnt value = surf.Value(uu,vv); + gp_Pnt center = surf->Sphere().Location(); + gp_Pnt value = surf->Value(uu,vv); Norm = gp_Dir(gp_Vec(center,value)); // recall : input data for TopTrans_SurfaceTransition // describes "direct" geometry } diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_CLASSI.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_CLASSI.cxx index b520802632..1f3ddf0e81 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_CLASSI.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_CLASSI.cxx @@ -92,8 +92,8 @@ Standard_Boolean TopOpeBRepTool_CLASSI::Add2d(const TopoDS_Shape& S) Standard_Boolean haspc = FC2D_HasCurveOnSurface(E,myFref); if (!haspc) return Standard_False; - BRepAdaptor_Curve2d BC2d(E,myFref); - Standard_Real tol2d = BC2d.Resolution(tolE); + Handle(BRepAdaptor_Curve2d) BC2d = new BRepAdaptor_Curve2d(E,myFref); + Standard_Real tol2d = BC2d->Resolution(tolE); BndLib_Add2dCurve::Add(BC2d,tol2d,B2d); } mymapsbox2d.Add(S,B2d); diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_CORRISO.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_CORRISO.cxx index 691e3c157b..80be448e87 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_CORRISO.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_CORRISO.cxx @@ -666,7 +666,7 @@ Standard_Integer TopOpeBRepTool_CORRISO::EdgeOUTofBoundsUV(const TopoDS_Edge& E, else { // 2drep(E, myFref) is NOT an iso // ------------------------------ Bnd_Box2d Bn2d; - Geom2dAdaptor_Curve GC2d(PC,f,l); + Handle(Geom2dAdaptor_Curve) GC2d = new Geom2dAdaptor_Curve(PC,f,l); Standard_Real tolE = BRep_Tool::Tolerance(E); Standard_Real toladd = Max(tolE,tol); BndLib_Add2dCurve::Add(GC2d,toladd,Bn2d); diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_CurveTool.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_CurveTool.cxx index 4f4f0a7a59..5aa8d4366d 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_CurveTool.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_CurveTool.cxx @@ -590,8 +590,8 @@ Standard_Boolean TopOpeBRepTool_CurveTool::MakeCurves Standard_Boolean withtangency = Standard_True; Standard_Boolean compminmaxUV = Standard_True; - BRepAdaptor_Surface BAS1(TopoDS::Face(S1),compminmaxUV); - BRepAdaptor_Surface BAS2(TopoDS::Face(S2),compminmaxUV); + Handle(BRepAdaptor_Surface) BAS1 = new BRepAdaptor_Surface(TopoDS::Face(S1), compminmaxUV); + Handle(BRepAdaptor_Surface) BAS2 = new BRepAdaptor_Surface(TopoDS::Face(S2), compminmaxUV); Handle(BRepApprox_ApproxLine) AL; @@ -600,12 +600,12 @@ Standard_Boolean TopOpeBRepTool_CurveTool::MakeCurves Approx.SetParameters(tol3d,tol2d,degmin,degmax,nitmax,NbPntMax,withtangency, parametrization); - if (CompC3D && CompPC1 && BAS1.GetType() == GeomAbs_Plane) { + if (CompC3D && CompPC1 && BAS1->GetType() == GeomAbs_Plane) { //-- The curve X,Y,Z and U2,V2 is approximated Approx.Perform(BAS1,BAS2,AL,CompC3D,Standard_False,CompPC2,iparmin,iparmax); } - else if(CompC3D && CompPC2 && BAS2.GetType() == GeomAbs_Plane) { + else if(CompC3D && CompPC2 && BAS2->GetType() == GeomAbs_Plane) { //-- The curve X,Y,Z and U1,V1 is approximated Approx.Perform(BAS1,BAS2,AL,CompC3D,CompPC1,Standard_False,iparmin,iparmax); } @@ -621,15 +621,15 @@ Standard_Boolean TopOpeBRepTool_CurveTool::MakeCurves done = done && CheckApproxResults(Approx); if (done) { - if (CompC3D && CompPC1 && BAS1.GetType() == GeomAbs_Plane) { + if (CompC3D && CompPC1 && BAS1->GetType() == GeomAbs_Plane) { C3Dnew = ::MakeCurve3DfromWLineApprox(Approx,1); - PC1new = ::MakeCurve2DfromWLineApproxAndPlane(Approx,BAS1.Plane()); + PC1new = ::MakeCurve2DfromWLineApproxAndPlane(Approx,BAS1->Plane()); if (CompPC2) PC2new = ::MakeCurve2DfromWLineApprox(Approx,2); } - else if(CompC3D && CompPC2 && BAS2.GetType() == GeomAbs_Plane) { + else if(CompC3D && CompPC2 && BAS2->GetType() == GeomAbs_Plane) { C3Dnew = ::MakeCurve3DfromWLineApprox(Approx,1); if (CompPC1) PC1new = ::MakeCurve2DfromWLineApprox(Approx,2); - PC2new = ::MakeCurve2DfromWLineApproxAndPlane(Approx,BAS2.Plane()); + PC2new = ::MakeCurve2DfromWLineApproxAndPlane(Approx,BAS2->Plane()); } else { if (CompC3D) C3Dnew = ::MakeCurve3DfromWLineApprox(Approx,1); diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.cxx index 3eb89109d1..5ff3366a48 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.cxx @@ -71,7 +71,7 @@ Standard_EXPORT Standard_Integer FUN_tool_getindex(const Extrema_ExtPC2d& ponc) // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P, - const Standard_Real tole,const BRepAdaptor_Curve& BAC, + const Standard_Real tole,const Handle(BRepAdaptor_Curve)& BAC, const Standard_Real pmin,const Standard_Real pmax, Standard_Real& param,Standard_Real& dist) { @@ -83,7 +83,7 @@ Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P, if (!ok) { for (Standard_Integer i = 1; i <= 2; i++) { Standard_Real par = (i == 1) ? pmin : pmax; - gp_Pnt pt = BAC.Value(par); + gp_Pnt pt = BAC->Value(par); Standard_Real d2 = pt.SquareDistance(P); Standard_Boolean onpt = (d2 < tole * tole); if (onpt) { @@ -101,32 +101,32 @@ Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P, // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P, - const BRepAdaptor_Curve& BAC, + const Handle(BRepAdaptor_Curve)& BAC, const Standard_Real pmin,const Standard_Real pmax, Standard_Real& param,Standard_Real& dist) { // if projection succeeds,and sets to parameter of

on . - Standard_Real tole = BAC.Tolerance(); + Standard_Real tole = BAC->Tolerance(); Standard_Boolean ok = FUN_tool_projPonC(P,tole,BAC,pmin,pmax,param,dist); return ok; } // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P, - const BRepAdaptor_Curve& BAC, + const Handle(BRepAdaptor_Curve)& BAC, Standard_Real& param,Standard_Real& dist) { // if projection succeeds,and sets to parameter of

on . - Standard_Real tole = BAC.Tolerance(); - Standard_Real pmin = BAC.FirstParameter(); - Standard_Real pmax = BAC.LastParameter(); + Standard_Real tole = BAC->Tolerance(); + Standard_Real pmin = BAC->FirstParameter(); + Standard_Real pmax = BAC->LastParameter(); Standard_Boolean ok = FUN_tool_projPonC(P,tole,BAC,pmin,pmax,param,dist); return ok; } // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P, - const Standard_Real tole,const BRepAdaptor_Curve2d& BAC2D, + const Standard_Real tole,const Handle(BRepAdaptor_Curve2d)& BAC2D, const Standard_Real pmin,const Standard_Real pmax, Standard_Real& param,Standard_Real& dist) { @@ -134,7 +134,7 @@ Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P, Standard_Boolean ok = Standard_False; gp_Pnt2d P2D; - const TopoDS_Face& F = BAC2D.Face(); + const TopoDS_Face& F = BAC2D->Face(); ok = FUN_tool_projPonF(P,F,P2D,dist); if (!ok) return Standard_False; @@ -145,7 +145,7 @@ Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P, if (!ok) { for (Standard_Integer i = 1; i <= 2; i++) { Standard_Real par = (i == 1) ? pmin : pmax; - gp_Pnt2d pt2d = BAC2D.Value(par); + gp_Pnt2d pt2d = BAC2D->Value(par); Standard_Real d2 = pt2d.SquareDistance(P2D); Standard_Boolean onpt = (d2 < tole * tole); if (onpt) { @@ -164,25 +164,25 @@ Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P, // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P, - const BRepAdaptor_Curve2d& BAC2D, + const Handle(BRepAdaptor_Curve2d)& BAC2D, const Standard_Real pmin,const Standard_Real pmax, Standard_Real& param,Standard_Real& dist) { // if projection succeeds,and sets to parameter of

on . - Standard_Real tole = BRep_Tool::Tolerance(BAC2D.Edge()); + Standard_Real tole = BRep_Tool::Tolerance(BAC2D->Edge()); Standard_Boolean ok = FUN_tool_projPonC2D(P,tole,BAC2D,pmin,pmax,param,dist); return ok; } // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P, - const BRepAdaptor_Curve2d& BAC2D, + const Handle(BRepAdaptor_Curve2d)& BAC2D, Standard_Real& param,Standard_Real& dist) { // if projection succeeds,and sets to parameter of

on . - Standard_Real tole = BRep_Tool::Tolerance(BAC2D.Edge()); - Standard_Real pmin = BAC2D.FirstParameter(); - Standard_Real pmax = BAC2D.LastParameter(); + Standard_Real tole = BRep_Tool::Tolerance(BAC2D->Edge()); + Standard_Real pmin = BAC2D->FirstParameter(); + Standard_Real pmax = BAC2D->LastParameter(); Standard_Boolean ok = FUN_tool_projPonC2D(P,tole,BAC2D,pmin,pmax,param,dist); return ok; } @@ -220,9 +220,9 @@ Standard_EXPORT Standard_Boolean FUN_tool_projPonE(const gp_Pnt& P,const Standar Standard_Real& param,Standard_Real& dist) { dist = 1.; - BRepAdaptor_Curve BAC(E); - Standard_Real first = BAC.FirstParameter(); - Standard_Real last = BAC.LastParameter(); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(E); + Standard_Real first = BAC->FirstParameter(); + Standard_Real last = BAC->LastParameter(); Standard_Boolean ok = FUN_tool_projPonC(P,tole,BAC,first,last,param,dist); if (!ok) return Standard_False; diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.hxx b/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.hxx index 30ab18e6c4..2edd1ab1b6 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.hxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_PROJECT.hxx @@ -33,12 +33,12 @@ Standard_EXPORT void FUN_tool_bounds(const TopoDS_Edge& E,Standard_Real& f,Standard_Real& l); Standard_EXPORT Standard_Integer FUN_tool_getindex(const Extrema_ExtPC& ponc); Standard_EXPORT Standard_Integer FUN_tool_getindex(const Extrema_ExtPC2d& ponc); -Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P,const Standard_Real tole,const BRepAdaptor_Curve& BAC,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); -Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P,const BRepAdaptor_Curve& BAC,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); -Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P,const BRepAdaptor_Curve& BAC,Standard_Real& param,Standard_Real& dist); -Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P,const Standard_Real tole,const BRepAdaptor_Curve2d& BAC2D,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); -Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P,const BRepAdaptor_Curve2d& BAC2D,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); -Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P,const BRepAdaptor_Curve2d& BAC2D,Standard_Real& param,Standard_Real& dist); +Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P,const Standard_Real tole,const Handle(BRepAdaptor_Curve)& BAC,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); +Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P,const Handle(BRepAdaptor_Curve)& BAC,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); +Standard_EXPORT Standard_Boolean FUN_tool_projPonC(const gp_Pnt& P,const Handle(BRepAdaptor_Curve)& BAC,Standard_Real& param,Standard_Real& dist); +Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P,const Standard_Real tole,const Handle(BRepAdaptor_Curve2d)& BAC2D,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); +Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P,const Handle(BRepAdaptor_Curve2d)& BAC2D,const Standard_Real pmin,const Standard_Real pmax,Standard_Real& param,Standard_Real& dist); +Standard_EXPORT Standard_Boolean FUN_tool_projPonC2D(const gp_Pnt& P,const Handle(BRepAdaptor_Curve2d)& BAC2D,Standard_Real& param,Standard_Real& dist); Standard_EXPORT Standard_Boolean FUN_tool_projPonS(const gp_Pnt& P,const Handle(Geom_Surface)& S,gp_Pnt2d& UV,Standard_Real& dist, const Extrema_ExtFlag anExtFlag=Extrema_ExtFlag_MINMAX, const Extrema_ExtAlgo anExtAlgo=Extrema_ExtAlgo_Grad); diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.cxx index 7b86a04d8b..fd6840696a 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.cxx @@ -399,24 +399,23 @@ Standard_Boolean TopOpeBRepTool_ShapeTool::ShapesSameOriented //======================================================================= Standard_Boolean TopOpeBRepTool_ShapeTool::SurfacesSameOriented -(const BRepAdaptor_Surface& S1,const BRepAdaptor_Surface& Sref) +(const Handle(BRepAdaptor_Surface)& S1,const Handle(BRepAdaptor_Surface)& S2) { - const BRepAdaptor_Surface& S2 = Sref; - GeomAbs_SurfaceType ST1 = S1.GetType(); - GeomAbs_SurfaceType ST2 = S2.GetType(); + GeomAbs_SurfaceType ST1 = S1->GetType(); + GeomAbs_SurfaceType ST2 = S2->GetType(); Standard_Boolean so = Standard_True; if (ST1 == GeomAbs_Plane && ST2 == GeomAbs_Plane) { - Standard_Real u1 = S1.FirstUParameter(); - Standard_Real v1 = S1.FirstVParameter(); - gp_Pnt p1; gp_Vec d1u,d1v; S1.D1(u1,v1,p1,d1u,d1v); + Standard_Real u1 = S1->FirstUParameter(); + Standard_Real v1 = S1->FirstVParameter(); + gp_Pnt p1; gp_Vec d1u,d1v; S1->D1(u1,v1,p1,d1u,d1v); gp_Vec n1 = d1u.Crossed(d1v); - Standard_Real u2 = S2.FirstUParameter(); - Standard_Real v2 = S2.FirstVParameter(); - gp_Pnt p2; gp_Vec d2u,d2v; S2.D1(u2,v2,p2,d2u,d2v); + Standard_Real u2 = S2->FirstUParameter(); + Standard_Real v2 = S2->FirstVParameter(); + gp_Pnt p2; gp_Vec d2u,d2v; S2->D1(u2,v2,p2,d2u,d2v); gp_Vec n2 = d2u.Crossed(d2v); Standard_Real d = n1.Dot(n2); @@ -428,18 +427,18 @@ Standard_Boolean TopOpeBRepTool_ShapeTool::SurfacesSameOriented // prenons donc l'origine Standard_Real u1 = 0.; Standard_Real v1 = 0.; - gp_Pnt p1; gp_Vec d1u,d1v; S1.D1(u1,v1,p1,d1u,d1v); + gp_Pnt p1; gp_Vec d1u,d1v; S1->D1(u1,v1,p1,d1u,d1v); gp_Vec n1 = d1u.Crossed(d1v); - Handle(Geom_Surface) HS2 = S2.Surface().Surface(); - HS2 = Handle(Geom_Surface)::DownCast(HS2->Transformed(S2.Trsf())); + Handle(Geom_Surface) HS2 = S2->Surface()->Surface(); + HS2 = Handle(Geom_Surface)::DownCast(HS2->Transformed(S2->Trsf())); gp_Pnt2d p22d; Standard_Real dp2; Standard_Boolean ok = FUN_tool_projPonS(p1,HS2,p22d,dp2); if ( !ok ) return so; // NYI : raise Standard_Real u2 = p22d.X(); Standard_Real v2 = p22d.Y(); - gp_Pnt p2; gp_Vec d2u,d2v; S2.D1(u2,v2,p2,d2u,d2v); + gp_Pnt p2; gp_Vec d2u,d2v; S2->D1(u2,v2,p2,d2u,d2v); gp_Vec n2 = d2u.Crossed(d2v); Standard_Real d = n1.Dot(n2); @@ -479,8 +478,8 @@ Standard_Boolean TopOpeBRepTool_ShapeTool::FacesSameOriented } Standard_Boolean computerestriction = Standard_False; - BRepAdaptor_Surface BAS1(F1,computerestriction); - BRepAdaptor_Surface BAS2(F2,computerestriction); + Handle(BRepAdaptor_Surface) BAS1 = new BRepAdaptor_Surface(F1,computerestriction); + Handle(BRepAdaptor_Surface) BAS2 = new BRepAdaptor_Surface(F2,computerestriction); Standard_Boolean so = F1.IsSame(F2) || SurfacesSameOriented(BAS1,BAS2); Standard_Boolean b = so; if ( o1 != o2 ) b = !so; @@ -494,17 +493,16 @@ Standard_Boolean TopOpeBRepTool_ShapeTool::FacesSameOriented //======================================================================= Standard_Boolean TopOpeBRepTool_ShapeTool::CurvesSameOriented -(const BRepAdaptor_Curve& C1, const BRepAdaptor_Curve& Cref) +(const Handle(BRepAdaptor_Curve)& C1, const Handle(BRepAdaptor_Curve)& C2) { - const BRepAdaptor_Curve& C2 = Cref; - GeomAbs_CurveType CT1 = C1.GetType(); - GeomAbs_CurveType CT2 = C2.GetType(); + GeomAbs_CurveType CT1 = C1->GetType(); + GeomAbs_CurveType CT2 = C2->GetType(); Standard_Boolean so = Standard_True; if (CT1 == GeomAbs_Line && CT2 == GeomAbs_Line) { - Standard_Real p1 = C1.FirstParameter(); + Standard_Real p1 = C1->FirstParameter(); gp_Dir t1,n1; Standard_Real c1; EdgeData(C1,p1,t1,n1,c1); - Standard_Real p2 = C2.FirstParameter(); + Standard_Real p2 = C2->FirstParameter(); gp_Dir t2,n2; Standard_Real c2; EdgeData(C2,p2,t2,n2,c2); Standard_Real d = t1.Dot(t2); so = (d > 0.); @@ -540,8 +538,8 @@ Standard_Boolean TopOpeBRepTool_ShapeTool::EdgesSameOriented o2 == TopAbs_EXTERNAL || o2 == TopAbs_INTERNAL ) { return Standard_True; } - BRepAdaptor_Curve BAC1(E1); - BRepAdaptor_Curve BAC2(E2); + Handle(BRepAdaptor_Curve) BAC1 = new BRepAdaptor_Curve(E1); + Handle(BRepAdaptor_Curve) BAC2 = new BRepAdaptor_Curve(E2); Standard_Boolean so = CurvesSameOriented(BAC1,BAC2); Standard_Boolean b = so; if ( o1 != o2 ) b = !so; @@ -555,7 +553,7 @@ Standard_Boolean TopOpeBRepTool_ShapeTool::EdgesSameOriented //======================================================================= Standard_Real TopOpeBRepTool_ShapeTool::EdgeData -(const BRepAdaptor_Curve& BAC, const Standard_Real P, +(const Handle(BRepAdaptor_Curve)& BAC, const Standard_Real P, gp_Dir& T, gp_Dir& N, Standard_Real& C) { @@ -583,7 +581,7 @@ Standard_Real TopOpeBRepTool_ShapeTool::EdgeData (const TopoDS_Shape& E, const Standard_Real P, gp_Dir& T, gp_Dir& N, Standard_Real& C) { - BRepAdaptor_Curve BAC(TopoDS::Edge(E)); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(TopoDS::Edge(E)); Standard_Real d = EdgeData(BAC,P,T,N,C); return d; } diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.hxx b/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.hxx index 1d35ec992a..07a42f5f36 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.hxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_ShapeTool.hxx @@ -74,18 +74,18 @@ public: Standard_EXPORT static Standard_Boolean ShapesSameOriented (const TopoDS_Shape& S1, const TopoDS_Shape& S2); - Standard_EXPORT static Standard_Boolean SurfacesSameOriented (const BRepAdaptor_Surface& S1, const BRepAdaptor_Surface& S2); + Standard_EXPORT static Standard_Boolean SurfacesSameOriented (const Handle(BRepAdaptor_Surface)& S1, const Handle(BRepAdaptor_Surface)& S2); Standard_EXPORT static Standard_Boolean FacesSameOriented (const TopoDS_Shape& F1, const TopoDS_Shape& F2); - Standard_EXPORT static Standard_Boolean CurvesSameOriented (const BRepAdaptor_Curve& C1, const BRepAdaptor_Curve& C2); + Standard_EXPORT static Standard_Boolean CurvesSameOriented (const Handle(BRepAdaptor_Curve)& C1, const Handle(BRepAdaptor_Curve)& C2); Standard_EXPORT static Standard_Boolean EdgesSameOriented (const TopoDS_Shape& E1, const TopoDS_Shape& E2); //! Compute tangent T, normal N, curvature C at point of parameter //! P on curve BRAC. Returns the tolerance indicating if T,N are null. - Standard_EXPORT static Standard_Real EdgeData (const BRepAdaptor_Curve& BRAC, const Standard_Real P, gp_Dir& T, gp_Dir& N, Standard_Real& C); + Standard_EXPORT static Standard_Real EdgeData (const Handle(BRepAdaptor_Curve)& BRAC, const Standard_Real P, gp_Dir& T, gp_Dir& N, Standard_Real& C); //! Same as previous on edge E. Standard_EXPORT static Standard_Real EdgeData (const TopoDS_Shape& E, const Standard_Real P, gp_Dir& T, gp_Dir& N, Standard_Real& C); diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.cxx index d87c9d7a85..4a19d5460e 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.cxx @@ -503,7 +503,7 @@ Standard_Boolean TopOpeBRepTool_TOOL::TgINSIDE(const TopoDS_Vertex& v, const Top //purpose : //======================================================================= -Standard_Boolean TopOpeBRepTool_TOOL::TggeomE(const Standard_Real par, const BRepAdaptor_Curve& BC, +Standard_Boolean TopOpeBRepTool_TOOL::TggeomE(const Standard_Real par, const Handle(BRepAdaptor_Curve)& BC, gp_Vec& Tg) { //#ifdef OCCT_DEBUG @@ -514,8 +514,8 @@ Standard_Boolean TopOpeBRepTool_TOOL::TggeomE(const Standard_Real par, const BRe // Standard_Boolean apoles = (ct == GeomAbs_BezierCurve)||(ct == GeomAbs_BSplineCurve); //#endif - Standard_Real f = BC.FirstParameter(), l = BC.LastParameter(); - Standard_Real tolE = BC.Tolerance(); Standard_Real tolp = BC.Resolution(tolE); + Standard_Real f = BC->FirstParameter(), l = BC->LastParameter(); + Standard_Real tolE = BC->Tolerance(); Standard_Real tolp = BC->Resolution(tolE); Standard_Boolean onf = Abs(f-par)D1(thepar, thepnt, Tg); Tg.Normalize(); return Standard_True; @@ -539,7 +539,7 @@ Standard_Boolean TopOpeBRepTool_TOOL::TggeomE(const Standard_Real par, const Top Standard_Boolean isdgE = BRep_Tool::Degenerated(E); if (isdgE) return Standard_False; - BRepAdaptor_Curve BC(E); + Handle(BRepAdaptor_Curve) BC = new BRepAdaptor_Curve(E); //modified by NIZNHY-PKV Fri Aug 4 09:49:31 2000 f if (!CheckEdgeLength(E)) { return Standard_False; @@ -759,12 +759,12 @@ Standard_Boolean TopOpeBRepTool_TOOL::CurvE(const TopoDS_Edge& E,const Standard_ Standard_Real& curv) { curv = 0.; - BRepAdaptor_Curve BAC(E); - GeomAbs_CurveType CT = BAC.GetType(); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(E); + GeomAbs_CurveType CT = BAC->GetType(); Standard_Boolean line = (CT == GeomAbs_Line); Standard_Real tola = Precision::Angular()*1.e3;//NYITOLXPU if (line) { - gp_Dir dir = BAC.Line().Direction(); + gp_Dir dir = BAC->Line().Direction(); Standard_Real dot = dir.Dot(tg0); if (Abs(1-dot) < tola) return Standard_False; return Standard_True; diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.hxx b/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.hxx index 6b97d14eff..11e6f1f8ca 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.hxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_TOOL.hxx @@ -89,7 +89,7 @@ public: Standard_EXPORT static void stuvF (const gp_Pnt2d& uv, const TopoDS_Face& F, Standard_Integer& onU, Standard_Integer& onV); - Standard_EXPORT static Standard_Boolean TggeomE (const Standard_Real par, const BRepAdaptor_Curve& BC, gp_Vec& Tg); + Standard_EXPORT static Standard_Boolean TggeomE (const Standard_Real par, const Handle(BRepAdaptor_Curve)& BC, gp_Vec& Tg); Standard_EXPORT static Standard_Boolean TggeomE (const Standard_Real par, const TopoDS_Edge& E, gp_Vec& Tg); diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.cxx index b12ffbea8a..80fb0300d0 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.cxx @@ -194,7 +194,7 @@ Standard_EXPORT Standard_Boolean FUN_tool_outbounds(const TopoDS_Shape& Sh, // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_PinC(const gp_Pnt& P, - const BRepAdaptor_Curve& BAC, + const Handle(BRepAdaptor_Curve)& BAC, const Standard_Real pmin,const Standard_Real pmax, const Standard_Real tol) { @@ -214,13 +214,13 @@ Standard_EXPORT Standard_Boolean FUN_tool_PinC(const gp_Pnt& P, // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_PinC(const gp_Pnt& P, - const BRepAdaptor_Curve& BAC, + const Handle(BRepAdaptor_Curve)& BAC, const Standard_Real tol) { // returns true if

is on under a given tolerance Standard_Boolean PinC = Standard_False; - Standard_Real pmin = BAC.FirstParameter(); - Standard_Real pmax = BAC.LastParameter(); + Standard_Real pmin = BAC->FirstParameter(); + Standard_Real pmax = BAC->LastParameter(); PinC = FUN_tool_PinC(P,BAC,pmin,pmax,tol); return PinC; } @@ -254,7 +254,7 @@ Standard_EXPORT TopAbs_State FUN_tool_staPinE(const gp_Pnt& P,const TopoDS_Edge& // => returns IN // else,returns OUT. TopAbs_State sta = TopAbs_UNKNOWN; - BRepAdaptor_Curve BAC(E); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(E); Extrema_ExtPC ProjonBAC(P,BAC); if (ProjonBAC.IsDone() && ProjonBAC.NbExt()>0) { Standard_Integer i = FUN_tool_getindex(ProjonBAC); @@ -560,7 +560,7 @@ Standard_EXPORT void FUN_tool_mkBnd2d(const TopoDS_Shape& W,const TopoDS_Shape& Standard_Real newtol = Max(tolE,tolpc); BRep_Builder BB; BB.UpdateEdge(E,pc,F,newtol); } - BRepAdaptor_Curve2d BC2d(E,F); + Handle(BRepAdaptor_Curve2d) BC2d = new BRepAdaptor_Curve2d(E,F); BndLib_Add2dCurve::Add(BC2d,tol,newB2d); } //ex(W,EDGE) @@ -676,7 +676,7 @@ Standard_EXPORT Standard_Boolean FUN_tool_parVonE(const TopoDS_Vertex& v,const T } // Standard_Real f,l; - BRepAdaptor_Curve BAC(E); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(E); Extrema_ExtPC pro(pt,BAC); Standard_Boolean done = pro.IsDone() && (pro.NbExt() >0); if (!done) return Standard_False; @@ -756,9 +756,9 @@ Standard_EXPORT Standard_Boolean FUN_tool_paronEF(const TopoDS_Edge& E,const Sta } // ---------------------------------------------------------------------- -Standard_EXPORT gp_Dir FUN_tool_dirC(const Standard_Real par,const BRepAdaptor_Curve& BAC) +Standard_EXPORT gp_Dir FUN_tool_dirC(const Standard_Real par,const Handle(BRepAdaptor_Curve)& BAC) { - gp_Pnt p; gp_Vec tgE; BAC.D1(par,p,tgE); + gp_Pnt p; gp_Vec tgE; BAC->D1(par,p,tgE); gp_Dir dirC(tgE); return dirC; } @@ -768,14 +768,14 @@ Standard_EXPORT gp_Vec FUN_tool_tggeomE(const Standard_Real paronE,const TopoDS_ { Standard_Boolean isdgE = BRep_Tool::Degenerated(E); if (isdgE) return gp_Vec(0,0,0); - gp_Vec dirE(FUN_tool_dirC(paronE,E)); + gp_Vec dirE(FUN_tool_dirC(paronE, new BRepAdaptor_Curve(E))); return dirE; } // ---------------------------------------------------------------------- -Standard_EXPORT Standard_Boolean FUN_tool_line(const BRepAdaptor_Curve& BAC) +Standard_EXPORT Standard_Boolean FUN_tool_line(const Handle(BRepAdaptor_Curve)& BAC) { - Standard_Boolean line = (BAC.GetType() == GeomAbs_Line); + Standard_Boolean line = (BAC->GetType() == GeomAbs_Line); return line; } @@ -789,9 +789,9 @@ Standard_EXPORT Standard_Boolean FUN_tool_quad(const TopoDS_Edge& E) } // ---------------------------------------------------------------------- -Standard_EXPORT Standard_Boolean FUN_tool_quad(const BRepAdaptor_Curve& BAC) +Standard_EXPORT Standard_Boolean FUN_tool_quad(const Handle(BRepAdaptor_Curve)& BAC) { - GeomAbs_CurveType CT = BAC.GetType(); + GeomAbs_CurveType CT = BAC->GetType(); Standard_Boolean isquad = Standard_False; if (CT == GeomAbs_Line) isquad = Standard_True; if (CT == GeomAbs_Circle) isquad = Standard_True; @@ -810,17 +810,17 @@ Standard_EXPORT Standard_Boolean FUN_tool_quad(const TopoDS_Face& F) } // ---------------------------------------------------------------------- -Standard_EXPORT Standard_Boolean FUN_tool_findPinBAC(const BRepAdaptor_Curve& BAC,gp_Pnt& P,Standard_Real& par) +Standard_EXPORT Standard_Boolean FUN_tool_findPinBAC(const Handle(BRepAdaptor_Curve)& BAC,gp_Pnt& P,Standard_Real& par) { FUN_tool_findparinBAC(BAC,par); - BAC.D0(par,P); + BAC->D0(par,P); return Standard_True; } // ---------------------------------------------------------------------- -Standard_EXPORT Standard_Boolean FUN_tool_findparinBAC(const BRepAdaptor_Curve& BAC,Standard_Real& par) +Standard_EXPORT Standard_Boolean FUN_tool_findparinBAC(const Handle(BRepAdaptor_Curve)& BAC,Standard_Real& par) { - Standard_Real fE = BAC.FirstParameter(),lE = BAC.LastParameter(); + Standard_Real fE = BAC->FirstParameter(),lE = BAC->LastParameter(); Standard_Real t = 0.34567237; par = (1-t)*fE + t*lE; return Standard_True; } @@ -828,7 +828,7 @@ Standard_EXPORT Standard_Boolean FUN_tool_findparinBAC(const BRepAdaptor_Curve& // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_findparinE(const TopoDS_Shape& E,Standard_Real& par) { - BRepAdaptor_Curve BAC(TopoDS::Edge(E)); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(TopoDS::Edge(E)); Standard_Boolean r = FUN_tool_findparinBAC(BAC,par); return r; } @@ -836,7 +836,7 @@ Standard_EXPORT Standard_Boolean FUN_tool_findparinE(const TopoDS_Shape& E,Stand // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_findPinE(const TopoDS_Shape& E,gp_Pnt& P,Standard_Real& par) { - BRepAdaptor_Curve BAC(TopoDS::Edge(E)); + Handle(BRepAdaptor_Curve) BAC = new BRepAdaptor_Curve(TopoDS::Edge(E)); Standard_Boolean r = FUN_tool_findPinBAC(BAC,P,par); return r; } diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.hxx b/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.hxx index bcdad61b4b..e0154ea9e8 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.hxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_TOPOLOGY.hxx @@ -38,8 +38,8 @@ Standard_EXPORT Standard_Boolean FUN_tool_outbounds(const TopoDS_Shape& Sh,Stand // ---------------------------------------------------------------------- // project point

on geometries (curve ,surface ) // ---------------------------------------------------------------------- -Standard_EXPORT Standard_Boolean FUN_tool_PinC(const gp_Pnt& P,const BRepAdaptor_Curve& BAC,const Standard_Real pmin,const Standard_Real pmax,const Standard_Real tol); -Standard_EXPORT Standard_Boolean FUN_tool_PinC(const gp_Pnt& P,const BRepAdaptor_Curve& BAC,const Standard_Real tol); +Standard_EXPORT Standard_Boolean FUN_tool_PinC(const gp_Pnt& P,const Handle(BRepAdaptor_Curve)& BAC,const Standard_Real pmin,const Standard_Real pmax,const Standard_Real tol); +Standard_EXPORT Standard_Boolean FUN_tool_PinC(const gp_Pnt& P,const Handle(BRepAdaptor_Curve)& BAC,const Standard_Real tol); // ---------------------------------------------------------------------- Standard_EXPORT Standard_Boolean FUN_tool_value(const Standard_Real par,const TopoDS_Edge& E,gp_Pnt& P); @@ -110,14 +110,14 @@ Standard_EXPORT Standard_Boolean FUN_tool_paronEF(const TopoDS_Edge& E,const Sta Standard_EXPORT Standard_Boolean FUN_tool_paronEF(const TopoDS_Edge& E,const Standard_Real& par,const TopoDS_Face& F,gp_Pnt2d& UV); Standard_EXPORT Standard_Boolean FUN_tool_parF(const TopoDS_Edge& E,const Standard_Real& par,const TopoDS_Face& F,gp_Pnt2d& UV,const Standard_Real tol); Standard_EXPORT Standard_Boolean FUN_tool_parF(const TopoDS_Edge& E,const Standard_Real& par,const TopoDS_Face& F,gp_Pnt2d& UV); -Standard_EXPORT gp_Dir FUN_tool_dirC(const Standard_Real par,const BRepAdaptor_Curve& BAC); +Standard_EXPORT gp_Dir FUN_tool_dirC(const Standard_Real par,const Handle(BRepAdaptor_Curve)& BAC); Standard_EXPORT gp_Vec FUN_tool_tggeomE(const Standard_Real paronE,const TopoDS_Edge& E); -Standard_EXPORT Standard_Boolean FUN_tool_line(const BRepAdaptor_Curve& BAC); +Standard_EXPORT Standard_Boolean FUN_tool_line(const Handle(BRepAdaptor_Curve)& BAC); Standard_EXPORT Standard_Boolean FUN_tool_quad(const TopoDS_Edge& E); -Standard_EXPORT Standard_Boolean FUN_tool_quad(const BRepAdaptor_Curve& BAC); +Standard_EXPORT Standard_Boolean FUN_tool_quad(const Handle(BRepAdaptor_Curve)& BAC); Standard_EXPORT Standard_Boolean FUN_tool_quad(const TopoDS_Face& F); -Standard_EXPORT Standard_Boolean FUN_tool_findPinBAC(const BRepAdaptor_Curve& BAC,gp_Pnt& P,Standard_Real& par); -Standard_EXPORT Standard_Boolean FUN_tool_findparinBAC(const BRepAdaptor_Curve& BAC,Standard_Real& par); +Standard_EXPORT Standard_Boolean FUN_tool_findPinBAC(const Handle(BRepAdaptor_Curve)& BAC,gp_Pnt& P,Standard_Real& par); +Standard_EXPORT Standard_Boolean FUN_tool_findparinBAC(const Handle(BRepAdaptor_Curve)& BAC,Standard_Real& par); Standard_EXPORT Standard_Boolean FUN_tool_findparinE(const TopoDS_Shape& E,Standard_Real& par); Standard_EXPORT Standard_Boolean FUN_tool_findPinE(const TopoDS_Shape& E,gp_Pnt& P,Standard_Real& par); Standard_EXPORT Standard_Boolean FUN_tool_maxtol(const TopoDS_Shape& S,const TopAbs_ShapeEnum& typ,Standard_Real& tol); diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_tol.cxx b/src/TopOpeBRepTool/TopOpeBRepTool_tol.cxx index 241602ba7a..175cd285ef 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_tol.cxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_tol.cxx @@ -27,7 +27,7 @@ Standard_EXPORT void FTOL_FaceTolerances (const Bnd_Box& B1, const Bnd_Box& B2, const TopoDS_Face& myFace1, const TopoDS_Face& myFace2, - const BRepAdaptor_Surface& mySurface1, const BRepAdaptor_Surface& mySurface2, + const Handle(BRepAdaptor_Surface)& mySurface1, const Handle(BRepAdaptor_Surface)& mySurface2, Standard_Real& myTol1, Standard_Real& myTol2, Standard_Real& Deflection, Standard_Real& MaxUV) { @@ -114,18 +114,18 @@ Standard_EXPORT void FTOL_FaceTolerances Standard_Real MMAXUV=0.01; Standard_Real MU0,MU1,MV0,MV1,DP1,DP2,DP; - MU0=mySurface1.FirstUParameter(); - MU1=mySurface1.LastUParameter(); - MV0=mySurface1.FirstVParameter(); - MV1=mySurface1.LastVParameter(); + MU0=mySurface1->FirstUParameter(); + MU1=mySurface1->LastUParameter(); + MV0=mySurface1->FirstVParameter(); + MV1=mySurface1->LastVParameter(); DP1 = MU1-MU0; DP2 = MV1-MV0; if(DP2FirstUParameter(); + MU1=mySurface2->LastUParameter(); + MV0=mySurface2->FirstVParameter(); + MV1=mySurface2->LastVParameter(); DP1 = MU1-MU0; DP2 = MV1-MV0; if(DP2>DP1) DP1=DP2; //-- DP1 + petit @@ -173,10 +173,8 @@ Standard_EXPORT void FTOL_FaceTolerances else { B2.Update(0., 0., 0., 1., 1., 1.); } - BRepAdaptor_Surface mySurface1; - BRepAdaptor_Surface mySurface2; - mySurface1.Initialize(myFace1); - mySurface2.Initialize(myFace2); + Handle(BRepAdaptor_Surface) mySurface1 = new BRepAdaptor_Surface(myFace1); + Handle(BRepAdaptor_Surface) mySurface2 = new BRepAdaptor_Surface(myFace2); Standard_Real Deflection=0.01,MaxUV=0.01; Standard_Real myTol1,myTol2; FTOL_FaceTolerances(B1,B2, @@ -191,7 +189,7 @@ Standard_EXPORT void FTOL_FaceTolerances Standard_EXPORT void FTOL_FaceTolerances3d (const Bnd_Box& B1, const Bnd_Box& B2, const TopoDS_Face& myFace1, const TopoDS_Face& myFace2, - const BRepAdaptor_Surface& mySurface1, const BRepAdaptor_Surface& mySurface2, + const Handle(BRepAdaptor_Surface)& mySurface1, const Handle(BRepAdaptor_Surface)& mySurface2, Standard_Real& myTol1, Standard_Real& myTol2, Standard_Real& Deflection, Standard_Real& MaxUV) { @@ -207,8 +205,8 @@ Standard_EXPORT void FTOL_FaceTolerances2d const Bnd_Box& B2, const TopoDS_Face& myFace1, const TopoDS_Face& myFace2, - const BRepAdaptor_Surface& mySurface1, - const BRepAdaptor_Surface& mySurface2, + const Handle(BRepAdaptor_Surface)& mySurface1, + const Handle(BRepAdaptor_Surface)& mySurface2, Standard_Real& myTol1, Standard_Real& myTol2) { Standard_Real BIDDeflection,BIDMaxUV; diff --git a/src/TopOpeBRepTool/TopOpeBRepTool_tol.hxx b/src/TopOpeBRepTool/TopOpeBRepTool_tol.hxx index 1fb963902d..ac4bfa0c52 100644 --- a/src/TopOpeBRepTool/TopOpeBRepTool_tol.hxx +++ b/src/TopOpeBRepTool/TopOpeBRepTool_tol.hxx @@ -23,7 +23,7 @@ Standard_EXPORT void FTOL_FaceTolerances (const Bnd_Box& B1,const Bnd_Box& B2, const TopoDS_Face& myFace1,const TopoDS_Face& myFace2, - const BRepAdaptor_Surface& mySurface1,const BRepAdaptor_Surface& mySurface2, + const Handle(BRepAdaptor_Surface)& mySurface1,const Handle(BRepAdaptor_Surface)& mySurface2, Standard_Real& myTol1,Standard_Real& myTol2, Standard_Real& Deflection,Standard_Real& MaxUV); @@ -33,14 +33,14 @@ Standard_EXPORT void FTOL_FaceTolerances3d Standard_EXPORT void FTOL_FaceTolerances3d (const Bnd_Box& B1,const Bnd_Box& B2, const TopoDS_Face& myFace1,const TopoDS_Face& myFace2, - const BRepAdaptor_Surface& mySurface1,const BRepAdaptor_Surface& mySurface2, + const Handle(BRepAdaptor_Surface)& mySurface1,const Handle(BRepAdaptor_Surface)& mySurface2, Standard_Real& myTol1,Standard_Real& myTol2, Standard_Real& Deflection,Standard_Real& MaxUV); Standard_EXPORT void FTOL_FaceTolerances2d (const Bnd_Box& B1,const Bnd_Box& B2, const TopoDS_Face& myFace1,const TopoDS_Face& myFace2, - const BRepAdaptor_Surface& mySurface1,const BRepAdaptor_Surface& mySurface2, + const Handle(BRepAdaptor_Surface)& mySurface1,const Handle(BRepAdaptor_Surface)& mySurface2, Standard_Real& myTol1,Standard_Real& myTol2); #endif diff --git a/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx b/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx index edf9f1b5f7..6955ef8910 100644 --- a/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx +++ b/src/TopoDSToStep/TopoDSToStep_MakeStepEdge.cxx @@ -181,7 +181,7 @@ void TopoDSToStep_MakeStepEdge::Init(const TopoDS_Edge& aEdge, // --------------------------------------- Handle(StepGeom_Curve) Gpms; - Handle(Geom_Curve) C = CA.Curve().Curve(); + Handle(Geom_Curve) C = CA.Curve()->Curve(); if (!C.IsNull()) { C = Handle(Geom_Curve)::DownCast(C->Copy()); diff --git a/src/VrmlConverter/VrmlConverter_Curve.cxx b/src/VrmlConverter/VrmlConverter_Curve.cxx index 5c1f63c978..eeba53afab 100644 --- a/src/VrmlConverter/VrmlConverter_Curve.cxx +++ b/src/VrmlConverter/VrmlConverter_Curve.cxx @@ -28,13 +28,13 @@ // function: FindLimits // purpose: //================================================================== -static void FindLimits(const Adaptor3d_Curve& aCurve, +static void FindLimits(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aLimit, Standard_Real& First, Standard_Real& Last) { - First = aCurve.FirstParameter(); - Last = aCurve.LastParameter(); + First = aCurve->FirstParameter(); + Last = aCurve->LastParameter(); Standard_Boolean firstInf = Precision::IsNegativeInfinite(First); Standard_Boolean lastInf = Precision::IsPositiveInfinite(Last); @@ -46,24 +46,24 @@ static void FindLimits(const Adaptor3d_Curve& aCurve, delta *= 2; First = - delta; Last = delta; - aCurve.D0(First,P1); - aCurve.D0(Last,P2); + aCurve->D0(First,P1); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } else if (firstInf) { - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); do { delta *= 2; First = Last - delta; - aCurve.D0(First,P1); + aCurve->D0(First,P1); } while (P1.Distance(P2) < aLimit); } else if (lastInf) { - aCurve.D0(First,P1); + aCurve->D0(First,P1); do { delta *= 2; Last = First + delta; - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } } @@ -74,7 +74,7 @@ static void FindLimits(const Adaptor3d_Curve& aCurve, // function: DrawCurve // purpose: //================================================================== -static void DrawCurve (const Adaptor3d_Curve& aCurve, +static void DrawCurve (const Handle(Adaptor3d_Curve)& aCurve, const Standard_Integer NbP, const Standard_Real U1, const Standard_Real U2, @@ -85,24 +85,24 @@ static void DrawCurve (const Adaptor3d_Curve& aCurve, Handle(TColgp_HArray1OfVec) HAV1; Handle(TColStd_HArray1OfInteger) HAI1; - if (aCurve.GetType() == GeomAbs_BSplineCurve) { - nbintervals = aCurve.NbKnots() - 1; -// std::cout << "NbKnots "<GetType() == GeomAbs_BSplineCurve) { + nbintervals = aCurve->NbKnots() - 1; +// std::cout << "NbKnots "<NbKnots() << std::endl; nbintervals = Max(1, nbintervals/3); } - switch (aCurve.GetType()) { + switch (aCurve->GetType()) { case GeomAbs_Line: { gp_Vec V; HAV1 = new TColgp_HArray1OfVec(1, 2); // array of coordinates of line - gp_Pnt p = aCurve.Value(U1); + gp_Pnt p = aCurve->Value(U1); V.SetX(p.X()); V.SetY(p.Y()); V.SetZ(p.Z()); HAV1->SetValue(1,V); - p = aCurve.Value(U2); + p = aCurve->Value(U2); V.SetX(p.X()); V.SetY(p.Y()); V.SetZ(p.Z()); HAV1->SetValue(2,V); @@ -132,7 +132,7 @@ static void DrawCurve (const Adaptor3d_Curve& aCurve, for (i = 1; i <= N;i++) { U = U1 + (i-1)*DU; - p = aCurve.Value(U); + p = aCurve->Value(U); V.SetX(p.X()); V.SetY(p.Y()); V.SetZ(p.Z()); HAV1->SetValue(i,V); @@ -201,7 +201,7 @@ static void DrawCurve (const Adaptor3d_Curve& aCurve, // function: Add 1 // purpose: //================================================================== -void VrmlConverter_Curve::Add(const Adaptor3d_Curve& aCurve, +void VrmlConverter_Curve::Add(const Handle(Adaptor3d_Curve)& aCurve, const Handle(VrmlConverter_Drawer)& aDrawer, Standard_OStream& anOStream) { @@ -227,7 +227,7 @@ void VrmlConverter_Curve::Add(const Adaptor3d_Curve& aCurve, // function: Add 2 // purpose: //================================================================== -void VrmlConverter_Curve::Add(const Adaptor3d_Curve& aCurve, +void VrmlConverter_Curve::Add(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(VrmlConverter_Drawer)& aDrawer, @@ -255,7 +255,7 @@ void VrmlConverter_Curve::Add(const Adaptor3d_Curve& aCurve, // function: Add 3 // purpose: //================================================================== -void VrmlConverter_Curve::Add(const Adaptor3d_Curve& aCurve, +void VrmlConverter_Curve::Add(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, Standard_OStream& anOStream, diff --git a/src/VrmlConverter/VrmlConverter_Curve.hxx b/src/VrmlConverter/VrmlConverter_Curve.hxx index 9f1153820f..ec2c83009c 100644 --- a/src/VrmlConverter/VrmlConverter_Curve.hxx +++ b/src/VrmlConverter/VrmlConverter_Curve.hxx @@ -45,19 +45,19 @@ public: //! adds to the OStream the drawing of the curve aCurve. //! The aspect is defined by LineAspect in aDrawer. - Standard_EXPORT static void Add (const Adaptor3d_Curve& aCurve, const Handle(VrmlConverter_Drawer)& aDrawer, Standard_OStream& anOStream); + Standard_EXPORT static void Add (const Handle(Adaptor3d_Curve)& aCurve, const Handle(VrmlConverter_Drawer)& aDrawer, Standard_OStream& anOStream); //! adds to the OStream the drawing of the curve aCurve. //! The aspect is defined by LineAspect in aDrawer. //! The drawing will be limited between the points of parameter //! U1 and U2. - Standard_EXPORT static void Add (const Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(VrmlConverter_Drawer)& aDrawer, Standard_OStream& anOStream); + Standard_EXPORT static void Add (const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(VrmlConverter_Drawer)& aDrawer, Standard_OStream& anOStream); //! adds to the OStream the drawing of the curve aCurve. //! The aspect is the current aspect. //! The drawing will be limited between the points of parameter //! U1 and U2. aNbPoints defines number of points on one interval. - Standard_EXPORT static void Add (const Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, Standard_OStream& anOStream, const Standard_Integer aNbPoints); + Standard_EXPORT static void Add (const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, Standard_OStream& anOStream, const Standard_Integer aNbPoints); diff --git a/src/VrmlConverter/VrmlConverter_DeflectionCurve.cxx b/src/VrmlConverter/VrmlConverter_DeflectionCurve.cxx index 6664391d78..324eff48e2 100644 --- a/src/VrmlConverter/VrmlConverter_DeflectionCurve.cxx +++ b/src/VrmlConverter/VrmlConverter_DeflectionCurve.cxx @@ -32,13 +32,13 @@ // function: FindLimits // purpose: //================================================================== -static void FindLimits(const Adaptor3d_Curve& aCurve, +static void FindLimits(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aLimit, Standard_Real& First, Standard_Real& Last) { - First = aCurve.FirstParameter(); - Last = aCurve.LastParameter(); + First = aCurve->FirstParameter(); + Last = aCurve->LastParameter(); Standard_Boolean firstInf = Precision::IsNegativeInfinite(First); Standard_Boolean lastInf = Precision::IsPositiveInfinite(Last); @@ -50,24 +50,24 @@ static void FindLimits(const Adaptor3d_Curve& aCurve, delta *= 2; First = - delta; Last = delta; - aCurve.D0(First,P1); - aCurve.D0(Last,P2); + aCurve->D0(First,P1); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } else if (firstInf) { - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); do { delta *= 2; First = Last - delta; - aCurve.D0(First,P1); + aCurve->D0(First,P1); } while (P1.Distance(P2) < aLimit); } else if (lastInf) { - aCurve.D0(First,P1); + aCurve->D0(First,P1); do { delta *= 2; Last = First + delta; - aCurve.D0(Last,P2); + aCurve->D0(Last,P2); } while (P1.Distance(P2) < aLimit); } } @@ -113,7 +113,7 @@ static void PrintPoints (Handle(TColgp_HArray1OfVec)& aHAV1, // function: DrawCurve // purpose: //================================================================== -static void DrawCurve (Adaptor3d_Curve& aCurve, +static void DrawCurve (const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real TheDeflection, const Standard_Real U1, const Standard_Real U2, @@ -125,7 +125,7 @@ static void DrawCurve (Adaptor3d_Curve& aCurve, Handle(TColgp_HArray1OfVec) HAV1; Handle(TColStd_HArray1OfInteger) HAI1; - switch (aCurve.GetType()) { + switch (aCurve->GetType()) { case GeomAbs_Line: { gp_Vec V; @@ -134,11 +134,11 @@ static void DrawCurve (Adaptor3d_Curve& aCurve, HAI1 = new TColStd_HArray1OfInteger(1,3); // array of coordinates of line - gp_Pnt p = aCurve.Value(U1); + gp_Pnt p = aCurve->Value(U1); V.SetX(p.X()); V.SetY(p.Y()); V.SetZ(p.Z()); HAV1->SetValue(1,V); - p = aCurve.Value(U2); + p = aCurve->Value(U2); V.SetX(p.X()); V.SetY(p.Y()); V.SetZ(p.Z()); HAV1->SetValue(2,V); @@ -151,7 +151,7 @@ static void DrawCurve (Adaptor3d_Curve& aCurve, break; case GeomAbs_Circle: { - Standard_Real Radius = aCurve.Circle().Radius(); + Standard_Real Radius = aCurve->Circle().Radius(); if (!Precision::IsInfinite(Radius)) { Standard_Real DU = Sqrt(8.0 * TheDeflection / Radius); Standard_Integer N = Standard_Integer(Abs( U2 - U1) / DU); @@ -169,7 +169,7 @@ static void DrawCurve (Adaptor3d_Curve& aCurve, for (Standard_Integer Index = 1; Index <= N+1; Index++) { U = U1 + (Index - 1) * DU; - p = aCurve.Value(U); + p = aCurve->Value(U); V.SetX(p.X()); V.SetY(p.Y()); V.SetZ(p.Z()); HAV1->SetValue(Index,V); @@ -238,7 +238,7 @@ static void DrawCurve (Adaptor3d_Curve& aCurve, // function: GetDeflection // purpose: //================================================================== -static Standard_Real GetDeflection(const Adaptor3d_Curve& aCurve, +static Standard_Real GetDeflection(const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(VrmlConverter_Drawer)& aDrawer) { @@ -278,7 +278,7 @@ static Standard_Real GetDeflection(const Adaptor3d_Curve& aCurve, // purpose: 1 //================================================================== void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle(VrmlConverter_Drawer)& aDrawer) { @@ -298,7 +298,7 @@ void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOS // purpose: 2 //================================================================== void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(VrmlConverter_Drawer)& aDrawer) @@ -321,7 +321,7 @@ void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOS //================================================================== void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit) { @@ -342,7 +342,7 @@ void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, //================================================================== void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Handle(VrmlConverter_Drawer)& aDrawer) { @@ -360,7 +360,7 @@ void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOS //================================================================== void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, - Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection) @@ -380,7 +380,7 @@ void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, //================================================================== void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, - const Adaptor3d_Curve& aCurve, + const Handle(Adaptor3d_Curve)& aCurve, const Handle(TColStd_HArray1OfReal)& aParams, const Standard_Integer aNbNodes, const Handle(VrmlConverter_Drawer)& aDrawer) @@ -394,7 +394,7 @@ void VrmlConverter_DeflectionCurve::Add(Standard_OStream& anOStream, for (i = 1; i<=aNbNodes; i++) { Standard_Real aParam = aParams->Value(aParams->Lower() + i - 1); - aPoint = aCurve.Value(aParam); + aPoint = aCurve->Value(aParam); aVec.SetX(aPoint.X()); aVec.SetY(aPoint.Y()); aVec.SetZ(aPoint.Z()); diff --git a/src/VrmlConverter/VrmlConverter_DeflectionCurve.hxx b/src/VrmlConverter/VrmlConverter_DeflectionCurve.hxx index 85d3dfb0ed..f9436ce530 100644 --- a/src/VrmlConverter/VrmlConverter_DeflectionCurve.hxx +++ b/src/VrmlConverter/VrmlConverter_DeflectionCurve.hxx @@ -48,7 +48,7 @@ public: //! respect to the maximal chordial deviation defined //! by the drawer aDrawer. //! The aspect is defined by LineAspect in aDrawer. - Standard_EXPORT static void Add (Standard_OStream& anOStream, Adaptor3d_Curve& aCurve, const Handle(VrmlConverter_Drawer)& aDrawer); + Standard_EXPORT static void Add (Standard_OStream& anOStream, const Handle(Adaptor3d_Curve)& aCurve, const Handle(VrmlConverter_Drawer)& aDrawer); //! adds to the OStream the drawing of the curve aCurve with //! respect to the maximal chordial deviation defined @@ -56,28 +56,28 @@ public: //! The aspect is defined by LineAspect in aDrawer. //! The drawing will be limited between the points of parameter //! U1 and U2. - Standard_EXPORT static void Add (Standard_OStream& anOStream, Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(VrmlConverter_Drawer)& aDrawer); + Standard_EXPORT static void Add (Standard_OStream& anOStream, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Handle(VrmlConverter_Drawer)& aDrawer); //! adds to the OStream the drawing of the curve aCurve with //! respect to the maximal chordial deviation aDeflection. //! The aspect is the current aspect - Standard_EXPORT static void Add (Standard_OStream& anOStream, Adaptor3d_Curve& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit); + Standard_EXPORT static void Add (Standard_OStream& anOStream, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Standard_Real aLimit); //! adds to the OStream the drawing of the curve aCurve with //! respect to the maximal chordial deviation aDeflection. //! The aspect is the current aspect - Standard_EXPORT static void Add (Standard_OStream& anOStream, Adaptor3d_Curve& aCurve, const Standard_Real aDeflection, const Handle(VrmlConverter_Drawer)& aDrawer); + Standard_EXPORT static void Add (Standard_OStream& anOStream, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real aDeflection, const Handle(VrmlConverter_Drawer)& aDrawer); //! adds to the OStream the drawing of the curve aCurve with //! respect to the maximal chordial deviation aDeflection. //! The aspect is the current aspect //! The drawing will be limited between the points of parameter //! U1 and U2. - Standard_EXPORT static void Add (Standard_OStream& anOStream, Adaptor3d_Curve& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection); + Standard_EXPORT static void Add (Standard_OStream& anOStream, const Handle(Adaptor3d_Curve)& aCurve, const Standard_Real U1, const Standard_Real U2, const Standard_Real aDeflection); //! adds to the OStream the drawing of the curve aCurve with //! the array of parameters to retrieve points on curve. - Standard_EXPORT static void Add (Standard_OStream& anOStream, const Adaptor3d_Curve& aCurve, const Handle(TColStd_HArray1OfReal)& aParams, const Standard_Integer aNbNodes, const Handle(VrmlConverter_Drawer)& aDrawer); + Standard_EXPORT static void Add (Standard_OStream& anOStream, const Handle(Adaptor3d_Curve)& aCurve, const Handle(TColStd_HArray1OfReal)& aParams, const Standard_Integer aNbNodes, const Handle(VrmlConverter_Drawer)& aDrawer); diff --git a/src/VrmlConverter/VrmlConverter_HLRShape.cxx b/src/VrmlConverter/VrmlConverter_HLRShape.cxx index e83290bec9..17bb26d9b5 100644 --- a/src/VrmlConverter/VrmlConverter_HLRShape.cxx +++ b/src/VrmlConverter/VrmlConverter_HLRShape.cxx @@ -40,7 +40,7 @@ void VrmlConverter_HLRShape::Add(Standard_OStream& anOS Standard_Integer NbEdge = Tool.NbEdges(); Standard_Integer i; Standard_Real U1,U2; - BRepAdaptor_Curve TheCurve; + Handle(BRepAdaptor_Curve) TheCurve; Standard_Real theRequestedDeflection; if(aDrawer->TypeOfDeflection() == Aspect_TOD_RELATIVE) // TOD_RELATIVE, TOD_ABSOLUTE diff --git a/src/VrmlConverter/VrmlConverter_WFDeflectionRestrictedFace.cxx b/src/VrmlConverter/VrmlConverter_WFDeflectionRestrictedFace.cxx index bfba8b13be..5716233bdf 100644 --- a/src/VrmlConverter/VrmlConverter_WFDeflectionRestrictedFace.cxx +++ b/src/VrmlConverter/VrmlConverter_WFDeflectionRestrictedFace.cxx @@ -142,9 +142,9 @@ void VrmlConverter_WFDeflectionRestrictedFace::Add gp_Pnt dummypnt; for (ToolRst.Init(); ToolRst.More(); ToolRst.Next()) { TopAbs_Orientation Orient = ToolRst.Orientation(); - const Adaptor2d_Curve2d* TheRCurve = &ToolRst.Value(); + const Handle(Adaptor2d_Curve2d) TheRCurve = ToolRst.Value(); if (TheRCurve->GetType() != GeomAbs_Line) { - GCPnts_QuasiUniformDeflection UDP(*TheRCurve, Deflection); + GCPnts_QuasiUniformDeflection UDP(TheRCurve, Deflection); if (UDP.IsDone()) { Standard_Integer NumberOfPoints = UDP.NbPoints(); if ( NumberOfPoints >= 2 ) { @@ -179,8 +179,7 @@ void VrmlConverter_WFDeflectionRestrictedFace::Add // draw the isos - Adaptor3d_IsoCurve anIso; - anIso.Load(aFace); + Handle(Adaptor3d_IsoCurve) anIso = new Adaptor3d_IsoCurve(aFace); Standard_Integer NumberOfLines = isobuild.NbLines(); Handle(VrmlConverter_LineAspect) latmp = new VrmlConverter_LineAspect; @@ -239,7 +238,7 @@ void VrmlConverter_WFDeflectionRestrictedFace::Add b1 = b1 == RealFirst() ? - aLimit : b1; b2 = b2 == RealLast() ? aLimit : b2; - anIso.Load(GeomAbs_IsoU,Coord,b1,b2); + anIso->Load(GeomAbs_IsoU,Coord,b1,b2); VrmlConverter_DeflectionCurve::Add(anOStream, anIso, Deflection, aDrawer); } @@ -281,7 +280,7 @@ void VrmlConverter_WFDeflectionRestrictedFace::Add b1 = b1 == RealFirst() ? - aLimit : b1; b2 = b2 == RealLast() ? aLimit : b2; - anIso.Load(GeomAbs_IsoV,Coord,b1,b2); + anIso->Load(GeomAbs_IsoV,Coord,b1,b2); VrmlConverter_DeflectionCurve::Add(anOStream, anIso, Deflection, aDrawer); } diff --git a/src/VrmlConverter/VrmlConverter_WFDeflectionShape.cxx b/src/VrmlConverter/VrmlConverter_WFDeflectionShape.cxx index 7b46cc9de2..9119229b4f 100644 --- a/src/VrmlConverter/VrmlConverter_WFDeflectionShape.cxx +++ b/src/VrmlConverter/VrmlConverter_WFDeflectionShape.cxx @@ -170,7 +170,7 @@ void VrmlConverter_WFDeflectionShape::Add( Standard_OStream& a for(Tool.InitCurve();Tool.MoreCurve();Tool.NextCurve()){ if (Tool.Neighbours() == 0) { if (Tool.HasCurve()) { - BRepAdaptor_Curve C(Tool.GetCurve()); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(Tool.GetCurve()); BRep_Tool::PolygonOnTriangulation(Tool.GetCurve(), aPT, aT, aL); if (!aPT.IsNull() && !aT.IsNull() && aPT->HasParameters()) VrmlConverter_DeflectionCurve::Add(anOStream, C, aPT->Parameters(), aPT->NbNodes(), aDrawer); @@ -197,7 +197,7 @@ void VrmlConverter_WFDeflectionShape::Add( Standard_OStream& a for(Tool.InitCurve();Tool.MoreCurve();Tool.NextCurve()){ if (Tool.Neighbours() == 1) { if (Tool.HasCurve()) { - BRepAdaptor_Curve C(Tool.GetCurve()); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(Tool.GetCurve()); BRep_Tool::PolygonOnTriangulation(Tool.GetCurve(), aPT, aT, aL); if (!aPT.IsNull() && !aT.IsNull() && aPT->HasParameters()) VrmlConverter_DeflectionCurve::Add(anOStream, C, aPT->Parameters(), aPT->NbNodes(), aDrawer); @@ -224,7 +224,7 @@ void VrmlConverter_WFDeflectionShape::Add( Standard_OStream& a for(Tool.InitCurve();Tool.MoreCurve();Tool.NextCurve()){ if (Tool.Neighbours() >= 2) { if (Tool.HasCurve()) { - BRepAdaptor_Curve C(Tool.GetCurve()); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(Tool.GetCurve()); BRep_Tool::PolygonOnTriangulation(Tool.GetCurve(), aPT, aT, aL); if (!aPT.IsNull() && !aT.IsNull() && aPT->HasParameters()) VrmlConverter_DeflectionCurve::Add(anOStream, C, aPT->Parameters(), aPT->NbNodes(), aDrawer); diff --git a/src/VrmlConverter/VrmlConverter_WFRestrictedFace.cxx b/src/VrmlConverter/VrmlConverter_WFRestrictedFace.cxx index fd23d50898..4f2dd05c7a 100644 --- a/src/VrmlConverter/VrmlConverter_WFRestrictedFace.cxx +++ b/src/VrmlConverter/VrmlConverter_WFRestrictedFace.cxx @@ -50,7 +50,7 @@ void VrmlConverter_WFRestrictedFace::Add Bnd_Box2d B; for (ToolRst.Init(); ToolRst.More(); ToolRst.Next()) { - const Adaptor2d_Curve2d& TheRCurve = ToolRst.Value(); + const Handle(Adaptor2d_Curve2d)& TheRCurve = ToolRst.Value(); BndLib_Add2dCurve::Add(TheRCurve, Precision::PConfusion(), B); } @@ -95,7 +95,7 @@ void VrmlConverter_WFRestrictedFace::Add for (ToolRst.Init(); ToolRst.More(); ToolRst.Next()) { TopAbs_Orientation Orient = ToolRst.Orientation(); - const Adaptor2d_Curve2d* TheRCurve = &ToolRst.Value(); + const Handle(Adaptor2d_Curve2d) TheRCurve = ToolRst.Value(); U1 = TheRCurve->FirstParameter(); U2 = TheRCurve->LastParameter(); if (TheRCurve->GetType() != GeomAbs_Line) { @@ -125,8 +125,7 @@ void VrmlConverter_WFRestrictedFace::Add // draw the isos - Adaptor3d_IsoCurve anIso; - anIso.Load(aFace); + Handle(Adaptor3d_IsoCurve) anIso = new Adaptor3d_IsoCurve(aFace); Standard_Integer NumberOfLines = isobuild.NbLines(); Handle(VrmlConverter_LineAspect) latmp = new VrmlConverter_LineAspect; @@ -201,7 +200,7 @@ void VrmlConverter_WFRestrictedFace::Add b1 = b1 == RealFirst() ? - aLimit : b1; b2 = b2 == RealLast() ? aLimit : b2; - anIso.Load(GeomAbs_IsoU,Coord,b1,b2); + anIso->Load(GeomAbs_IsoU,Coord,b1,b2); VrmlConverter_Curve::Add(anIso, aDrawer, anOStream); } @@ -244,7 +243,7 @@ void VrmlConverter_WFRestrictedFace::Add b1 = b1 == RealFirst() ? - aLimit : b1; b2 = b2 == RealLast() ? aLimit : b2; - anIso.Load(GeomAbs_IsoV,Coord,b1,b2); + anIso->Load(GeomAbs_IsoV,Coord,b1,b2); VrmlConverter_Curve::Add(anIso, aDrawer, anOStream); } diff --git a/src/VrmlConverter/VrmlConverter_WFShape.cxx b/src/VrmlConverter/VrmlConverter_WFShape.cxx index 2ee9766e0a..4d6272dab1 100644 --- a/src/VrmlConverter/VrmlConverter_WFShape.cxx +++ b/src/VrmlConverter/VrmlConverter_WFShape.cxx @@ -133,7 +133,7 @@ void VrmlConverter_WFShape::Add(Standard_OStream& anOStream, for(Tool.InitCurve();Tool.MoreCurve();Tool.NextCurve()){ if (Tool.Neighbours() == 0) { if (Tool.HasCurve()) { - BRepAdaptor_Curve C(Tool.GetCurve()); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(Tool.GetCurve()); VrmlConverter_Curve::Add(C, aDrawer, anOStream); } } @@ -156,7 +156,7 @@ void VrmlConverter_WFShape::Add(Standard_OStream& anOStream, for(Tool.InitCurve();Tool.MoreCurve();Tool.NextCurve()){ if (Tool.Neighbours() == 1) { if (Tool.HasCurve()) { - BRepAdaptor_Curve C(Tool.GetCurve()); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(Tool.GetCurve()); VrmlConverter_Curve::Add(C, aDrawer, anOStream); } } @@ -179,7 +179,7 @@ void VrmlConverter_WFShape::Add(Standard_OStream& anOStream, for(Tool.InitCurve();Tool.MoreCurve();Tool.NextCurve()){ if (Tool.Neighbours() >= 2) { if (Tool.HasCurve()) { - BRepAdaptor_Curve C(Tool.GetCurve()); + Handle(BRepAdaptor_Curve) C = new BRepAdaptor_Curve(Tool.GetCurve()); VrmlConverter_Curve::Add(C, aDrawer, anOStream); } } diff --git a/src/VrmlData/VrmlData_ShapeConvert.cxx b/src/VrmlData/VrmlData_ShapeConvert.cxx index 6411c778de..a93e04055f 100644 --- a/src/VrmlData/VrmlData_ShapeConvert.cxx +++ b/src/VrmlData/VrmlData_ShapeConvert.cxx @@ -191,9 +191,9 @@ Handle(VrmlData_Geometry) VrmlData_ShapeConvert::makeTShapeNode(const TopoDS_Sha // If polygon was not found -> generate it if (aPol.IsNull()) { - BRepAdaptor_Curve aCurve(aEdge); - const Standard_Real aFirst = aCurve.FirstParameter(); - const Standard_Real aLast = aCurve.LastParameter(); + Handle(BRepAdaptor_Curve) aCurve = new BRepAdaptor_Curve(aEdge); + const Standard_Real aFirst = aCurve->FirstParameter(); + const Standard_Real aLast = aCurve->LastParameter(); GCPnts_TangentialDeflection TD(aCurve, aFirst, aLast, myDeflAngle, myDeflection, 2);