diff --git a/src/Mod/Part/App/Geom2d/Circle2dPy.xml b/src/Mod/Part/App/Geom2d/Circle2dPy.xml index c32d66d17..4ca79e2b3 100644 --- a/src/Mod/Part/App/Geom2d/Circle2dPy.xml +++ b/src/Mod/Part/App/Geom2d/Circle2dPy.xml @@ -15,7 +15,7 @@ Describes a circle in 3D space To create a circle there are several ways: Part.Circle() - Creates a default circle with center (0,0,0) and radius 1 + Creates a default circle with center (0,0) and radius 1 Part.Circle(Circle) Creates a copy of the given circle @@ -23,44 +23,18 @@ Part.Circle(Circle) Part.Circle(Circle, Distance) Creates a circle parallel to given circle at a certain distance -Part.Circle(Center,Normal,Radius) - Creates a circle defined by center, normal direction and radius +Part.Circle(Center,Radius) + Creates a circle defined by center and radius Part.Circle(Point1,Point2,Point3) Creates a circle defined by three non-linear points - diff --git a/src/Mod/Part/App/Geom2d/Circle2dPyImp.cpp b/src/Mod/Part/App/Geom2d/Circle2dPyImp.cpp index 604f4b31d..eecf23c4c 100644 --- a/src/Mod/Part/App/Geom2d/Circle2dPyImp.cpp +++ b/src/Mod/Part/App/Geom2d/Circle2dPyImp.cpp @@ -23,9 +23,9 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include -# include +# include +# include +# include #endif #include @@ -33,7 +33,6 @@ #include #include -#include using namespace Part; @@ -42,81 +41,53 @@ extern const char* gce_ErrorStatusText(gce_ErrorType et); // returns a string which represents the object e.g. when printed in python std::string Circle2dPy::representation(void) const { -#if 0 - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - gp_Ax1 axis = circle->Axis(); - gp_Dir dir = axis.Direction(); - gp_Pnt loc = axis.Location(); - Standard_Real fRad = circle->Radius(); - - std::stringstream str; - str << "Circle ("; - str << "Radius : " << fRad << ", "; - str << "Position : (" << loc.X() << ", "<< loc.Y() << ", "<< loc.Z() << "), "; - str << "Direction : (" << dir.X() << ", "<< dir.Y() << ", "<< dir.Z() << ")"; - str << ")"; - - return str.str(); -#else - return ""; -#endif + return ""; } PyObject *Circle2dPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { -#if 1 - return 0; -#else // create a new instance of Circle2dPy and the Twin object - Handle_Geom_Circle circle = new Geom_Circle(gp_Circ()); - return new Circle2dPy(new GeomCircle(circle)); -#endif + return new Circle2dPy(new Geom2dCircle()); } // constructor method int Circle2dPy::PyInit(PyObject* args, PyObject* kwds) { - return 0; -#if 0 // circle and distance for offset PyObject *pCirc; double dist; static char* keywords_cd[] = {"Circle","Distance",NULL}; if (PyArg_ParseTupleAndKeywords(args, kwds, "O!d", keywords_cd, &(Circle2dPy::Type), &pCirc, &dist)) { Circle2dPy* pcCircle = static_cast(pCirc); - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast - (pcCircle->getGeomCirclePtr()->handle()); - GC_MakeCircle mc(circle->Circ(), dist); + Handle_Geom2d_Circle circle = Handle_Geom2d_Circle::DownCast + (pcCircle->getGeom2dCirclePtr()->handle()); + GCE2d_MakeCircle mc(circle->Circ2d(), dist); if (!mc.IsDone()) { PyErr_SetString(PartExceptionOCCError, gce_ErrorStatusText(mc.Status())); return -1; } - Handle_Geom_Circle circ = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - circ->SetCirc(mc.Value()->Circ()); + Handle_Geom2d_Circle circ = Handle_Geom2d_Circle::DownCast(getGeom2dCirclePtr()->handle()); + circ->SetCirc2d(mc.Value()->Circ2d()); return 0; } - // center, normal and radius + // center and radius PyObject *pV1, *pV2, *pV3; - static char* keywords_cnr[] = {"Center","Normal","Radius",NULL}; + static char* keywords_cnr[] = {"Center","Radius",NULL}; PyErr_Clear(); - if (PyArg_ParseTupleAndKeywords(args, kwds, "O!O!d", keywords_cnr, - &(Base::VectorPy::Type), &pV1, - &(Base::VectorPy::Type), &pV2, + if (PyArg_ParseTupleAndKeywords(args, kwds, "O!d", keywords_cnr, + Base::Vector2dPy::type_object(), &pV1, &dist)) { - Base::Vector3d v1 = static_cast(pV1)->value(); - Base::Vector3d v2 = static_cast(pV2)->value(); - GC_MakeCircle mc(gp_Pnt(v1.x,v1.y,v1.z), - gp_Dir(v2.x,v2.y,v2.z), - dist); + Base::Vector2d v1 = Py::Vector2d(pV1).getCxxObject()->value(); + GCE2d_MakeCircle mc(gp_Pnt2d(v1.x,v1.y), dist); if (!mc.IsDone()) { PyErr_SetString(PartExceptionOCCError, gce_ErrorStatusText(mc.Status())); return -1; } - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - circle->SetCirc(mc.Value()->Circ()); + Handle_Geom2d_Circle circle = Handle_Geom2d_Circle::DownCast(getGeom2dCirclePtr()->handle()); + circle->SetCirc2d(mc.Value()->Circ2d()); return 0; } @@ -124,33 +95,33 @@ int Circle2dPy::PyInit(PyObject* args, PyObject* kwds) PyErr_Clear(); if (PyArg_ParseTupleAndKeywords(args, kwds, "O!", keywords_c, &(Circle2dPy::Type), &pCirc)) { Circle2dPy* pcCircle = static_cast(pCirc); - Handle_Geom_Circle circ1 = Handle_Geom_Circle::DownCast - (pcCircle->getGeomCirclePtr()->handle()); - Handle_Geom_Circle circ2 = Handle_Geom_Circle::DownCast - (this->getGeomCirclePtr()->handle()); - circ2->SetCirc(circ1->Circ()); + Handle_Geom2d_Circle circ1 = Handle_Geom2d_Circle::DownCast + (pcCircle->getGeom2dCirclePtr()->handle()); + Handle_Geom2d_Circle circ2 = Handle_Geom2d_Circle::DownCast + (this->getGeom2dCirclePtr()->handle()); + circ2->SetCirc2d(circ1->Circ2d()); return 0; } static char* keywords_ppp[] = {"Point1","Point2","Point3",NULL}; PyErr_Clear(); if (PyArg_ParseTupleAndKeywords(args, kwds, "O!O!O!", keywords_ppp, - &(Base::VectorPy::Type), &pV1, - &(Base::VectorPy::Type), &pV2, - &(Base::VectorPy::Type), &pV3)) { - Base::Vector3d v1 = static_cast(pV1)->value(); - Base::Vector3d v2 = static_cast(pV2)->value(); - Base::Vector3d v3 = static_cast(pV3)->value(); - GC_MakeCircle mc(gp_Pnt(v1.x,v1.y,v1.z), - gp_Pnt(v2.x,v2.y,v2.z), - gp_Pnt(v3.x,v3.y,v3.z)); + Base::Vector2dPy::type_object(), &pV1, + Base::Vector2dPy::type_object(), &pV2, + Base::Vector2dPy::type_object(), &pV3)) { + Base::Vector2d v1 = Py::Vector2d(pV1).getCxxObject()->value(); + Base::Vector2d v2 = Py::Vector2d(pV2).getCxxObject()->value(); + Base::Vector2d v3 = Py::Vector2d(pV3).getCxxObject()->value(); + GCE2d_MakeCircle mc(gp_Pnt2d(v1.x,v1.y), + gp_Pnt2d(v2.x,v2.y), + gp_Pnt2d(v3.x,v3.y)); if (!mc.IsDone()) { PyErr_SetString(PartExceptionOCCError, gce_ErrorStatusText(mc.Status())); return -1; } - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - circle->SetCirc(mc.Value()->Circ()); + Handle_Geom2d_Circle circle = Handle_Geom2d_Circle::DownCast(getGeom2dCirclePtr()->handle()); + circle->SetCirc2d(mc.Value()->Circ2d()); return 0; } @@ -158,7 +129,7 @@ int Circle2dPy::PyInit(PyObject* args, PyObject* kwds) static char* keywords_n[] = {NULL}; PyErr_Clear(); if (PyArg_ParseTupleAndKeywords(args, kwds, "", keywords_n)) { - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); + Handle_Geom2d_Circle circle = Handle_Geom2d_Circle::DownCast(getGeom2dCirclePtr()->handle()); circle->SetRadius(1.0); return 0; } @@ -167,156 +138,23 @@ int Circle2dPy::PyInit(PyObject* args, PyObject* kwds) "-- empty parameter list\n" "-- Circle\n" "-- Circle, Distance\n" - "-- Center, Normal, Radius\n" + "-- Center, Radius\n" "-- Point1, Point2, Point3"); return -1; -#endif } -#if 0 + Py::Float Circle2dPy::getRadius(void) const { - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); + Handle_Geom2d_Circle circle = Handle_Geom2d_Circle::DownCast(getGeom2dCirclePtr()->handle()); return Py::Float(circle->Radius()); } void Circle2dPy::setRadius(Py::Float arg) { - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); + Handle_Geom2d_Circle circle = Handle_Geom2d_Circle::DownCast(getGeom2dCirclePtr()->handle()); circle->SetRadius((double)arg); } -Py::Object Circle2dPy::getCenter(void) const -{ - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - gp_Pnt loc = circle->Location(); - return Py::Vector(Base::Vector3d(loc.X(), loc.Y(), loc.Z())); -} - -void Circle2dPy::setCenter(Py::Object arg) -{ - PyObject* p = arg.ptr(); - if (PyObject_TypeCheck(p, &(Base::VectorPy::Type))) { - Base::Vector3d loc = static_cast(p)->value(); - getGeomCirclePtr()->setCenter(loc); - } - else if (PyObject_TypeCheck(p, &PyTuple_Type)) { - Base::Vector3d loc = Base::getVectorFromTuple(p); - getGeomCirclePtr()->setCenter(loc); - } else { - std::string error = std::string("type must be 'Vector', not "); - error += p->ob_type->tp_name; - throw Py::TypeError(error); - } -} - -Py::Object Circle2dPy::getAxis(void) const -{ - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - gp_Ax1 axis = circle->Axis(); - gp_Dir dir = axis.Direction(); - return Py::Vector(Base::Vector3d(dir.X(), dir.Y(), dir.Z())); -} - -void Circle2dPy::setAxis(Py::Object arg) -{ - PyObject* p = arg.ptr(); - Base::Vector3d val; - if (PyObject_TypeCheck(p, &(Base::VectorPy::Type))) { - val = static_cast(p)->value(); - } - else if (PyTuple_Check(p)) { - val = Base::getVectorFromTuple(p); - } - else { - std::string error = std::string("type must be 'Vector', not "); - error += p->ob_type->tp_name; - throw Py::TypeError(error); - } - - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - try { - gp_Ax1 axis; - axis.SetLocation(circle->Location()); - axis.SetDirection(gp_Dir(val.x, val.y, val.z)); - circle->SetAxis(axis); - } - catch (Standard_Failure) { - throw Py::Exception("cannot set axis"); - } -} - -Py::Object Circle2dPy::getXAxis(void) const -{ - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - gp_Ax1 axis = circle->XAxis(); - gp_Dir dir = axis.Direction(); - return Py::Vector(Base::Vector3d(dir.X(), dir.Y(), dir.Z())); -} - -void Circle2dPy::setXAxis(Py::Object arg) -{ - PyObject* p = arg.ptr(); - Base::Vector3d val; - if (PyObject_TypeCheck(p, &(Base::VectorPy::Type))) { - val = static_cast(p)->value(); - } - else if (PyTuple_Check(p)) { - val = Base::getVectorFromTuple(p); - } - else { - std::string error = std::string("type must be 'Vector', not "); - error += p->ob_type->tp_name; - throw Py::TypeError(error); - } - - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - try { - gp_Ax2 pos; - pos = circle->Position(); - pos.SetXDirection(gp_Dir(val.x, val.y, val.z)); - circle->SetPosition(pos); - } - catch (Standard_Failure) { - throw Py::Exception("cannot set X axis"); - } -} - -Py::Object Circle2dPy::getYAxis(void) const -{ - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - gp_Ax1 axis = circle->YAxis(); - gp_Dir dir = axis.Direction(); - return Py::Vector(Base::Vector3d(dir.X(), dir.Y(), dir.Z())); -} - -void Circle2dPy::setYAxis(Py::Object arg) -{ - PyObject* p = arg.ptr(); - Base::Vector3d val; - if (PyObject_TypeCheck(p, &(Base::VectorPy::Type))) { - val = static_cast(p)->value(); - } - else if (PyTuple_Check(p)) { - val = Base::getVectorFromTuple(p); - } - else { - std::string error = std::string("type must be 'Vector', not "); - error += p->ob_type->tp_name; - throw Py::TypeError(error); - } - - Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); - try { - gp_Ax2 pos; - pos = circle->Position(); - pos.SetYDirection(gp_Dir(val.x, val.y, val.z)); - circle->SetPosition(pos); - } - catch (Standard_Failure) { - throw Py::Exception("cannot set Y axis"); - } -} -#endif PyObject *Circle2dPy::getCustomAttributes(const char* ) const { return 0; diff --git a/src/Mod/Part/App/Geom2d/Conic2dPy.xml b/src/Mod/Part/App/Geom2d/Conic2dPy.xml index c05f44924..3854bdaf8 100644 --- a/src/Mod/Part/App/Geom2d/Conic2dPy.xml +++ b/src/Mod/Part/App/Geom2d/Conic2dPy.xml @@ -15,11 +15,23 @@ Describes an abstract conic in 2d space - + - Center of the conic. + Location of the conic. - + + + + + + returns the eccentricity value of the conic e. + e = 0 for a circle + 0 < e < 1 for an ellipse (e = 0 if MajorRadius = MinorRadius) + e > 1 for a hyperbola + e = 1 for a parabola + + + diff --git a/src/Mod/Part/App/Geom2d/Conic2dPyImp.cpp b/src/Mod/Part/App/Geom2d/Conic2dPyImp.cpp index 8ae93e65b..996b1aaa0 100644 --- a/src/Mod/Part/App/Geom2d/Conic2dPyImp.cpp +++ b/src/Mod/Part/App/Geom2d/Conic2dPyImp.cpp @@ -54,9 +54,9 @@ int Conic2dPy::PyInit(PyObject* args, PyObject* kwds) return 0; } -Py::Object Conic2dPy::getCenter(void) const +Py::Object Conic2dPy::getLocation(void) const { - Base::Vector2d loc = getGeom2dConicPtr()->getCenter(); + Base::Vector2d loc = getGeom2dConicPtr()->getLocation(); Py::Module module("__FreeCADBase__"); Py::Callable method(module.getAttr("Vector2d")); @@ -66,10 +66,16 @@ Py::Object Conic2dPy::getCenter(void) const return method.apply(arg); } -void Conic2dPy::setCenter(Py::Object arg) +void Conic2dPy::setLocation(Py::Object arg) { Base::Vector2d loc = Py::Vector2d(arg.ptr()).getCxxObject()->value(); - getGeom2dConicPtr()->setCenter(loc); + getGeom2dConicPtr()->setLocation(loc); +} + +Py::Float Conic2dPy::getEccentricity(void) const +{ + Handle_Geom2d_Conic conic = Handle_Geom2d_Conic::DownCast(getGeom2dConicPtr()->handle()); + return Py::Float(conic->Eccentricity()); } Py::Object Conic2dPy::getXAxis(void) const diff --git a/src/Mod/Part/App/Geom2d/Curve2dPy.xml b/src/Mod/Part/App/Geom2d/Curve2dPy.xml index dd5ad20f4..0311f7d0e 100644 --- a/src/Mod/Part/App/Geom2d/Curve2dPy.xml +++ b/src/Mod/Part/App/Geom2d/Curve2dPy.xml @@ -16,6 +16,11 @@ The abstract class GeometryCurve is the root class of all curve objects. + + + Changes the direction of parametrization of the curve. + + Computes the point of parameter u on this curve + + Returns the global continuity of the curve. @@ -139,7 +147,23 @@ of the nearest orthogonal projection of the point. - + + + + Returns true if the curve is closed. + + + + + + + + Returns true if the curve is periodic. + + + + + Returns the value of the first parameter. @@ -155,6 +179,5 @@ of the nearest orthogonal projection of the point. - --> diff --git a/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp b/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp index cb9fe8cda..5c3b55032 100644 --- a/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp +++ b/src/Mod/Part/App/Geom2d/Curve2dPyImp.cpp @@ -94,6 +94,24 @@ int Curve2dPy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/) { return 0; } + +PyObject* Curve2dPy::reverse(PyObject *args) +{ + try { + Handle_Geom2d_Curve curve = Handle_Geom2d_Curve::DownCast(getGeom2dCurvePtr()->handle()); + curve->Reverse(); + Py_Return; + } + catch (Standard_Failure) { + Handle_Standard_Failure e = Standard_Failure::Caught(); + PyErr_SetString(PartExceptionOCCError, e->GetMessageString()); + return 0; + } + + PyErr_SetString(PartExceptionOCCError, "Geometry is not a curve"); + return 0; +} + #if 0 PyObject* Curve2dPy::toShape(PyObject *args) { @@ -335,18 +353,24 @@ PyObject* Curve2dPy::parameterAtDistance(PyObject *args) PyErr_SetString(PartExceptionOCCError, "Geometry is not a curve"); return 0; } - +#endif PyObject* Curve2dPy::value(PyObject *args) { Handle_Geom2d_Geometry g = getGeometry2dPtr()->handle(); - Handle_Geom_Curve c = Handle_Geom_Curve::DownCast(g); + Handle_Geom2d_Curve c = Handle_Geom2d_Curve::DownCast(g); try { if (!c.IsNull()) { double u; if (!PyArg_ParseTuple(args, "d", &u)) return 0; - gp_Pnt p = c->Value(u); - return new Base::VectorPy(Base::Vector3d(p.X(),p.Y(),p.Z())); + gp_Pnt2d p = c->Value(u); + + Py::Module module("__FreeCADBase__"); + Py::Callable method(module.getAttr("Vector2d")); + Py::Tuple arg(2); + arg.setItem(0, Py::Float(p.X())); + arg.setItem(1, Py::Float(p.Y())); + return Py::new_reference_to(method.apply(arg)); } } catch (Standard_Failure) { @@ -358,7 +382,7 @@ PyObject* Curve2dPy::value(PyObject *args) PyErr_SetString(PartExceptionOCCError, "Geometry is not a curve"); return 0; } - +#if 0 PyObject* Curve2dPy::tangent(PyObject *args) { Handle_Geom2d_Geometry g = getGeometry2dPtr()->handle(); @@ -567,10 +591,10 @@ PyObject* Curve2dPy::approximateBSpline(PyObject *args) return 0; } } - +#endif Py::String Curve2dPy::getContinuity(void) const { - GeomAbs_Shape c = Handle_Geom_Curve::DownCast + GeomAbs_Shape c = Handle_Geom2d_Curve::DownCast (getGeometry2dPtr()->handle())->Continuity(); std::string str; switch (c) { @@ -602,18 +626,30 @@ Py::String Curve2dPy::getContinuity(void) const return Py::String(str); } +Py::Boolean Curve2dPy::getClosed(void) const +{ + return Py::Boolean(Handle_Geom2d_Curve::DownCast + (getGeometry2dPtr()->handle())->IsClosed() ? true : false); +} + +Py::Boolean Curve2dPy::getPeriodic(void) const +{ + return Py::Boolean(Handle_Geom2d_Curve::DownCast + (getGeometry2dPtr()->handle())->IsPeriodic() ? true : false); +} + Py::Float Curve2dPy::getFirstParameter(void) const { - return Py::Float(Handle_Geom_Curve::DownCast + return Py::Float(Handle_Geom2d_Curve::DownCast (getGeometry2dPtr()->handle())->FirstParameter()); } Py::Float Curve2dPy::getLastParameter(void) const { - return Py::Float(Handle_Geom_Curve::DownCast + return Py::Float(Handle_Geom2d_Curve::DownCast (getGeometry2dPtr()->handle())->LastParameter()); } -#endif + PyObject *Curve2dPy::getCustomAttributes(const char* /*attr*/) const { return 0; diff --git a/src/Mod/Part/App/Geom2d/Parabola2dPy.xml b/src/Mod/Part/App/Geom2d/Parabola2dPy.xml index 8c3de3eda..1d579d3ec 100644 --- a/src/Mod/Part/App/Geom2d/Parabola2dPy.xml +++ b/src/Mod/Part/App/Geom2d/Parabola2dPy.xml @@ -14,12 +14,6 @@ Describes a parabola in 2D space - - - Returns 1. (which is the eccentricity of any parabola). - - - The focal distance is the distance between diff --git a/src/Mod/Part/App/Geom2d/Parabola2dPyImp.cpp b/src/Mod/Part/App/Geom2d/Parabola2dPyImp.cpp index c6f50a90b..a72232b3b 100644 --- a/src/Mod/Part/App/Geom2d/Parabola2dPyImp.cpp +++ b/src/Mod/Part/App/Geom2d/Parabola2dPyImp.cpp @@ -61,12 +61,6 @@ int Parabola2dPy::PyInit(PyObject* args, PyObject* /*kwd*/) return -1; } -Py::Float Parabola2dPy::getEccentricity(void) const -{ - Handle_Geom2d_Parabola curve = Handle_Geom2d_Parabola::DownCast(getGeometry2dPtr()->handle()); - return Py::Float(curve->Eccentricity()); -} - Py::Float Parabola2dPy::getFocal(void) const { Handle_Geom2d_Parabola curve = Handle_Geom2d_Parabola::DownCast(getGeometry2dPtr()->handle()); diff --git a/src/Mod/Part/App/Geometry2d.cpp b/src/Mod/Part/App/Geometry2d.cpp index c14ceb83c..1454591bc 100644 --- a/src/Mod/Part/App/Geometry2d.cpp +++ b/src/Mod/Part/App/Geometry2d.cpp @@ -68,6 +68,7 @@ #include #include "Geometry2d.h" +#include using namespace Part; @@ -587,14 +588,14 @@ Geom2dConic::~Geom2dConic() { } -Base::Vector2d Geom2dConic::getCenter(void) const +Base::Vector2d Geom2dConic::getLocation(void) const { Handle_Geom2d_Conic conic = Handle_Geom2d_Conic::DownCast(handle()); const gp_Pnt2d& loc = conic->Location(); return Base::Vector2d(loc.X(),loc.Y()); } -void Geom2dConic::setCenter(const Base::Vector2d& Center) +void Geom2dConic::setLocation(const Base::Vector2d& Center) { gp_Pnt2d p1(Center.x,Center.y); Handle_Geom2d_Conic conic = Handle_Geom2d_Conic::DownCast(handle()); @@ -1742,8 +1743,7 @@ void Geom2dParabola::Restore(Base::XMLReader& reader) PyObject *Geom2dParabola::getPyObject(void) { - return 0; - //return new ParabolaPy((GeomParabola*)this->clone()); + return new Parabola2dPy(static_cast(this->clone())); } // ------------------------------------------------- diff --git a/src/Mod/Part/App/Geometry2d.h b/src/Mod/Part/App/Geometry2d.h index b7d5a9736..1ef7ec9a8 100644 --- a/src/Mod/Part/App/Geometry2d.h +++ b/src/Mod/Part/App/Geometry2d.h @@ -200,8 +200,8 @@ public: virtual ~Geom2dConic(); virtual Geometry2d *clone(void) const = 0; - Base::Vector2d getCenter(void) const; - void setCenter(const Base::Vector2d& Center); + Base::Vector2d getLocation(void) const; + void setLocation(const Base::Vector2d& Center); bool isReversed() const; virtual unsigned int getMemSize(void) const = 0;