diff --git a/src/Mod/Part/App/GeometrySurfacePy.xml b/src/Mod/Part/App/GeometrySurfacePy.xml index 16fbc7135e..a15a2d63fd 100644 --- a/src/Mod/Part/App/GeometrySurfacePy.xml +++ b/src/Mod/Part/App/GeometrySurfacePy.xml @@ -22,6 +22,16 @@ Return the shape for the geometry. + + + Returns the point of given parameter + + + + + Returns the n-th derivative + + value(u,v) -> Point diff --git a/src/Mod/Part/App/GeometrySurfacePyImp.cpp b/src/Mod/Part/App/GeometrySurfacePyImp.cpp index 5dd47e04c8..a75a0a961d 100644 --- a/src/Mod/Part/App/GeometrySurfacePyImp.cpp +++ b/src/Mod/Part/App/GeometrySurfacePyImp.cpp @@ -281,6 +281,52 @@ PyObject* GeometrySurfacePy::toShape(PyObject *args) return 0; } +PyObject* GeometrySurfacePy::getD0(PyObject *args) +{ + Handle(Geom_Geometry) g = getGeometryPtr()->handle(); + Handle(Geom_Surface) s = Handle(Geom_Surface)::DownCast(g); + try { + if (!s.IsNull()) { + double u,v; + if (!PyArg_ParseTuple(args, "dd", &u, &v)) + return nullptr; + gp_Pnt p; + s->D0(u, v, p); + return new Base::VectorPy(Base::Vector3d(p.X(),p.Y(),p.Z())); + } + } + catch (Standard_Failure& e) { + PyErr_SetString(PartExceptionOCCError, e.GetMessageString()); + return nullptr; + } + + PyErr_SetString(PartExceptionOCCError, "Geometry is not a surface"); + return nullptr; +} + +PyObject* GeometrySurfacePy::getDN(PyObject *args) +{ + Handle(Geom_Geometry) g = getGeometryPtr()->handle(); + Handle(Geom_Surface) s = Handle(Geom_Surface)::DownCast(g); + try { + if (!s.IsNull()) { + int nu, nv; + double u,v; + if (!PyArg_ParseTuple(args, "ddii", &u, &v, &nu, &nv)) + return nullptr; + gp_Vec v1 = s->DN(u, v, nu, nv); + return new Base::VectorPy(Base::Vector3d(v1.X(),v1.Y(),v1.Z())); + } + } + catch (Standard_Failure& e) { + PyErr_SetString(PartExceptionOCCError, e.GetMessageString()); + return nullptr; + } + + PyErr_SetString(PartExceptionOCCError, "Geometry is not a surface"); + return nullptr; +} + PyObject* GeometrySurfacePy::value(PyObject *args) { Handle(Geom_Geometry) g = getGeometryPtr()->handle();