From 041a550815e00f1e49e57a3793d23b52bcde4cbc Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 21 Jan 2019 13:47:41 +0100 Subject: [PATCH] handle also B-spline and Bezier curves in GeomCurve::closestParameter --- src/Mod/Part/App/Geometry.cpp | 3 +-- src/Mod/Part/App/GeometryCurvePyImp.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp index 376f90e890..29a6427528 100644 --- a/src/Mod/Part/App/Geometry.cpp +++ b/src/Mod/Part/App/Geometry.cpp @@ -547,8 +547,7 @@ bool GeomCurve::closestParameter(const Base::Vector3d& point, double &u) const } } catch (StdFail_NotDone& e) { - - if (c->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))){ + if (c->IsKind(STANDARD_TYPE(Geom_BoundedCurve))){ Base::Vector3d firstpoint = this->pointAtParameter(c->FirstParameter()); Base::Vector3d lastpoint = this->pointAtParameter(c->LastParameter()); diff --git a/src/Mod/Part/App/GeometryCurvePyImp.cpp b/src/Mod/Part/App/GeometryCurvePyImp.cpp index 4ba3f38a10..4745268038 100644 --- a/src/Mod/Part/App/GeometryCurvePyImp.cpp +++ b/src/Mod/Part/App/GeometryCurvePyImp.cpp @@ -483,13 +483,13 @@ PyObject* GeometryCurvePy::parameter(PyObject *args) if (!PyArg_ParseTuple(args, "O!", &(Base::VectorPy::Type), &p)) return 0; Base::Vector3d v = Py::Vector(p, false).toVector(); - + double u; - - if(static_cast(getGeometryPtr())->closestParameter(v,u)) + + if (static_cast(getGeometryPtr())->closestParameter(v,u)) return Py::new_reference_to(Py::Float(u)); } - catch (Base::RuntimeError& e) { + catch (Base::CADKernelError& e) { PyErr_SetString(PartExceptionOCCError, e.what()); return 0; }