From 64912a59cc7f11c6263c8cb47fc713da773aa9d1 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 23 Feb 2017 21:31:03 +0100 Subject: [PATCH] allow to pass also a face to Curve2d.toShape --- src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp | 40 ++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp b/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp index 67a57a4b9..8b690ce0b 100644 --- a/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp +++ b/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp @@ -37,6 +37,7 @@ # include # include # include +# include # include # include # include @@ -46,6 +47,8 @@ # include # include # include +# include +# include #endif #include @@ -60,6 +63,7 @@ #include #include #include +#include namespace Part { extern const Py::Object makeGeometryCurvePy(const Handle_Geom_Curve& c); @@ -180,6 +184,42 @@ PyObject* Curve2dPy::toShape(PyObject *args) } } + PyErr_Clear(); + if (PyArg_ParseTuple(args, "O!", &(Part::TopoShapeFacePy::Type), &p)) { + try { + const TopoDS_Face& face = TopoDS::Face(static_cast(p)->getTopoShapePtr()->getShape()); + Handle_Geom2d_Curve curv = Handle_Geom2d_Curve::DownCast(getGeometry2dPtr()->handle()); + + BRepAdaptor_Surface adapt(face); + BRepBuilderAPI_MakeEdge mkBuilder(curv, adapt.Surface().Surface()); + TopoDS_Shape edge = mkBuilder.Shape(); + return Py::new_reference_to(shape2pyshape(edge)); + } + catch (Standard_Failure) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + PyErr_SetString(PartExceptionOCCError, e->GetMessageString()); + return 0; + } + } + + PyErr_Clear(); + if (PyArg_ParseTuple(args, "O!dd", &(Part::TopoShapeFacePy::Type), &p, &u1, &u2)) { + try { + const TopoDS_Face& face = TopoDS::Face(static_cast(p)->getTopoShapePtr()->getShape()); + Handle_Geom2d_Curve curv = Handle_Geom2d_Curve::DownCast(getGeometry2dPtr()->handle()); + + BRepAdaptor_Surface adapt(face); + BRepBuilderAPI_MakeEdge mkBuilder(curv, adapt.Surface().Surface(), u1, u2); + TopoDS_Shape edge = mkBuilder.Shape(); + return Py::new_reference_to(shape2pyshape(edge)); + } + catch (Standard_Failure) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + PyErr_SetString(PartExceptionOCCError, e->GetMessageString()); + return 0; + } + } + PyErr_SetString(PyExc_TypeError, "empty parameter list, parameter range or surface expected"); return 0; }