]> OCCT Git - occt-copy.git/commitdiff
//Consider remark concerning new methods in Adaptor3d_Curve class.
authormsv <msv@opencascade.com>
Fri, 12 Aug 2016 08:03:28 +0000 (11:03 +0300)
committerabv <abv@opencascade.com>
Sat, 13 Aug 2016 06:01:28 +0000 (09:01 +0300)
src/Adaptor3d/Adaptor3d_Curve.cxx
src/Adaptor3d/Adaptor3d_Curve.hxx
src/Adaptor3d/Adaptor3d_HCurve.hxx
src/Adaptor3d/Adaptor3d_HCurve.lxx
src/BRepAdaptor/BRepAdaptor_Curve.cxx
src/BRepAdaptor/BRepAdaptor_Curve.hxx
src/Extrema/Extrema_GenExtCS.cxx
src/GeomAdaptor/GeomAdaptor_Curve.cxx
src/GeomAdaptor/GeomAdaptor_Curve.hxx

index afb5789e4d27e30c798cda7b99c2bedf32acc725..4825344378bcaee1506f2acad1311d049588613a 100644 (file)
@@ -19,6 +19,7 @@
 #include <Adaptor3d_HCurve.hxx>
 #include <Geom_BezierCurve.hxx>
 #include <Geom_BSplineCurve.hxx>
+#include <Geom_OffsetCurve.hxx>
 #include <gp_Circ.hxx>
 #include <gp_Elips.hxx>
 #include <gp_Hypr.hxx>
@@ -382,20 +383,8 @@ Handle(Geom_BSplineCurve) Adaptor3d_Curve::BSpline() const
 //purpose  : 
 //=======================================================================
 
-Handle(Adaptor3d_HCurve) Adaptor3d_Curve::BasisCurve() const 
+Handle(Geom_OffsetCurve) Adaptor3d_Curve::OffsetCurve() const
 {
-  Standard_NotImplemented::Raise("Adaptor3d_Curve::BasisCurve");
-  return Handle(Adaptor3d_HCurve)();
-}
-
-
-//=======================================================================
-//function : OffsetValue
-//purpose  : 
-//=======================================================================
-
-Standard_Real Adaptor3d_Curve::OffsetValue() const 
-{
-  Standard_NotImplemented::Raise("Adaptor3d_Curve::OffsetValue");
-  return 0.;
+  Standard_NotImplemented::Raise("Adaptor3d_Curve::OffsetCurve");
+  return Handle(Geom_OffsetCurve)();
 }
index c8bf429748d4ab3ef43c233add9303eba72e956e..de882dc430913009e2f71bd38c8babd1019af3a4 100644 (file)
@@ -40,6 +40,7 @@ class gp_Hypr;
 class gp_Parab;
 class Geom_BezierCurve;
 class Geom_BSplineCurve;
+class Geom_OffsetCurve;
 
 
 //! Root class for 3D curves on which geometric
@@ -156,9 +157,7 @@ public:
   
   Standard_EXPORT virtual Handle(Geom_BSplineCurve) BSpline() const;
 
-  Standard_EXPORT virtual Handle(Adaptor3d_HCurve) BasisCurve() const;
-  
-  Standard_EXPORT virtual Standard_Real OffsetValue() const;
+  Standard_EXPORT virtual Handle(Geom_OffsetCurve) OffsetCurve() const;
 
   Standard_EXPORT virtual ~Adaptor3d_Curve();
 
index 75a4cd9c9de1ba22d75a7a607975c9514840ddbc..be29b50bd6f694d9fdefca11aed537b459e302f7 100644 (file)
@@ -42,6 +42,7 @@ class gp_Pnt;
 class gp_Vec;
 class Geom_BezierCurve;
 class Geom_BSplineCurve;
+class Geom_OffsetCurve;
 
 
 class Adaptor3d_HCurve;
@@ -134,10 +135,7 @@ public:
   
     Handle(Geom_BSplineCurve) BSpline() const;
 
-    Handle(Adaptor3d_HCurve) BasisCurve() const;
-  
-    Standard_Real OffsetValue() const;
-
+    Handle(Geom_OffsetCurve) OffsetCurve() const;
 
 
   DEFINE_STANDARD_RTTIEXT(Adaptor3d_HCurve,MMgt_TShared)
index 94eb2f2e26fb3067b26b3cfd63f224d9a74c2392..48b2d8d0d3bf9a16aec0da5a0884cf0185646451 100644 (file)
@@ -298,18 +298,7 @@ inline Standard_Integer  Adaptor3d_HCurve::NbKnots() const
 //purpose  : 
 //=======================================================================
 
- inline Handle(Adaptor3d_HCurve) Adaptor3d_HCurve::BasisCurve() const 
+ inline Handle(Geom_OffsetCurve) Adaptor3d_HCurve::OffsetCurve() const
 {
-  return Curve().BasisCurve();
-}
-
-
-//=======================================================================
-//function : OffsetValue
-//purpose  : 
-//=======================================================================
-
- inline Standard_Real Adaptor3d_HCurve::OffsetValue() const 
-{
-  return Curve().OffsetValue();
+  return Curve().OffsetCurve();
 }
index c53ed062d1fc3167ad7670027d485c9ad23c2a32..c1b07510c016ab7521a7c1449bd20b7288e702d4 100644 (file)
@@ -25,6 +25,7 @@
 #include <Geom2dAdaptor_HCurve.hxx>
 #include <Geom_BezierCurve.hxx>
 #include <Geom_BSplineCurve.hxx>
+#include <Geom_OffsetCurve.hxx>
 #include <Geom_Surface.hxx>
 #include <GeomAdaptor_Curve.hxx>
 #include <GeomAdaptor_HSurface.hxx>
@@ -657,30 +658,12 @@ Handle(Geom_BSplineCurve) BRepAdaptor_Curve::BSpline() const
 //purpose  : 
 //=======================================================================
 
-Handle(Adaptor3d_HCurve) BRepAdaptor_Curve::BasisCurve() const 
+Handle(Geom_OffsetCurve) BRepAdaptor_Curve::OffsetCurve() const
 {
   if ( !Is3DCurve() || myCurve.GetType() != GeomAbs_OffsetCurve)
-    Standard_NoSuchObject::Raise("BRepAdaptor_Curve::BasisCurve");
+    Standard_NoSuchObject::Raise("BRepAdaptor_Curve::OffsetCurve");
 
-  const Handle(Geom_Curve)& aGC = myCurve.Curve();
-  Handle(Geom_OffsetCurve) anOffC = Handle(Geom_OffsetCurve)::DownCast(aGC);
-  Handle(Geom_Curve) aBC = anOffC->BasisCurve();
-  aBC = Handle(Geom_Curve)::DownCast(aBC->Transformed(myTrsf));
-  Handle(GeomAdaptor_HCurve) aGABC = new GeomAdaptor_HCurve(aBC);
-  return aGABC;
+  Handle(Geom_OffsetCurve) anOffC = myCurve.OffsetCurve();
+  return myTrsf.Form() == gp_Identity
+    ? anOffC : Handle(Geom_OffsetCurve)::DownCast(anOffC->Transformed(myTrsf));
 }
-
-//=======================================================================
-//function : OffsetValue
-//purpose  : 
-//=======================================================================
-
-Standard_Real BRepAdaptor_Curve::OffsetValue() const 
-{
-  if ( !Is3DCurve() || myCurve.GetType() != GeomAbs_OffsetCurve)
-    Standard_NoSuchObject::Raise("BRepAdaptor_Curve::OffsetValue");
-  return myCurve.OffsetValue();
-} 
index 7ffe3b3b925692038b5ae4746bab8910c27d35ef..96a87a73a64c1bd73d98595b233f32c789722b2a 100644 (file)
@@ -51,6 +51,7 @@ class gp_Hypr;
 class gp_Parab;
 class Geom_BezierCurve;
 class Geom_BSplineCurve;
+class Geom_OffsetCurve;
 
 
 //! The Curve from BRepAdaptor  allows to use  an Edge
@@ -220,9 +221,7 @@ public:
   //! using this method
   Standard_EXPORT Handle(Geom_BSplineCurve) BSpline() const Standard_OVERRIDE;
 
-  Standard_EXPORT Handle(Adaptor3d_HCurve) BasisCurve() const Standard_OVERRIDE;
-  
-  Standard_EXPORT Standard_Real OffsetValue() const Standard_OVERRIDE;
+  Standard_EXPORT Handle(Geom_OffsetCurve) OffsetCurve() const Standard_OVERRIDE;
 
 
 
index f108016baae1d3e7f87871a2382266c6da468dab..ce19e79d3295842fff7ced861db85e1169226132 100644 (file)
@@ -24,7 +24,9 @@
 #include <Extrema_GlobOptFuncCS.hxx>
 #include <Extrema_POnCurv.hxx>
 #include <Extrema_POnSurf.hxx>
+#include <Geom_Hyperbola.hxx>
 #include <Geom_Line.hxx>
+#include <Geom_OffsetCurve.hxx>
 #include <GeomAdaptor_Curve.hxx>
 #include <math_FunctionSetRoot.hxx>
 #include <math_PSO.hxx>
@@ -46,6 +48,8 @@ const Standard_Real HyperbolaLimit = 23.; //ln(UMaxParamVal)
 static void GetSurfMaxParamVals(const Adaptor3d_SurfacePtr theS,
                     Standard_Real& theUmax, Standard_Real& theVmax)
 {
+  // determine if the surface is extrusion or revolution 
+  // and its basis curve is hyperbola
   theUmax = UMaxParamVal;
   theVmax = VMaxParamVal;
   Handle(Adaptor3d_HCurve) aBC;
@@ -75,12 +79,13 @@ static void GetSurfMaxParamVals(const Adaptor3d_SurfacePtr theS,
     return;
   }
   //
-  if(aBC->GetType() == GeomAbs_OffsetCurve)
+  Standard_Boolean isHypebola = (aBC->GetType() == GeomAbs_Hyperbola);
+  if(!isHypebola && aBC->GetType() == GeomAbs_OffsetCurve)
   {
-    aBC = aBC->BasisCurve();
+    isHypebola = aBC->OffsetCurve()->BasisCurve()->IsKind(STANDARD_TYPE(Geom_Hyperbola));
   }
     
-  if(aBC->GetType() == GeomAbs_Hyperbola)
+  if (isHypebola)
   {
     if(aST == GeomAbs_SurfaceOfExtrusion)
     {
@@ -98,8 +103,9 @@ static Standard_Real GetCurvMaxParamVal(const Adaptor3d_Curve& theC)
 {
   if(theC.GetType() == GeomAbs_OffsetCurve)
   {
-    Handle(Adaptor3d_HCurve) aBC = theC.BasisCurve();
-    if(aBC->GetType() == GeomAbs_Hyperbola)
+    Standard_Boolean isHypebola = 
+      theC.OffsetCurve()->BasisCurve()->IsKind(STANDARD_TYPE(Geom_Hyperbola));
+    if (isHypebola)
     {
       return HyperbolaLimit;
     }
index bc265388d0235c8091bd20724b4cd1c6ce75645e..90f92149194dc8dd1cca3228311e19591778bd30 100644 (file)
@@ -965,28 +965,9 @@ Handle(Geom_BSplineCurve) GeomAdaptor_Curve::BSpline() const
 //purpose  : 
 //=======================================================================
 
-Handle(Adaptor3d_HCurve) GeomAdaptor_Curve::BasisCurve() const 
+Handle(Geom_OffsetCurve) GeomAdaptor_Curve::OffsetCurve() const
 {
   if ( myTypeCurve != GeomAbs_OffsetCurve)
-    Standard_NoSuchObject::Raise("GeomAdaptor_Curve::BasisCurve");
-
-  Handle(Geom_OffsetCurve) anOffC = Handle(Geom_OffsetCurve)::DownCast(myCurve);
-  Handle(Geom_Curve) aBC = anOffC->BasisCurve();
-  Handle(GeomAdaptor_HCurve) aGABC = new GeomAdaptor_HCurve(aBC);
-  return aGABC;
+    Standard_NoSuchObject::Raise("GeomAdaptor_Curve::OffsetCurve");
+  return Handle(Geom_OffsetCurve)::DownCast(myCurve);
 }
-
-//=======================================================================
-//function : OffsetValue
-//purpose  : 
-//=======================================================================
-
-Standard_Real GeomAdaptor_Curve::OffsetValue() const 
-{
-  if ( myTypeCurve != GeomAbs_OffsetCurve)
-    Standard_NoSuchObject::Raise("GeomAdaptor_Curve::OffsetValue");
-  return Handle(Geom_OffsetCurve)::DownCast(myCurve)->Offset();
-} 
-
index 7c197e2814e1fa0e35373079f916bf5def39f891..690480906cc3adca826cdc116bf5481e01e4dfde 100644 (file)
@@ -47,6 +47,7 @@ class gp_Hypr;
 class gp_Parab;
 class Geom_BezierCurve;
 class Geom_BSplineCurve;
+class Geom_OffsetCurve;
 
 
 //! This class provides an interface between the services provided by any
@@ -207,9 +208,7 @@ public:
   //! myFirst/Last.
   Standard_EXPORT Handle(Geom_BSplineCurve) BSpline() const Standard_OVERRIDE;
 
-  Standard_EXPORT Handle(Adaptor3d_HCurve) BasisCurve() const Standard_OVERRIDE;
-  
-  Standard_EXPORT Standard_Real OffsetValue() const Standard_OVERRIDE;
+  Standard_EXPORT Handle(Geom_OffsetCurve) OffsetCurve() const Standard_OVERRIDE;
 
 friend class GeomAdaptor_Surface;