diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp index c6b2a1f3bb..630e6da6e0 100644 --- a/src/Mod/Part/App/Geometry.cpp +++ b/src/Mod/Part/App/Geometry.cpp @@ -394,6 +394,19 @@ bool GeomCurve::tangent(double u, gp_Dir& dir) const return false; } +bool GeomCurve::tangent(double u, Base::Vector3d& dir) const +{ + gp_Dir gdir; + + if(tangent(u, gdir)) { + dir = Base::Vector3d(gdir.X(),gdir.Y(),gdir.Z()); + + return true; + } + + return false; +} + Base::Vector3d GeomCurve::pointAtParameter(double u) const { Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); @@ -427,7 +440,7 @@ Base::Vector3d GeomCurve::secondDerivativeAtParameter(double u) const bool GeomCurve::normalAt(double u, Base::Vector3d& dir) const { Handle(Geom_Curve) c = Handle(Geom_Curve)::DownCast(handle()); - + try { if (!c.IsNull()) { GeomLProp_CLProps prop(c,u,2,Precision::Confusion()); diff --git a/src/Mod/Part/App/Geometry.h b/src/Mod/Part/App/Geometry.h index 9d25e25b71..ac0254aed6 100644 --- a/src/Mod/Part/App/Geometry.h +++ b/src/Mod/Part/App/Geometry.h @@ -161,6 +161,7 @@ public: */ virtual GeomBSplineCurve* toNurbs(double first, double last) const; bool tangent(double u, gp_Dir&) const; + bool tangent(double u, Base::Vector3d& dir) const; Base::Vector3d pointAtParameter(double u) const; Base::Vector3d firstDerivativeAtParameter(double u) const; Base::Vector3d secondDerivativeAtParameter(double u) const;